* lib/mkmf.rb (check_sizeof): should return integer always.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@30068 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2010-12-03 10:48:12 +00:00
parent 693a6cde25
commit 7bb94fa3f5
6 changed files with 99 additions and 11 deletions

37
test/mkmf/base.rb Normal file
View file

@ -0,0 +1,37 @@
require 'test/unit'
require 'mkmf'
require 'tmpdir'
$extout = '$(topdir)/'+RbConfig::CONFIG["EXTOUT"]
RbConfig::CONFIG['topdir'] = CONFIG['topdir'] = File.expand_path(CONFIG['topdir'])
RbConfig::CONFIG["extout"] = CONFIG["extout"] = $extout
$INCFLAGS << " -I."
$extout_prefix = "$(extout)$(target_prefix)/"
class TestMkmf < Test::Unit::TestCase
def setup
@tmpdir = Dir.mktmpdir
@curdir = Dir.pwd
@mkmfobj = Object.new
Dir.chdir(@tmpdir)
class << (@output = "")
def flush; end
def reopen(*) end
alias write <<
end
$stdout = @output
end
def teardown
$stdout = STDOUT
Dir.chdir(@curdir)
FileUtils.rm_rf(@tmpdir)
end
def mkmf(*args, &block)
@mkmfobj.instance_eval(*args, &block)
end
def default_test
end
end

View file

@ -0,0 +1,36 @@
require File.join(File.dirname(__FILE__), 'base')
class TestMkmf
class TestFindExecutable < TestMkmf
class F
def do_find_executable(name)
find_executable(name)
end
end
def test_find_executable
bug2669 = '[ruby-core:27912]'
path, ENV["PATH"] = ENV["PATH"], path
ENV["PATH"] = @tmpdir
f = F.new
name = "foobar#{$$}#{rand(1000)}"
if /mswin\d|mingw|cygwin/ =~ RUBY_PLATFORM
exts = %w[.exe .com .cmd .bat]
else
exts = [""]
end
exts.each do |ext|
full = name+ext
begin
open(full, "w") {|ff| ff.chmod(0755)}
result = f.do_find_executable(name)
ensure
File.unlink(full)
end
assert_equal("#{@tmpdir}/#{name}#{ext}", result, bug2669)
end
ensure
ENV["PATH"] = path
end
end
end

18
test/mkmf/test_sizeof.rb Normal file
View file

@ -0,0 +1,18 @@
require File.join(File.dirname(__FILE__), 'base')
class TestMkmf
class TestSizeof < TestMkmf
def test_sizeof_builtin
%w[char short int long float double void*].each do |type|
assert_kind_of(Integer, mkmf {check_sizeof(type)})
end
end
def test_sizeof_struct
open("confdefs.h", "w") {|f|
f.puts "typedef struct {char x;} test1_t;"
}
assert_equal(1, mkmf {check_sizeof("test1_t", "confdefs.h")})
end
end
end