From fcbf63e62c627deae76c1b8cb8c0876c536ed811 Mon Sep 17 00:00:00 2001 From: Jari Vetoniemi Date: Mon, 16 Mar 2020 18:49:26 +0900 Subject: Fresh start --- jni/ruby/test/shell/test_command_processor.rb | 68 +++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 jni/ruby/test/shell/test_command_processor.rb (limited to 'jni/ruby/test/shell') 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 -- cgit v1.2.3