ruby-changes:30883
From: nobu <ko1@a...>
Date: Tue, 17 Sep 2013 21:35:53 +0900 (JST)
Subject: [ruby-changes:30883] nobu:r42962 (trunk): command-processor.rb: return executable file only
nobu 2013-09-17 21:35:49 +0900 (Tue, 17 Sep 2013) New Revision: 42962 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=42962 Log: command-processor.rb: return executable file only * lib/shell/command-processor.rb (Shell::CommandProcessor#find_system_command): return executable file only, should ignore directories and unexecutable files. [ruby-core:57235] [Bug #8918] Added directories: trunk/test/shell/ Added files: trunk/test/shell/test_command_processor.rb Index: test/shell/test_command_processor.rb =================================================================== --- test/shell/test_command_processor.rb (revision 0) +++ test/shell/test_command_processor.rb (revision 42962) @@ -0,0 +1,45 @@ https://github.com/ruby/ruby/blob/trunk/test/shell/test_command_processor.rb#L1 +require 'shell' +require 'tmpdir' +require_relative '../ruby/envutil' + +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 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 test_system_external + ext = RbConfig::CONFIG["EXECUTABLE_EXTS"][/\S+\z/] + path = File.join(@tmpdir, "foo#{ext}") + open(path, "w", 0755) {} + + cmd = assert_throw(catch_command_start) {@shell.system("foo")} + assert_equal(path, cmd.command) + ensure + File.unlink(path) + end + + def test_system_not_found + bug8918 = '[ruby-core:57235] [Bug #8918]' + + path = File.join(@tmpdir, "foo") + open(path, "w", 0644) {} + + assert_raise(Shell::Error::CommandNotFound, bug8918) { + catch(catch_command_start) {@shell.system("foo")} + } + ensure + Process.waitall + File.unlink(path) + end +end Property changes on: test/shell/test_command_processor.rb ___________________________________________________________________ Added: svn:eol-style + LF -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/