mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* 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:
parent
693a6cde25
commit
7bb94fa3f5
6 changed files with 99 additions and 11 deletions
|
@ -1,3 +1,7 @@
|
||||||
|
Fri Dec 3 19:48:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
|
* lib/mkmf.rb (check_sizeof): should return integer always.
|
||||||
|
|
||||||
Wed Dec 1 22:05:32 2010 NAKAMURA Usaku <usa@ruby-lang.org>
|
Wed Dec 1 22:05:32 2010 NAKAMURA Usaku <usa@ruby-lang.org>
|
||||||
|
|
||||||
* numeric.c (Init_Numeric): fixed a potential bug when using bccwin32
|
* numeric.c (Init_Numeric): fixed a potential bug when using bccwin32
|
||||||
|
|
|
@ -1006,14 +1006,7 @@ def check_sizeof(type, headers = nil, opts = "", &b)
|
||||||
x ? super : "failed"
|
x ? super : "failed"
|
||||||
end
|
end
|
||||||
checking_for checking_message("size of #{type}", headers), fmt do
|
checking_for checking_message("size of #{type}", headers), fmt do
|
||||||
if UNIVERSAL_INTS.include?(type)
|
if size = try_constant(expr, prelude, opts, &b)
|
||||||
type
|
|
||||||
elsif size = UNIVERSAL_INTS.find {|t|
|
|
||||||
try_static_assert("#{expr} == sizeof(#{t})", prelude, opts, &b)
|
|
||||||
}
|
|
||||||
$defs.push(format("-DSIZEOF_%s=SIZEOF_%s", type.tr_cpp, size.tr_cpp))
|
|
||||||
size
|
|
||||||
elsif size = try_constant(expr, prelude, opts, &b)
|
|
||||||
$defs.push(format("-DSIZEOF_%s=%s", type.tr_cpp, size))
|
$defs.push(format("-DSIZEOF_%s=%s", type.tr_cpp, size))
|
||||||
size
|
size
|
||||||
end
|
end
|
||||||
|
|
37
test/mkmf/base.rb
Normal file
37
test/mkmf/base.rb
Normal 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
|
36
test/mkmf/test_find_executable.rb
Normal file
36
test/mkmf/test_find_executable.rb
Normal 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
18
test/mkmf/test_sizeof.rb
Normal 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
|
|
@ -1,7 +1,7 @@
|
||||||
#define RUBY_VERSION "1.8.8"
|
#define RUBY_VERSION "1.8.8"
|
||||||
#define RUBY_RELEASE_DATE "2010-12-01"
|
#define RUBY_RELEASE_DATE "2010-12-03"
|
||||||
#define RUBY_VERSION_CODE 188
|
#define RUBY_VERSION_CODE 188
|
||||||
#define RUBY_RELEASE_CODE 20101201
|
#define RUBY_RELEASE_CODE 20101203
|
||||||
#define RUBY_PATCHLEVEL -1
|
#define RUBY_PATCHLEVEL -1
|
||||||
|
|
||||||
#define RUBY_VERSION_MAJOR 1
|
#define RUBY_VERSION_MAJOR 1
|
||||||
|
@ -9,7 +9,7 @@
|
||||||
#define RUBY_VERSION_TEENY 8
|
#define RUBY_VERSION_TEENY 8
|
||||||
#define RUBY_RELEASE_YEAR 2010
|
#define RUBY_RELEASE_YEAR 2010
|
||||||
#define RUBY_RELEASE_MONTH 12
|
#define RUBY_RELEASE_MONTH 12
|
||||||
#define RUBY_RELEASE_DAY 1
|
#define RUBY_RELEASE_DAY 3
|
||||||
|
|
||||||
#define NO_STRING_LITERAL_CONCATENATION 1
|
#define NO_STRING_LITERAL_CONCATENATION 1
|
||||||
#ifdef RUBY_EXTERN
|
#ifdef RUBY_EXTERN
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue