diff options
author | Jari Vetoniemi <jari.vetoniemi@indooratlas.com> | 2020-03-16 18:49:26 +0900 |
---|---|---|
committer | Jari Vetoniemi <jari.vetoniemi@indooratlas.com> | 2020-03-30 00:39:06 +0900 |
commit | fcbf63e62c627deae76c1b8cb8c0876c536ed811 (patch) | |
tree | 64cb17de3f41a2b6fef2368028fbd00349946994 /jni/ruby/test/shell |
Fresh start
Diffstat (limited to 'jni/ruby/test/shell')
-rw-r--r-- | jni/ruby/test/shell/test_command_processor.rb | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/jni/ruby/test/shell/test_command_processor.rb b/jni/ruby/test/shell/test_command_processor.rb new file mode 100644 index 0000000..66e4244 --- /dev/null +++ b/jni/ruby/test/shell/test_command_processor.rb @@ -0,0 +1,68 @@ +require 'shell' +require 'tmpdir' + +class TestShell < Test::Unit::TestCase +end +class TestShell::CommandProcessor < Test::Unit::TestCase + def setup + @tmpdir = Dir.mktmpdir("test_shell") + @shell = Shell.new + @shell.system_path = [@tmpdir] + end + + def teardown + Dir.rmdir(@tmpdir) + end + + def catch_command_start(tc = Object.new) + @shell.process_controller.singleton_class.class_eval do + define_method(:add_schedule) {|cmd| throw tc, cmd} + end + tc + end + + def exeext + RbConfig::CONFIG["EXECUTABLE_EXTS"][/\S+\z/] + end + + def test_system_external + name = "foo#{exeext}" + path = File.join(@tmpdir, name) + open(path, "w", 0755) {} + + cmd = assert_throw(catch_command_start) {@shell.system(name)} + assert_equal(path, cmd.command) + ensure + File.unlink(path) + end + + def test_system_not_found + bug8918 = '[ruby-core:57235] [Bug #8918]' + + name = "foo" + path = File.join(@tmpdir, name) + open(path, "w", 0644) {} + + assert_raise(Shell::Error::CommandNotFound, bug8918) { + catch(catch_command_start) {@shell.system(name)} + } + ensure + Process.waitall + File.unlink(path) + end + + def test_system_directory + bug8918 = '[ruby-core:57235] [Bug #8918]' + + name = "foo#{exeext}" + path = File.join(@tmpdir, name) + Dir.mkdir(path) + + assert_raise(Shell::Error::CommandNotFound, bug8918) { + catch(catch_command_start) {@shell.system(name)} + } + ensure + Process.waitall + Dir.rmdir(path) + end +end |