1require_relative 'base' 2 3class TestMkmf 4 class TestFindExecutable < TestMkmf 5 def setup 6 super 7 @path, ENV["PATH"] = ENV["PATH"], @tmpdir 8 end 9 10 def teardown 11 ENV["PATH"] = @path 12 super 13 end 14 15 def test_find_executable 16 bug2669 = '[ruby-core:27912]' 17 name = "foobar#{$$}#{rand(1000)}" 18 exts = mkmf {self.class::CONFIG['EXECUTABLE_EXTS']}.split 19 stdout.filter {|s| s.sub(name, "<executable>")} 20 exts[0] ||= "" 21 exts.each do |ext| 22 full = name+ext 23 begin 24 open(full, "w") {|ff| ff.chmod(0755)} 25 result = mkmf {find_executable(name)} 26 ensure 27 File.unlink(full) 28 end 29 assert_equal("#{@tmpdir}/#{name}#{ext}", result, bug2669) 30 end 31 end 32 33 def test_find_executable_dir 34 name = "foobar#{$$}#{rand(1000)}" 35 exts = mkmf {self.class::CONFIG['EXECUTABLE_EXTS']}.split 36 stdout.filter {|s| s.sub(name, "<executable>")} 37 exts[0] ||= "" 38 exts.each do |ext| 39 full = name+ext 40 begin 41 Dir.mkdir(full) 42 result = mkmf {find_executable(name)} 43 ensure 44 Dir.rmdir(full) 45 end 46 assert_nil(result) 47 end 48 end 49 end 50end 51