1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/test/mkmf/test_find_executable.rb
nobu 22f1db4b8e mkmf: Unquote directory strings
* lib/mkmf.rb (find_executable0): On Windows, it is actually valid
  to surround individual PATH directory entries with double
  quotes. Remove these before joining the path as otherwise the
  literal quotes would become part of the path, resulting in the
  executable not to be found.  [Fix GH-1305]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54255 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-24 16:10:43 +00:00

58 lines
1.3 KiB
Ruby

# frozen_string_literal: false
require_relative 'base'
class TestMkmf
class TestFindExecutable < TestMkmf
def setup
super
@path, ENV["PATH"] = ENV["PATH"], @tmpdir
end
def each_exts(&block)
name = "foobar#{$$}#{rand(1000)}"
stdout.filter {|s| s.sub(name, "<executable>")}
exts = mkmf {self.class::CONFIG['EXECUTABLE_EXTS']}.split
exts[0] ||= ""
exts.each do |ext|
yield name+ext, name
end
end
def teardown
ENV["PATH"] = @path
super
end
def test_find_executable
bug2669 = '[ruby-core:27912]'
each_exts do |full, name|
begin
open(full, "w") {|ff| ff.chmod(0755)}
result = mkmf {find_executable(name)}
ensure
File.unlink(full)
end
assert_equal("#{@tmpdir}/#{full}", result, bug2669)
end
end
def test_find_executable_dir
each_exts do |full, name|
begin
Dir.mkdir(full)
result = mkmf {find_executable(name)}
ensure
Dir.rmdir(full)
end
assert_nil(result)
end
end
if /mingw|mswin/ =~ RUBY_PLATFORM
def test_quoted_path_on_windows
ENV["PATH"] = %["#{@tmpdir}"]
test_find_executable
end
end
end
end