summaryrefslogtreecommitdiff
path: root/test/test_extlibs.rb
diff options
context:
space:
mode:
authorusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-04-20 01:36:11 +0000
committerusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-04-20 01:36:11 +0000
commitabbabbf8c8187f704cfa6a76789d496250658dbf (patch)
tree476173d58e8c96acbc23cf845bf49d781207a1e2 /test/test_extlibs.rb
parentedd063ab1a08eb362179837418e20f50bb837d95 (diff)
Move test_extlibs.rb because it's not the test of ruby itself
* test/test_extlibs.rb: moved from test/ruby. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58407 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/test_extlibs.rb')
-rw-r--r--test/test_extlibs.rb85
1 files changed, 85 insertions, 0 deletions
diff --git a/test/test_extlibs.rb b/test/test_extlibs.rb
new file mode 100644
index 0000000000..9b82b4f8cd
--- /dev/null
+++ b/test/test_extlibs.rb
@@ -0,0 +1,85 @@
+# 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 "mathn/complex"
+ check_existence "mathn/rational"
+ 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