official-images/test/tests/ruby-standard-libs/container.rb

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