bio-miga/miga

View on GitHub
test/system_call_test.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
require 'test_helper'

class SystemCallTest < Test::Unit::TestCase
  include TestHelper

  def test_run_cmd_opts
    assert_equal(true, MiGA::MiGA.run_cmd_opts[:raise])
    assert_equal(:status, MiGA::MiGA.run_cmd_opts[:return])
    assert_equal(:pid, MiGA::MiGA.run_cmd_opts(return: :pid)[:return])
    assert_nil(MiGA::MiGA.run_cmd_opts[:stdout])
  end

  def test_run_cmd_redirection
    f1 = tmpfile('f1')
    MiGA::MiGA.run_cmd('echo 1', stdout: f1)
    assert_equal("1\n", File.read(f1))

    MiGA::MiGA.run_cmd('echo 2 >&2', stderr: f1)
    assert_equal("2\n", File.read(f1))

    f2 = tmpfile('with spaces')
    MiGA::MiGA.run_cmd('echo 3', stdout: f2)
    assert_equal("3\n", File.read(f2))

    MiGA::MiGA.run_cmd(['echo', 4], stdout: f2)
    assert_equal("4\n", File.read(f2))
  end

  def test_run_cmd_return
    o = MiGA::MiGA.run_cmd('echo 1', stdout: '/dev/null')
    assert(o.is_a? Process::Status)
    assert(o.success?)

    o = MiGA::MiGA.run_cmd('echo 1', stdout: '/dev/null', return: :pid)
    assert(o.is_a? Integer)

    o = MiGA::MiGA.run_cmd('echo 1', stdout: '/dev/null', return: :error)
    assert_nil(o)
  end

  def test_run_cmd_raise
    assert_raise(MiGA::SystemCallError) { MiGA::MiGA.run_cmd('echoes!!!') }

    o = MiGA::MiGA.run_cmd('echoes!!!', raise: false, return: :status)
    assert_not(o.success?)

    o = MiGA::MiGA.run_cmd('echoes!!!', raise: false, return: :error)
    assert(o.is_a? Errno::ENOENT)
  end
end