container.rb 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. # https://stdgems.org/ (https://github.com/janlelis/stdgems)
  2. stdlib = [
  3. 'abbrev',
  4. 'base64',
  5. 'benchmark',
  6. 'bigdecimal',
  7. 'cgi',
  8. 'cmath',
  9. 'coverage',
  10. 'csv',
  11. 'date',
  12. 'dbm',
  13. 'delegate',
  14. 'digest',
  15. 'drb',
  16. 'e2mmap',
  17. 'erb',
  18. 'etc',
  19. 'expect',
  20. 'fcntl',
  21. 'fiddle',
  22. 'fileutils',
  23. 'find',
  24. 'forwardable',
  25. 'gdbm',
  26. 'getoptlong',
  27. 'io/console',
  28. 'io/nonblock',
  29. 'io/wait',
  30. 'ipaddr',
  31. 'irb',
  32. 'json',
  33. 'logger',
  34. 'mathn',
  35. 'matrix',
  36. 'mkmf',
  37. 'monitor',
  38. 'mutex_m',
  39. 'net/ftp',
  40. 'net/http',
  41. 'net/imap',
  42. 'net/pop',
  43. 'net/smtp',
  44. 'net/telnet',
  45. 'nkf',
  46. 'objspace',
  47. 'observer',
  48. 'open-uri',
  49. 'open3',
  50. 'openssl',
  51. 'optparse',
  52. 'ostruct',
  53. 'pathname',
  54. 'pp',
  55. 'prettyprint',
  56. 'prime',
  57. #'profile', # prints all sorts of info to stderr, not easy to test right now
  58. 'profiler',
  59. 'pstore',
  60. 'psych',
  61. 'pty',
  62. 'rake',
  63. 'rdoc',
  64. 'readline',
  65. 'resolv',
  66. 'resolv-replace',
  67. 'ripper',
  68. 'rss',
  69. 'rubygems',
  70. 'scanf',
  71. 'sdbm',
  72. 'securerandom',
  73. 'set',
  74. 'shell',
  75. 'shellwords',
  76. 'singleton',
  77. 'socket',
  78. 'stringio',
  79. 'strscan',
  80. 'sync',
  81. 'syslog',
  82. 'tempfile',
  83. 'thread',
  84. 'thwait',
  85. 'time',
  86. 'timeout',
  87. 'tmpdir',
  88. 'tracer',
  89. 'tsort',
  90. 'un',
  91. 'uri',
  92. 'weakref',
  93. 'webrick',
  94. 'xmlrpc/client',
  95. 'xmlrpc/server',
  96. 'yaml',
  97. 'zlib',
  98. ]
  99. if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'
  100. # these libraries don't work or don't exist on JRuby ATM
  101. stdlib.delete('dbm')
  102. stdlib.delete('gdbm')
  103. stdlib.delete('mkmf')
  104. stdlib.delete('objspace')
  105. stdlib.delete('sdbm')
  106. end
  107. require 'rubygems/version'
  108. rubyVersion = Gem::Version.create(RUBY_VERSION)
  109. if rubyVersion >= Gem::Version.create('2.5')
  110. # https://bugs.ruby-lang.org/issues/13335
  111. stdlib.delete('mathn')
  112. end
  113. if rubyVersion >= Gem::Version.create('2.7')
  114. # https://bugs.ruby-lang.org/issues/15652
  115. # "Removed from standard library. No one maintains it"
  116. stdlib.delete('profiler')
  117. # https://bugs.ruby-lang.org/issues/16170
  118. # "removing some of the unmaintained libraries"
  119. stdlib.delete('cmath')
  120. stdlib.delete('e2mmap')
  121. stdlib.delete('scanf')
  122. stdlib.delete('shell')
  123. stdlib.delete('sync')
  124. stdlib.delete('thwait')
  125. stdlib.delete('tracer')
  126. end
  127. if rubyVersion >= Gem::Version.create('3.0')
  128. # https://www.ruby-lang.org/en/news/2020/09/25/ruby-3-0-0-preview1-released/
  129. # Removed libraries no longer part of stdlib.
  130. stdlib.delete('English')
  131. stdlib.delete('abbrev')
  132. stdlib.delete('base64')
  133. stdlib.delete('erb')
  134. stdlib.delete('find')
  135. stdlib.delete('io/nonblock')
  136. stdlib.delete('io/wait')
  137. stdlib.delete('net/ftp')
  138. stdlib.delete('net/http')
  139. stdlib.delete('net/imap')
  140. stdlib.delete('net/protocol')
  141. stdlib.delete('net/telnet')
  142. stdlib.delete('nkf')
  143. stdlib.delete('open-uri')
  144. stdlib.delete('optparse')
  145. stdlib.delete('resolv')
  146. stdlib.delete('resolv-replace')
  147. stdlib.delete('rexml')
  148. stdlib.delete('rinda')
  149. stdlib.delete('rss')
  150. stdlib.delete('securerandom')
  151. stdlib.delete('set')
  152. stdlib.delete('shellwords')
  153. stdlib.delete('tempfile')
  154. stdlib.delete('time')
  155. stdlib.delete('tmpdir')
  156. stdlib.delete('tsort')
  157. stdlib.delete('weakref')
  158. stdlib.delete('xmlrpc/client')
  159. stdlib.delete('xmlrpc/server')
  160. # https://github.com/ruby/ruby/blob/v3_0_0_preview1/NEWS.md#stdlib-compatibility-issues
  161. # https://bugs.ruby-lang.org/issues/8446
  162. stdlib.delete('sdbm')
  163. # https://github.com/ruby/ruby/blob/v3_0_0_rc1/NEWS.md#stdlib-compatibility-issues
  164. # https://bugs.ruby-lang.org/issues/17303
  165. stdlib.delete('webrick')
  166. end
  167. result = 'ok'
  168. stdlib.each do |lib|
  169. #puts "Testing #{lib}"
  170. begin
  171. require lib
  172. rescue Exception => e
  173. result = 'failure'
  174. STDERR.puts "\n\nrequire '#{lib}' failed: #{e.message}\n"
  175. STDERR.puts e.backtrace.join("\n")
  176. STDERR.puts "\n"
  177. end
  178. end
  179. exit(1) unless result == 'ok'
  180. puts result