mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	This reverts r58761 since fiddle is considered critical. [ruby-core:81201] [ruby-core:81203] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58764 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			83 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# 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
 |