blob: 7dc22ee8a38dc712046849a3aba6edc347873a03 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
# frozen_string_literal: false
require "envutil"
require "shellwords"
class TestExtLibs < Test::Unit::TestCase
@extdir = $".grep(/\/rbconfig\.rb\z/) {break "#$`/ext"}
def self.check_existence(ext, add_msg = nil)
return if @excluded.any? {|i| File.fnmatch?(i, ext, File::FNM_CASEFOLD)}
add_msg = ". #{add_msg}" if add_msg
log = "#{@extdir}/#{ext}/mkmf.log"
define_method("test_existence_of_#{ext}") do
assert_separately([], <<-"end;", ignore_stderr: true) # do
log = #{log.dump}
msg = proc {
"extension library `#{ext}' is not found#{add_msg}\n" <<
(File.exist?(log) ? File.binread(log) : "\#{log} not found")
}
assert_nothing_raised(msg) do
require "#{ext}"
end
end;
end
end
def windows?
/mswin|mingw/ =~ RUBY_PLATFORM
end
excluded = [RbConfig::CONFIG, ENV].map do |conf|
if args = conf['configure_args']
args.shellsplit.grep(/\A--without-ext=/) {$'.split(/,/)}
end
end.flatten.compact
excluded << '+' if excluded.empty?
if windows?
excluded.map! {|i| i == '+' ? ['pty', 'syslog'] : i}
excluded.flatten!
else
excluded.map! {|i| i == '+' ? '*win32*' : i}
end
@excluded = excluded
check_existence "bigdecimal"
check_existence "continuation"
check_existence "coverage"
check_existence "date"
#check_existence "dbm" # depend on libdbm
check_existence "digest"
check_existence "digest/bubblebabble"
check_existence "digest/md5"
check_existence "digest/rmd160"
check_existence "digest/sha1"
check_existence "digest/sha2"
check_existence "etc"
check_existence "fcntl"
check_existence "fiber"
check_existence "fiddle"
#check_existence "gdbm" # depend on libgdbm
check_existence "io/console"
check_existence "io/nonblock"
check_existence "io/wait"
check_existence "json"
check_existence "nkf"
check_existence "objspace"
check_existence "openssl", "this may be false positive, but should assert because rubygems requires this"
check_existence "pathname"
check_existence "psych"
check_existence "pty"
check_existence "racc/cparse"
check_existence "rbconfig/sizeof"
#check_existence "readline" # depend on libreadline
check_existence "ripper"
check_existence "sdbm"
check_existence "socket"
check_existence "stringio"
check_existence "strscan"
check_existence "syslog"
check_existence "thread"
check_existence "Win32API"
check_existence "win32ole"
check_existence "zlib", "this may be false positive, but should assert because rubygems requires this"
end
|