rubygems-update 3.4.21 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (564) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +132 -2
  3. data/Manifest.txt +39 -221
  4. data/README.md +1 -3
  5. data/bundler/CHANGELOG.md +74 -0
  6. data/bundler/README.md +1 -2
  7. data/bundler/bundler.gemspec +4 -2
  8. data/bundler/exe/bundle +1 -10
  9. data/bundler/lib/bundler/build_metadata.rb +3 -3
  10. data/bundler/lib/bundler/capistrano.rb +1 -1
  11. data/bundler/lib/bundler/checksum.rb +245 -0
  12. data/bundler/lib/bundler/ci_detector.rb +75 -0
  13. data/bundler/lib/bundler/cli/add.rb +3 -3
  14. data/bundler/lib/bundler/cli/binstubs.rb +4 -4
  15. data/bundler/lib/bundler/cli/cache.rb +1 -1
  16. data/bundler/lib/bundler/cli/check.rb +1 -1
  17. data/bundler/lib/bundler/cli/common.rb +9 -1
  18. data/bundler/lib/bundler/cli/config.rb +8 -7
  19. data/bundler/lib/bundler/cli/console.rb +3 -2
  20. data/bundler/lib/bundler/cli/doctor.rb +2 -2
  21. data/bundler/lib/bundler/cli/exec.rb +1 -1
  22. data/bundler/lib/bundler/cli/gem.rb +31 -23
  23. data/bundler/lib/bundler/cli/info.rb +2 -13
  24. data/bundler/lib/bundler/cli/install.rb +5 -4
  25. data/bundler/lib/bundler/cli/issue.rb +1 -1
  26. data/bundler/lib/bundler/cli/lock.rb +4 -4
  27. data/bundler/lib/bundler/cli/open.rb +1 -1
  28. data/bundler/lib/bundler/cli/outdated.rb +6 -6
  29. data/bundler/lib/bundler/cli/plugin.rb +7 -14
  30. data/bundler/lib/bundler/cli/pristine.rb +38 -30
  31. data/bundler/lib/bundler/cli/show.rb +2 -2
  32. data/bundler/lib/bundler/cli/update.rb +5 -5
  33. data/bundler/lib/bundler/cli.rb +215 -263
  34. data/bundler/lib/bundler/compact_index_client/cache.rb +29 -9
  35. data/bundler/lib/bundler/compact_index_client/cache_file.rb +153 -0
  36. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +7 -3
  37. data/bundler/lib/bundler/compact_index_client/updater.rb +79 -81
  38. data/bundler/lib/bundler/compact_index_client.rb +14 -7
  39. data/bundler/lib/bundler/constants.rb +1 -1
  40. data/bundler/lib/bundler/current_ruby.rb +5 -21
  41. data/bundler/lib/bundler/definition.rb +43 -16
  42. data/bundler/lib/bundler/dependency.rb +16 -12
  43. data/bundler/lib/bundler/digest.rb +2 -2
  44. data/bundler/lib/bundler/dsl.rb +43 -25
  45. data/bundler/lib/bundler/endpoint_specification.rb +6 -2
  46. data/bundler/lib/bundler/env.rb +1 -3
  47. data/bundler/lib/bundler/errors.rb +58 -0
  48. data/bundler/lib/bundler/fetcher/base.rb +3 -1
  49. data/bundler/lib/bundler/fetcher/compact_index.rb +4 -4
  50. data/bundler/lib/bundler/fetcher/downloader.rb +13 -11
  51. data/bundler/lib/bundler/fetcher/gem_remote_fetcher.rb +16 -0
  52. data/bundler/lib/bundler/fetcher/index.rb +1 -1
  53. data/bundler/lib/bundler/fetcher.rb +28 -25
  54. data/bundler/lib/bundler/friendly_errors.rb +5 -5
  55. data/bundler/lib/bundler/gem_helper.rb +1 -1
  56. data/bundler/lib/bundler/gem_helpers.rb +12 -2
  57. data/bundler/lib/bundler/graph.rb +9 -9
  58. data/bundler/lib/bundler/index.rb +1 -2
  59. data/bundler/lib/bundler/injector.rb +1 -1
  60. data/bundler/lib/bundler/inline.rb +3 -3
  61. data/bundler/lib/bundler/installer/gem_installer.rb +10 -10
  62. data/bundler/lib/bundler/installer/parallel_installer.rb +16 -8
  63. data/bundler/lib/bundler/installer/standalone.rb +2 -3
  64. data/bundler/lib/bundler/installer.rb +9 -9
  65. data/bundler/lib/bundler/lazy_specification.rb +28 -17
  66. data/bundler/lib/bundler/lockfile_generator.rb +9 -0
  67. data/bundler/lib/bundler/lockfile_parser.rb +81 -10
  68. data/bundler/lib/bundler/man/bundle-add.1 +3 -26
  69. data/bundler/lib/bundler/man/bundle-binstubs.1 +4 -16
  70. data/bundler/lib/bundler/man/bundle-cache.1 +3 -24
  71. data/bundler/lib/bundler/man/bundle-check.1 +3 -12
  72. data/bundler/lib/bundler/man/bundle-clean.1 +3 -10
  73. data/bundler/lib/bundler/man/bundle-config.1 +20 -211
  74. data/bundler/lib/bundler/man/bundle-config.1.ronn +6 -0
  75. data/bundler/lib/bundler/man/bundle-console.1 +4 -22
  76. data/bundler/lib/bundler/man/bundle-doctor.1 +4 -18
  77. data/bundler/lib/bundler/man/bundle-exec.1 +12 -73
  78. data/bundler/lib/bundler/man/bundle-gem.1 +13 -49
  79. data/bundler/lib/bundler/man/bundle-help.1 +3 -7
  80. data/bundler/lib/bundler/man/bundle-info.1 +3 -9
  81. data/bundler/lib/bundler/man/bundle-init.1 +3 -12
  82. data/bundler/lib/bundler/man/bundle-inject.1 +6 -19
  83. data/bundler/lib/bundler/man/bundle-install.1 +27 -125
  84. data/bundler/lib/bundler/man/bundle-install.1.ronn +1 -0
  85. data/bundler/lib/bundler/man/bundle-list.1 +4 -19
  86. data/bundler/lib/bundler/man/bundle-lock.1 +5 -29
  87. data/bundler/lib/bundler/man/bundle-open.1 +7 -27
  88. data/bundler/lib/bundler/man/bundle-outdated.1 +3 -55
  89. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +1 -0
  90. data/bundler/lib/bundler/man/bundle-platform.1 +5 -27
  91. data/bundler/lib/bundler/man/bundle-plugin.1 +3 -29
  92. data/bundler/lib/bundler/man/bundle-pristine.1 +5 -16
  93. data/bundler/lib/bundler/man/bundle-remove.1 +4 -14
  94. data/bundler/lib/bundler/man/bundle-show.1 +3 -10
  95. data/bundler/lib/bundler/man/bundle-update.1 +18 -137
  96. data/bundler/lib/bundler/man/bundle-version.1 +3 -16
  97. data/bundler/lib/bundler/man/bundle-viz.1 +4 -16
  98. data/bundler/lib/bundler/man/bundle.1 +5 -44
  99. data/bundler/lib/bundler/man/gemfile.5 +24 -301
  100. data/bundler/lib/bundler/man/gemfile.5.ronn +4 -0
  101. data/bundler/lib/bundler/match_metadata.rb +4 -0
  102. data/bundler/lib/bundler/match_platform.rb +1 -1
  103. data/bundler/lib/bundler/plugin/api/source.rb +3 -2
  104. data/bundler/lib/bundler/plugin/index.rb +8 -0
  105. data/bundler/lib/bundler/plugin/installer.rb +1 -1
  106. data/bundler/lib/bundler/plugin.rb +12 -5
  107. data/bundler/lib/bundler/resolver/base.rb +1 -1
  108. data/bundler/lib/bundler/resolver/incompatibility.rb +1 -1
  109. data/bundler/lib/bundler/resolver/spec_group.rb +1 -4
  110. data/bundler/lib/bundler/resolver.rb +16 -16
  111. data/bundler/lib/bundler/ruby_dsl.rb +20 -12
  112. data/bundler/lib/bundler/ruby_version.rb +1 -1
  113. data/bundler/lib/bundler/rubygems_ext.rb +27 -54
  114. data/bundler/lib/bundler/rubygems_gem_installer.rb +23 -58
  115. data/bundler/lib/bundler/rubygems_integration.rb +25 -94
  116. data/bundler/lib/bundler/runtime.rb +2 -2
  117. data/bundler/lib/bundler/self_manager.rb +23 -7
  118. data/bundler/lib/bundler/settings.rb +27 -7
  119. data/bundler/lib/bundler/setup.rb +4 -1
  120. data/bundler/lib/bundler/shared_helpers.rb +35 -13
  121. data/bundler/lib/bundler/source/git/git_proxy.rb +22 -14
  122. data/bundler/lib/bundler/source/git.rb +4 -3
  123. data/bundler/lib/bundler/source/metadata.rb +16 -16
  124. data/bundler/lib/bundler/source/path.rb +7 -6
  125. data/bundler/lib/bundler/source/rubygems.rb +21 -14
  126. data/bundler/lib/bundler/source.rb +2 -0
  127. data/bundler/lib/bundler/spec_set.rb +43 -12
  128. data/bundler/lib/bundler/stub_specification.rb +1 -0
  129. data/bundler/lib/bundler/templates/Executable.bundler +1 -1
  130. data/bundler/lib/bundler/templates/newgem/README.md.tt +3 -3
  131. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +2 -6
  132. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +1 -1
  133. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +1 -1
  134. data/bundler/lib/bundler/templates/newgem/standard.yml.tt +1 -1
  135. data/bundler/lib/bundler/ui/shell.rb +2 -2
  136. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  137. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +53 -6
  138. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +8 -20
  139. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +4 -3
  140. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +23 -11
  141. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +1 -1
  142. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +36 -36
  143. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +3 -2
  144. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +1 -1
  145. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb +1 -1
  146. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +8 -10
  147. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +15 -4
  148. data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +15 -15
  149. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +140 -14
  150. data/bundler/lib/bundler/vendor/thor/lib/thor/command.rb +13 -4
  151. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +4 -0
  152. data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +16 -25
  153. data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +1 -1
  154. data/bundler/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -1
  155. data/bundler/lib/bundler/vendor/thor/lib/thor/nested_context.rb +2 -2
  156. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +20 -1
  157. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +33 -17
  158. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +27 -8
  159. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +44 -6
  160. data/bundler/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +2 -2
  161. data/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +40 -30
  162. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +26 -150
  163. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +4 -46
  164. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/column_printer.rb +29 -0
  165. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +3 -45
  166. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/lcs_diff.rb +49 -0
  167. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +134 -0
  168. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/terminal.rb +42 -0
  169. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/wrapped_printer.rb +38 -0
  170. data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
  171. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +8 -7
  172. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  173. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +155 -8
  174. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +3 -0
  175. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +256 -132
  176. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1 -0
  177. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +95 -31
  178. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  179. data/bundler/lib/bundler/vendored_net_http.rb +8 -0
  180. data/bundler/lib/bundler/vendored_persistent.rb +0 -4
  181. data/bundler/lib/bundler/vendored_timeout.rb +8 -0
  182. data/bundler/lib/bundler/version.rb +1 -1
  183. data/bundler/lib/bundler/vlad.rb +1 -1
  184. data/bundler/lib/bundler/yaml_serializer.rb +9 -4
  185. data/bundler/lib/bundler.rb +38 -35
  186. data/lib/rubygems/available_set.rb +4 -4
  187. data/lib/rubygems/basic_specification.rb +35 -37
  188. data/lib/rubygems/bundler_version_finder.rb +4 -4
  189. data/lib/rubygems/ci_detector.rb +75 -0
  190. data/lib/rubygems/command.rb +15 -17
  191. data/lib/rubygems/command_manager.rb +5 -4
  192. data/lib/rubygems/commands/build_command.rb +2 -2
  193. data/lib/rubygems/commands/cert_command.rb +2 -3
  194. data/lib/rubygems/commands/check_command.rb +4 -4
  195. data/lib/rubygems/commands/cleanup_command.rb +12 -14
  196. data/lib/rubygems/commands/contents_command.rb +5 -5
  197. data/lib/rubygems/commands/dependency_command.rb +4 -5
  198. data/lib/rubygems/commands/environment_command.rb +3 -5
  199. data/lib/rubygems/commands/exec_command.rb +1 -1
  200. data/lib/rubygems/commands/fetch_command.rb +2 -2
  201. data/lib/rubygems/commands/generate_index_command.rb +39 -74
  202. data/lib/rubygems/commands/help_command.rb +4 -4
  203. data/lib/rubygems/commands/info_command.rb +2 -2
  204. data/lib/rubygems/commands/install_command.rb +8 -16
  205. data/lib/rubygems/commands/list_command.rb +2 -2
  206. data/lib/rubygems/commands/lock_command.rb +1 -1
  207. data/lib/rubygems/commands/open_command.rb +1 -1
  208. data/lib/rubygems/commands/owner_command.rb +1 -1
  209. data/lib/rubygems/commands/pristine_command.rb +13 -15
  210. data/lib/rubygems/commands/push_command.rb +2 -2
  211. data/lib/rubygems/commands/query_command.rb +4 -5
  212. data/lib/rubygems/commands/rdoc_command.rb +2 -2
  213. data/lib/rubygems/commands/search_command.rb +2 -2
  214. data/lib/rubygems/commands/setup_command.rb +33 -36
  215. data/lib/rubygems/commands/sources_command.rb +12 -12
  216. data/lib/rubygems/commands/specification_command.rb +10 -10
  217. data/lib/rubygems/commands/stale_command.rb +1 -1
  218. data/lib/rubygems/commands/uninstall_command.rb +13 -14
  219. data/lib/rubygems/commands/unpack_command.rb +7 -7
  220. data/lib/rubygems/commands/update_command.rb +11 -13
  221. data/lib/rubygems/commands/which_command.rb +1 -1
  222. data/lib/rubygems/commands/yank_command.rb +1 -1
  223. data/lib/rubygems/compatibility.rb +5 -6
  224. data/lib/rubygems/config_file.rb +7 -7
  225. data/lib/rubygems/core_ext/kernel_gem.rb +0 -2
  226. data/lib/rubygems/core_ext/kernel_require.rb +20 -49
  227. data/lib/rubygems/core_ext/kernel_warn.rb +1 -1
  228. data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
  229. data/lib/rubygems/defaults.rb +15 -3
  230. data/lib/rubygems/dependency.rb +12 -14
  231. data/lib/rubygems/dependency_installer.rb +30 -31
  232. data/lib/rubygems/dependency_list.rb +1 -1
  233. data/lib/rubygems/deprecate.rb +16 -15
  234. data/lib/rubygems/doctor.rb +6 -6
  235. data/lib/rubygems/errors.rb +2 -6
  236. data/lib/rubygems/exceptions.rb +2 -1
  237. data/lib/rubygems/ext/builder.rb +15 -10
  238. data/lib/rubygems/ext/cargo_builder.rb +5 -5
  239. data/lib/rubygems/ext/ext_conf_builder.rb +2 -4
  240. data/lib/rubygems/ext/rake_builder.rb +1 -1
  241. data/lib/rubygems/gem_runner.rb +4 -4
  242. data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +3 -3
  243. data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +3 -3
  244. data/lib/rubygems/gemcutter_utilities.rb +18 -19
  245. data/lib/rubygems/install_update_options.rb +18 -19
  246. data/lib/rubygems/installer.rb +66 -45
  247. data/lib/rubygems/installer_uninstaller_utils.rb +0 -2
  248. data/lib/rubygems/local_remote_options.rb +8 -11
  249. data/lib/rubygems/name_tuple.rb +7 -9
  250. data/lib/rubygems/net/http.rb +3 -0
  251. data/lib/rubygems/net-http/LICENSE.txt +22 -0
  252. data/lib/rubygems/net-http/lib/net/http/backward.rb +40 -0
  253. data/lib/rubygems/net-http/lib/net/http/exceptions.rb +34 -0
  254. data/lib/rubygems/net-http/lib/net/http/generic_request.rb +414 -0
  255. data/lib/rubygems/net-http/lib/net/http/header.rb +981 -0
  256. data/lib/rubygems/net-http/lib/net/http/proxy_delta.rb +17 -0
  257. data/lib/rubygems/net-http/lib/net/http/request.rb +88 -0
  258. data/lib/rubygems/net-http/lib/net/http/requests.rb +425 -0
  259. data/lib/rubygems/net-http/lib/net/http/response.rb +738 -0
  260. data/lib/rubygems/net-http/lib/net/http/responses.rb +1174 -0
  261. data/lib/rubygems/net-http/lib/net/http/status.rb +84 -0
  262. data/lib/rubygems/net-http/lib/net/http.rb +2496 -0
  263. data/lib/rubygems/net-http/lib/net/https.rb +23 -0
  264. data/lib/rubygems/net-protocol/LICENSE.txt +22 -0
  265. data/lib/rubygems/net-protocol/lib/net/protocol.rb +544 -0
  266. data/lib/rubygems/optparse/lib/optparse.rb +39 -17
  267. data/lib/rubygems/package/digest_io.rb +1 -1
  268. data/lib/rubygems/package/old.rb +2 -2
  269. data/lib/rubygems/package/tar_header.rb +45 -39
  270. data/lib/rubygems/package/tar_reader/entry.rb +5 -4
  271. data/lib/rubygems/package/tar_reader.rb +14 -5
  272. data/lib/rubygems/package/tar_writer.rb +20 -18
  273. data/lib/rubygems/package.rb +28 -27
  274. data/lib/rubygems/package_task.rb +2 -2
  275. data/lib/rubygems/path_support.rb +10 -11
  276. data/lib/rubygems/platform.rb +65 -48
  277. data/lib/rubygems/query_utils.rb +7 -9
  278. data/lib/rubygems/remote_fetcher.rb +17 -17
  279. data/lib/rubygems/request/connection_pools.rb +3 -3
  280. data/lib/rubygems/request.rb +20 -17
  281. data/lib/rubygems/request_set/gem_dependency_api.rb +120 -123
  282. data/lib/rubygems/request_set/lockfile/parser.rb +9 -9
  283. data/lib/rubygems/request_set/lockfile/tokenizer.rb +20 -12
  284. data/lib/rubygems/request_set/lockfile.rb +6 -11
  285. data/lib/rubygems/request_set.rb +5 -5
  286. data/lib/rubygems/requirement.rb +7 -7
  287. data/lib/rubygems/resolv/LICENSE.txt +22 -0
  288. data/lib/rubygems/resolv/lib/resolv.rb +3387 -0
  289. data/lib/rubygems/resolver/activation_request.rb +1 -3
  290. data/lib/rubygems/resolver/api_set/gem_parser.rb +7 -3
  291. data/lib/rubygems/resolver/best_set.rb +1 -1
  292. data/lib/rubygems/resolver/composed_set.rb +1 -1
  293. data/lib/rubygems/resolver/conflict.rb +4 -12
  294. data/lib/rubygems/resolver/index_set.rb +4 -4
  295. data/lib/rubygems/resolver/index_specification.rb +2 -2
  296. data/lib/rubygems/resolver/installer_set.rb +5 -6
  297. data/lib/rubygems/resolver/lock_set.rb +1 -1
  298. data/lib/rubygems/resolver.rb +6 -13
  299. data/lib/rubygems/s3_uri_signer.rb +6 -6
  300. data/lib/rubygems/safe_marshal/elements.rb +138 -0
  301. data/lib/rubygems/safe_marshal/reader.rb +306 -0
  302. data/lib/rubygems/safe_marshal/visitors/stream_printer.rb +31 -0
  303. data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +385 -0
  304. data/lib/rubygems/safe_marshal/visitors/visitor.rb +74 -0
  305. data/lib/rubygems/safe_marshal.rb +74 -0
  306. data/lib/rubygems/safe_yaml.rb +5 -28
  307. data/lib/rubygems/security/policies.rb +36 -38
  308. data/lib/rubygems/security/policy.rb +7 -11
  309. data/lib/rubygems/security/signer.rb +1 -1
  310. data/lib/rubygems/security/trust_dir.rb +4 -4
  311. data/lib/rubygems/security.rb +8 -22
  312. data/lib/rubygems/source/git.rb +1 -3
  313. data/lib/rubygems/source/installed.rb +0 -2
  314. data/lib/rubygems/source/local.rb +7 -9
  315. data/lib/rubygems/source/lock.rb +1 -3
  316. data/lib/rubygems/source/specific_file.rb +0 -1
  317. data/lib/rubygems/source/vendor.rb +0 -2
  318. data/lib/rubygems/source.rb +12 -12
  319. data/lib/rubygems/source_list.rb +5 -5
  320. data/lib/rubygems/spec_fetcher.rb +31 -31
  321. data/lib/rubygems/specification.rb +145 -150
  322. data/lib/rubygems/specification_policy.rb +61 -31
  323. data/lib/rubygems/stub_specification.rb +4 -5
  324. data/lib/rubygems/text.rb +1 -2
  325. data/lib/rubygems/timeout/LICENSE.txt +22 -0
  326. data/lib/rubygems/timeout/lib/timeout.rb +199 -0
  327. data/lib/rubygems/timeout.rb +3 -0
  328. data/lib/rubygems/tsort/lib/tsort.rb +3 -0
  329. data/lib/rubygems/uninstaller.rb +9 -11
  330. data/lib/rubygems/update_suggestion.rb +5 -18
  331. data/lib/rubygems/uri_formatter.rb +1 -1
  332. data/lib/rubygems/user_interaction.rb +17 -23
  333. data/lib/rubygems/util/licenses.rb +113 -35
  334. data/lib/rubygems/util/list.rb +3 -1
  335. data/lib/rubygems/util.rb +2 -4
  336. data/lib/rubygems/validator.rb +6 -4
  337. data/lib/rubygems/version.rb +35 -29
  338. data/lib/rubygems/version_option.rb +2 -5
  339. data/lib/rubygems/yaml_serializer.rb +9 -4
  340. data/lib/rubygems.rb +42 -42
  341. data/rubygems-update.gemspec +4 -4
  342. data/setup.rb +2 -2
  343. metadata +43 -225
  344. data/lib/rubygems/indexer.rb +0 -428
  345. data/lib/rubygems/mock_gem_ui.rb +0 -86
  346. data/test/rubygems/alternate_cert.pem +0 -19
  347. data/test/rubygems/alternate_cert_32.pem +0 -19
  348. data/test/rubygems/alternate_key.pem +0 -27
  349. data/test/rubygems/bad_rake.rb +0 -3
  350. data/test/rubygems/bundler_test_gem.rb +0 -424
  351. data/test/rubygems/ca_cert.pem +0 -77
  352. data/test/rubygems/child_cert.pem +0 -19
  353. data/test/rubygems/child_cert_32.pem +0 -19
  354. data/test/rubygems/child_key.pem +0 -27
  355. data/test/rubygems/client.pem +0 -107
  356. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  357. data/test/rubygems/data/gem-private_key.pem +0 -27
  358. data/test/rubygems/data/gem-public_cert.pem +0 -20
  359. data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
  360. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  361. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  362. data/test/rubygems/encrypted_private_key.pem +0 -30
  363. data/test/rubygems/expired_cert.pem +0 -19
  364. data/test/rubygems/fake_certlib/openssl.rb +0 -9
  365. data/test/rubygems/foo/discover.rb +0 -1
  366. data/test/rubygems/future_cert.pem +0 -19
  367. data/test/rubygems/future_cert_32.pem +0 -19
  368. data/test/rubygems/good_rake.rb +0 -3
  369. data/test/rubygems/grandchild_cert.pem +0 -19
  370. data/test/rubygems/grandchild_cert_32.pem +0 -19
  371. data/test/rubygems/grandchild_key.pem +0 -27
  372. data/test/rubygems/helper.rb +0 -1649
  373. data/test/rubygems/installer_test_case.rb +0 -248
  374. data/test/rubygems/invalid_client.pem +0 -49
  375. data/test/rubygems/invalid_issuer_cert.pem +0 -20
  376. data/test/rubygems/invalid_issuer_cert_32.pem +0 -20
  377. data/test/rubygems/invalid_key.pem +0 -27
  378. data/test/rubygems/invalid_signer_cert.pem +0 -19
  379. data/test/rubygems/invalid_signer_cert_32.pem +0 -19
  380. data/test/rubygems/invalidchild_cert.pem +0 -19
  381. data/test/rubygems/invalidchild_cert_32.pem +0 -19
  382. data/test/rubygems/invalidchild_key.pem +0 -27
  383. data/test/rubygems/multifactor_auth_utilities.rb +0 -111
  384. data/test/rubygems/package/tar_test_case.rb +0 -175
  385. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  386. data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
  387. data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
  388. data/test/rubygems/plugin/exception/rubygems_plugin.rb +0 -4
  389. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -5
  390. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +0 -4
  391. data/test/rubygems/private3072_key.pem +0 -40
  392. data/test/rubygems/private_ec_key.pem +0 -9
  393. data/test/rubygems/private_key.pem +0 -27
  394. data/test/rubygems/public3072_cert.pem +0 -25
  395. data/test/rubygems/public_cert.pem +0 -20
  396. data/test/rubygems/public_cert_32.pem +0 -19
  397. data/test/rubygems/public_key.pem +0 -9
  398. data/test/rubygems/rubygems/commands/crash_command.rb +0 -5
  399. data/test/rubygems/rubygems_plugin.rb +0 -24
  400. data/test/rubygems/sff/discover.rb +0 -1
  401. data/test/rubygems/simple_gem.rb +0 -68
  402. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -9
  403. data/test/rubygems/specifications/foo-0.0.1-x86-mswin32.gemspec +0 -0
  404. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +0 -14
  405. data/test/rubygems/ssl_cert.pem +0 -80
  406. data/test/rubygems/ssl_key.pem +0 -27
  407. data/test/rubygems/test_bundled_ca.rb +0 -61
  408. data/test/rubygems/test_config.rb +0 -28
  409. data/test/rubygems/test_deprecate.rb +0 -158
  410. data/test/rubygems/test_exit.rb +0 -17
  411. data/test/rubygems/test_gem.rb +0 -1799
  412. data/test/rubygems/test_gem_available_set.rb +0 -130
  413. data/test/rubygems/test_gem_bundler_version_finder.rb +0 -127
  414. data/test/rubygems/test_gem_command.rb +0 -403
  415. data/test/rubygems/test_gem_command_manager.rb +0 -400
  416. data/test/rubygems/test_gem_commands_build_command.rb +0 -739
  417. data/test/rubygems/test_gem_commands_cert_command.rb +0 -866
  418. data/test/rubygems/test_gem_commands_check_command.rb +0 -68
  419. data/test/rubygems/test_gem_commands_cleanup_command.rb +0 -292
  420. data/test/rubygems/test_gem_commands_contents_command.rb +0 -271
  421. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -228
  422. data/test/rubygems/test_gem_commands_environment_command.rb +0 -169
  423. data/test/rubygems/test_gem_commands_exec_command.rb +0 -857
  424. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -258
  425. data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -81
  426. data/test/rubygems/test_gem_commands_help_command.rb +0 -94
  427. data/test/rubygems/test_gem_commands_info_command.rb +0 -70
  428. data/test/rubygems/test_gem_commands_install_command.rb +0 -1573
  429. data/test/rubygems/test_gem_commands_list_command.rb +0 -33
  430. data/test/rubygems/test_gem_commands_lock_command.rb +0 -67
  431. data/test/rubygems/test_gem_commands_mirror.rb +0 -20
  432. data/test/rubygems/test_gem_commands_open_command.rb +0 -101
  433. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -50
  434. data/test/rubygems/test_gem_commands_owner_command.rb +0 -503
  435. data/test/rubygems/test_gem_commands_pristine_command.rb +0 -708
  436. data/test/rubygems/test_gem_commands_push_command.rb +0 -603
  437. data/test/rubygems/test_gem_commands_query_command.rb +0 -858
  438. data/test/rubygems/test_gem_commands_search_command.rb +0 -16
  439. data/test/rubygems/test_gem_commands_server_command.rb +0 -20
  440. data/test/rubygems/test_gem_commands_setup_command.rb +0 -474
  441. data/test/rubygems/test_gem_commands_signin_command.rb +0 -259
  442. data/test/rubygems/test_gem_commands_signout_command.rb +0 -30
  443. data/test/rubygems/test_gem_commands_sources_command.rb +0 -534
  444. data/test/rubygems/test_gem_commands_specification_command.rb +0 -277
  445. data/test/rubygems/test_gem_commands_stale_command.rb +0 -43
  446. data/test/rubygems/test_gem_commands_uninstall_command.rb +0 -522
  447. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -224
  448. data/test/rubygems/test_gem_commands_update_command.rb +0 -836
  449. data/test/rubygems/test_gem_commands_which_command.rb +0 -85
  450. data/test/rubygems/test_gem_commands_yank_command.rb +0 -299
  451. data/test/rubygems/test_gem_config_file.rb +0 -551
  452. data/test/rubygems/test_gem_dependency.rb +0 -398
  453. data/test/rubygems/test_gem_dependency_installer.rb +0 -1190
  454. data/test/rubygems/test_gem_dependency_list.rb +0 -265
  455. data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -27
  456. data/test/rubygems/test_gem_doctor.rb +0 -195
  457. data/test/rubygems/test_gem_ext_builder.rb +0 -337
  458. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +0 -1
  459. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +0 -10
  460. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +0 -249
  461. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +0 -10
  462. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +0 -27
  463. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +0 -3
  464. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +0 -1
  465. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +0 -249
  466. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +0 -10
  467. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +0 -10
  468. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +0 -51
  469. data/test/rubygems/test_gem_ext_cargo_builder.rb +0 -167
  470. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +0 -34
  471. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +0 -60
  472. data/test/rubygems/test_gem_ext_cmake_builder.rb +0 -84
  473. data/test/rubygems/test_gem_ext_configure_builder.rb +0 -80
  474. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -229
  475. data/test/rubygems/test_gem_ext_rake_builder.rb +0 -113
  476. data/test/rubygems/test_gem_gem_runner.rb +0 -119
  477. data/test/rubygems/test_gem_gemcutter_utilities.rb +0 -361
  478. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -60
  479. data/test/rubygems/test_gem_indexer.rb +0 -381
  480. data/test/rubygems/test_gem_install_update_options.rb +0 -208
  481. data/test/rubygems/test_gem_installer.rb +0 -2512
  482. data/test/rubygems/test_gem_local_remote_options.rb +0 -133
  483. data/test/rubygems/test_gem_name_tuple.rb +0 -43
  484. data/test/rubygems/test_gem_package.rb +0 -1306
  485. data/test/rubygems/test_gem_package_old.rb +0 -91
  486. data/test/rubygems/test_gem_package_tar_header.rb +0 -226
  487. data/test/rubygems/test_gem_package_tar_reader.rb +0 -135
  488. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -350
  489. data/test/rubygems/test_gem_package_tar_writer.rb +0 -331
  490. data/test/rubygems/test_gem_package_task.rb +0 -118
  491. data/test/rubygems/test_gem_path_support.rb +0 -139
  492. data/test/rubygems/test_gem_platform.rb +0 -497
  493. data/test/rubygems/test_gem_rdoc.rb +0 -137
  494. data/test/rubygems/test_gem_remote_fetcher.rb +0 -1227
  495. data/test/rubygems/test_gem_request.rb +0 -547
  496. data/test/rubygems/test_gem_request_connection_pools.rb +0 -152
  497. data/test/rubygems/test_gem_request_set.rb +0 -672
  498. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +0 -853
  499. data/test/rubygems/test_gem_request_set_lockfile.rb +0 -469
  500. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +0 -544
  501. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +0 -307
  502. data/test/rubygems/test_gem_requirement.rb +0 -505
  503. data/test/rubygems/test_gem_resolver.rb +0 -859
  504. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -43
  505. data/test/rubygems/test_gem_resolver_api_set.rb +0 -210
  506. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -167
  507. data/test/rubygems/test_gem_resolver_best_set.rb +0 -159
  508. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -44
  509. data/test/rubygems/test_gem_resolver_conflict.rb +0 -82
  510. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -83
  511. data/test/rubygems/test_gem_resolver_git_set.rb +0 -188
  512. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -114
  513. data/test/rubygems/test_gem_resolver_index_set.rb +0 -88
  514. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -93
  515. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -47
  516. data/test/rubygems/test_gem_resolver_installer_set.rb +0 -320
  517. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -44
  518. data/test/rubygems/test_gem_resolver_lock_set.rb +0 -62
  519. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -98
  520. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -19
  521. data/test/rubygems/test_gem_resolver_specification.rb +0 -63
  522. data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -82
  523. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -82
  524. data/test/rubygems/test_gem_security.rb +0 -341
  525. data/test/rubygems/test_gem_security_policy.rb +0 -535
  526. data/test/rubygems/test_gem_security_signer.rb +0 -218
  527. data/test/rubygems/test_gem_security_trust_dir.rb +0 -99
  528. data/test/rubygems/test_gem_silent_ui.rb +0 -123
  529. data/test/rubygems/test_gem_source.rb +0 -254
  530. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -37
  531. data/test/rubygems/test_gem_source_git.rb +0 -310
  532. data/test/rubygems/test_gem_source_installed.rb +0 -35
  533. data/test/rubygems/test_gem_source_list.rb +0 -119
  534. data/test/rubygems/test_gem_source_local.rb +0 -107
  535. data/test/rubygems/test_gem_source_lock.rb +0 -113
  536. data/test/rubygems/test_gem_source_specific_file.rb +0 -76
  537. data/test/rubygems/test_gem_source_subpath_problem.rb +0 -50
  538. data/test/rubygems/test_gem_source_vendor.rb +0 -30
  539. data/test/rubygems/test_gem_spec_fetcher.rb +0 -338
  540. data/test/rubygems/test_gem_specification.rb +0 -3856
  541. data/test/rubygems/test_gem_stream_ui.rb +0 -255
  542. data/test/rubygems/test_gem_stub_specification.rb +0 -278
  543. data/test/rubygems/test_gem_text.rb +0 -103
  544. data/test/rubygems/test_gem_uninstaller.rb +0 -675
  545. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -31
  546. data/test/rubygems/test_gem_update_suggestion.rb +0 -209
  547. data/test/rubygems/test_gem_uri.rb +0 -41
  548. data/test/rubygems/test_gem_uri_formatter.rb +0 -27
  549. data/test/rubygems/test_gem_util.rb +0 -91
  550. data/test/rubygems/test_gem_validator.rb +0 -42
  551. data/test/rubygems/test_gem_version.rb +0 -305
  552. data/test/rubygems/test_gem_version_option.rb +0 -165
  553. data/test/rubygems/test_kernel.rb +0 -124
  554. data/test/rubygems/test_project_sanity.rb +0 -49
  555. data/test/rubygems/test_remote_fetch_error.rb +0 -20
  556. data/test/rubygems/test_require.rb +0 -732
  557. data/test/rubygems/test_rubygems.rb +0 -76
  558. data/test/rubygems/test_webauthn_listener.rb +0 -143
  559. data/test/rubygems/test_webauthn_listener_response.rb +0 -93
  560. data/test/rubygems/test_webauthn_poller.rb +0 -124
  561. data/test/rubygems/utilities.rb +0 -436
  562. data/test/rubygems/wrong_key_cert.pem +0 -19
  563. data/test/rubygems/wrong_key_cert_32.pem +0 -19
  564. data/test/test_changelog_generator.rb +0 -17
@@ -1,497 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "helper"
4
- require "rubygems/platform"
5
- require "rbconfig"
6
-
7
- class TestGemPlatform < Gem::TestCase
8
- def test_self_local
9
- util_set_arch "i686-darwin8.10.1"
10
-
11
- assert_equal Gem::Platform.new(%w[x86 darwin 8]), Gem::Platform.local
12
- end
13
-
14
- def test_self_match
15
- Gem::Deprecate.skip_during do
16
- assert Gem::Platform.match(nil), "nil == ruby"
17
- assert Gem::Platform.match(Gem::Platform.local), "exact match"
18
- assert Gem::Platform.match(Gem::Platform.local.to_s), "=~ match"
19
- assert Gem::Platform.match(Gem::Platform::RUBY), "ruby"
20
- end
21
- end
22
-
23
- def test_self_match_gem?
24
- assert Gem::Platform.match_gem?(nil, "json"), "nil == ruby"
25
- assert Gem::Platform.match_gem?(Gem::Platform.local, "json"), "exact match"
26
- assert Gem::Platform.match_gem?(Gem::Platform.local.to_s, "json"), "=~ match"
27
- assert Gem::Platform.match_gem?(Gem::Platform::RUBY, "json"), "ruby"
28
- end
29
-
30
- def test_self_match_spec?
31
- make_spec = -> platform do
32
- util_spec "mygem-for-platform-match_spec", "1" do |s|
33
- s.platform = platform
34
- end
35
- end
36
-
37
- assert Gem::Platform.match_spec?(make_spec.call(nil)), "nil == ruby"
38
- assert Gem::Platform.match_spec?(make_spec.call(Gem::Platform.local)), "exact match"
39
- assert Gem::Platform.match_spec?(make_spec.call(Gem::Platform.local.to_s)), "=~ match"
40
- assert Gem::Platform.match_spec?(make_spec.call(Gem::Platform::RUBY)), "ruby"
41
- end
42
-
43
- def test_self_match_spec_with_match_gem_override
44
- make_spec = -> name, platform do
45
- util_spec name, "1" do |s|
46
- s.platform = platform
47
- end
48
- end
49
-
50
- class << Gem::Platform
51
- alias_method :original_match_gem?, :match_gem?
52
- def match_gem?(platform, gem_name)
53
- # e.g., sassc and libv8 are such gems, their native extensions do not use the Ruby C API
54
- if gem_name == "gem-with-ruby-impl-independent-precompiled-ext"
55
- match_platforms?(platform, [Gem::Platform::RUBY, Gem::Platform.local])
56
- else
57
- match_platforms?(platform, Gem.platforms)
58
- end
59
- end
60
- end
61
-
62
- platforms = Gem.platforms
63
- Gem.platforms = [Gem::Platform::RUBY]
64
- begin
65
- assert_equal true, Gem::Platform.match_spec?(make_spec.call("mygem", Gem::Platform::RUBY))
66
- assert_equal false, Gem::Platform.match_spec?(make_spec.call("mygem", Gem::Platform.local))
67
-
68
- name = "gem-with-ruby-impl-independent-precompiled-ext"
69
- assert_equal true, Gem::Platform.match_spec?(make_spec.call(name, Gem::Platform.local))
70
- ensure
71
- Gem.platforms = platforms
72
- class << Gem::Platform
73
- remove_method :match_gem?
74
- alias_method :match_gem?, :original_match_gem? # rubocop:disable Lint/DuplicateMethods
75
- remove_method :original_match_gem?
76
- end
77
- end
78
- end
79
-
80
- def test_self_new
81
- assert_equal Gem::Platform.local, Gem::Platform.new(Gem::Platform::CURRENT)
82
- assert_equal Gem::Platform::RUBY, Gem::Platform.new(Gem::Platform::RUBY)
83
- assert_equal Gem::Platform::RUBY, Gem::Platform.new(nil)
84
- assert_equal Gem::Platform::RUBY, Gem::Platform.new("")
85
- end
86
-
87
- def test_initialize
88
- test_cases = {
89
- "amd64-freebsd6" => ["amd64", "freebsd", "6"],
90
- "java" => [nil, "java", nil],
91
- "jruby" => [nil, "java", nil],
92
- "universal-dotnet" => ["universal", "dotnet", nil],
93
- "universal-dotnet2.0" => ["universal", "dotnet", "2.0"],
94
- "universal-dotnet4.0" => ["universal", "dotnet", "4.0"],
95
- "powerpc-aix5.3.0.0" => ["powerpc", "aix", "5"],
96
- "powerpc-darwin7" => ["powerpc", "darwin", "7"],
97
- "powerpc-darwin8" => ["powerpc", "darwin", "8"],
98
- "powerpc-linux" => ["powerpc", "linux", nil],
99
- "powerpc64-linux" => ["powerpc64", "linux", nil],
100
- "sparc-solaris2.10" => ["sparc", "solaris", "2.10"],
101
- "sparc-solaris2.8" => ["sparc", "solaris", "2.8"],
102
- "sparc-solaris2.9" => ["sparc", "solaris", "2.9"],
103
- "universal-darwin8" => ["universal", "darwin", "8"],
104
- "universal-darwin9" => ["universal", "darwin", "9"],
105
- "universal-macruby" => ["universal", "macruby", nil],
106
- "i386-cygwin" => ["x86", "cygwin", nil],
107
- "i686-darwin" => ["x86", "darwin", nil],
108
- "i686-darwin8.4.1" => ["x86", "darwin", "8"],
109
- "i386-freebsd4.11" => ["x86", "freebsd", "4"],
110
- "i386-freebsd5" => ["x86", "freebsd", "5"],
111
- "i386-freebsd6" => ["x86", "freebsd", "6"],
112
- "i386-freebsd7" => ["x86", "freebsd", "7"],
113
- "i386-freebsd" => ["x86", "freebsd", nil],
114
- "universal-freebsd" => ["universal", "freebsd", nil],
115
- "i386-java1.5" => ["x86", "java", "1.5"],
116
- "x86-java1.6" => ["x86", "java", "1.6"],
117
- "i386-java1.6" => ["x86", "java", "1.6"],
118
- "i686-linux" => ["x86", "linux", nil],
119
- "i586-linux" => ["x86", "linux", nil],
120
- "i486-linux" => ["x86", "linux", nil],
121
- "i386-linux" => ["x86", "linux", nil],
122
- "i586-linux-gnu" => ["x86", "linux", "gnu"],
123
- "i386-linux-gnu" => ["x86", "linux", "gnu"],
124
- "i386-mingw32" => ["x86", "mingw32", nil],
125
- "x64-mingw-ucrt" => ["x64", "mingw", "ucrt"],
126
- "i386-mswin32" => ["x86", "mswin32", nil],
127
- "i386-mswin32_80" => ["x86", "mswin32", "80"],
128
- "i386-mswin32-80" => ["x86", "mswin32", "80"],
129
- "x86-mswin32" => ["x86", "mswin32", nil],
130
- "x86-mswin32_60" => ["x86", "mswin32", "60"],
131
- "x86-mswin32-60" => ["x86", "mswin32", "60"],
132
- "i386-netbsdelf" => ["x86", "netbsdelf", nil],
133
- "i386-openbsd4.0" => ["x86", "openbsd", "4.0"],
134
- "i386-solaris2.10" => ["x86", "solaris", "2.10"],
135
- "i386-solaris2.8" => ["x86", "solaris", "2.8"],
136
- "mswin32" => ["x86", "mswin32", nil],
137
- "x86_64-linux" => ["x86_64", "linux", nil],
138
- "x86_64-linux-gnu" => ["x86_64", "linux", "gnu"],
139
- "x86_64-linux-musl" => ["x86_64", "linux", "musl"],
140
- "x86_64-linux-uclibc" => ["x86_64", "linux", "uclibc"],
141
- "arm-linux-eabi" => ["arm", "linux", "eabi"],
142
- "arm-linux-gnueabi" => ["arm", "linux", "gnueabi"],
143
- "arm-linux-musleabi" => ["arm", "linux", "musleabi"],
144
- "arm-linux-uclibceabi" => ["arm", "linux", "uclibceabi"],
145
- "x86_64-openbsd3.9" => ["x86_64", "openbsd", "3.9"],
146
- "x86_64-openbsd4.0" => ["x86_64", "openbsd", "4.0"],
147
- "x86_64-openbsd" => ["x86_64", "openbsd", nil],
148
- }
149
-
150
- test_cases.each do |arch, expected|
151
- platform = Gem::Platform.new arch
152
- assert_equal expected, platform.to_a, arch.inspect
153
- assert_equal expected, Gem::Platform.new(platform.to_s).to_a, arch.inspect
154
- end
155
- end
156
-
157
- def test_initialize_command_line
158
- expected = ["x86", "mswin32", nil]
159
-
160
- platform = Gem::Platform.new "i386-mswin32"
161
-
162
- assert_equal expected, platform.to_a, "i386-mswin32"
163
-
164
- expected = ["x86", "mswin32", "80"]
165
-
166
- platform = Gem::Platform.new "i386-mswin32-80"
167
-
168
- assert_equal expected, platform.to_a, "i386-mswin32-80"
169
-
170
- expected = ["x86", "solaris", "2.10"]
171
-
172
- platform = Gem::Platform.new "i386-solaris-2.10"
173
-
174
- assert_equal expected, platform.to_a, "i386-solaris-2.10"
175
- end
176
-
177
- def test_initialize_mswin32_vc6
178
- orig_RUBY_SO_NAME = RbConfig::CONFIG["RUBY_SO_NAME"]
179
- RbConfig::CONFIG["RUBY_SO_NAME"] = "msvcrt-ruby18"
180
-
181
- expected = ["x86", "mswin32", nil]
182
-
183
- platform = Gem::Platform.new "i386-mswin32"
184
-
185
- assert_equal expected, platform.to_a, "i386-mswin32 VC6"
186
- ensure
187
- if orig_RUBY_SO_NAME
188
- RbConfig::CONFIG["RUBY_SO_NAME"] = orig_RUBY_SO_NAME
189
- else
190
- RbConfig::CONFIG.delete "RUBY_SO_NAME"
191
- end
192
- end
193
-
194
- def test_initialize_platform
195
- platform = Gem::Platform.new "cpu-my_platform1"
196
-
197
- assert_equal "cpu", platform.cpu
198
- assert_equal "my_platform", platform.os
199
- assert_equal "1", platform.version
200
- end
201
-
202
- def test_initialize_test
203
- platform = Gem::Platform.new "cpu-my_platform1"
204
- assert_equal "cpu", platform.cpu
205
- assert_equal "my_platform", platform.os
206
- assert_equal "1", platform.version
207
-
208
- platform = Gem::Platform.new "cpu-other_platform1"
209
- assert_equal "cpu", platform.cpu
210
- assert_equal "other_platform", platform.os
211
- assert_equal "1", platform.version
212
- end
213
-
214
- def test_to_s
215
- if win_platform?
216
- assert_equal "x86-mswin32-60", Gem::Platform.local.to_s
217
- else
218
- assert_equal "x86-darwin-8", Gem::Platform.local.to_s
219
- end
220
- end
221
-
222
- def test_equals2
223
- my = Gem::Platform.new %w[cpu my_platform 1]
224
- other = Gem::Platform.new %w[cpu other_platform 1]
225
-
226
- assert_equal my, my
227
- refute_equal my, other
228
- refute_equal other, my
229
- end
230
-
231
- def test_equals3
232
- my = Gem::Platform.new %w[cpu my_platform 1]
233
- other = Gem::Platform.new %w[cpu other_platform 1]
234
-
235
- assert(my === my)
236
- refute(other === my)
237
- refute(my === other)
238
- end
239
-
240
- def test_equals3_cpu
241
- ppc_darwin8 = Gem::Platform.new "powerpc-darwin8.0"
242
- uni_darwin8 = Gem::Platform.new "universal-darwin8.0"
243
- x86_darwin8 = Gem::Platform.new "i686-darwin8.0"
244
-
245
- util_set_arch "powerpc-darwin8"
246
- assert((ppc_darwin8 === Gem::Platform.local), "powerpc =~ universal")
247
- assert((uni_darwin8 === Gem::Platform.local), "powerpc =~ universal")
248
- refute((x86_darwin8 === Gem::Platform.local), "powerpc =~ universal")
249
-
250
- util_set_arch "i686-darwin8"
251
- refute((ppc_darwin8 === Gem::Platform.local), "powerpc =~ universal")
252
- assert((uni_darwin8 === Gem::Platform.local), "x86 =~ universal")
253
- assert((x86_darwin8 === Gem::Platform.local), "powerpc =~ universal")
254
-
255
- util_set_arch "universal-darwin8"
256
- assert((ppc_darwin8 === Gem::Platform.local), "universal =~ ppc")
257
- assert((uni_darwin8 === Gem::Platform.local), "universal =~ universal")
258
- assert((x86_darwin8 === Gem::Platform.local), "universal =~ x86")
259
- end
260
-
261
- def test_nil_cpu_arch_is_treated_as_universal
262
- with_nil_arch = Gem::Platform.new [nil, "mingw32"]
263
- with_uni_arch = Gem::Platform.new ["universal", "mingw32"]
264
- with_x86_arch = Gem::Platform.new ["x86", "mingw32"]
265
-
266
- assert((with_nil_arch === with_uni_arch), "nil =~ universal")
267
- assert((with_uni_arch === with_nil_arch), "universal =~ nil")
268
- assert((with_nil_arch === with_x86_arch), "nil =~ x86")
269
- assert((with_x86_arch === with_nil_arch), "x86 =~ nil")
270
- end
271
-
272
- def test_nil_version_is_treated_as_any_version
273
- x86_darwin_8 = Gem::Platform.new "i686-darwin8.0"
274
- x86_darwin_nil = Gem::Platform.new "i686-darwin"
275
-
276
- assert((x86_darwin_8 === x86_darwin_nil), "8.0 =~ nil")
277
- assert((x86_darwin_nil === x86_darwin_8), "nil =~ 8.0")
278
- end
279
-
280
- def test_nil_version_is_stricter_for_linux_os
281
- x86_linux = Gem::Platform.new "i686-linux"
282
- x86_linux_gnu = Gem::Platform.new "i686-linux-gnu"
283
- x86_linux_musl = Gem::Platform.new "i686-linux-musl"
284
- x86_linux_uclibc = Gem::Platform.new "i686-linux-uclibc"
285
-
286
- # a naked linux runtime is implicit gnu, as it represents the common glibc-linked runtime
287
- assert(x86_linux === x86_linux_gnu, "linux =~ linux-gnu")
288
- assert(x86_linux_gnu === x86_linux, "linux-gnu =~ linux")
289
-
290
- # musl and explicit gnu should differ
291
- refute(x86_linux_gnu === x86_linux_musl, "linux-gnu =~ linux-musl")
292
- refute(x86_linux_musl === x86_linux_gnu, "linux-musl =~ linux-gnu")
293
-
294
- # explicit libc differ
295
- refute(x86_linux_uclibc === x86_linux_musl, "linux-uclibc =~ linux-musl")
296
- refute(x86_linux_musl === x86_linux_uclibc, "linux-musl =~ linux-uclibc")
297
-
298
- # musl host runtime accepts libc-generic or statically linked gems...
299
- assert(x86_linux === x86_linux_musl, "linux =~ linux-musl")
300
- # ...but implicit gnu runtime generally does not accept musl-specific gems
301
- refute(x86_linux_musl === x86_linux, "linux-musl =~ linux")
302
-
303
- # other libc are not glibc compatible
304
- refute(x86_linux === x86_linux_uclibc, "linux =~ linux-uclibc")
305
- refute(x86_linux_uclibc === x86_linux, "linux-uclibc =~ linux")
306
- end
307
-
308
- def test_eabi_version_is_stricter_for_linux_os
309
- arm_linux_eabi = Gem::Platform.new "arm-linux-eabi"
310
- arm_linux_gnueabi = Gem::Platform.new "arm-linux-gnueabi"
311
- arm_linux_musleabi = Gem::Platform.new "arm-linux-musleabi"
312
- arm_linux_uclibceabi = Gem::Platform.new "arm-linux-uclibceabi"
313
-
314
- # a naked linux runtime is implicit gnu, as it represents the common glibc-linked runtime
315
- assert(arm_linux_eabi === arm_linux_gnueabi, "linux-eabi =~ linux-gnueabi")
316
- assert(arm_linux_gnueabi === arm_linux_eabi, "linux-gnueabi =~ linux-eabi")
317
-
318
- # musl and explicit gnu should differ
319
- refute(arm_linux_gnueabi === arm_linux_musleabi, "linux-gnueabi =~ linux-musleabi")
320
- refute(arm_linux_musleabi === arm_linux_gnueabi, "linux-musleabi =~ linux-gnueabi")
321
-
322
- # explicit libc differ
323
- refute(arm_linux_uclibceabi === arm_linux_musleabi, "linux-uclibceabi =~ linux-musleabi")
324
- refute(arm_linux_musleabi === arm_linux_uclibceabi, "linux-musleabi =~ linux-uclibceabi")
325
-
326
- # musl host runtime accepts libc-generic or statically linked gems...
327
- assert(arm_linux_eabi === arm_linux_musleabi, "linux-eabi =~ linux-musleabi")
328
- # ...but implicit gnu runtime generally does not accept musl-specific gems
329
- refute(arm_linux_musleabi === arm_linux_eabi, "linux-musleabi =~ linux-eabi")
330
-
331
- # other libc are not glibc compatible
332
- refute(arm_linux_eabi === arm_linux_uclibceabi, "linux-eabi =~ linux-uclibceabi")
333
- refute(arm_linux_uclibceabi === arm_linux_eabi, "linux-uclibceabi =~ linux-eabi")
334
- end
335
-
336
- def test_eabi_and_nil_version_combination_strictness
337
- arm_linux = Gem::Platform.new "arm-linux"
338
- arm_linux_eabi = Gem::Platform.new "arm-linux-eabi"
339
- arm_linux_eabihf = Gem::Platform.new "arm-linux-eabihf"
340
- arm_linux_gnueabi = Gem::Platform.new "arm-linux-gnueabi"
341
- arm_linux_gnueabihf = Gem::Platform.new "arm-linux-gnueabihf"
342
- arm_linux_musleabi = Gem::Platform.new "arm-linux-musleabi"
343
- arm_linux_musleabihf = Gem::Platform.new "arm-linux-musleabihf"
344
- arm_linux_uclibceabi = Gem::Platform.new "arm-linux-uclibceabi"
345
- arm_linux_uclibceabihf = Gem::Platform.new "arm-linux-uclibceabihf"
346
-
347
- # generic arm host runtime with eabi modifier accepts generic arm gems
348
- assert(arm_linux === arm_linux_eabi, "arm-linux =~ arm-linux-eabi")
349
- assert(arm_linux === arm_linux_eabihf, "arm-linux =~ arm-linux-eabihf")
350
-
351
- # explicit gnu arm host runtime with eabi modifier accepts generic arm gems
352
- assert(arm_linux === arm_linux_gnueabi, "arm-linux =~ arm-linux-gnueabi")
353
- assert(arm_linux === arm_linux_gnueabihf, "arm-linux =~ arm-linux-gnueabihf")
354
-
355
- # musl arm host runtime accepts libc-generic or statically linked gems...
356
- assert(arm_linux === arm_linux_musleabi, "arm-linux =~ arm-linux-musleabi")
357
- assert(arm_linux === arm_linux_musleabihf, "arm-linux =~ arm-linux-musleabihf")
358
-
359
- # other libc arm hosts are not glibc compatible
360
- refute(arm_linux === arm_linux_uclibceabi, "arm-linux =~ arm-linux-uclibceabi")
361
- refute(arm_linux === arm_linux_uclibceabihf, "arm-linux =~ arm-linux-uclibceabihf")
362
- end
363
-
364
- def test_equals3_cpu_arm
365
- arm = Gem::Platform.new "arm-linux"
366
- armv5 = Gem::Platform.new "armv5-linux"
367
- armv7 = Gem::Platform.new "armv7-linux"
368
-
369
- util_set_arch "armv5-linux"
370
- assert((arm === Gem::Platform.local), "arm === armv5")
371
- assert((armv5 === Gem::Platform.local), "armv5 === armv5")
372
- refute((armv7 === Gem::Platform.local), "armv7 === armv5")
373
- refute((Gem::Platform.local === arm), "armv5 === arm")
374
-
375
- util_set_arch "armv7-linux"
376
- assert((arm === Gem::Platform.local), "arm === armv7")
377
- refute((armv5 === Gem::Platform.local), "armv5 === armv7")
378
- assert((armv7 === Gem::Platform.local), "armv7 === armv7")
379
- refute((Gem::Platform.local === arm), "armv7 === arm")
380
- end
381
-
382
- def test_equals3_universal_mingw
383
- uni_mingw = Gem::Platform.new "universal-mingw"
384
- mingw32 = Gem::Platform.new "x64-mingw32"
385
- mingw_ucrt = Gem::Platform.new "x64-mingw-ucrt"
386
-
387
- util_set_arch "x64-mingw32"
388
- assert((uni_mingw === Gem::Platform.local), "uni_mingw === mingw32")
389
- assert((mingw32 === Gem::Platform.local), "mingw32 === mingw32")
390
- refute((mingw_ucrt === Gem::Platform.local), "mingw32 === mingw_ucrt")
391
-
392
- util_set_arch "x64-mingw-ucrt"
393
- assert((uni_mingw === Gem::Platform.local), "uni_mingw === mingw32")
394
- assert((mingw_ucrt === Gem::Platform.local), "mingw_ucrt === mingw_ucrt")
395
- refute((mingw32 === Gem::Platform.local), "mingw32 === mingw_ucrt")
396
- end
397
-
398
- def test_equals3_version
399
- util_set_arch "i686-darwin8"
400
-
401
- x86_darwin = Gem::Platform.new ["x86", "darwin", nil]
402
- x86_darwin7 = Gem::Platform.new ["x86", "darwin", "7"]
403
- x86_darwin8 = Gem::Platform.new ["x86", "darwin", "8"]
404
- x86_darwin9 = Gem::Platform.new ["x86", "darwin", "9"]
405
-
406
- assert((x86_darwin === Gem::Platform.local), "x86_darwin === x86_darwin8")
407
- assert((x86_darwin8 === Gem::Platform.local), "x86_darwin8 === x86_darwin8")
408
-
409
- refute((x86_darwin7 === Gem::Platform.local), "x86_darwin7 === x86_darwin8")
410
- refute((x86_darwin9 === Gem::Platform.local), "x86_darwin9 === x86_darwin8")
411
- end
412
-
413
- def test_equals_tilde
414
- util_set_arch "i386-mswin32"
415
-
416
- assert_local_match "mswin32"
417
- assert_local_match "i386-mswin32"
418
-
419
- # oddballs
420
- assert_local_match "i386-mswin32-mq5.3"
421
- assert_local_match "i386-mswin32-mq6"
422
- refute_local_match "win32-1.8.2-VC7"
423
- refute_local_match "win32-1.8.4-VC6"
424
- refute_local_match "win32-source"
425
- refute_local_match "windows"
426
-
427
- util_set_arch "i686-linux"
428
- assert_local_match "i486-linux"
429
- assert_local_match "i586-linux"
430
- assert_local_match "i686-linux"
431
-
432
- util_set_arch "i686-darwin8"
433
- assert_local_match "i686-darwin8.4.1"
434
- assert_local_match "i686-darwin8.8.2"
435
-
436
- util_set_arch "java"
437
- assert_local_match "java"
438
- assert_local_match "jruby"
439
-
440
- util_set_arch "universal-dotnet2.0"
441
- assert_local_match "universal-dotnet"
442
- assert_local_match "universal-dotnet-2.0"
443
- refute_local_match "universal-dotnet-4.0"
444
- assert_local_match "dotnet"
445
- assert_local_match "dotnet-2.0"
446
- refute_local_match "dotnet-4.0"
447
-
448
- util_set_arch "universal-dotnet4.0"
449
- assert_local_match "universal-dotnet"
450
- refute_local_match "universal-dotnet-2.0"
451
- assert_local_match "universal-dotnet-4.0"
452
- assert_local_match "dotnet"
453
- refute_local_match "dotnet-2.0"
454
- assert_local_match "dotnet-4.0"
455
-
456
- util_set_arch "universal-macruby-1.0"
457
- assert_local_match "universal-macruby"
458
- assert_local_match "macruby"
459
- refute_local_match "universal-macruby-0.10"
460
- assert_local_match "universal-macruby-1.0"
461
-
462
- util_set_arch "powerpc-darwin"
463
- assert_local_match "powerpc-darwin"
464
-
465
- util_set_arch "powerpc-darwin7"
466
- assert_local_match "powerpc-darwin7.9.0"
467
-
468
- util_set_arch "powerpc-darwin8"
469
- assert_local_match "powerpc-darwin8.10.0"
470
-
471
- util_set_arch "sparc-solaris2.8"
472
- assert_local_match "sparc-solaris2.8-mq5.3"
473
- end
474
-
475
- def test_inspect
476
- result = Gem::Platform.new("universal-java11").inspect
477
-
478
- assert_equal 1, result.scan(/@cpu=/).size
479
- assert_equal 1, result.scan(/@os=/).size
480
- assert_equal 1, result.scan(/@version=/).size
481
- end
482
-
483
- def test_gem_platform_match_with_string_argument
484
- util_set_arch "x86_64-linux-musl"
485
-
486
- assert(Gem::Platform.match(Gem::Platform.new("x86_64-linux")), "should match Gem::Platform")
487
- assert(Gem::Platform.match("x86_64-linux"), "should match String platform")
488
- end
489
-
490
- def assert_local_match(name)
491
- assert_match Gem::Platform.local, name
492
- end
493
-
494
- def refute_local_match(name)
495
- refute_match Gem::Platform.local, name
496
- end
497
- end
@@ -1,137 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "rubygems"
4
- require_relative "helper"
5
- require "rubygems/rdoc"
6
-
7
- class TestGemRDoc < Gem::TestCase
8
- Gem::RDoc.load_rdoc
9
-
10
- def setup
11
- super
12
-
13
- @a = util_spec "a" do |s|
14
- s.rdoc_options = %w[--main MyTitle]
15
- s.extra_rdoc_files = %w[README]
16
- end
17
-
18
- write_file File.join(@tempdir, "lib", "a.rb")
19
- write_file File.join(@tempdir, "README")
20
-
21
- install_gem @a
22
-
23
- @hook = Gem::RDoc.new @a
24
-
25
- begin
26
- Gem::RDoc.load_rdoc
27
- rescue Gem::DocumentError => e
28
- pend e.message
29
- end
30
-
31
- Gem.configuration[:rdoc] = nil
32
- end
33
-
34
- def test_initialize
35
- refute @hook.generate_rdoc
36
- assert @hook.generate_ri
37
-
38
- rdoc = Gem::RDoc.new @a, false, false
39
-
40
- refute rdoc.generate_rdoc
41
- refute rdoc.generate_ri
42
- end
43
-
44
- def test_delete_legacy_args
45
- args = %w[
46
- --inline-source
47
- --one-file
48
- --promiscuous
49
- -p
50
- ]
51
-
52
- @hook.delete_legacy_args args
53
-
54
- assert_empty args
55
- end
56
-
57
- def test_generate_disabled
58
- @hook.generate_rdoc = false
59
- @hook.generate_ri = false
60
-
61
- @hook.generate
62
-
63
- refute @hook.rdoc_installed?
64
- refute @hook.ri_installed?
65
- end
66
-
67
- def test_new_rdoc
68
- assert_kind_of RDoc::RDoc, @hook.new_rdoc
69
- end
70
-
71
- def test_rdoc_installed?
72
- refute @hook.rdoc_installed?
73
-
74
- FileUtils.mkdir_p @a.doc_dir "rdoc"
75
-
76
- assert @hook.rdoc_installed?
77
- end
78
-
79
- def test_remove
80
- FileUtils.mkdir_p @a.doc_dir "rdoc"
81
- FileUtils.mkdir_p @a.doc_dir "ri"
82
-
83
- @hook.remove
84
-
85
- refute @hook.rdoc_installed?
86
- refute @hook.ri_installed?
87
-
88
- assert_path_exist @a.doc_dir
89
- end
90
-
91
- def test_remove_unwritable
92
- pend "chmod not supported" if Gem.win_platform?
93
- pend "skipped in root privilege" if Process.uid.zero?
94
- FileUtils.mkdir_p @a.base_dir
95
- FileUtils.chmod 0, @a.base_dir
96
-
97
- e = assert_raise Gem::FilePermissionError do
98
- @hook.remove
99
- end
100
-
101
- assert_equal @a.base_dir, e.directory
102
- ensure
103
- FileUtils.chmod(0o755, @a.base_dir) if File.directory?(@a.base_dir)
104
- end
105
-
106
- def test_ri_installed?
107
- refute @hook.ri_installed?
108
-
109
- FileUtils.mkdir_p @a.doc_dir "ri"
110
-
111
- assert @hook.ri_installed?
112
- end
113
-
114
- def test_setup
115
- @hook.setup
116
-
117
- assert_path_exist @a.doc_dir
118
- end
119
-
120
- def test_setup_unwritable
121
- pend "chmod not supported" if Gem.win_platform?
122
- pend "skipped in root privilege" if Process.uid.zero?
123
- FileUtils.mkdir_p @a.doc_dir
124
- FileUtils.chmod 0, @a.doc_dir
125
-
126
- e = assert_raise Gem::FilePermissionError do
127
- @hook.setup
128
- end
129
-
130
- assert_equal @a.doc_dir, e.directory
131
- ensure
132
- if File.exist? @a.doc_dir
133
- FileUtils.chmod 0o755, @a.doc_dir
134
- FileUtils.rm_r @a.doc_dir
135
- end
136
- end
137
- end