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,305 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "helper"
4
- require "rubygems/version"
5
-
6
- class TestGemVersion < Gem::TestCase
7
- class V < ::Gem::Version
8
- end
9
-
10
- def test_bump
11
- assert_bumped_version_equal "5.3", "5.2.4"
12
- end
13
-
14
- def test_bump_alpha
15
- assert_bumped_version_equal "5.3", "5.2.4.a"
16
- end
17
-
18
- def test_bump_alphanumeric
19
- assert_bumped_version_equal "5.3", "5.2.4.a10"
20
- end
21
-
22
- def test_bump_trailing_zeros
23
- assert_bumped_version_equal "5.1", "5.0.0"
24
- end
25
-
26
- def test_bump_one_level
27
- assert_bumped_version_equal "6", "5"
28
- end
29
-
30
- # A Gem::Version is already a Gem::Version and therefore not transformed by
31
- # Gem::Version.create
32
-
33
- def test_class_create
34
- real = Gem::Version.new(1.0)
35
-
36
- assert_same real, Gem::Version.create(real)
37
-
38
- expected = "nil versions are discouraged and will be deprecated in Rubygems 4\n"
39
- actual_stdout, actual_stderr = capture_output do
40
- assert_nil Gem::Version.create(nil)
41
- end
42
- assert_empty actual_stdout
43
- assert_equal(expected, actual_stderr)
44
-
45
- assert_equal v("5.1"), Gem::Version.create("5.1")
46
-
47
- ver = "1.1"
48
- assert_equal v("1.1"), Gem::Version.create(ver)
49
- end
50
-
51
- def test_class_correct
52
- assert_equal true, Gem::Version.correct?("5.1")
53
- assert_equal false, Gem::Version.correct?("an incorrect version")
54
-
55
- expected = "nil versions are discouraged and will be deprecated in Rubygems 4\n"
56
- actual_stdout, actual_stderr = capture_output do
57
- Gem::Version.correct?(nil)
58
- end
59
- assert_empty actual_stdout
60
- assert_equal(expected, actual_stderr)
61
- end
62
-
63
- def test_class_new_subclass
64
- v1 = Gem::Version.new "1"
65
- v2 = V.new "1"
66
-
67
- refute_same v1, v2
68
- end
69
-
70
- def test_eql_eh
71
- assert_version_eql "1.2", "1.2"
72
- refute_version_eql "1.2", "1.2.0"
73
- refute_version_eql "1.2", "1.3"
74
- refute_version_eql "1.2.b1", "1.2.b.1"
75
- end
76
-
77
- def test_equals2
78
- assert_version_equal "1.2", "1.2"
79
- refute_version_equal "1.2", "1.3"
80
- assert_version_equal "1.2.b1", "1.2.b.1"
81
- end
82
-
83
- # REVISIT: consider removing as too impl-bound
84
- def test_hash
85
- assert_equal v("1.2").hash, v("1.2").hash
86
- refute_equal v("1.2").hash, v("1.3").hash
87
- assert_equal v("1.2").hash, v("1.2.0").hash
88
- assert_equal v("1.2.pre.1").hash, v("1.2.0.pre.1.0").hash
89
- end
90
-
91
- def test_initialize
92
- ["1.0", "1.0 ", " 1.0 ", "1.0\n", "\n1.0\n", "1.0"].each do |good|
93
- assert_version_equal "1.0", good
94
- end
95
-
96
- assert_version_equal "1", 1
97
- end
98
-
99
- def test_initialize_invalid
100
- invalid_versions = %W[
101
- junk
102
- 1.0\n2.0
103
- 1..2
104
- 1.2\ 3.4
105
- ]
106
-
107
- # DON'T TOUCH THIS WITHOUT CHECKING CVE-2013-4287
108
- invalid_versions << "2.3422222.222.222222222.22222.ads0as.dasd0.ddd2222.2.qd3e."
109
-
110
- invalid_versions.each do |invalid|
111
- e = assert_raise ArgumentError, invalid do
112
- Gem::Version.new invalid
113
- end
114
-
115
- assert_equal "Malformed version number string #{invalid}", e.message, invalid
116
- end
117
- end
118
-
119
- def test_empty_version
120
- ["", " ", " "].each do |empty|
121
- assert_equal "0", Gem::Version.new(empty).version
122
- end
123
- end
124
-
125
- def test_prerelease
126
- assert_prerelease "1.2.0.a"
127
- assert_prerelease "2.9.b"
128
- assert_prerelease "22.1.50.0.d"
129
- assert_prerelease "1.2.d.42"
130
-
131
- assert_prerelease "1.A"
132
-
133
- assert_prerelease "1-1"
134
- assert_prerelease "1-a"
135
-
136
- refute_prerelease "1.2.0"
137
- refute_prerelease "2.9"
138
- refute_prerelease "22.1.50.0"
139
- end
140
-
141
- def test_release
142
- assert_release_equal "1.2.0", "1.2.0.a"
143
- assert_release_equal "1.1", "1.1.rc10"
144
- assert_release_equal "1.9.3", "1.9.3.alpha.5"
145
- assert_release_equal "1.9.3", "1.9.3"
146
- end
147
-
148
- def test_spaceship
149
- assert_equal(0, v("1.0") <=> v("1.0.0"))
150
- assert_equal(1, v("1.0") <=> v("1.0.a"))
151
- assert_equal(1, v("1.8.2") <=> v("0.0.0"))
152
- assert_equal(1, v("1.8.2") <=> v("1.8.2.a"))
153
- assert_equal(1, v("1.8.2.b") <=> v("1.8.2.a"))
154
- assert_equal(-1, v("1.8.2.a") <=> v("1.8.2"))
155
- assert_equal(1, v("1.8.2.a10") <=> v("1.8.2.a9"))
156
- assert_equal(0, v("") <=> v("0"))
157
-
158
- assert_equal(0, v("0.beta.1") <=> v("0.0.beta.1"))
159
- assert_equal(-1, v("0.0.beta") <=> v("0.0.beta.1"))
160
- assert_equal(-1, v("0.0.beta") <=> v("0.beta.1"))
161
-
162
- assert_equal(-1, v("5.a") <=> v("5.0.0.rc2"))
163
- assert_equal(1, v("5.x") <=> v("5.0.0.rc2"))
164
-
165
- assert_equal(0, v("1.9.3") <=> "1.9.3")
166
- assert_equal(1, v("1.9.3") <=> "1.9.2.99")
167
- assert_equal(-1, v("1.9.3") <=> "1.9.3.1")
168
-
169
- assert_nil v("1.0") <=> "whatever"
170
- end
171
-
172
- def test_approximate_recommendation
173
- assert_approximate_equal "~> 1.0", "1"
174
- assert_approximate_satisfies_itself "1"
175
-
176
- assert_approximate_equal "~> 1.0", "1.0"
177
- assert_approximate_satisfies_itself "1.0"
178
-
179
- assert_approximate_equal "~> 1.2", "1.2"
180
- assert_approximate_satisfies_itself "1.2"
181
-
182
- assert_approximate_equal "~> 1.2", "1.2.0"
183
- assert_approximate_satisfies_itself "1.2.0"
184
-
185
- assert_approximate_equal "~> 1.2", "1.2.3"
186
- assert_approximate_satisfies_itself "1.2.3"
187
-
188
- assert_approximate_equal "~> 1.2.a", "1.2.3.a.4"
189
- assert_approximate_satisfies_itself "1.2.3.a.4"
190
-
191
- assert_approximate_equal "~> 1.9.a", "1.9.0.dev"
192
- assert_approximate_satisfies_itself "1.9.0.dev"
193
- end
194
-
195
- def test_to_s
196
- assert_equal "5.2.4", v("5.2.4").to_s
197
- end
198
-
199
- def test_semver
200
- assert_less_than "1.0.0-alpha", "1.0.0-alpha.1"
201
- assert_less_than "1.0.0-alpha.1", "1.0.0-beta.2"
202
- assert_less_than "1.0.0-beta.2", "1.0.0-beta.11"
203
- assert_less_than "1.0.0-beta.11", "1.0.0-rc.1"
204
- assert_less_than "1.0.0-rc1", "1.0.0"
205
- assert_less_than "1.0.0-1", "1"
206
- end
207
-
208
- # modifying the segments of a version should not affect the segments of the cached version object
209
- def test_segments
210
- v("9.8.7").segments[2] += 1
211
-
212
- refute_version_equal "9.8.8", "9.8.7"
213
- assert_equal [9,8,7], v("9.8.7").segments
214
- end
215
-
216
- def test_canonical_segments
217
- assert_equal [1], v("1.0.0").canonical_segments
218
- assert_equal [1, "a", 1], v("1.0.0.a.1.0").canonical_segments
219
- assert_equal [1, 2, 3, "pre", 1], v("1.2.3-1").canonical_segments
220
- end
221
-
222
- def test_frozen_version
223
- v = v("1.freeze.test").freeze
224
- assert_less_than v, v("1")
225
- assert_version_equal v("1"), v.release
226
- assert_version_equal v("2"), v.bump
227
- end
228
-
229
- # Asserts that +version+ is a prerelease.
230
-
231
- def assert_prerelease(version)
232
- assert v(version).prerelease?, "#{version} is a prerelease"
233
- end
234
-
235
- # Assert that +expected+ is the "approximate" recommendation for +version+.
236
-
237
- def assert_approximate_equal(expected, version)
238
- assert_equal expected, v(version).approximate_recommendation
239
- end
240
-
241
- # Assert that the "approximate" recommendation for +version+ satisfies +version+.
242
-
243
- def assert_approximate_satisfies_itself(version)
244
- gem_version = v(version)
245
-
246
- assert Gem::Requirement.new(gem_version.approximate_recommendation).satisfied_by?(gem_version)
247
- end
248
-
249
- # Assert that bumping the +unbumped+ version yields the +expected+.
250
-
251
- def assert_bumped_version_equal(expected, unbumped)
252
- assert_version_equal expected, v(unbumped).bump
253
- end
254
-
255
- # Assert that +release+ is the correct non-prerelease +version+.
256
-
257
- def assert_release_equal(release, version)
258
- assert_version_equal release, v(version).release
259
- end
260
-
261
- # Assert that two versions are equal. Handles strings or
262
- # Gem::Version instances.
263
-
264
- def assert_version_equal(expected, actual)
265
- assert_equal v(expected), v(actual)
266
- assert_equal v(expected).hash, v(actual).hash, "since #{actual} == #{expected}, they must have the same hash"
267
- end
268
-
269
- # Assert that two versions are eql?. Checks both directions.
270
-
271
- def assert_version_eql(first, second)
272
- first = v(first)
273
- second = v(second)
274
- assert first.eql?(second), "#{first} is eql? #{second}"
275
- assert second.eql?(first), "#{second} is eql? #{first}"
276
- end
277
-
278
- def assert_less_than(left, right)
279
- l = v(left)
280
- r = v(right)
281
- assert l < r, "#{left} not less than #{right}"
282
- end
283
-
284
- # Refute the assumption that +version+ is a prerelease.
285
-
286
- def refute_prerelease(version)
287
- refute v(version).prerelease?, "#{version} is NOT a prerelease"
288
- end
289
-
290
- # Refute the assumption that two versions are eql?. Checks both
291
- # directions.
292
-
293
- def refute_version_eql(first, second)
294
- first = v(first)
295
- second = v(second)
296
- refute first.eql?(second), "#{first} is NOT eql? #{second}"
297
- refute second.eql?(first), "#{second} is NOT eql? #{first}"
298
- end
299
-
300
- # Refute the assumption that the two versions are equal?.
301
-
302
- def refute_version_equal(unexpected, actual)
303
- refute_equal v(unexpected), v(actual)
304
- end
305
- end
@@ -1,165 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "helper"
4
- require "rubygems/command"
5
- require "rubygems/version_option"
6
-
7
- class TestGemVersionOption < Gem::TestCase
8
- def setup
9
- super
10
-
11
- @cmd = Gem::Command.new "dummy", "dummy"
12
- @cmd.extend Gem::VersionOption
13
- end
14
-
15
- def test_add_platform_option
16
- @cmd.add_platform_option
17
-
18
- assert @cmd.handles?(%w[--platform x86-darwin])
19
- end
20
-
21
- def test_add_version_option
22
- @cmd.add_version_option
23
-
24
- assert @cmd.handles?(%w[--version >1])
25
- end
26
-
27
- def test_enables_prerelease
28
- @cmd.add_version_option
29
-
30
- @cmd.handle_options %w[mygem -v 0.2.0.a]
31
- assert @cmd.options[:prerelease]
32
-
33
- @cmd.handle_options %w[mygem -v 0.2.0]
34
- refute @cmd.options[:prerelease]
35
-
36
- @cmd.handle_options %w[mygem]
37
- refute @cmd.options[:prerelease]
38
- end
39
-
40
- def test_platform_option
41
- @cmd.add_platform_option
42
-
43
- @cmd.handle_options %w[--platform x86-freebsd6 --platform x86-freebsd7]
44
-
45
- expected = [
46
- Gem::Platform::RUBY,
47
- Gem::Platform.new("x86-freebsd6"),
48
- Gem::Platform.new("x86-freebsd7"),
49
- ]
50
-
51
- assert_equal expected, Gem.platforms
52
- end
53
-
54
- def test_platform_option_ruby
55
- @cmd.add_platform_option
56
-
57
- @cmd.handle_options %w[--platform ruby]
58
-
59
- expected = [
60
- Gem::Platform::RUBY,
61
- ]
62
-
63
- assert_equal expected, Gem.platforms
64
- end
65
-
66
- def test_platform_option_twice
67
- @cmd.add_platform_option
68
-
69
- @cmd.handle_options %w[--platform x86-freebsd6 --platform x86-freebsd-6]
70
-
71
- expected = [
72
- Gem::Platform::RUBY,
73
- Gem::Platform.new("x86-freebsd6"),
74
- ]
75
-
76
- assert_equal expected, Gem.platforms
77
- end
78
-
79
- def test_version_option
80
- @cmd.add_version_option
81
-
82
- @cmd.handle_options %w[--version >1]
83
-
84
- expected = {
85
- :args => [],
86
- :explicit_prerelease => false,
87
- :prerelease => false,
88
- :version => Gem::Requirement.new("> 1"),
89
- }
90
-
91
- assert_equal expected, @cmd.options
92
- end
93
-
94
- def test_version_option_compound
95
- @cmd.add_version_option
96
-
97
- @cmd.handle_options ["--version", "< 1, > 0.9"]
98
-
99
- expected = {
100
- :args => [],
101
- :explicit_prerelease => false,
102
- :prerelease => false,
103
- :version => Gem::Requirement.new("< 1", "> 0.9"),
104
- }
105
-
106
- assert_equal expected, @cmd.options
107
- end
108
-
109
- def test_multiple_version_operator_option_compound
110
- @cmd.add_version_option
111
-
112
- @cmd.handle_options ["--version", "< 1", "--version", "> 0.9"]
113
-
114
- expected = {
115
- :args => [],
116
- :explicit_prerelease => false,
117
- :prerelease => false,
118
- :version => Gem::Requirement.new("< 1", "> 0.9"),
119
- }
120
-
121
- assert_equal expected, @cmd.options
122
- end
123
-
124
- def test_version_option_explicit_prerelease
125
- @cmd.add_prerelease_option
126
- @cmd.add_version_option
127
-
128
- @cmd.handle_options %w[--pre --version >1]
129
-
130
- expected = {
131
- :args => [],
132
- :explicit_prerelease => true,
133
- :prerelease => true,
134
- :version => Gem::Requirement.new("> 1"),
135
- }
136
-
137
- assert_equal expected, @cmd.options
138
- end
139
-
140
- def test_version_option_twice
141
- @cmd.add_version_option
142
-
143
- @cmd.handle_options %w[--version >1.a]
144
-
145
- expected = {
146
- :args => [],
147
- :explicit_prerelease => false,
148
- :prerelease => true,
149
- :version => Gem::Requirement.new("> 1.a"),
150
- }
151
-
152
- assert_equal expected, @cmd.options
153
-
154
- @cmd.handle_options %w[--version >1]
155
-
156
- expected = {
157
- :args => [],
158
- :explicit_prerelease => false,
159
- :prerelease => false,
160
- :version => Gem::Requirement.new("> 1"),
161
- }
162
-
163
- assert_equal expected, @cmd.options
164
- end
165
- end
@@ -1,124 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "helper"
4
-
5
- class TestGemKernel < Gem::TestCase
6
- def setup
7
- super
8
-
9
- util_make_gems
10
-
11
- without_any_upwards_gemfiles
12
- end
13
-
14
- def test_gem
15
- assert gem("a", "= 1"), "Should load"
16
- assert $:.any? {|p| p.include?("a-1/lib") }
17
- end
18
-
19
- def test_gem_default
20
- assert gem("a", ">= 0")
21
-
22
- assert_equal @a2, Gem.loaded_specs["a"]
23
- end
24
-
25
- def test_gem_default_re_gem
26
- assert gem("a", "=1")
27
-
28
- refute gem("a", ">= 0")
29
-
30
- assert_equal @a1, Gem.loaded_specs["a"]
31
- end
32
-
33
- def test_gem_re_gem_mismatch
34
- assert gem("a", "=1")
35
-
36
- assert_raise Gem::LoadError do
37
- gem("a", "= 2")
38
- end
39
-
40
- assert_equal @a1, Gem.loaded_specs["a"]
41
- end
42
-
43
- def test_gem_redundant
44
- assert gem("a", "= 1"), "Should load"
45
- refute gem("a", "= 1"), "Should not load"
46
- assert_equal 1, $:.select {|p| p.include?("a-1/lib") }.size
47
- end
48
-
49
- def test_gem_overlapping
50
- assert gem("a", "= 1"), "Should load"
51
- refute gem("a", ">= 1"), "Should not load"
52
- assert_equal 1, $:.select {|p| p.include?("a-1/lib") }.size
53
- end
54
-
55
- def test_gem_prerelease
56
- quick_gem "d", "1.1.a"
57
- refute gem("d", ">= 1"), "release requirement must not load prerelease"
58
- assert gem("d", ">= 1.a"), "prerelease requirement may load prerelease"
59
- end
60
-
61
- def test_gem_env_req
62
- ENV["GEM_REQUIREMENT_A"] = "~> 2.0"
63
- assert_raise(Gem::MissingSpecVersionError) { gem("a", "= 1") }
64
- assert gem("a", "> 1")
65
- assert_equal @a2, Gem.loaded_specs["a"]
66
- end
67
-
68
- def test_gem_conflicting
69
- assert gem("a", "= 1"), "Should load"
70
-
71
- ex = assert_raise Gem::LoadError do
72
- gem "a", "= 2"
73
- end
74
-
75
- assert_equal "can't activate a-2, already activated a-1", ex.message
76
- assert_match(/activated a-1/, ex.message)
77
- assert_equal "a", ex.name
78
-
79
- assert $:.any? {|p| p.include?("a-1/lib") }
80
- refute $:.any? {|p| p.include?("a-2/lib") }
81
- end
82
-
83
- def test_gem_not_adding_bin
84
- assert gem("a", "= 1"), "Should load"
85
- refute $:.any? {|p| p.include?("a-1/bin") }
86
- end
87
-
88
- def test_gem_failing_inside_require_doesnt_cause_double_exceptions
89
- File.write("activate.rb", "gem('a', '= 999')\n")
90
-
91
- require "open3"
92
-
93
- output, _ = Open3.capture2e(
94
- { "GEM_HOME" => Gem.paths.home },
95
- *ruby_with_rubygems_in_load_path,
96
- "-r",
97
- "./activate.rb"
98
- )
99
-
100
- load_errors = output.split("\n").select {|line| line.include?("Could not find") }
101
-
102
- assert_equal 1, load_errors.size
103
- end
104
-
105
- def test_gem_bundler
106
- quick_gem "bundler", "1"
107
- quick_gem "bundler", "2.a"
108
-
109
- assert gem("bundler")
110
- assert $:.any? {|p| p.include?("bundler-1/lib") }
111
- end
112
-
113
- def test_gem_bundler_inferred_bundler_version
114
- require "rubygems/bundler_version_finder"
115
-
116
- Gem::BundlerVersionFinder.stub(:bundler_version, Gem::Version.new("1")) do
117
- quick_gem "bundler", "1"
118
- quick_gem "bundler", "2.a"
119
-
120
- assert gem("bundler", ">= 0.a")
121
- assert $:.any? {|p| p.include?("bundler-1/lib") }
122
- end
123
- end
124
- end
@@ -1,49 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "helper"
4
- require "open3"
5
-
6
- class TestGemProjectSanity < Gem::TestCase
7
- def setup
8
- end
9
-
10
- def teardown
11
- end
12
-
13
- def test_manifest_is_up_to_date
14
- pend unless File.exist?("#{root}/Rakefile")
15
-
16
- _, status = Open3.capture2e("rake check_manifest")
17
-
18
- unless status.success?
19
- original_contents = File.read("#{root}/Manifest.txt")
20
-
21
- # Update the manifest to see if it fixes the problem
22
- Open3.capture2e("rake update_manifest")
23
-
24
- out, status = Open3.capture2e("rake check_manifest")
25
-
26
- # If `rake update_manifest` fixed the problem, that was the original
27
- # issue, otherwise it was an unknown error, so print the error output
28
- if status.success?
29
- File.write("#{root}/Manifest.txt", original_contents)
30
-
31
- raise "Expected Manifest.txt to be up to date, but it's not. Run `rake update_manifest` to sync it."
32
- else
33
- raise "There was an error running `rake check_manifest`: #{out}"
34
- end
35
- end
36
- end
37
-
38
- def test_require_rubygems_package
39
- err, status = Open3.capture2e(*ruby_with_rubygems_in_load_path, "--disable-gems", "-e", "require \"rubygems/package\"")
40
-
41
- assert status.success?, err
42
- end
43
-
44
- private
45
-
46
- def root
47
- File.expand_path("../..", __dir__)
48
- end
49
- end
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "helper"
4
-
5
- class TestGemRemoteFetchError < Gem::TestCase
6
- def test_password_redacted
7
- error = Gem::RemoteFetcher::FetchError.new("There was an error fetching", "https://user:secret@gemsource.org")
8
- refute_match %r{secret}, error.to_s
9
- end
10
-
11
- def test_invalid_url
12
- error = Gem::RemoteFetcher::FetchError.new("There was an error fetching", "https://::gemsource.org")
13
- assert_equal error.to_s, "There was an error fetching (https://::gemsource.org)"
14
- end
15
-
16
- def test_to_s
17
- error = Gem::RemoteFetcher::FetchError.new("There was an error fetching", "https://gemsource.org")
18
- assert_equal error.to_s, "There was an error fetching (https://gemsource.org)"
19
- end
20
- end