rubygems-update 3.1.2 → 3.2.6

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 (562) hide show
  1. checksums.yaml +4 -4
  2. data/{History.txt → CHANGELOG.md} +756 -489
  3. data/CODE_OF_CONDUCT.md +55 -19
  4. data/CONTRIBUTING.md +25 -11
  5. data/Manifest.txt +75 -104
  6. data/POLICIES.md +6 -12
  7. data/README.md +5 -5
  8. data/Rakefile +64 -92
  9. data/bin/update_rubygems +1 -1
  10. data/bundler/CHANGELOG.md +1636 -1422
  11. data/bundler/README.md +6 -8
  12. data/bundler/UPGRADING.md +18 -32
  13. data/bundler/bundler.gemspec +4 -4
  14. data/bundler/exe/bundle +3 -0
  15. data/bundler/lib/bundler.rb +32 -8
  16. data/bundler/lib/bundler/build_metadata.rb +4 -12
  17. data/bundler/lib/bundler/cli.rb +55 -21
  18. data/bundler/lib/bundler/cli/add.rb +1 -1
  19. data/bundler/lib/bundler/cli/binstubs.rb +6 -2
  20. data/bundler/lib/bundler/cli/cache.rb +1 -7
  21. data/bundler/lib/bundler/cli/clean.rb +1 -1
  22. data/bundler/lib/bundler/cli/common.rb +14 -0
  23. data/bundler/lib/bundler/cli/console.rb +1 -1
  24. data/bundler/lib/bundler/cli/doctor.rb +1 -1
  25. data/bundler/lib/bundler/cli/exec.rb +4 -4
  26. data/bundler/lib/bundler/cli/fund.rb +36 -0
  27. data/bundler/lib/bundler/cli/gem.rb +86 -11
  28. data/bundler/lib/bundler/cli/info.rb +15 -4
  29. data/bundler/lib/bundler/cli/init.rb +2 -2
  30. data/bundler/lib/bundler/cli/inject.rb +1 -1
  31. data/bundler/lib/bundler/cli/install.rb +16 -13
  32. data/bundler/lib/bundler/cli/issue.rb +2 -2
  33. data/bundler/lib/bundler/cli/list.rb +12 -10
  34. data/bundler/lib/bundler/cli/outdated.rb +87 -66
  35. data/bundler/lib/bundler/cli/plugin.rb +10 -0
  36. data/bundler/lib/bundler/cli/pristine.rb +5 -0
  37. data/bundler/lib/bundler/cli/show.rb +1 -1
  38. data/bundler/lib/bundler/cli/update.rb +3 -1
  39. data/bundler/lib/bundler/compact_index_client.rb +1 -1
  40. data/bundler/lib/bundler/compact_index_client/cache.rb +6 -14
  41. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
  42. data/bundler/lib/bundler/compact_index_client/updater.rb +5 -13
  43. data/bundler/lib/bundler/definition.rb +66 -82
  44. data/bundler/lib/bundler/dep_proxy.rb +16 -9
  45. data/bundler/lib/bundler/dependency.rb +3 -10
  46. data/bundler/lib/bundler/dsl.rb +5 -9
  47. data/bundler/lib/bundler/endpoint_specification.rb +1 -1
  48. data/bundler/lib/bundler/env.rb +1 -1
  49. data/bundler/lib/bundler/environment_preserver.rb +26 -2
  50. data/bundler/lib/bundler/errors.rb +1 -0
  51. data/bundler/lib/bundler/feature_flag.rb +0 -3
  52. data/bundler/lib/bundler/fetcher.rb +4 -3
  53. data/bundler/lib/bundler/fetcher/base.rb +1 -1
  54. data/bundler/lib/bundler/fetcher/compact_index.rb +1 -1
  55. data/bundler/lib/bundler/fetcher/downloader.rb +1 -1
  56. data/bundler/lib/bundler/fetcher/index.rb +3 -4
  57. data/bundler/lib/bundler/friendly_errors.rb +22 -13
  58. data/bundler/lib/bundler/gem_helper.rb +33 -19
  59. data/bundler/lib/bundler/gem_helpers.rb +36 -25
  60. data/bundler/lib/bundler/gem_version_promoter.rb +4 -4
  61. data/bundler/lib/bundler/graph.rb +1 -1
  62. data/bundler/lib/bundler/index.rb +6 -2
  63. data/bundler/lib/bundler/injector.rb +22 -4
  64. data/bundler/lib/bundler/inline.rb +2 -2
  65. data/bundler/lib/bundler/installer.rb +35 -32
  66. data/bundler/lib/bundler/installer/gem_installer.rb +3 -3
  67. data/bundler/lib/bundler/installer/parallel_installer.rb +10 -10
  68. data/bundler/lib/bundler/installer/standalone.rb +2 -2
  69. data/bundler/lib/bundler/lazy_specification.rb +35 -11
  70. data/bundler/lib/bundler/lockfile_generator.rb +1 -1
  71. data/bundler/lib/bundler/lockfile_parser.rb +1 -1
  72. data/bundler/lib/bundler/man/.document +1 -0
  73. data/bundler/{man → lib/bundler/man}/bundle-add.1 +1 -1
  74. data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +0 -0
  75. data/bundler/{man → lib/bundler/man}/bundle-binstubs.1 +5 -3
  76. data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +2 -4
  77. data/bundler/{man → lib/bundler/man}/bundle-cache.1 +1 -1
  78. data/bundler/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +0 -0
  79. data/bundler/{man → lib/bundler/man}/bundle-check.1 +1 -1
  80. data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
  81. data/bundler/{man → lib/bundler/man}/bundle-clean.1 +1 -1
  82. data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
  83. data/bundler/{man → lib/bundler/man}/bundle-config.1 +16 -25
  84. data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +19 -30
  85. data/bundler/{man → lib/bundler/man}/bundle-doctor.1 +1 -1
  86. data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
  87. data/bundler/{man → lib/bundler/man}/bundle-exec.1 +1 -1
  88. data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +0 -0
  89. data/bundler/{man → lib/bundler/man}/bundle-gem.1 +25 -3
  90. data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
  91. data/bundler/{man → lib/bundler/man}/bundle-info.1 +1 -1
  92. data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
  93. data/bundler/{man → lib/bundler/man}/bundle-init.1 +1 -1
  94. data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +0 -0
  95. data/bundler/{man → lib/bundler/man}/bundle-inject.1 +1 -1
  96. data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
  97. data/bundler/{man → lib/bundler/man}/bundle-install.1 +30 -3
  98. data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +25 -3
  99. data/bundler/{man → lib/bundler/man}/bundle-list.1 +7 -7
  100. data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
  101. data/bundler/{man → lib/bundler/man}/bundle-lock.1 +1 -1
  102. data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
  103. data/bundler/{man → lib/bundler/man}/bundle-open.1 +1 -1
  104. data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
  105. data/bundler/{man → lib/bundler/man}/bundle-outdated.1 +1 -1
  106. data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
  107. data/bundler/{man → lib/bundler/man}/bundle-platform.1 +1 -1
  108. data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
  109. data/bundler/{man → lib/bundler/man}/bundle-pristine.1 +1 -1
  110. data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
  111. data/bundler/{man → lib/bundler/man}/bundle-remove.1 +1 -1
  112. data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
  113. data/bundler/{man → lib/bundler/man}/bundle-show.1 +1 -1
  114. data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
  115. data/bundler/{man → lib/bundler/man}/bundle-update.1 +1 -1
  116. data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +0 -0
  117. data/bundler/{man → lib/bundler/man}/bundle-viz.1 +1 -1
  118. data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
  119. data/bundler/{man → lib/bundler/man}/bundle.1 +1 -1
  120. data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +0 -0
  121. data/bundler/{man → lib/bundler/man}/gemfile.5 +4 -4
  122. data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +4 -4
  123. data/bundler/{man → lib/bundler/man}/index.txt +0 -0
  124. data/bundler/lib/bundler/mirror.rb +2 -2
  125. data/bundler/lib/bundler/plugin.rb +30 -5
  126. data/bundler/lib/bundler/plugin/api/source.rb +1 -1
  127. data/bundler/lib/bundler/plugin/dsl.rb +1 -1
  128. data/bundler/lib/bundler/plugin/index.rb +10 -1
  129. data/bundler/lib/bundler/plugin/installer.rb +1 -1
  130. data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
  131. data/bundler/lib/bundler/plugin/source_list.rb +1 -1
  132. data/bundler/lib/bundler/psyched_yaml.rb +0 -15
  133. data/bundler/lib/bundler/remote_specification.rb +5 -2
  134. data/bundler/lib/bundler/resolver.rb +43 -19
  135. data/bundler/lib/bundler/resolver/spec_group.rb +39 -24
  136. data/bundler/lib/bundler/retry.rb +1 -1
  137. data/bundler/lib/bundler/ruby_version.rb +1 -1
  138. data/bundler/lib/bundler/rubygems_ext.rb +69 -9
  139. data/bundler/lib/bundler/rubygems_gem_installer.rb +3 -9
  140. data/bundler/lib/bundler/rubygems_integration.rb +26 -61
  141. data/bundler/lib/bundler/runtime.rb +4 -14
  142. data/bundler/lib/bundler/settings.rb +49 -46
  143. data/bundler/lib/bundler/shared_helpers.rb +2 -2
  144. data/bundler/lib/bundler/similarity_detector.rb +1 -1
  145. data/bundler/lib/bundler/source.rb +1 -1
  146. data/bundler/lib/bundler/source/git.rb +23 -21
  147. data/bundler/lib/bundler/source/git/git_proxy.rb +82 -80
  148. data/bundler/lib/bundler/source/path.rb +7 -3
  149. data/bundler/lib/bundler/source/path/installer.rb +10 -10
  150. data/bundler/lib/bundler/source/rubygems.rb +23 -17
  151. data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
  152. data/bundler/lib/bundler/source_list.rb +2 -2
  153. data/bundler/lib/bundler/spec_set.rb +8 -10
  154. data/bundler/lib/bundler/stub_specification.rb +17 -7
  155. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  156. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +9 -1
  157. data/bundler/lib/bundler/templates/newgem/README.md.tt +1 -2
  158. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +19 -5
  159. data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
  160. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
  161. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
  162. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
  163. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
  164. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
  165. data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  166. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +15 -7
  167. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
  168. data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
  169. data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
  170. data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
  171. data/bundler/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
  172. data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  173. data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  174. data/bundler/lib/bundler/ui/shell.rb +5 -5
  175. data/bundler/lib/bundler/uri_credentials_filter.rb +3 -1
  176. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -1
  177. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +34 -1
  178. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
  179. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
  180. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  181. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +48 -46
  182. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +79 -208
  183. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +0 -7
  184. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
  185. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
  186. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  187. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
  188. data/bundler/lib/bundler/vendored_persistent.rb +0 -7
  189. data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
  190. data/bundler/lib/bundler/version.rb +1 -1
  191. data/bundler/lib/bundler/worker.rb +1 -1
  192. data/bundler/lib/bundler/yaml_serializer.rb +1 -1
  193. data/lib/rubygems.rb +138 -187
  194. data/lib/rubygems/available_set.rb +4 -6
  195. data/lib/rubygems/basic_specification.rb +12 -10
  196. data/lib/rubygems/bundler_version_finder.rb +14 -9
  197. data/lib/rubygems/command.rb +17 -17
  198. data/lib/rubygems/command_manager.rb +5 -6
  199. data/lib/rubygems/commands/build_command.rb +40 -20
  200. data/lib/rubygems/commands/cert_command.rb +2 -10
  201. data/lib/rubygems/commands/check_command.rb +0 -2
  202. data/lib/rubygems/commands/cleanup_command.rb +11 -7
  203. data/lib/rubygems/commands/contents_command.rb +4 -6
  204. data/lib/rubygems/commands/dependency_command.rb +6 -8
  205. data/lib/rubygems/commands/environment_command.rb +1 -3
  206. data/lib/rubygems/commands/fetch_command.rb +2 -4
  207. data/lib/rubygems/commands/generate_index_command.rb +0 -2
  208. data/lib/rubygems/commands/help_command.rb +4 -4
  209. data/lib/rubygems/commands/info_command.rb +8 -5
  210. data/lib/rubygems/commands/install_command.rb +3 -5
  211. data/lib/rubygems/commands/list_command.rb +8 -7
  212. data/lib/rubygems/commands/lock_command.rb +1 -3
  213. data/lib/rubygems/commands/mirror_command.rb +0 -2
  214. data/lib/rubygems/commands/open_command.rb +0 -4
  215. data/lib/rubygems/commands/outdated_command.rb +0 -2
  216. data/lib/rubygems/commands/owner_command.rb +9 -4
  217. data/lib/rubygems/commands/pristine_command.rb +11 -5
  218. data/lib/rubygems/commands/push_command.rb +10 -47
  219. data/lib/rubygems/commands/query_command.rb +14 -344
  220. data/lib/rubygems/commands/rdoc_command.rb +0 -2
  221. data/lib/rubygems/commands/search_command.rb +7 -7
  222. data/lib/rubygems/commands/server_command.rb +3 -1
  223. data/lib/rubygems/commands/setup_command.rb +101 -74
  224. data/lib/rubygems/commands/signin_command.rb +0 -2
  225. data/lib/rubygems/commands/signout_command.rb +0 -2
  226. data/lib/rubygems/commands/sources_command.rb +9 -7
  227. data/lib/rubygems/commands/specification_command.rb +8 -4
  228. data/lib/rubygems/commands/stale_command.rb +1 -3
  229. data/lib/rubygems/commands/uninstall_command.rb +2 -4
  230. data/lib/rubygems/commands/unpack_command.rb +1 -3
  231. data/lib/rubygems/commands/update_command.rb +59 -14
  232. data/lib/rubygems/commands/which_command.rb +0 -2
  233. data/lib/rubygems/commands/yank_command.rb +4 -7
  234. data/lib/rubygems/config_file.rb +11 -4
  235. data/lib/rubygems/core_ext/kernel_require.rb +29 -36
  236. data/lib/rubygems/core_ext/kernel_warn.rb +12 -13
  237. data/lib/rubygems/defaults.rb +101 -7
  238. data/lib/rubygems/dependency.rb +3 -8
  239. data/lib/rubygems/dependency_installer.rb +6 -78
  240. data/lib/rubygems/dependency_list.rb +7 -9
  241. data/lib/rubygems/deprecate.rb +46 -1
  242. data/lib/rubygems/doctor.rb +4 -4
  243. data/lib/rubygems/errors.rb +3 -14
  244. data/lib/rubygems/exceptions.rb +2 -33
  245. data/lib/rubygems/ext.rb +6 -6
  246. data/lib/rubygems/ext/build_error.rb +2 -0
  247. data/lib/rubygems/ext/builder.rb +21 -39
  248. data/lib/rubygems/ext/cmake_builder.rb +6 -9
  249. data/lib/rubygems/ext/configure_builder.rb +5 -8
  250. data/lib/rubygems/ext/ext_conf_builder.rb +21 -19
  251. data/lib/rubygems/ext/rake_builder.rb +4 -6
  252. data/lib/rubygems/gem_runner.rb +3 -10
  253. data/lib/rubygems/gemcutter_utilities.rb +102 -21
  254. data/lib/rubygems/indexer.rb +1 -22
  255. data/lib/rubygems/install_update_options.rb +7 -7
  256. data/lib/rubygems/installer.rb +59 -80
  257. data/lib/rubygems/installer_test_case.rb +25 -11
  258. data/lib/rubygems/installer_uninstaller_utils.rb +24 -0
  259. data/lib/rubygems/local_remote_options.rb +1 -1
  260. data/lib/rubygems/mock_gem_ui.rb +0 -6
  261. data/lib/rubygems/name_tuple.rb +3 -7
  262. data/lib/rubygems/openssl.rb +7 -0
  263. data/lib/rubygems/package.rb +14 -25
  264. data/lib/rubygems/package/digest_io.rb +0 -2
  265. data/lib/rubygems/package/file_source.rb +0 -2
  266. data/lib/rubygems/package/io_source.rb +0 -2
  267. data/lib/rubygems/package/old.rb +1 -3
  268. data/lib/rubygems/package/tar_header.rb +4 -6
  269. data/lib/rubygems/package/tar_reader.rb +0 -3
  270. data/lib/rubygems/package/tar_reader/entry.rb +0 -3
  271. data/lib/rubygems/package/tar_test_case.rb +2 -4
  272. data/lib/rubygems/package/tar_writer.rb +2 -12
  273. data/lib/rubygems/package_task.rb +1 -7
  274. data/lib/rubygems/path_support.rb +1 -3
  275. data/lib/rubygems/platform.rb +21 -16
  276. data/lib/rubygems/psych_tree.rb +0 -2
  277. data/lib/rubygems/query_utils.rb +353 -0
  278. data/lib/rubygems/rdoc.rb +0 -12
  279. data/lib/rubygems/remote_fetcher.rb +14 -29
  280. data/lib/rubygems/request.rb +4 -11
  281. data/lib/rubygems/request/connection_pools.rb +1 -5
  282. data/lib/rubygems/request/http_pool.rb +0 -2
  283. data/lib/rubygems/request/https_pool.rb +0 -2
  284. data/lib/rubygems/request_set.rb +7 -20
  285. data/lib/rubygems/request_set/gem_dependency_api.rb +6 -8
  286. data/lib/rubygems/request_set/lockfile.rb +8 -12
  287. data/lib/rubygems/request_set/lockfile/parser.rb +0 -2
  288. data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -3
  289. data/lib/rubygems/requirement.rb +21 -22
  290. data/lib/rubygems/resolver.rb +14 -12
  291. data/lib/rubygems/resolver/activation_request.rb +9 -3
  292. data/lib/rubygems/resolver/api_set.rb +31 -24
  293. data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
  294. data/lib/rubygems/resolver/api_specification.rb +24 -10
  295. data/lib/rubygems/resolver/best_set.rb +2 -4
  296. data/lib/rubygems/resolver/composed_set.rb +3 -5
  297. data/lib/rubygems/resolver/conflict.rb +2 -4
  298. data/lib/rubygems/resolver/current_set.rb +0 -2
  299. data/lib/rubygems/resolver/dependency_request.rb +1 -3
  300. data/lib/rubygems/resolver/git_set.rb +0 -2
  301. data/lib/rubygems/resolver/git_specification.rb +0 -2
  302. data/lib/rubygems/resolver/index_set.rb +1 -3
  303. data/lib/rubygems/resolver/index_specification.rb +29 -2
  304. data/lib/rubygems/resolver/installed_specification.rb +0 -2
  305. data/lib/rubygems/resolver/installer_set.rb +60 -13
  306. data/lib/rubygems/resolver/local_specification.rb +0 -2
  307. data/lib/rubygems/resolver/lock_set.rb +2 -4
  308. data/lib/rubygems/resolver/lock_specification.rb +0 -2
  309. data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
  310. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
  311. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +1 -0
  312. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +39 -5
  313. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
  314. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
  315. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
  316. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
  317. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
  318. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
  319. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
  320. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
  321. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +43 -10
  322. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +75 -7
  323. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
  324. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +1 -0
  325. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
  326. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +506 -165
  327. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
  328. data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
  329. data/lib/rubygems/resolver/requirement_list.rb +0 -2
  330. data/lib/rubygems/resolver/set.rb +0 -2
  331. data/lib/rubygems/resolver/source_set.rb +0 -2
  332. data/lib/rubygems/resolver/spec_specification.rb +14 -2
  333. data/lib/rubygems/resolver/specification.rb +13 -3
  334. data/lib/rubygems/resolver/stats.rb +0 -2
  335. data/lib/rubygems/resolver/vendor_set.rb +0 -2
  336. data/lib/rubygems/resolver/vendor_specification.rb +0 -2
  337. data/lib/rubygems/s3_uri_signer.rb +2 -8
  338. data/lib/rubygems/safe_yaml.rb +4 -4
  339. data/lib/rubygems/security.rb +27 -34
  340. data/lib/rubygems/security/policy.rb +4 -8
  341. data/lib/rubygems/security/signer.rb +5 -7
  342. data/lib/rubygems/security/trust_dir.rb +1 -3
  343. data/lib/rubygems/server.rb +16 -13
  344. data/lib/rubygems/source.rb +23 -12
  345. data/lib/rubygems/source/git.rb +7 -8
  346. data/lib/rubygems/source/installed.rb +0 -2
  347. data/lib/rubygems/source/local.rb +2 -4
  348. data/lib/rubygems/source/lock.rb +0 -2
  349. data/lib/rubygems/source/specific_file.rb +0 -2
  350. data/lib/rubygems/source/vendor.rb +0 -2
  351. data/lib/rubygems/source_list.rb +4 -7
  352. data/lib/rubygems/spec_fetcher.rb +19 -18
  353. data/lib/rubygems/specification.rb +122 -131
  354. data/lib/rubygems/specification_policy.rb +88 -30
  355. data/lib/rubygems/ssl_certs/{index.rubygems.org → rubygems.org}/GlobalSignRootCA.pem +0 -0
  356. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
  357. data/lib/rubygems/stub_specification.rb +1 -5
  358. data/lib/rubygems/syck_hack.rb +0 -2
  359. data/lib/rubygems/test_case.rb +120 -134
  360. data/lib/rubygems/test_utilities.rb +12 -19
  361. data/lib/rubygems/uninstaller.rb +35 -16
  362. data/lib/rubygems/uri_formatter.rb +2 -3
  363. data/lib/rubygems/uri_parser.rb +0 -2
  364. data/lib/rubygems/user_interaction.rb +1 -26
  365. data/lib/rubygems/util.rb +15 -3
  366. data/lib/rubygems/util/licenses.rb +4 -6
  367. data/lib/rubygems/util/list.rb +0 -2
  368. data/lib/rubygems/validator.rb +1 -3
  369. data/lib/rubygems/version.rb +5 -7
  370. data/lib/rubygems/version_option.rb +6 -0
  371. data/rubygems-update.gemspec +3 -3
  372. data/setup.rb +2 -7
  373. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  374. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
  375. data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
  376. data/test/rubygems/rubygems_plugin.rb +0 -2
  377. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
  378. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
  379. data/test/rubygems/test_bundled_ca.rb +42 -45
  380. data/test/rubygems/test_config.rb +0 -2
  381. data/test/rubygems/test_deprecate.rb +40 -7
  382. data/test/rubygems/test_gem.rb +156 -99
  383. data/test/rubygems/test_gem_available_set.rb +3 -5
  384. data/test/rubygems/test_gem_bundler_version_finder.rb +19 -3
  385. data/test/rubygems/test_gem_command.rb +24 -7
  386. data/test/rubygems/test_gem_command_manager.rb +36 -5
  387. data/test/rubygems/test_gem_commands_build_command.rb +250 -15
  388. data/test/rubygems/test_gem_commands_cert_command.rb +4 -6
  389. data/test/rubygems/test_gem_commands_check_command.rb +0 -2
  390. data/test/rubygems/test_gem_commands_cleanup_command.rb +14 -5
  391. data/test/rubygems/test_gem_commands_contents_command.rb +50 -19
  392. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -2
  393. data/test/rubygems/test_gem_commands_environment_command.rb +21 -23
  394. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -2
  395. data/test/rubygems/test_gem_commands_generate_index_command.rb +1 -7
  396. data/test/rubygems/test_gem_commands_help_command.rb +15 -4
  397. data/test/rubygems/test_gem_commands_info_command.rb +6 -8
  398. data/test/rubygems/test_gem_commands_install_command.rb +163 -34
  399. data/test/rubygems/test_gem_commands_list_command.rb +0 -2
  400. data/test/rubygems/test_gem_commands_lock_command.rb +0 -2
  401. data/test/rubygems/test_gem_commands_mirror.rb +1 -3
  402. data/test/rubygems/test_gem_commands_open_command.rb +4 -6
  403. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -2
  404. data/test/rubygems/test_gem_commands_owner_command.rb +59 -5
  405. data/test/rubygems/test_gem_commands_pristine_command.rb +43 -12
  406. data/test/rubygems/test_gem_commands_push_command.rb +77 -9
  407. data/test/rubygems/test_gem_commands_query_command.rb +12 -12
  408. data/test/rubygems/test_gem_commands_search_command.rb +0 -2
  409. data/test/rubygems/test_gem_commands_server_command.rb +0 -2
  410. data/test/rubygems/test_gem_commands_setup_command.rb +160 -135
  411. data/test/rubygems/test_gem_commands_signin_command.rb +33 -9
  412. data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
  413. data/test/rubygems/test_gem_commands_sources_command.rb +99 -3
  414. data/test/rubygems/test_gem_commands_specification_command.rb +46 -20
  415. data/test/rubygems/test_gem_commands_stale_command.rb +0 -2
  416. data/test/rubygems/test_gem_commands_uninstall_command.rb +2 -3
  417. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -2
  418. data/test/rubygems/test_gem_commands_update_command.rb +116 -7
  419. data/test/rubygems/test_gem_commands_which_command.rb +3 -5
  420. data/test/rubygems/test_gem_commands_yank_command.rb +44 -8
  421. data/test/rubygems/test_gem_config_file.rb +7 -12
  422. data/test/rubygems/test_gem_dependency.rb +0 -2
  423. data/test/rubygems/test_gem_dependency_installer.rb +116 -239
  424. data/test/rubygems/test_gem_dependency_list.rb +10 -12
  425. data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -3
  426. data/test/rubygems/test_gem_doctor.rb +28 -2
  427. data/test/rubygems/test_gem_ext_builder.rb +50 -47
  428. data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -25
  429. data/test/rubygems/test_gem_ext_configure_builder.rb +6 -22
  430. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +9 -29
  431. data/test/rubygems/test_gem_ext_rake_builder.rb +39 -24
  432. data/test/rubygems/test_gem_gem_runner.rb +44 -1
  433. data/test/rubygems/test_gem_gemcutter_utilities.rb +8 -5
  434. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -2
  435. data/test/rubygems/test_gem_indexer.rb +9 -15
  436. data/test/rubygems/test_gem_install_update_options.rb +14 -4
  437. data/test/rubygems/test_gem_installer.rb +258 -115
  438. data/test/rubygems/test_gem_local_remote_options.rb +0 -2
  439. data/test/rubygems/test_gem_name_tuple.rb +0 -2
  440. data/test/rubygems/test_gem_package.rb +41 -39
  441. data/test/rubygems/test_gem_package_old.rb +4 -6
  442. data/test/rubygems/test_gem_package_tar_header.rb +18 -1
  443. data/test/rubygems/test_gem_package_tar_reader.rb +0 -2
  444. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -2
  445. data/test/rubygems/test_gem_package_tar_writer.rb +9 -6
  446. data/test/rubygems/test_gem_package_task.rb +46 -13
  447. data/test/rubygems/test_gem_path_support.rb +0 -2
  448. data/test/rubygems/test_gem_platform.rb +71 -6
  449. data/test/rubygems/test_gem_rdoc.rb +0 -2
  450. data/test/rubygems/test_gem_remote_fetcher.rb +169 -212
  451. data/test/rubygems/test_gem_request.rb +13 -17
  452. data/test/rubygems/test_gem_request_connection_pools.rb +0 -4
  453. data/test/rubygems/test_gem_request_set.rb +72 -22
  454. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +3 -5
  455. data/test/rubygems/test_gem_request_set_lockfile.rb +4 -6
  456. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -11
  457. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -120
  458. data/test/rubygems/test_gem_requirement.rb +43 -3
  459. data/test/rubygems/test_gem_resolver.rb +6 -8
  460. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -2
  461. data/test/rubygems/test_gem_resolver_api_set.rb +60 -59
  462. data/test/rubygems/test_gem_resolver_api_specification.rb +3 -5
  463. data/test/rubygems/test_gem_resolver_best_set.rb +27 -6
  464. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -2
  465. data/test/rubygems/test_gem_resolver_conflict.rb +1 -3
  466. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -2
  467. data/test/rubygems/test_gem_resolver_git_set.rb +0 -2
  468. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -2
  469. data/test/rubygems/test_gem_resolver_index_set.rb +2 -4
  470. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -2
  471. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -2
  472. data/test/rubygems/test_gem_resolver_installer_set.rb +7 -9
  473. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -2
  474. data/test/rubygems/test_gem_resolver_lock_set.rb +3 -5
  475. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -2
  476. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -2
  477. data/test/rubygems/test_gem_resolver_specification.rb +0 -4
  478. data/test/rubygems/test_gem_resolver_vendor_set.rb +1 -3
  479. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -2
  480. data/test/rubygems/test_gem_security.rb +22 -24
  481. data/test/rubygems/test_gem_security_policy.rb +7 -12
  482. data/test/rubygems/test_gem_security_signer.rb +10 -12
  483. data/test/rubygems/test_gem_security_trust_dir.rb +4 -6
  484. data/test/rubygems/test_gem_server.rb +10 -14
  485. data/test/rubygems/test_gem_silent_ui.rb +0 -2
  486. data/test/rubygems/test_gem_source.rb +19 -18
  487. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -2
  488. data/test/rubygems/test_gem_source_git.rb +12 -13
  489. data/test/rubygems/test_gem_source_installed.rb +7 -9
  490. data/test/rubygems/test_gem_source_list.rb +1 -2
  491. data/test/rubygems/test_gem_source_local.rb +8 -10
  492. data/test/rubygems/test_gem_source_lock.rb +10 -12
  493. data/test/rubygems/test_gem_source_specific_file.rb +7 -9
  494. data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
  495. data/test/rubygems/test_gem_source_vendor.rb +7 -9
  496. data/test/rubygems/test_gem_spec_fetcher.rb +11 -4
  497. data/test/rubygems/test_gem_specification.rb +188 -131
  498. data/test/rubygems/test_gem_stream_ui.rb +3 -3
  499. data/test/rubygems/test_gem_stub_specification.rb +4 -7
  500. data/test/rubygems/test_gem_text.rb +1 -3
  501. data/test/rubygems/test_gem_uninstaller.rb +134 -12
  502. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -2
  503. data/test/rubygems/test_gem_uri_formatter.rb +0 -2
  504. data/test/rubygems/test_gem_util.rb +7 -7
  505. data/test/rubygems/test_gem_validator.rb +1 -3
  506. data/test/rubygems/test_gem_version.rb +1 -3
  507. data/test/rubygems/test_gem_version_option.rb +1 -3
  508. data/test/rubygems/test_kernel.rb +25 -10
  509. data/test/rubygems/test_project_sanity.rb +7 -2
  510. data/test/rubygems/test_remote_fetch_error.rb +0 -2
  511. data/test/rubygems/test_require.rb +291 -56
  512. data/test/test_changelog_generator.rb +17 -0
  513. metadata +79 -133
  514. data/.bundle/config +0 -2
  515. data/.rubocop.yml +0 -91
  516. data/Gemfile +0 -8
  517. data/Gemfile.lock +0 -43
  518. data/bundler/CODE_OF_CONDUCT.md +0 -136
  519. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
  520. data/bundler/man/bundle-add.1.txt +0 -58
  521. data/bundler/man/bundle-binstubs.1.txt +0 -48
  522. data/bundler/man/bundle-cache.1.txt +0 -78
  523. data/bundler/man/bundle-check.1.txt +0 -33
  524. data/bundler/man/bundle-clean.1.txt +0 -26
  525. data/bundler/man/bundle-config.1.txt +0 -528
  526. data/bundler/man/bundle-doctor.1.txt +0 -44
  527. data/bundler/man/bundle-exec.1.txt +0 -178
  528. data/bundler/man/bundle-gem.1.txt +0 -91
  529. data/bundler/man/bundle-info.1.txt +0 -21
  530. data/bundler/man/bundle-init.1.txt +0 -34
  531. data/bundler/man/bundle-inject.1.txt +0 -32
  532. data/bundler/man/bundle-install.1.txt +0 -401
  533. data/bundler/man/bundle-list.1.txt +0 -43
  534. data/bundler/man/bundle-lock.1.txt +0 -93
  535. data/bundler/man/bundle-open.1.txt +0 -29
  536. data/bundler/man/bundle-outdated.1.txt +0 -131
  537. data/bundler/man/bundle-platform.1.txt +0 -57
  538. data/bundler/man/bundle-pristine.1.txt +0 -44
  539. data/bundler/man/bundle-remove.1.txt +0 -34
  540. data/bundler/man/bundle-show.1.txt +0 -27
  541. data/bundler/man/bundle-update.1.txt +0 -390
  542. data/bundler/man/bundle-viz.1.txt +0 -39
  543. data/bundler/man/bundle.1.txt +0 -116
  544. data/bundler/man/gemfile.5.txt +0 -649
  545. data/lib/rubygems/source_local.rb +0 -7
  546. data/lib/rubygems/source_specific_file.rb +0 -6
  547. data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  548. data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
  549. data/lib/ubygems.rb +0 -14
  550. data/tmp/.keep +0 -0
  551. data/util/CL2notes +0 -55
  552. data/util/bisect +0 -10
  553. data/util/ci.sh +0 -62
  554. data/util/cops/deprecations.rb +0 -52
  555. data/util/create_certs.rb +0 -171
  556. data/util/create_certs.sh +0 -27
  557. data/util/create_encrypted_key.rb +0 -16
  558. data/util/generate_spdx_license_list.rb +0 -63
  559. data/util/patch_with_prs.rb +0 -77
  560. data/util/rubocop +0 -8
  561. data/util/update_bundled_ca_certificates.rb +0 -139
  562. data/util/update_changelog.rb +0 -67
@@ -6,7 +6,6 @@ require 'rubygems/request_set/lockfile/tokenizer'
6
6
  require 'rubygems/request_set/lockfile/parser'
7
7
 
8
8
  class TestGemRequestSetLockfileTokenizer < Gem::TestCase
9
-
10
9
  def setup
11
10
  super
12
11
 
@@ -64,86 +63,86 @@ DEPENDENCIES
64
63
  LOCKFILE
65
64
 
66
65
  expected = [
67
- [:section, 'GEM', 0, 0],
68
- [:newline, nil, 3, 0],
69
-
70
- [:entry, 'remote', 2, 1],
71
- [:text, @gem_repo, 10, 1],
72
- [:newline, nil, 34, 1],
73
-
74
- [:entry, 'specs', 2, 2],
75
- [:newline, nil, 8, 2],
76
-
77
- [:text, 'a', 4, 3],
78
- [:l_paren, nil, 6, 3],
79
- [:text, '2', 7, 3],
80
- [:r_paren, nil, 8, 3],
81
- [:newline, nil, 9, 3],
82
-
83
- [:text, 'b', 6, 4],
84
- [:l_paren, nil, 8, 4],
85
- [:requirement, '=', 9, 4],
86
- [:text, '2', 11, 4],
87
- [:r_paren, nil, 12, 4],
88
- [:newline, nil, 13, 4],
89
-
90
- [:text, 'c', 6, 5],
91
- [:l_paren, nil, 8, 5],
92
- [:requirement, '!=', 9, 5],
93
- [:text, '3', 12, 5],
94
- [:r_paren, nil, 13, 5],
95
- [:newline, nil, 14, 5],
96
-
97
- [:text, 'd', 6, 6],
98
- [:l_paren, nil, 8, 6],
99
- [:requirement, '>', 9, 6],
100
- [:text, '4', 11, 6],
101
- [:r_paren, nil, 12, 6],
102
- [:newline, nil, 13, 6],
103
-
104
- [:text, 'e', 6, 7],
105
- [:l_paren, nil, 8, 7],
106
- [:requirement, '<', 9, 7],
107
- [:text, '5', 11, 7],
108
- [:r_paren, nil, 12, 7],
109
- [:newline, nil, 13, 7],
110
-
111
- [:text, 'f', 6, 8],
112
- [:l_paren, nil, 8, 8],
113
- [:requirement, '>=', 9, 8],
114
- [:text, '6', 12, 8],
115
- [:r_paren, nil, 13, 8],
116
- [:newline, nil, 14, 8],
117
-
118
- [:text, 'g', 6, 9],
119
- [:l_paren, nil, 8, 9],
120
- [:requirement, '<=', 9, 9],
121
- [:text, '7', 12, 9],
122
- [:r_paren, nil, 13, 9],
123
- [:newline, nil, 14, 9],
124
-
125
- [:text, 'h', 6, 10],
126
- [:l_paren, nil, 8, 10],
127
- [:requirement, '~>', 9, 10],
66
+ [:section, 'GEM', 0, 0],
67
+ [:newline, nil, 3, 0],
68
+
69
+ [:entry, 'remote', 2, 1],
70
+ [:text, @gem_repo, 10, 1],
71
+ [:newline, nil, 34, 1],
72
+
73
+ [:entry, 'specs', 2, 2],
74
+ [:newline, nil, 8, 2],
75
+
76
+ [:text, 'a', 4, 3],
77
+ [:l_paren, nil, 6, 3],
78
+ [:text, '2', 7, 3],
79
+ [:r_paren, nil, 8, 3],
80
+ [:newline, nil, 9, 3],
81
+
82
+ [:text, 'b', 6, 4],
83
+ [:l_paren, nil, 8, 4],
84
+ [:requirement, '=', 9, 4],
85
+ [:text, '2', 11, 4],
86
+ [:r_paren, nil, 12, 4],
87
+ [:newline, nil, 13, 4],
88
+
89
+ [:text, 'c', 6, 5],
90
+ [:l_paren, nil, 8, 5],
91
+ [:requirement, '!=', 9, 5],
92
+ [:text, '3', 12, 5],
93
+ [:r_paren, nil, 13, 5],
94
+ [:newline, nil, 14, 5],
95
+
96
+ [:text, 'd', 6, 6],
97
+ [:l_paren, nil, 8, 6],
98
+ [:requirement, '>', 9, 6],
99
+ [:text, '4', 11, 6],
100
+ [:r_paren, nil, 12, 6],
101
+ [:newline, nil, 13, 6],
102
+
103
+ [:text, 'e', 6, 7],
104
+ [:l_paren, nil, 8, 7],
105
+ [:requirement, '<', 9, 7],
106
+ [:text, '5', 11, 7],
107
+ [:r_paren, nil, 12, 7],
108
+ [:newline, nil, 13, 7],
109
+
110
+ [:text, 'f', 6, 8],
111
+ [:l_paren, nil, 8, 8],
112
+ [:requirement, '>=', 9, 8],
113
+ [:text, '6', 12, 8],
114
+ [:r_paren, nil, 13, 8],
115
+ [:newline, nil, 14, 8],
116
+
117
+ [:text, 'g', 6, 9],
118
+ [:l_paren, nil, 8, 9],
119
+ [:requirement, '<=', 9, 9],
120
+ [:text, '7', 12, 9],
121
+ [:r_paren, nil, 13, 9],
122
+ [:newline, nil, 14, 9],
123
+
124
+ [:text, 'h', 6, 10],
125
+ [:l_paren, nil, 8, 10],
126
+ [:requirement, '~>', 9, 10],
128
127
  [:text, '8', 12, 10],
129
128
  [:r_paren, nil, 13, 10],
130
129
  [:newline, nil, 14, 10],
131
130
 
132
- [:newline, nil, 0, 11],
131
+ [:newline, nil, 0, 11],
133
132
 
134
- [:section, 'PLATFORMS', 0, 12],
135
- [:newline, nil, 9, 12],
133
+ [:section, 'PLATFORMS', 0, 12],
134
+ [:newline, nil, 9, 12],
136
135
 
137
- [:text, Gem::Platform::RUBY, 2, 13],
138
- [:newline, nil, 6, 13],
136
+ [:text, Gem::Platform::RUBY, 2, 13],
137
+ [:newline, nil, 6, 13],
139
138
 
140
- [:newline, nil, 0, 14],
139
+ [:newline, nil, 0, 14],
141
140
 
142
- [:section, 'DEPENDENCIES', 0, 15],
141
+ [:section, 'DEPENDENCIES', 0, 15],
143
142
  [:newline, nil, 12, 15],
144
143
 
145
- [:text, 'a', 2, 16],
146
- [:newline, nil, 3, 16],
144
+ [:text, 'a', 2, 16],
145
+ [:newline, nil, 3, 16],
147
146
  ]
148
147
 
149
148
  assert_equal expected, tokenize_lockfile
@@ -164,28 +163,28 @@ DEPENDENCIES
164
163
  LOCKFILE
165
164
 
166
165
  expected = [
167
- [:section, 'GEM', 0, 0],
168
- [:newline, nil, 3, 0],
169
- [:entry, 'remote', 2, 1],
166
+ [:section, 'GEM', 0, 0],
167
+ [:newline, nil, 3, 0],
168
+ [:entry, 'remote', 2, 1],
170
169
  [:text, @gem_repo, 10, 1],
171
170
  [:newline, nil, 34, 1],
172
- [:entry, 'specs', 2, 2],
173
- [:newline, nil, 8, 2],
174
- [:text, 'Ab', 4, 3],
175
- [:l_paren, nil, 7, 3],
176
- [:text, '2', 8, 3],
177
- [:r_paren, nil, 9, 3],
171
+ [:entry, 'specs', 2, 2],
172
+ [:newline, nil, 8, 2],
173
+ [:text, 'Ab', 4, 3],
174
+ [:l_paren, nil, 7, 3],
175
+ [:text, '2', 8, 3],
176
+ [:r_paren, nil, 9, 3],
178
177
  [:newline, nil, 10, 3],
179
- [:newline, nil, 0, 4],
180
- [:section, 'PLATFORMS', 0, 5],
181
- [:newline, nil, 9, 5],
182
- [:text, Gem::Platform::RUBY, 2, 6],
183
- [:newline, nil, 6, 6],
184
- [:newline, nil, 0, 7],
185
- [:section, 'DEPENDENCIES', 0, 8],
178
+ [:newline, nil, 0, 4],
179
+ [:section, 'PLATFORMS', 0, 5],
180
+ [:newline, nil, 9, 5],
181
+ [:text, Gem::Platform::RUBY, 2, 6],
182
+ [:newline, nil, 6, 6],
183
+ [:newline, nil, 0, 7],
184
+ [:section, 'DEPENDENCIES', 0, 8],
186
185
  [:newline, nil, 12, 8],
187
- [:text, 'Ab', 2, 9],
188
- [:newline, nil, 4, 9],
186
+ [:text, 'Ab', 2, 9],
187
+ [:newline, nil, 4, 9],
189
188
  ]
190
189
 
191
190
  assert_equal expected, tokenize_lockfile
@@ -236,12 +235,12 @@ DEPENDENCIES
236
235
  LOCKFILE
237
236
 
238
237
  expected = [
239
- [:section, 'DEPENDENCIES', 0, 0],
240
- [:newline, nil, 12, 0],
238
+ [:section, 'DEPENDENCIES', 0, 0],
239
+ [:newline, nil, 12, 0],
241
240
 
242
- [:text, 'a', 2, 1],
243
- [:bang, nil, 3, 1],
244
- [:newline, nil, 4, 1],
241
+ [:text, 'a', 2, 1],
242
+ [:bang, nil, 3, 1],
243
+ [:newline, nil, 4, 1],
245
244
  ]
246
245
 
247
246
  assert_equal expected, tokenize_lockfile
@@ -257,31 +256,31 @@ GEM
257
256
  LOCKFILE
258
257
 
259
258
  expected = [
260
- [:section, 'GEM', 0, 0],
261
- [:newline, nil, 3, 0],
262
-
263
- [:entry, 'remote', 2, 1],
264
- [:text, @gem_repo, 10, 1],
265
- [:newline, nil, 34, 1],
266
-
267
- [:entry, 'specs', 2, 2],
268
- [:newline, nil, 8, 2],
269
-
270
- [:text, 'a', 4, 3],
271
- [:l_paren, nil, 6, 3],
272
- [:text, '2', 7, 3],
273
- [:r_paren, nil, 8, 3],
274
- [:newline, nil, 9, 3],
275
-
276
- [:text, 'b', 6, 4],
277
- [:l_paren, nil, 8, 4],
278
- [:requirement, '~>', 9, 4],
279
- [:text, '3.0', 12, 4],
280
- [:comma, nil, 15, 4],
281
- [:requirement, '>=', 17, 4],
282
- [:text, '3.0.1', 20, 4],
283
- [:r_paren, nil, 25, 4],
284
- [:newline, nil, 26, 4],
259
+ [:section, 'GEM', 0, 0],
260
+ [:newline, nil, 3, 0],
261
+
262
+ [:entry, 'remote', 2, 1],
263
+ [:text, @gem_repo, 10, 1],
264
+ [:newline, nil, 34, 1],
265
+
266
+ [:entry, 'specs', 2, 2],
267
+ [:newline, nil, 8, 2],
268
+
269
+ [:text, 'a', 4, 3],
270
+ [:l_paren, nil, 6, 3],
271
+ [:text, '2', 7, 3],
272
+ [:r_paren, nil, 8, 3],
273
+ [:newline, nil, 9, 3],
274
+
275
+ [:text, 'b', 6, 4],
276
+ [:l_paren, nil, 8, 4],
277
+ [:requirement, '~>', 9, 4],
278
+ [:text, '3.0', 12, 4],
279
+ [:comma, nil, 15, 4],
280
+ [:requirement, '>=', 17, 4],
281
+ [:text, '3.0.1', 20, 4],
282
+ [:r_paren, nil, 25, 4],
283
+ [:newline, nil, 26, 4],
285
284
  ]
286
285
 
287
286
  assert_equal expected, tokenize_lockfile
@@ -304,5 +303,4 @@ GEM
304
303
  def tokenize_lockfile
305
304
  Gem::RequestSet::Lockfile::Tokenizer.from_file(@lock_file).to_a
306
305
  end
307
-
308
306
  end
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require "rubygems/requirement"
4
4
 
5
5
  class TestGemRequirement < Gem::TestCase
6
-
7
6
  def test_concat
8
7
  r = req '>= 1'
9
8
 
@@ -23,6 +22,8 @@ class TestGemRequirement < Gem::TestCase
23
22
  refute_requirement_equal "~> 1.3", "~> 1.3.0"
24
23
  refute_requirement_equal "~> 1.3.0", "~> 1.3"
25
24
 
25
+ assert_requirement_equal ["> 2", "~> 1.3", "~> 1.3.1"], ["~> 1.3.1", "~> 1.3", "> 2"]
26
+
26
27
  assert_requirement_equal ["> 2", "~> 1.3"], ["> 2.0", "~> 1.3"]
27
28
  assert_requirement_equal ["> 2.0", "~> 1.3"], ["> 2", "~> 1.3"]
28
29
 
@@ -82,6 +83,12 @@ class TestGemRequirement < Gem::TestCase
82
83
  Gem::Requirement.parse(Gem::Version.new('2'))
83
84
  end
84
85
 
86
+ if RUBY_VERSION >= '2.5'
87
+ def test_parse_deduplication
88
+ assert_same '~>', Gem::Requirement.parse('~> 1').first
89
+ end
90
+ end
91
+
85
92
  def test_parse_bad
86
93
  [
87
94
  nil,
@@ -390,11 +397,32 @@ class TestGemRequirement < Gem::TestCase
390
397
  r2 = req('2.0', '1.0')
391
398
  assert_equal r1.hash, r2.hash
392
399
 
393
- r1 = req('1.0', '2.0').tap { |r| r.concat(['3.0']) }
394
- r2 = req('3.0', '1.0').tap { |r| r.concat(['2.0']) }
400
+ r1 = req('1.0', '2.0').tap {|r| r.concat(['3.0']) }
401
+ r2 = req('3.0', '1.0').tap {|r| r.concat(['2.0']) }
395
402
  assert_equal r1.hash, r2.hash
396
403
  end
397
404
 
405
+ def test_hash_returns_equal_hashes_for_equivalent_requirements
406
+ refute_requirement_hash_equal "= 1.2", "= 1.3"
407
+ refute_requirement_hash_equal "= 1.3", "= 1.2"
408
+
409
+ refute_requirement_hash_equal "~> 1.3", "~> 1.3.0"
410
+ refute_requirement_hash_equal "~> 1.3.0", "~> 1.3"
411
+
412
+ assert_requirement_hash_equal ["> 2", "~> 1.3", "~> 1.3.1"], ["~> 1.3.1", "~> 1.3", "> 2"]
413
+
414
+ assert_requirement_hash_equal ["> 2", "~> 1.3"], ["> 2.0", "~> 1.3"]
415
+ assert_requirement_hash_equal ["> 2.0", "~> 1.3"], ["> 2", "~> 1.3"]
416
+
417
+ assert_requirement_hash_equal "= 1.0", "= 1.0.0"
418
+ assert_requirement_hash_equal "= 1.1", "= 1.1.0"
419
+ assert_requirement_hash_equal "= 1", "= 1.0.0"
420
+
421
+ assert_requirement_hash_equal "1.0", "1.0.0"
422
+ assert_requirement_hash_equal "1.1", "1.1.0"
423
+ assert_requirement_hash_equal "1", "1.0.0"
424
+ end
425
+
398
426
  # Assert that two requirements are equal. Handles Gem::Requirements,
399
427
  # strings, arrays, numbers, and versions.
400
428
 
@@ -409,6 +437,13 @@ class TestGemRequirement < Gem::TestCase
409
437
  "#{requirement} is satisfied by #{version}"
410
438
  end
411
439
 
440
+ # Assert that two requirement hashes are equal. Handles Gem::Requirements,
441
+ # strings, arrays, numbers, and versions.
442
+
443
+ def assert_requirement_hash_equal(expected, actual)
444
+ assert_equal req(expected).hash, req(actual).hash
445
+ end
446
+
412
447
  # Refute the assumption that two requirements are equal.
413
448
 
414
449
  def refute_requirement_equal(unexpected, actual)
@@ -422,4 +457,9 @@ class TestGemRequirement < Gem::TestCase
422
457
  "#{requirement} is not satisfied by #{version}"
423
458
  end
424
459
 
460
+ # Refute the assumption that two requirements hashes are equal.
461
+
462
+ def refute_requirement_hash_equal(unexpected, actual)
463
+ refute_equal req(unexpected).hash, req(actual).hash
464
+ end
425
465
  end
@@ -2,7 +2,6 @@
2
2
  require 'rubygems/test_case'
3
3
 
4
4
  class TestGemResolver < Gem::TestCase
5
-
6
5
  def setup
7
6
  super
8
7
 
@@ -26,10 +25,10 @@ class TestGemResolver < Gem::TestCase
26
25
  def assert_resolves_to(expected, resolver)
27
26
  actual = resolver.resolve
28
27
 
29
- exp = expected.sort_by { |s| s.full_name }
30
- act = actual.map { |a| a.spec.spec }.sort_by { |s| s.full_name }
28
+ exp = expected.sort_by {|s| s.full_name }
29
+ act = actual.map {|a| a.spec.spec }.sort_by {|s| s.full_name }
31
30
 
32
- msg = "Set of gems was not the same: #{exp.map { |x| x.full_name}.inspect} != #{act.map { |x| x.full_name}.inspect}"
31
+ msg = "Set of gems was not the same: #{exp.map {|x| x.full_name }.inspect} != #{act.map {|x| x.full_name }.inspect}"
33
32
 
34
33
  assert_equal exp, act, msg
35
34
  rescue Gem::DependencyResolutionError => e
@@ -105,7 +104,7 @@ class TestGemResolver < Gem::TestCase
105
104
 
106
105
  res.requests a1, act, reqs
107
106
 
108
- assert_equal ['b (= 2)'], reqs.map { |req| req.to_s }
107
+ assert_equal ['b (= 2)'], reqs.map {|req| req.to_s }
109
108
  end
110
109
 
111
110
  def test_requests_development
@@ -127,7 +126,7 @@ class TestGemResolver < Gem::TestCase
127
126
 
128
127
  res.requests spec, act, reqs
129
128
 
130
- assert_equal ['b (= 2)'], reqs.map { |req| req.to_s }
129
+ assert_equal ['b (= 2)'], reqs.map {|req| req.to_s }
131
130
 
132
131
  assert spec.instance_variable_defined? :@called
133
132
  end
@@ -546,7 +545,7 @@ class TestGemResolver < Gem::TestCase
546
545
 
547
546
  dependency = e.conflict.dependency
548
547
 
549
- assert_includes %w(a b), dependency.name
548
+ assert_includes %w[a b], dependency.name
550
549
  assert_equal req('>= 0'), dependency.requirement
551
550
 
552
551
  activated = e.conflict.activated
@@ -789,5 +788,4 @@ class TestGemResolver < Gem::TestCase
789
788
  assert_match "No match for 'a (= 1)' on this platform. Found: c-p-1",
790
789
  e.message
791
790
  end
792
-
793
791
  end
@@ -2,7 +2,6 @@
2
2
  require 'rubygems/test_case'
3
3
 
4
4
  class TestGemResolverActivationRequest < Gem::TestCase
5
-
6
5
  def setup
7
6
  super
8
7
 
@@ -40,5 +39,4 @@ class TestGemResolverActivationRequest < Gem::TestCase
40
39
 
41
40
  assert @req.installed?
42
41
  end
43
-
44
42
  end
@@ -2,35 +2,34 @@
2
2
  require 'rubygems/test_case'
3
3
 
4
4
  class TestGemResolverAPISet < Gem::TestCase
5
-
6
5
  def setup
7
6
  super
8
7
 
9
8
  @DR = Gem::Resolver
10
- @dep_uri = URI "#{@gem_repo}api/v1/dependencies"
9
+ @dep_uri = URI "#{@gem_repo}info/"
11
10
  end
12
11
 
13
12
  def test_initialize
14
13
  set = @DR::APISet.new
15
14
 
16
- assert_equal URI('https://rubygems.org/api/v1/dependencies'), set.dep_uri
17
- assert_equal URI('https://rubygems.org'), set.uri
18
- assert_equal Gem::Source.new(URI('https://rubygems.org')), set.source
15
+ assert_equal URI('https://index.rubygems.org/info/'), set.dep_uri
16
+ assert_equal URI('https://index.rubygems.org/'), set.uri
17
+ assert_equal Gem::Source.new(URI('https://index.rubygems.org')), set.source
19
18
  end
20
19
 
21
20
  def test_initialize_deeper_uri
22
- set = @DR::APISet.new 'https://rubygemsserver.com/mygems/api/v1/dependencies'
21
+ set = @DR::APISet.new 'https://rubygemsserver.com/mygems/info'
23
22
 
24
- assert_equal URI('https://rubygemsserver.com/mygems/api/v1/dependencies'), set.dep_uri
25
- assert_equal URI('https://rubygemsserver.com/mygems/'), set.uri
26
- assert_equal Gem::Source.new(URI('https://rubygemsserver.com/mygems/')), set.source
23
+ assert_equal URI('https://rubygemsserver.com/mygems/info'), set.dep_uri
24
+ assert_equal URI('https://rubygemsserver.com/'), set.uri
25
+ assert_equal Gem::Source.new(URI('https://rubygemsserver.com/')), set.source
27
26
  end
28
27
 
29
28
  def test_initialize_uri
30
29
  set = @DR::APISet.new @dep_uri
31
30
 
32
- assert_equal URI("#{@gem_repo}api/v1/dependencies"), set.dep_uri
33
- assert_equal URI("#{@gem_repo}"), set.uri
31
+ assert_equal URI("#{@gem_repo}info/"), set.dep_uri
32
+ assert_equal URI("#{@gem_repo}"), set.uri
34
33
  end
35
34
 
36
35
  def test_find_all
@@ -40,17 +39,46 @@ class TestGemResolverAPISet < Gem::TestCase
40
39
  { :name => 'a',
41
40
  :number => '1',
42
41
  :platform => 'ruby',
43
- :dependencies => [], },
42
+ :dependencies => [] },
43
+ ]
44
+
45
+ @fetcher.data["#{@dep_uri}a"] = "---\n1 "
46
+
47
+ set = @DR::APISet.new @dep_uri
48
+
49
+ a_dep = @DR::DependencyRequest.new dep('a'), nil
50
+
51
+ expected = [
52
+ @DR::APISpecification.new(set, data.first),
53
+ ]
54
+
55
+ assert_equal expected, set.find_all(a_dep)
56
+ end
57
+
58
+ def test_find_all_prereleases
59
+ spec_fetcher
60
+
61
+ data = [
62
+ { :name => 'a',
63
+ :number => '1',
64
+ :platform => 'ruby',
65
+ :dependencies => [] },
66
+ { :name => 'a',
67
+ :number => '2.a',
68
+ :platform => 'ruby',
69
+ :dependencies => [] },
44
70
  ]
45
71
 
46
- @fetcher.data["#{@dep_uri}?gems=a"] = Marshal.dump data
72
+ @fetcher.data["#{@dep_uri}a"] = "---\n1\n2.a"
47
73
 
48
74
  set = @DR::APISet.new @dep_uri
75
+ set.prerelease = true
49
76
 
50
77
  a_dep = @DR::DependencyRequest.new dep('a'), nil
51
78
 
52
79
  expected = [
53
- @DR::APISpecification.new(set, data.first)
80
+ @DR::APISpecification.new(set, data.first),
81
+ @DR::APISpecification.new(set, data.last),
54
82
  ]
55
83
 
56
84
  assert_equal expected, set.find_all(a_dep)
@@ -63,10 +91,10 @@ class TestGemResolverAPISet < Gem::TestCase
63
91
  { :name => 'a',
64
92
  :number => '1',
65
93
  :platform => 'ruby',
66
- :dependencies => [], },
94
+ :dependencies => [] },
67
95
  ]
68
96
 
69
- @fetcher.data["#{@dep_uri}?gems=a"] = Marshal.dump data
97
+ @fetcher.data["#{@dep_uri}a"] = "---\n1 "
70
98
 
71
99
  set = @DR::APISet.new @dep_uri
72
100
 
@@ -75,12 +103,12 @@ class TestGemResolverAPISet < Gem::TestCase
75
103
  set.prefetch [a_dep]
76
104
 
77
105
  expected = [
78
- @DR::APISpecification.new(set, data.first)
106
+ @DR::APISpecification.new(set, data.first),
79
107
  ]
80
108
 
81
109
  assert_equal expected, set.find_all(a_dep)
82
110
 
83
- @fetcher.data.delete "#{@dep_uri}?gems=a"
111
+ @fetcher.data.delete "#{@dep_uri}a"
84
112
  end
85
113
 
86
114
  def test_find_all_local
@@ -95,7 +123,7 @@ class TestGemResolverAPISet < Gem::TestCase
95
123
  def test_find_all_missing
96
124
  spec_fetcher
97
125
 
98
- @fetcher.data["#{@dep_uri}?gems=a"] = Marshal.dump []
126
+ @fetcher.data["#{@dep_uri}a"] = "---"
99
127
 
100
128
  set = @DR::APISet.new @dep_uri
101
129
 
@@ -103,7 +131,7 @@ class TestGemResolverAPISet < Gem::TestCase
103
131
 
104
132
  assert_empty set.find_all(a_dep)
105
133
 
106
- @fetcher.data.delete "#{@dep_uri}?gems=a"
134
+ @fetcher.data.delete "#{@dep_uri}a"
107
135
 
108
136
  assert_empty set.find_all(a_dep)
109
137
  end
@@ -111,15 +139,8 @@ class TestGemResolverAPISet < Gem::TestCase
111
139
  def test_prefetch
112
140
  spec_fetcher
113
141
 
114
- data = [
115
- { :name => 'a',
116
- :number => '1',
117
- :platform => 'ruby',
118
- :dependencies => [], },
119
- ]
120
-
121
- @fetcher.data["#{@dep_uri}?gems=a,b"] = Marshal.dump data
122
- @fetcher.data["#{@dep_uri}?gems=b"] = Marshal.dump []
142
+ @fetcher.data["#{@dep_uri}a"] = "---\n1 \n"
143
+ @fetcher.data["#{@dep_uri}b"] = "---"
123
144
 
124
145
  set = @DR::APISet.new @dep_uri
125
146
 
@@ -128,21 +149,14 @@ class TestGemResolverAPISet < Gem::TestCase
128
149
 
129
150
  set.prefetch [a_dep, b_dep]
130
151
 
131
- assert_equal %w[a-1], set.find_all(a_dep).map { |s| s.full_name }
152
+ assert_equal %w[a-1], set.find_all(a_dep).map {|s| s.full_name }
132
153
  assert_empty set.find_all(b_dep)
133
154
  end
134
155
 
135
156
  def test_prefetch_cache
136
157
  spec_fetcher
137
158
 
138
- data = [
139
- { :name => 'a',
140
- :number => '1',
141
- :platform => 'ruby',
142
- :dependencies => [], },
143
- ]
144
-
145
- @fetcher.data["#{@dep_uri}?gems=a"] = Marshal.dump data
159
+ @fetcher.data["#{@dep_uri}a"] = "---\n1 \n"
146
160
 
147
161
  set = @DR::APISet.new @dep_uri
148
162
 
@@ -151,8 +165,8 @@ class TestGemResolverAPISet < Gem::TestCase
151
165
 
152
166
  set.prefetch [a_dep]
153
167
 
154
- @fetcher.data.delete "#{@dep_uri}?gems=a"
155
- @fetcher.data["#{@dep_uri}?gems=b"] = Marshal.dump []
168
+ @fetcher.data.delete "#{@dep_uri}a"
169
+ @fetcher.data["#{@dep_uri}?b"] = "---"
156
170
 
157
171
  set.prefetch [a_dep, b_dep]
158
172
  end
@@ -160,14 +174,8 @@ class TestGemResolverAPISet < Gem::TestCase
160
174
  def test_prefetch_cache_missing
161
175
  spec_fetcher
162
176
 
163
- data = [
164
- { :name => 'a',
165
- :number => '1',
166
- :platform => 'ruby',
167
- :dependencies => [], },
168
- ]
169
-
170
- @fetcher.data["#{@dep_uri}?gems=a,b"] = Marshal.dump data
177
+ @fetcher.data["#{@dep_uri}a"] = "---\n1 \n"
178
+ @fetcher.data["#{@dep_uri}b"] = "---"
171
179
 
172
180
  set = @DR::APISet.new @dep_uri
173
181
 
@@ -176,7 +184,8 @@ class TestGemResolverAPISet < Gem::TestCase
176
184
 
177
185
  set.prefetch [a_dep, b_dep]
178
186
 
179
- @fetcher.data.delete "#{@dep_uri}?gems=a,b"
187
+ @fetcher.data.delete "#{@dep_uri}a"
188
+ @fetcher.data.delete "#{@dep_uri}b"
180
189
 
181
190
  set.prefetch [a_dep, b_dep]
182
191
  end
@@ -184,15 +193,8 @@ class TestGemResolverAPISet < Gem::TestCase
184
193
  def test_prefetch_local
185
194
  spec_fetcher
186
195
 
187
- data = [
188
- { :name => 'a',
189
- :number => '1',
190
- :platform => 'ruby',
191
- :dependencies => [], },
192
- ]
193
-
194
- @fetcher.data["#{@dep_uri}?gems=a,b"] = Marshal.dump data
195
- @fetcher.data["#{@dep_uri}?gems=b"] = Marshal.dump []
196
+ @fetcher.data["#{@dep_uri}a"] = "---\n1 \n"
197
+ @fetcher.data["#{@dep_uri}b"] = "---"
196
198
 
197
199
  set = @DR::APISet.new @dep_uri
198
200
  set.remote = false
@@ -204,5 +206,4 @@ class TestGemResolverAPISet < Gem::TestCase
204
206
 
205
207
  assert_empty set.instance_variable_get :@data
206
208
  end
207
-
208
209
  end