[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]