192 lines
3.7 KiB
Ruby
192 lines
3.7 KiB
Ruby
# https://stdgems.org/ (https://github.com/janlelis/stdgems)
|
|
stdlib = [
|
|
'abbrev',
|
|
'base64',
|
|
'benchmark',
|
|
'bigdecimal',
|
|
'cgi',
|
|
'cmath',
|
|
'coverage',
|
|
'csv',
|
|
'date',
|
|
'dbm',
|
|
'delegate',
|
|
'digest',
|
|
'drb',
|
|
'e2mmap',
|
|
'erb',
|
|
'etc',
|
|
'expect',
|
|
'fcntl',
|
|
'fiddle',
|
|
'fileutils',
|
|
'find',
|
|
'forwardable',
|
|
'gdbm',
|
|
'getoptlong',
|
|
'io/console',
|
|
'io/nonblock',
|
|
'io/wait',
|
|
'ipaddr',
|
|
'irb',
|
|
'json',
|
|
'logger',
|
|
'mathn',
|
|
'matrix',
|
|
'mkmf',
|
|
'monitor',
|
|
'mutex_m',
|
|
'net/ftp',
|
|
'net/http',
|
|
'net/imap',
|
|
'net/pop',
|
|
'net/smtp',
|
|
'net/telnet',
|
|
'nkf',
|
|
'objspace',
|
|
'observer',
|
|
'open-uri',
|
|
'open3',
|
|
'openssl',
|
|
'optparse',
|
|
'ostruct',
|
|
'pathname',
|
|
'pp',
|
|
'prettyprint',
|
|
'prime',
|
|
#'profile', # prints all sorts of info to stderr, not easy to test right now
|
|
'profiler',
|
|
'pstore',
|
|
'psych',
|
|
'pty',
|
|
'rake',
|
|
'rdoc',
|
|
'readline',
|
|
'resolv',
|
|
'resolv-replace',
|
|
'ripper',
|
|
'rss',
|
|
'rubygems',
|
|
'scanf',
|
|
'sdbm',
|
|
'securerandom',
|
|
'set',
|
|
'shell',
|
|
'shellwords',
|
|
'singleton',
|
|
'socket',
|
|
'stringio',
|
|
'strscan',
|
|
'sync',
|
|
'syslog',
|
|
'tempfile',
|
|
'thread',
|
|
'thwait',
|
|
'time',
|
|
'timeout',
|
|
'tmpdir',
|
|
'tracer',
|
|
'tsort',
|
|
'un',
|
|
'uri',
|
|
'weakref',
|
|
'webrick',
|
|
'xmlrpc/client',
|
|
'xmlrpc/server',
|
|
'yaml',
|
|
'zlib',
|
|
]
|
|
|
|
if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'
|
|
# these libraries don't work or don't exist on JRuby ATM
|
|
stdlib.delete('dbm')
|
|
stdlib.delete('gdbm')
|
|
stdlib.delete('mkmf')
|
|
stdlib.delete('objspace')
|
|
stdlib.delete('sdbm')
|
|
end
|
|
|
|
require 'rubygems/version'
|
|
rubyVersion = Gem::Version.create(RUBY_VERSION)
|
|
if rubyVersion >= Gem::Version.create('2.5')
|
|
# https://bugs.ruby-lang.org/issues/13335
|
|
stdlib.delete('mathn')
|
|
end
|
|
if rubyVersion >= Gem::Version.create('2.7')
|
|
# https://bugs.ruby-lang.org/issues/15652
|
|
# "Removed from standard library. No one maintains it"
|
|
stdlib.delete('profiler')
|
|
# https://bugs.ruby-lang.org/issues/16170
|
|
# "removing some of the unmaintained libraries"
|
|
stdlib.delete('cmath')
|
|
stdlib.delete('e2mmap')
|
|
stdlib.delete('scanf')
|
|
stdlib.delete('shell')
|
|
stdlib.delete('sync')
|
|
stdlib.delete('thwait')
|
|
stdlib.delete('tracer')
|
|
end
|
|
if rubyVersion >= Gem::Version.create('3.0')
|
|
# https://www.ruby-lang.org/en/news/2020/09/25/ruby-3-0-0-preview1-released/
|
|
# Removed libraries no longer part of stdlib.
|
|
stdlib.delete('English')
|
|
stdlib.delete('abbrev')
|
|
stdlib.delete('base64')
|
|
stdlib.delete('erb')
|
|
stdlib.delete('find')
|
|
stdlib.delete('io/nonblock')
|
|
stdlib.delete('io/wait')
|
|
stdlib.delete('net/ftp')
|
|
stdlib.delete('net/http')
|
|
stdlib.delete('net/imap')
|
|
stdlib.delete('net/protocol')
|
|
stdlib.delete('net/telnet')
|
|
stdlib.delete('nkf')
|
|
stdlib.delete('open-uri')
|
|
stdlib.delete('optparse')
|
|
stdlib.delete('resolv')
|
|
stdlib.delete('resolv-replace')
|
|
stdlib.delete('rexml')
|
|
stdlib.delete('rinda')
|
|
stdlib.delete('rss')
|
|
stdlib.delete('securerandom')
|
|
stdlib.delete('set')
|
|
stdlib.delete('shellwords')
|
|
stdlib.delete('tempfile')
|
|
stdlib.delete('time')
|
|
stdlib.delete('tmpdir')
|
|
stdlib.delete('tsort')
|
|
stdlib.delete('weakref')
|
|
stdlib.delete('xmlrpc/client')
|
|
stdlib.delete('xmlrpc/server')
|
|
# https://github.com/ruby/ruby/blob/v3_0_0_preview1/NEWS.md#stdlib-compatibility-issues
|
|
# https://bugs.ruby-lang.org/issues/8446
|
|
stdlib.delete('sdbm')
|
|
# https://github.com/ruby/ruby/blob/v3_0_0_rc1/NEWS.md#stdlib-compatibility-issues
|
|
# https://bugs.ruby-lang.org/issues/17303
|
|
stdlib.delete('webrick')
|
|
end
|
|
if rubyVersion >= Gem::Version.create('3.1')
|
|
# https://github.com/ruby/ruby/pull/4525
|
|
stdlib.delete('dbm')
|
|
# https://github.com/ruby/ruby/pull/4526
|
|
stdlib.delete('gdbm')
|
|
end
|
|
|
|
result = 'ok'
|
|
stdlib.each do |lib|
|
|
#puts "Testing #{lib}"
|
|
begin
|
|
require lib
|
|
rescue Exception => e
|
|
result = 'failure'
|
|
STDERR.puts "\n\nrequire '#{lib}' failed: #{e.message}\n"
|
|
STDERR.puts e.backtrace.join("\n")
|
|
STDERR.puts "\n"
|
|
end
|
|
end
|
|
|
|
exit(1) unless result == 'ok'
|
|
|
|
puts result
|