rubygems-update 3.3.18 → 3.4.19

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 (615) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1429 -1064
  3. data/CONTRIBUTING.md +31 -8
  4. data/Manifest.txt +61 -36
  5. data/POLICIES.md +55 -20
  6. data/README.md +19 -6
  7. data/bundler/CHANGELOG.md +457 -1
  8. data/bundler/README.md +3 -6
  9. data/bundler/UPGRADING.md +11 -4
  10. data/bundler/bundler.gemspec +8 -10
  11. data/bundler/exe/bundle +5 -16
  12. data/bundler/lib/bundler/build_metadata.rb +2 -2
  13. data/bundler/lib/bundler/cli/add.rb +1 -1
  14. data/bundler/lib/bundler/cli/binstubs.rb +6 -2
  15. data/bundler/lib/bundler/cli/check.rb +1 -1
  16. data/bundler/lib/bundler/cli/common.rb +2 -0
  17. data/bundler/lib/bundler/cli/console.rb +2 -2
  18. data/bundler/lib/bundler/cli/doctor.rb +4 -6
  19. data/bundler/lib/bundler/cli/gem.rb +62 -40
  20. data/bundler/lib/bundler/cli/info.rb +1 -1
  21. data/bundler/lib/bundler/cli/init.rb +6 -2
  22. data/bundler/lib/bundler/cli/install.rb +8 -6
  23. data/bundler/lib/bundler/cli/lock.rb +8 -5
  24. data/bundler/lib/bundler/cli/open.rb +6 -4
  25. data/bundler/lib/bundler/cli/outdated.rb +14 -7
  26. data/bundler/lib/bundler/cli/platform.rb +7 -5
  27. data/bundler/lib/bundler/cli/viz.rb +1 -1
  28. data/bundler/lib/bundler/cli.rb +53 -7
  29. data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
  30. data/bundler/lib/bundler/compact_index_client/updater.rb +40 -39
  31. data/bundler/lib/bundler/constants.rb +1 -1
  32. data/bundler/lib/bundler/current_ruby.rb +16 -5
  33. data/bundler/lib/bundler/definition.rb +262 -133
  34. data/bundler/lib/bundler/dependency.rb +20 -86
  35. data/bundler/lib/bundler/digest.rb +1 -1
  36. data/bundler/lib/bundler/dsl.rb +6 -7
  37. data/bundler/lib/bundler/endpoint_specification.rb +2 -13
  38. data/bundler/lib/bundler/env.rb +2 -2
  39. data/bundler/lib/bundler/environment_preserver.rb +3 -2
  40. data/bundler/lib/bundler/errors.rb +1 -11
  41. data/bundler/lib/bundler/feature_flag.rb +0 -2
  42. data/bundler/lib/bundler/fetcher/compact_index.rb +11 -13
  43. data/bundler/lib/bundler/fetcher/dependency.rb +2 -6
  44. data/bundler/lib/bundler/fetcher/downloader.rb +4 -5
  45. data/bundler/lib/bundler/fetcher/index.rb +1 -2
  46. data/bundler/lib/bundler/fetcher.rb +21 -15
  47. data/bundler/lib/bundler/force_platform.rb +18 -0
  48. data/bundler/lib/bundler/friendly_errors.rb +1 -4
  49. data/bundler/lib/bundler/gem_helper.rb +3 -4
  50. data/bundler/lib/bundler/gem_helpers.rb +7 -2
  51. data/bundler/lib/bundler/gem_version_promoter.rb +53 -98
  52. data/bundler/lib/bundler/graph.rb +3 -3
  53. data/bundler/lib/bundler/index.rb +13 -47
  54. data/bundler/lib/bundler/injector.rb +5 -4
  55. data/bundler/lib/bundler/inline.rb +9 -11
  56. data/bundler/lib/bundler/installer/parallel_installer.rb +4 -34
  57. data/bundler/lib/bundler/installer/standalone.rb +13 -9
  58. data/bundler/lib/bundler/installer.rb +17 -29
  59. data/bundler/lib/bundler/lazy_specification.rb +54 -53
  60. data/bundler/lib/bundler/lockfile_generator.rb +3 -3
  61. data/bundler/lib/bundler/lockfile_parser.rb +17 -16
  62. data/bundler/lib/bundler/man/bundle-add.1 +6 -2
  63. data/bundler/lib/bundler/man/bundle-add.1.ronn +4 -1
  64. data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
  65. data/bundler/lib/bundler/man/bundle-cache.1 +9 -3
  66. data/bundler/lib/bundler/man/bundle-cache.1.ronn +9 -2
  67. data/bundler/lib/bundler/man/bundle-check.1 +1 -1
  68. data/bundler/lib/bundler/man/bundle-clean.1 +2 -2
  69. data/bundler/lib/bundler/man/bundle-clean.1.ronn +1 -1
  70. data/bundler/lib/bundler/man/bundle-config.1 +26 -10
  71. data/bundler/lib/bundler/man/bundle-config.1.ronn +17 -10
  72. data/bundler/lib/bundler/man/bundle-console.1 +53 -0
  73. data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
  74. data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
  75. data/bundler/lib/bundler/man/bundle-exec.1 +6 -6
  76. data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -6
  77. data/bundler/lib/bundler/man/bundle-gem.1 +27 -37
  78. data/bundler/lib/bundler/man/bundle-gem.1.ronn +5 -5
  79. data/bundler/lib/bundler/man/bundle-help.1 +13 -0
  80. data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
  81. data/bundler/lib/bundler/man/bundle-info.1 +3 -3
  82. data/bundler/lib/bundler/man/bundle-info.1.ronn +3 -3
  83. data/bundler/lib/bundler/man/bundle-init.1 +5 -1
  84. data/bundler/lib/bundler/man/bundle-init.1.ronn +2 -0
  85. data/bundler/lib/bundler/man/bundle-inject.1 +5 -2
  86. data/bundler/lib/bundler/man/bundle-inject.1.ronn +3 -1
  87. data/bundler/lib/bundler/man/bundle-install.1 +5 -30
  88. data/bundler/lib/bundler/man/bundle-install.1.ronn +6 -29
  89. data/bundler/lib/bundler/man/bundle-list.1 +1 -1
  90. data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
  91. data/bundler/lib/bundler/man/bundle-open.1 +22 -2
  92. data/bundler/lib/bundler/man/bundle-open.1.ronn +9 -1
  93. data/bundler/lib/bundler/man/bundle-outdated.1 +13 -9
  94. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +12 -9
  95. data/bundler/lib/bundler/man/bundle-platform.1 +16 -6
  96. data/bundler/lib/bundler/man/bundle-platform.1.ronn +14 -7
  97. data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
  98. data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
  99. data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
  100. data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
  101. data/bundler/lib/bundler/man/bundle-show.1 +1 -1
  102. data/bundler/lib/bundler/man/bundle-update.1 +1 -1
  103. data/bundler/lib/bundler/man/bundle-version.1 +35 -0
  104. data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
  105. data/bundler/lib/bundler/man/bundle-viz.1 +4 -1
  106. data/bundler/lib/bundler/man/bundle-viz.1.ronn +2 -0
  107. data/bundler/lib/bundler/man/bundle.1 +15 -10
  108. data/bundler/lib/bundler/man/bundle.1.ronn +12 -7
  109. data/bundler/lib/bundler/man/gemfile.5 +55 -55
  110. data/bundler/lib/bundler/man/gemfile.5.ronn +57 -53
  111. data/bundler/lib/bundler/man/index.txt +4 -0
  112. data/bundler/lib/bundler/match_metadata.rb +13 -0
  113. data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
  114. data/bundler/lib/bundler/mirror.rb +5 -7
  115. data/bundler/lib/bundler/plugin/index.rb +5 -5
  116. data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -4
  117. data/bundler/lib/bundler/plugin/installer.rb +5 -2
  118. data/bundler/lib/bundler/plugin.rb +3 -1
  119. data/bundler/lib/bundler/remote_specification.rb +7 -12
  120. data/bundler/lib/bundler/resolver/base.rb +107 -0
  121. data/bundler/lib/bundler/resolver/candidate.rb +94 -0
  122. data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
  123. data/bundler/lib/bundler/resolver/package.rb +72 -0
  124. data/bundler/lib/bundler/resolver/root.rb +25 -0
  125. data/bundler/lib/bundler/resolver/spec_group.rb +42 -71
  126. data/bundler/lib/bundler/resolver.rb +335 -328
  127. data/bundler/lib/bundler/ruby_dsl.rb +7 -1
  128. data/bundler/lib/bundler/ruby_version.rb +8 -8
  129. data/bundler/lib/bundler/rubygems_ext.rb +100 -9
  130. data/bundler/lib/bundler/rubygems_gem_installer.rb +23 -14
  131. data/bundler/lib/bundler/rubygems_integration.rb +11 -15
  132. data/bundler/lib/bundler/runtime.rb +2 -6
  133. data/bundler/lib/bundler/safe_marshal.rb +31 -0
  134. data/bundler/lib/bundler/settings.rb +5 -11
  135. data/bundler/lib/bundler/setup.rb +4 -1
  136. data/bundler/lib/bundler/shared_helpers.rb +3 -3
  137. data/bundler/lib/bundler/source/git/git_proxy.rb +237 -74
  138. data/bundler/lib/bundler/source/git.rb +55 -30
  139. data/bundler/lib/bundler/source/metadata.rb +1 -2
  140. data/bundler/lib/bundler/source/path/installer.rb +1 -22
  141. data/bundler/lib/bundler/source/path.rb +6 -6
  142. data/bundler/lib/bundler/source/rubygems.rb +26 -81
  143. data/bundler/lib/bundler/source.rb +1 -1
  144. data/bundler/lib/bundler/source_list.rb +8 -2
  145. data/bundler/lib/bundler/spec_set.rb +60 -37
  146. data/bundler/lib/bundler/templates/Executable +1 -1
  147. data/bundler/lib/bundler/templates/Executable.bundler +5 -10
  148. data/bundler/lib/bundler/templates/Executable.standalone +2 -0
  149. data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
  150. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +3 -0
  151. data/bundler/lib/bundler/templates/newgem/README.md.tt +6 -4
  152. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +12 -1
  153. data/bundler/lib/bundler/templates/newgem/bin/console.tt +0 -4
  154. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
  155. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
  156. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt +10 -0
  157. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
  158. data/bundler/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +1 -1
  159. data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
  160. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +10 -0
  161. data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
  162. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +13 -4
  163. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +9 -2
  164. data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
  165. data/bundler/lib/bundler/ui/shell.rb +35 -12
  166. data/bundler/lib/bundler/ui/silent.rb +21 -5
  167. data/bundler/lib/bundler/uri_normalizer.rb +23 -0
  168. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
  169. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
  170. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
  171. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1351 -409
  172. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
  173. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
  174. data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
  175. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
  176. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
  177. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
  178. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
  179. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
  180. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
  181. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
  182. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
  183. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
  184. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
  185. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
  186. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
  187. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
  188. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +248 -0
  189. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
  190. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
  191. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +1 -1
  192. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +64 -16
  193. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
  194. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -1
  195. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +27 -7
  196. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -2
  197. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -1
  198. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
  199. data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
  200. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -2
  201. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +15 -9
  202. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +11 -6
  203. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  204. data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +1 -2
  205. data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +2 -1
  206. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -2
  207. data/bundler/lib/bundler/vendored_persistent.rb +1 -33
  208. data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_pub_grub.rb} +1 -1
  209. data/bundler/lib/bundler/version.rb +5 -1
  210. data/bundler/lib/bundler/worker.rb +5 -7
  211. data/bundler/lib/bundler.rb +25 -77
  212. data/{bin → exe}/gem +4 -5
  213. data/{bin → exe}/update_rubygems +12 -10
  214. data/lib/rubygems/available_set.rb +4 -3
  215. data/lib/rubygems/basic_specification.rb +5 -4
  216. data/lib/rubygems/bundler_version_finder.rb +2 -2
  217. data/lib/rubygems/command.rb +41 -32
  218. data/lib/rubygems/command_manager.rb +30 -15
  219. data/lib/rubygems/commands/build_command.rb +12 -8
  220. data/lib/rubygems/commands/cert_command.rb +34 -33
  221. data/lib/rubygems/commands/check_command.rb +21 -20
  222. data/lib/rubygems/commands/cleanup_command.rb +18 -17
  223. data/lib/rubygems/commands/contents_command.rb +14 -13
  224. data/lib/rubygems/commands/dependency_command.rb +17 -16
  225. data/lib/rubygems/commands/environment_command.rb +6 -5
  226. data/lib/rubygems/commands/exec_command.rb +249 -0
  227. data/lib/rubygems/commands/fetch_command.rb +10 -9
  228. data/lib/rubygems/commands/generate_index_command.rb +18 -17
  229. data/lib/rubygems/commands/help_command.rb +7 -6
  230. data/lib/rubygems/commands/info_command.rb +3 -3
  231. data/lib/rubygems/commands/install_command.rb +28 -23
  232. data/lib/rubygems/commands/list_command.rb +4 -3
  233. data/lib/rubygems/commands/lock_command.rb +5 -4
  234. data/lib/rubygems/commands/mirror_command.rb +4 -3
  235. data/lib/rubygems/commands/open_command.rb +10 -9
  236. data/lib/rubygems/commands/outdated_command.rb +6 -5
  237. data/lib/rubygems/commands/owner_command.rb +17 -14
  238. data/lib/rubygems/commands/pristine_command.rb +46 -36
  239. data/lib/rubygems/commands/push_command.rb +9 -8
  240. data/lib/rubygems/commands/query_command.rb +9 -8
  241. data/lib/rubygems/commands/rdoc_command.rb +21 -19
  242. data/lib/rubygems/commands/search_command.rb +4 -3
  243. data/lib/rubygems/commands/server_command.rb +4 -3
  244. data/lib/rubygems/commands/setup_command.rb +97 -106
  245. data/lib/rubygems/commands/signin_command.rb +10 -9
  246. data/lib/rubygems/commands/signout_command.rb +8 -7
  247. data/lib/rubygems/commands/sources_command.rb +22 -21
  248. data/lib/rubygems/commands/specification_command.rb +14 -13
  249. data/lib/rubygems/commands/stale_command.rb +3 -2
  250. data/lib/rubygems/commands/uninstall_command.rb +44 -40
  251. data/lib/rubygems/commands/unpack_command.rb +14 -13
  252. data/lib/rubygems/commands/update_command.rb +42 -63
  253. data/lib/rubygems/commands/which_command.rb +8 -7
  254. data/lib/rubygems/commands/yank_command.rb +12 -11
  255. data/lib/rubygems/config_file.rb +55 -21
  256. data/lib/rubygems/core_ext/kernel_gem.rb +1 -6
  257. data/lib/rubygems/core_ext/kernel_require.rb +109 -115
  258. data/lib/rubygems/core_ext/kernel_warn.rb +33 -37
  259. data/lib/rubygems/core_ext/tcpsocket_init.rb +3 -1
  260. data/lib/rubygems/defaults.rb +33 -18
  261. data/lib/rubygems/dependency.rb +15 -11
  262. data/lib/rubygems/dependency_installer.rb +38 -37
  263. data/lib/rubygems/dependency_list.rb +7 -6
  264. data/lib/rubygems/deprecate.rb +3 -2
  265. data/lib/rubygems/doctor.rb +19 -18
  266. data/lib/rubygems/errors.rb +3 -2
  267. data/lib/rubygems/exceptions.rb +16 -8
  268. data/lib/rubygems/ext/build_error.rb +2 -1
  269. data/lib/rubygems/ext/builder.rb +37 -21
  270. data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +9 -5
  271. data/lib/rubygems/ext/cargo_builder.rb +150 -111
  272. data/lib/rubygems/ext/cmake_builder.rb +2 -2
  273. data/lib/rubygems/ext/configure_builder.rb +2 -1
  274. data/lib/rubygems/ext/ext_conf_builder.rb +11 -9
  275. data/lib/rubygems/ext/rake_builder.rb +7 -5
  276. data/lib/rubygems/ext.rb +8 -7
  277. data/lib/rubygems/gem_runner.rb +6 -5
  278. data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +163 -0
  279. data/lib/rubygems/gemcutter_utilities/webauthn_listener.rb +105 -0
  280. data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +78 -0
  281. data/lib/rubygems/gemcutter_utilities.rb +90 -34
  282. data/lib/rubygems/indexer.rb +29 -28
  283. data/lib/rubygems/install_default_message.rb +3 -2
  284. data/lib/rubygems/install_message.rb +3 -2
  285. data/lib/rubygems/install_update_options.rb +56 -55
  286. data/lib/rubygems/installer.rb +54 -46
  287. data/lib/rubygems/installer_uninstaller_utils.rb +2 -2
  288. data/lib/rubygems/local_remote_options.rb +19 -20
  289. data/lib/rubygems/mock_gem_ui.rb +3 -2
  290. data/lib/rubygems/name_tuple.rb +5 -4
  291. data/lib/rubygems/optparse/lib/optparse.rb +20 -15
  292. data/lib/rubygems/optparse.rb +1 -1
  293. data/lib/rubygems/package/digest_io.rb +1 -0
  294. data/lib/rubygems/package/file_source.rb +3 -2
  295. data/lib/rubygems/package/io_source.rb +1 -0
  296. data/lib/rubygems/package/old.rb +9 -8
  297. data/lib/rubygems/package/source.rb +1 -0
  298. data/lib/rubygems/package/tar_header.rb +63 -62
  299. data/lib/rubygems/package/tar_reader/entry.rb +91 -9
  300. data/lib/rubygems/package/tar_reader.rb +2 -29
  301. data/lib/rubygems/package/tar_writer.rb +8 -7
  302. data/lib/rubygems/package.rb +64 -48
  303. data/lib/rubygems/package_task.rb +5 -4
  304. data/lib/rubygems/path_support.rb +1 -0
  305. data/lib/rubygems/platform.rb +79 -53
  306. data/lib/rubygems/psych_tree.rb +2 -1
  307. data/lib/rubygems/query_utils.rb +35 -35
  308. data/lib/rubygems/rdoc.rb +3 -2
  309. data/lib/rubygems/remote_fetcher.rb +23 -22
  310. data/lib/rubygems/request/connection_pools.rb +4 -4
  311. data/lib/rubygems/request/http_pool.rb +2 -1
  312. data/lib/rubygems/request/https_pool.rb +1 -0
  313. data/lib/rubygems/request.rb +23 -22
  314. data/lib/rubygems/request_set/gem_dependency_api.rb +123 -123
  315. data/lib/rubygems/request_set/lockfile/parser.rb +28 -27
  316. data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -3
  317. data/lib/rubygems/request_set/lockfile.rb +6 -5
  318. data/lib/rubygems/request_set.rb +20 -19
  319. data/lib/rubygems/requirement.rb +15 -14
  320. data/lib/rubygems/resolver/activation_request.rb +4 -3
  321. data/lib/rubygems/resolver/api_set.rb +5 -4
  322. data/lib/rubygems/resolver/api_specification.rb +7 -6
  323. data/lib/rubygems/resolver/best_set.rb +6 -5
  324. data/lib/rubygems/resolver/composed_set.rb +1 -0
  325. data/lib/rubygems/resolver/conflict.rb +11 -10
  326. data/lib/rubygems/resolver/current_set.rb +1 -0
  327. data/lib/rubygems/resolver/dependency_request.rb +3 -2
  328. data/lib/rubygems/resolver/git_set.rb +3 -2
  329. data/lib/rubygems/resolver/git_specification.rb +7 -6
  330. data/lib/rubygems/resolver/index_set.rb +4 -3
  331. data/lib/rubygems/resolver/index_specification.rb +7 -5
  332. data/lib/rubygems/resolver/installed_specification.rb +5 -4
  333. data/lib/rubygems/resolver/installer_set.rb +15 -17
  334. data/lib/rubygems/resolver/local_specification.rb +3 -2
  335. data/lib/rubygems/resolver/lock_set.rb +5 -4
  336. data/lib/rubygems/resolver/lock_specification.rb +5 -4
  337. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +1 -1
  338. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
  339. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  340. data/lib/rubygems/resolver/molinillo.rb +2 -1
  341. data/lib/rubygems/resolver/requirement_list.rb +1 -0
  342. data/lib/rubygems/resolver/set.rb +1 -0
  343. data/lib/rubygems/resolver/source_set.rb +2 -0
  344. data/lib/rubygems/resolver/spec_specification.rb +1 -0
  345. data/lib/rubygems/resolver/specification.rb +2 -1
  346. data/lib/rubygems/resolver/stats.rb +2 -1
  347. data/lib/rubygems/resolver/vendor_set.rb +2 -1
  348. data/lib/rubygems/resolver/vendor_specification.rb +4 -3
  349. data/lib/rubygems/resolver.rb +41 -40
  350. data/lib/rubygems/s3_uri_signer.rb +10 -8
  351. data/lib/rubygems/safe_yaml.rb +4 -2
  352. data/lib/rubygems/security/policies.rb +48 -47
  353. data/lib/rubygems/security/policy.rb +19 -18
  354. data/lib/rubygems/security/signer.rb +6 -5
  355. data/lib/rubygems/security/trust_dir.rb +5 -4
  356. data/lib/rubygems/security.rb +30 -42
  357. data/lib/rubygems/security_option.rb +6 -5
  358. data/lib/rubygems/shellwords.rb +3 -0
  359. data/lib/rubygems/source/git.rb +22 -22
  360. data/lib/rubygems/source/installed.rb +2 -1
  361. data/lib/rubygems/source/local.rb +3 -2
  362. data/lib/rubygems/source/lock.rb +1 -0
  363. data/lib/rubygems/source/specific_file.rb +2 -1
  364. data/lib/rubygems/source/vendor.rb +1 -0
  365. data/lib/rubygems/source.rb +16 -16
  366. data/lib/rubygems/spec_fetcher.rb +10 -9
  367. data/lib/rubygems/specification.rb +121 -114
  368. data/lib/rubygems/specification_policy.rb +36 -15
  369. data/lib/rubygems/stub_specification.rb +11 -9
  370. data/lib/rubygems/text.rb +2 -2
  371. data/lib/rubygems/tsort/lib/tsort.rb +308 -310
  372. data/lib/rubygems/tsort.rb +1 -1
  373. data/lib/rubygems/uninstaller.rb +19 -18
  374. data/lib/rubygems/update_suggestion.rb +69 -0
  375. data/lib/rubygems/uri.rb +4 -4
  376. data/lib/rubygems/uri_formatter.rb +1 -1
  377. data/lib/rubygems/user_interaction.rb +37 -21
  378. data/lib/rubygems/util/licenses.rb +4 -3
  379. data/lib/rubygems/util/list.rb +1 -0
  380. data/lib/rubygems/util.rb +12 -15
  381. data/lib/rubygems/validator.rb +7 -6
  382. data/lib/rubygems/version.rb +17 -11
  383. data/lib/rubygems/version_option.rb +4 -3
  384. data/lib/rubygems.rb +89 -68
  385. data/rubygems-update.gemspec +10 -8
  386. data/setup.rb +10 -9
  387. data/test/rubygems/alternate_cert.pem +14 -14
  388. data/test/rubygems/alternate_cert_32.pem +15 -15
  389. data/test/rubygems/alternate_key.pem +25 -25
  390. data/test/rubygems/bad_rake.rb +1 -0
  391. data/test/rubygems/bundler_test_gem.rb +421 -0
  392. data/test/rubygems/child_cert.pem +15 -16
  393. data/test/rubygems/child_cert_32.pem +15 -16
  394. data/test/rubygems/child_key.pem +25 -25
  395. data/test/rubygems/encrypted_private_key.pem +26 -26
  396. data/test/rubygems/expired_cert.pem +15 -15
  397. data/test/rubygems/fake_certlib/openssl.rb +1 -0
  398. data/test/rubygems/future_cert.pem +15 -15
  399. data/test/rubygems/future_cert_32.pem +15 -15
  400. data/test/rubygems/good_rake.rb +1 -0
  401. data/test/rubygems/grandchild_cert.pem +15 -16
  402. data/test/rubygems/grandchild_cert_32.pem +15 -16
  403. data/test/rubygems/grandchild_key.pem +25 -25
  404. data/test/rubygems/helper.rb +172 -151
  405. data/test/rubygems/installer_test_case.rb +14 -13
  406. data/test/rubygems/invalid_issuer_cert.pem +16 -16
  407. data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
  408. data/test/rubygems/invalid_key.pem +25 -25
  409. data/test/rubygems/invalid_signer_cert.pem +15 -15
  410. data/test/rubygems/invalid_signer_cert_32.pem +15 -15
  411. data/test/rubygems/invalidchild_cert.pem +15 -16
  412. data/test/rubygems/invalidchild_cert_32.pem +15 -16
  413. data/test/rubygems/invalidchild_key.pem +25 -25
  414. data/test/rubygems/multifactor_auth_utilities.rb +111 -0
  415. data/test/rubygems/package/tar_test_case.rb +53 -17
  416. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  417. data/test/rubygems/plugin/exception/rubygems_plugin.rb +2 -1
  418. data/test/rubygems/plugin/load/rubygems_plugin.rb +1 -0
  419. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +2 -1
  420. data/test/rubygems/private_key.pem +25 -25
  421. data/test/rubygems/public_cert.pem +16 -16
  422. data/test/rubygems/public_cert_32.pem +15 -15
  423. data/test/rubygems/public_key.pem +7 -7
  424. data/test/rubygems/rubygems/commands/crash_command.rb +1 -0
  425. data/test/rubygems/rubygems_plugin.rb +3 -2
  426. data/test/rubygems/simple_gem.rb +2 -1
  427. data/test/rubygems/specifications/bar-0.0.2.gemspec +2 -0
  428. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +6 -4
  429. data/test/rubygems/test_bundled_ca.rb +13 -12
  430. data/test/rubygems/test_config.rb +5 -4
  431. data/test/rubygems/test_deprecate.rb +5 -4
  432. data/test/rubygems/test_exit.rb +9 -3
  433. data/test/rubygems/test_gem.rb +339 -677
  434. data/test/rubygems/test_gem_available_set.rb +22 -21
  435. data/test/rubygems/test_gem_bundler_version_finder.rb +6 -4
  436. data/test/rubygems/test_gem_command.rb +45 -44
  437. data/test/rubygems/test_gem_command_manager.rb +96 -30
  438. data/test/rubygems/test_gem_commands_build_command.rb +74 -63
  439. data/test/rubygems/test_gem_commands_cert_command.rb +98 -99
  440. data/test/rubygems/test_gem_commands_check_command.rb +5 -4
  441. data/test/rubygems/test_gem_commands_cleanup_command.rb +41 -40
  442. data/test/rubygems/test_gem_commands_contents_command.rb +28 -27
  443. data/test/rubygems/test_gem_commands_dependency_command.rb +37 -36
  444. data/test/rubygems/test_gem_commands_environment_command.rb +17 -16
  445. data/test/rubygems/test_gem_commands_exec_command.rb +853 -0
  446. data/test/rubygems/test_gem_commands_fetch_command.rb +38 -37
  447. data/test/rubygems/test_gem_commands_generate_index_command.rb +8 -7
  448. data/test/rubygems/test_gem_commands_help_command.rb +14 -13
  449. data/test/rubygems/test_gem_commands_info_command.rb +29 -2
  450. data/test/rubygems/test_gem_commands_install_command.rb +152 -132
  451. data/test/rubygems/test_gem_commands_list_command.rb +5 -4
  452. data/test/rubygems/test_gem_commands_lock_command.rb +11 -10
  453. data/test/rubygems/test_gem_commands_mirror.rb +3 -2
  454. data/test/rubygems/test_gem_commands_open_command.rb +5 -4
  455. data/test/rubygems/test_gem_commands_outdated_command.rb +10 -9
  456. data/test/rubygems/test_gem_commands_owner_command.rb +227 -50
  457. data/test/rubygems/test_gem_commands_pristine_command.rb +142 -93
  458. data/test/rubygems/test_gem_commands_push_command.rb +189 -64
  459. data/test/rubygems/test_gem_commands_query_command.rb +74 -73
  460. data/test/rubygems/test_gem_commands_search_command.rb +3 -2
  461. data/test/rubygems/test_gem_commands_server_command.rb +3 -2
  462. data/test/rubygems/test_gem_commands_setup_command.rb +123 -96
  463. data/test/rubygems/test_gem_commands_signin_command.rb +71 -31
  464. data/test/rubygems/test_gem_commands_signout_command.rb +3 -3
  465. data/test/rubygems/test_gem_commands_sources_command.rb +29 -29
  466. data/test/rubygems/test_gem_commands_specification_command.rb +33 -32
  467. data/test/rubygems/test_gem_commands_stale_command.rb +5 -4
  468. data/test/rubygems/test_gem_commands_uninstall_command.rb +99 -81
  469. data/test/rubygems/test_gem_commands_unpack_command.rb +32 -31
  470. data/test/rubygems/test_gem_commands_update_command.rb +96 -95
  471. data/test/rubygems/test_gem_commands_which_command.rb +7 -6
  472. data/test/rubygems/test_gem_commands_yank_command.rb +162 -43
  473. data/test/rubygems/test_gem_config_file.rb +94 -81
  474. data/test/rubygems/test_gem_dependency.rb +76 -73
  475. data/test/rubygems/test_gem_dependency_installer.rb +200 -165
  476. data/test/rubygems/test_gem_dependency_list.rb +48 -47
  477. data/test/rubygems/test_gem_dependency_resolution_error.rb +5 -4
  478. data/test/rubygems/test_gem_doctor.rb +27 -26
  479. data/test/rubygems/test_gem_ext_builder.rb +60 -61
  480. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +4 -4
  481. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{Cargo.lock → ext/custom_name_lib/Cargo.lock} +23 -33
  482. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{Cargo.toml → ext/custom_name_lib/Cargo.toml} +1 -1
  483. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{src → ext/custom_name_lib/src}/lib.rs +1 -1
  484. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +3 -0
  485. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +37 -33
  486. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +1 -1
  487. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +2 -0
  488. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +12 -0
  489. data/test/rubygems/test_gem_ext_cargo_builder.rb +48 -59
  490. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +20 -19
  491. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +21 -36
  492. data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -15
  493. data/test/rubygems/test_gem_ext_configure_builder.rb +14 -13
  494. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +51 -52
  495. data/test/rubygems/test_gem_ext_rake_builder.rb +16 -15
  496. data/test/rubygems/test_gem_gem_runner.rb +15 -9
  497. data/test/rubygems/test_gem_gemcutter_utilities.rb +170 -84
  498. data/test/rubygems/test_gem_impossible_dependencies_error.rb +5 -4
  499. data/test/rubygems/test_gem_indexer.rb +87 -67
  500. data/test/rubygems/test_gem_install_update_options.rb +17 -16
  501. data/test/rubygems/test_gem_installer.rb +422 -304
  502. data/test/rubygems/test_gem_local_remote_options.rb +11 -10
  503. data/test/rubygems/test_gem_name_tuple.rb +5 -4
  504. data/test/rubygems/test_gem_package.rb +243 -231
  505. data/test/rubygems/test_gem_package_old.rb +14 -13
  506. data/test/rubygems/test_gem_package_tar_header.rb +48 -47
  507. data/test/rubygems/test_gem_package_tar_reader.rb +56 -8
  508. data/test/rubygems/test_gem_package_tar_reader_entry.rb +162 -16
  509. data/test/rubygems/test_gem_package_tar_writer.rb +77 -76
  510. data/test/rubygems/test_gem_package_task.rb +19 -18
  511. data/test/rubygems/test_gem_path_support.rb +15 -14
  512. data/test/rubygems/test_gem_platform.rb +333 -227
  513. data/test/rubygems/test_gem_rdoc.rb +15 -14
  514. data/test/rubygems/test_gem_remote_fetcher.rb +155 -154
  515. data/test/rubygems/test_gem_request.rb +64 -58
  516. data/test/rubygems/test_gem_request_connection_pools.rb +30 -29
  517. data/test/rubygems/test_gem_request_set.rb +101 -100
  518. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +210 -211
  519. data/test/rubygems/test_gem_request_set_lockfile.rb +87 -86
  520. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +58 -57
  521. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +63 -62
  522. data/test/rubygems/test_gem_requirement.rb +48 -41
  523. data/test/rubygems/test_gem_resolver.rb +167 -99
  524. data/test/rubygems/test_gem_resolver_activation_request.rb +7 -6
  525. data/test/rubygems/test_gem_resolver_api_set.rb +34 -33
  526. data/test/rubygems/test_gem_resolver_api_specification.rb +48 -47
  527. data/test/rubygems/test_gem_resolver_best_set.rb +23 -22
  528. data/test/rubygems/test_gem_resolver_composed_set.rb +2 -1
  529. data/test/rubygems/test_gem_resolver_conflict.rb +13 -12
  530. data/test/rubygems/test_gem_resolver_dependency_request.rb +16 -15
  531. data/test/rubygems/test_gem_resolver_git_set.rb +22 -21
  532. data/test/rubygems/test_gem_resolver_git_specification.rb +22 -21
  533. data/test/rubygems/test_gem_resolver_index_set.rb +13 -12
  534. data/test/rubygems/test_gem_resolver_index_specification.rb +17 -16
  535. data/test/rubygems/test_gem_resolver_installed_specification.rb +6 -5
  536. data/test/rubygems/test_gem_resolver_installer_set.rb +79 -34
  537. data/test/rubygems/test_gem_resolver_local_specification.rb +8 -7
  538. data/test/rubygems/test_gem_resolver_lock_set.rb +13 -12
  539. data/test/rubygems/test_gem_resolver_lock_specification.rb +18 -17
  540. data/test/rubygems/test_gem_resolver_requirement_list.rb +2 -1
  541. data/test/rubygems/test_gem_resolver_specification.rb +9 -8
  542. data/test/rubygems/test_gem_resolver_vendor_set.rb +7 -6
  543. data/test/rubygems/test_gem_resolver_vendor_specification.rb +11 -10
  544. data/test/rubygems/test_gem_security.rb +69 -68
  545. data/test/rubygems/test_gem_security_policy.rb +72 -72
  546. data/test/rubygems/test_gem_security_signer.rb +35 -34
  547. data/test/rubygems/test_gem_security_trust_dir.rb +7 -6
  548. data/test/rubygems/test_gem_silent_ui.rb +39 -32
  549. data/test/rubygems/test_gem_source.rb +45 -44
  550. data/test/rubygems/test_gem_source_fetch_problem.rb +10 -9
  551. data/test/rubygems/test_gem_source_git.rb +69 -62
  552. data/test/rubygems/test_gem_source_installed.rb +17 -16
  553. data/test/rubygems/test_gem_source_list.rb +6 -5
  554. data/test/rubygems/test_gem_source_local.rb +15 -14
  555. data/test/rubygems/test_gem_source_lock.rb +32 -31
  556. data/test/rubygems/test_gem_source_specific_file.rb +18 -17
  557. data/test/rubygems/test_gem_source_subpath_problem.rb +8 -7
  558. data/test/rubygems/test_gem_source_vendor.rb +14 -13
  559. data/test/rubygems/test_gem_spec_fetcher.rb +73 -72
  560. data/test/rubygems/test_gem_specification.rb +533 -469
  561. data/test/rubygems/test_gem_stream_ui.rb +53 -22
  562. data/test/rubygems/test_gem_stub_specification.rb +33 -32
  563. data/test/rubygems/test_gem_text.rb +2 -1
  564. data/test/rubygems/test_gem_uninstaller.rb +118 -117
  565. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +4 -3
  566. data/test/rubygems/test_gem_update_suggestion.rb +209 -0
  567. data/test/rubygems/test_gem_uri.rb +6 -4
  568. data/test/rubygems/test_gem_uri_formatter.rb +15 -14
  569. data/test/rubygems/test_gem_util.rb +24 -23
  570. data/test/rubygems/test_gem_validator.rb +8 -8
  571. data/test/rubygems/test_gem_version.rb +24 -16
  572. data/test/rubygems/test_gem_version_option.rb +16 -15
  573. data/test/rubygems/test_kernel.rb +43 -48
  574. data/test/rubygems/test_project_sanity.rb +32 -3
  575. data/test/rubygems/test_remote_fetch_error.rb +8 -7
  576. data/test/rubygems/test_require.rb +118 -103
  577. data/test/rubygems/test_rubygems.rb +10 -8
  578. data/test/rubygems/test_webauthn_listener.rb +143 -0
  579. data/test/rubygems/test_webauthn_listener_response.rb +93 -0
  580. data/test/rubygems/test_webauthn_poller.rb +124 -0
  581. data/test/rubygems/utilities.rb +98 -34
  582. data/test/rubygems/wrong_key_cert.pem +15 -15
  583. data/test/rubygems/wrong_key_cert_32.pem +15 -15
  584. data/test/test_changelog_generator.rb +1 -1
  585. metadata +99 -46
  586. data/bundler/lib/bundler/dep_proxy.rb +0 -55
  587. data/bundler/lib/bundler/templates/gems.rb +0 -5
  588. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +0 -5
  589. data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
  590. data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
  591. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
  592. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
  593. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
  594. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
  595. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
  596. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
  597. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
  598. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
  599. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
  600. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
  601. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
  602. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
  603. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -149
  604. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
  605. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
  606. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
  607. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
  608. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
  609. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
  610. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
  611. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
  612. data/bundler/lib/bundler/vendored_molinillo.rb +0 -4
  613. data/bundler/lib/bundler/version_ranges.rb +0 -122
  614. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb +0 -21
  615. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/build.rb +0 -21
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'helper'
2
+
3
+ require_relative "helper"
3
4
 
4
5
  class TestGemResolver < Gem::TestCase
5
6
  def setup
@@ -80,7 +81,7 @@ class TestGemResolver < Gem::TestCase
80
81
  @DR.compose_sets nil
81
82
  end
82
83
 
83
- assert_equal 'one set in the composition must be non-nil', e.message
84
+ assert_equal "one set in the composition must be non-nil", e.message
84
85
  end
85
86
 
86
87
  def test_self_compose_sets_single
@@ -92,9 +93,9 @@ class TestGemResolver < Gem::TestCase
92
93
  end
93
94
 
94
95
  def test_requests
95
- a1 = util_spec 'a', 1, 'b' => 2
96
+ a1 = util_spec "a", 1, "b" => 2
96
97
 
97
- r1 = Gem::Resolver::DependencyRequest.new dep('a', '= 1'), nil
98
+ r1 = Gem::Resolver::DependencyRequest.new dep("a", "= 1"), nil
98
99
 
99
100
  act = Gem::Resolver::ActivationRequest.new a1, r1
100
101
 
@@ -104,18 +105,18 @@ class TestGemResolver < Gem::TestCase
104
105
 
105
106
  res.requests a1, act, reqs
106
107
 
107
- assert_equal ['b (= 2)'], reqs.map {|req| req.to_s }
108
+ assert_equal ["b (= 2)"], reqs.map {|req| req.to_s }
108
109
  end
109
110
 
110
111
  def test_requests_development
111
- a1 = util_spec 'a', 1, 'b' => 2
112
+ a1 = util_spec "a", 1, "b" => 2
112
113
 
113
114
  spec = Gem::Resolver::SpecSpecification.new nil, a1
114
115
  def spec.fetch_development_dependencies
115
116
  @called = true
116
117
  end
117
118
 
118
- r1 = Gem::Resolver::DependencyRequest.new dep('a', '= 1'), nil
119
+ r1 = Gem::Resolver::DependencyRequest.new dep("a", "= 1"), nil
119
120
 
120
121
  act = Gem::Resolver::ActivationRequest.new spec, r1
121
122
 
@@ -126,15 +127,15 @@ class TestGemResolver < Gem::TestCase
126
127
 
127
128
  res.requests spec, act, reqs
128
129
 
129
- assert_equal ['b (= 2)'], reqs.map {|req| req.to_s }
130
+ assert_equal ["b (= 2)"], reqs.map {|req| req.to_s }
130
131
 
131
132
  assert spec.instance_variable_defined? :@called
132
133
  end
133
134
 
134
135
  def test_requests_ignore_dependencies
135
- a1 = util_spec 'a', 1, 'b' => 2
136
+ a1 = util_spec "a", 1, "b" => 2
136
137
 
137
- r1 = Gem::Resolver::DependencyRequest.new dep('a', '= 1'), nil
138
+ r1 = Gem::Resolver::DependencyRequest.new dep("a", "= 1"), nil
138
139
 
139
140
  act = Gem::Resolver::ActivationRequest.new a1, r1
140
141
 
@@ -149,37 +150,37 @@ class TestGemResolver < Gem::TestCase
149
150
  end
150
151
 
151
152
  def test_resolve_conservative
152
- a1_spec = util_spec 'a', 1
153
+ a1_spec = util_spec "a", 1
153
154
 
154
- a2_spec = util_spec 'a', 2 do |s|
155
- s.add_dependency 'b', 2
156
- s.add_dependency 'c'
155
+ a2_spec = util_spec "a", 2 do |s|
156
+ s.add_dependency "b", 2
157
+ s.add_dependency "c"
157
158
  end
158
159
 
159
- b1_spec = util_spec 'b', 1
160
- b2_spec = util_spec 'b', 2
160
+ b1_spec = util_spec "b", 1
161
+ b2_spec = util_spec "b", 2
161
162
 
162
- c1_spec = util_spec 'c', 1 do |s|
163
- s.add_dependency 'd', 2
163
+ c1_spec = util_spec "c", 1 do |s|
164
+ s.add_dependency "d", 2
164
165
  end
165
166
 
166
- c2_spec = util_spec 'c', 2 do |s|
167
- s.add_dependency 'd', 2
167
+ c2_spec = util_spec "c", 2 do |s|
168
+ s.add_dependency "d", 2
168
169
  end
169
170
 
170
- d1_spec = util_spec 'd', 1 do |s|
171
- s.add_dependency 'e'
171
+ d1_spec = util_spec "d", 1 do |s|
172
+ s.add_dependency "e"
172
173
  end
173
174
 
174
- d2_spec = util_spec 'd', 2 do |s|
175
- s.add_dependency 'e'
175
+ d2_spec = util_spec "d", 2 do |s|
176
+ s.add_dependency "e"
176
177
  end
177
178
 
178
- e1_spec = util_spec 'e', 1
179
- e2_spec = util_spec 'e', 2
179
+ e1_spec = util_spec "e", 1
180
+ e2_spec = util_spec "e", 2
180
181
 
181
- a_dep = make_dep 'a', '= 2'
182
- e_dep = make_dep 'e'
182
+ a_dep = make_dep "a", "= 2"
183
+ e_dep = make_dep "e"
183
184
 
184
185
  # When requesting to install:
185
186
  # a-2, e
@@ -191,7 +192,7 @@ class TestGemResolver < Gem::TestCase
191
192
 
192
193
  # With the following gems already installed:
193
194
  # a-1, b-1, c-1, e-1
194
- res.skip_gems = { 'a' => [a1_spec], 'b' => [b1_spec], 'c' => [c1_spec], 'e' => [e1_spec] }
195
+ res.skip_gems = { "a" => [a1_spec], "b" => [b1_spec], "c" => [c1_spec], "e" => [e1_spec] }
195
196
 
196
197
  # Make sure the following gems end up getting used/installed/upgraded:
197
198
  # a-2 (upgraded)
@@ -203,17 +204,17 @@ class TestGemResolver < Gem::TestCase
203
204
  end
204
205
 
205
206
  def test_resolve_development
206
- a_spec = util_spec 'a', 1 do |s|
207
- s.add_development_dependency 'b'
207
+ a_spec = util_spec "a", 1 do |s|
208
+ s.add_development_dependency "b"
208
209
  end
209
210
 
210
- b_spec = util_spec 'b', 1 do
211
- |s| s.add_development_dependency 'c'
211
+ b_spec = util_spec "b", 1 do
212
+ |s| s.add_development_dependency "c"
212
213
  end
213
214
 
214
- c_spec = util_spec 'c', 1
215
+ c_spec = util_spec "c", 1
215
216
 
216
- a_dep = make_dep 'a', '= 1'
217
+ a_dep = make_dep "a", "= 1"
217
218
 
218
219
  deps = [a_dep]
219
220
 
@@ -227,24 +228,24 @@ class TestGemResolver < Gem::TestCase
227
228
  end
228
229
 
229
230
  def test_resolve_development_shallow
230
- a_spec = util_spec 'a', 1 do |s|
231
- s.add_development_dependency 'b'
232
- s.add_runtime_dependency 'd'
231
+ a_spec = util_spec "a", 1 do |s|
232
+ s.add_development_dependency "b"
233
+ s.add_runtime_dependency "d"
233
234
  end
234
235
 
235
- b_spec = util_spec 'b', 1 do |s|
236
- s.add_development_dependency 'c'
236
+ b_spec = util_spec "b", 1 do |s|
237
+ s.add_development_dependency "c"
237
238
  end
238
239
 
239
- c_spec = util_spec 'c', 1
240
+ c_spec = util_spec "c", 1
240
241
 
241
- d_spec = util_spec 'd', 1 do |s|
242
- s.add_development_dependency 'e'
242
+ d_spec = util_spec "d", 1 do |s|
243
+ s.add_development_dependency "e"
243
244
  end
244
245
 
245
- e_spec = util_spec 'e', 1
246
+ e_spec = util_spec "e", 1
246
247
 
247
- a_dep = make_dep 'a', '= 1'
248
+ a_dep = make_dep "a", "= 1"
248
249
 
249
250
  deps = [a_dep]
250
251
 
@@ -262,7 +263,7 @@ class TestGemResolver < Gem::TestCase
262
263
  @fetcher = Gem::FakeFetcher.new
263
264
  Gem::RemoteFetcher.fetcher = @fetcher
264
265
 
265
- a_dep = make_dep 'a', '= 1'
266
+ a_dep = make_dep "a", "= 1"
266
267
 
267
268
  res = Gem::Resolver.new [a_dep], Gem::Resolver::IndexSet.new
268
269
 
@@ -274,7 +275,7 @@ class TestGemResolver < Gem::TestCase
274
275
  end
275
276
 
276
277
  def test_no_overlap_specifically
277
- a = util_spec "a", '1'
278
+ a = util_spec "a", "1"
278
279
  b = util_spec "b", "1"
279
280
 
280
281
  ad = make_dep "a", "= 1"
@@ -290,7 +291,7 @@ class TestGemResolver < Gem::TestCase
290
291
  end
291
292
 
292
293
  def test_pulls_in_dependencies
293
- a = util_spec "a", '1'
294
+ a = util_spec "a", "1"
294
295
  b = util_spec "b", "1", "c" => "= 1"
295
296
  c = util_spec "c", "1"
296
297
 
@@ -307,8 +308,8 @@ class TestGemResolver < Gem::TestCase
307
308
  end
308
309
 
309
310
  def test_picks_highest_version
310
- a1 = util_spec "a", '1'
311
- a2 = util_spec "a", '2'
311
+ a1 = util_spec "a", "1"
312
+ a2 = util_spec "a", "2"
312
313
 
313
314
  s = set(a1, a2)
314
315
 
@@ -321,17 +322,16 @@ class TestGemResolver < Gem::TestCase
321
322
 
322
323
  def test_picks_best_platform
323
324
  is = Gem::Resolver::IndexSpecification
324
- unknown = Gem::Platform.new 'unknown'
325
- a2_p1 = a3_p2 = nil
325
+ unknown = Gem::Platform.new "unknown"
326
326
 
327
327
  spec_fetcher do |fetcher|
328
- fetcher.spec 'a', 2
328
+ fetcher.spec "a", 2
329
329
 
330
- a2_p1 = fetcher.spec 'a', 2 do |s|
330
+ fetcher.spec "a", 2 do |s|
331
331
  s.platform = Gem::Platform.local
332
332
  end
333
333
 
334
- a3_p2 = fetcher.spec 'a', 3 do |s|
334
+ fetcher.spec "a", 3 do |s|
335
335
  s.platform = unknown
336
336
  end
337
337
  end
@@ -342,9 +342,9 @@ class TestGemResolver < Gem::TestCase
342
342
 
343
343
  s = set
344
344
 
345
- a2 = is.new s, 'a', v2, source, Gem::Platform::RUBY
346
- a2_p1 = is.new s, 'a', v2, source, Gem::Platform.local.to_s
347
- a3_p2 = is.new s, 'a', v3, source, unknown
345
+ a2 = is.new s, "a", v2, source, Gem::Platform::RUBY
346
+ a2_p1 = is.new s, "a", v2, source, Gem::Platform.local.to_s
347
+ a3_p2 = is.new s, "a", v3, source, unknown
348
348
 
349
349
  s.add a3_p2
350
350
  s.add a2_p1
@@ -357,6 +357,74 @@ class TestGemResolver < Gem::TestCase
357
357
  assert_resolves_to [a2_p1.spec], res
358
358
  end
359
359
 
360
+ def test_does_not_pick_musl_variants_on_non_musl_linux
361
+ util_set_arch "aarch64-linux" do
362
+ is = Gem::Resolver::IndexSpecification
363
+
364
+ linux_musl = Gem::Platform.new("aarch64-linux-musl")
365
+
366
+ spec_fetcher do |fetcher|
367
+ fetcher.spec "libv8-node", "15.14.0.1" do |s|
368
+ s.platform = Gem::Platform.local
369
+ end
370
+
371
+ fetcher.spec "libv8-node", "15.14.0.1" do |s|
372
+ s.platform = linux_musl
373
+ end
374
+ end
375
+
376
+ v15 = v("15.14.0.1")
377
+ source = Gem::Source.new @gem_repo
378
+
379
+ s = set
380
+
381
+ v15_linux = is.new s, "libv8-node", v15, source, Gem::Platform.local.to_s
382
+ v15_linux_musl = is.new s, "libv8-node", v15, source, linux_musl.to_s
383
+
384
+ s.add v15_linux
385
+ s.add v15_linux_musl
386
+
387
+ ad = make_dep "libv8-node", "= 15.14.0.1"
388
+
389
+ res = Gem::Resolver.new([ad], s)
390
+
391
+ assert_resolves_to [v15_linux.spec], res
392
+ end
393
+ end
394
+
395
+ def test_pick_generic_linux_variants_on_musl_linux
396
+ util_set_arch "aarch64-linux-musl" do
397
+ is = Gem::Resolver::IndexSpecification
398
+
399
+ linux = Gem::Platform.new("aarch64-linux")
400
+
401
+ spec_fetcher do |fetcher|
402
+ fetcher.spec "libv8-node", "15.14.0.1" do |s|
403
+ s.platform = linux
404
+ end
405
+
406
+ fetcher.spec "libv8-node", "15.14.0.1"
407
+ end
408
+
409
+ v15 = v("15.14.0.1")
410
+ source = Gem::Source.new @gem_repo
411
+
412
+ s = set
413
+
414
+ v15_ruby = is.new s, "libv8-node", v15, source, Gem::Platform::RUBY
415
+ v15_linux = is.new s, "libv8-node", v15, source, linux.to_s
416
+
417
+ s.add v15_linux
418
+ s.add v15_ruby
419
+
420
+ ad = make_dep "libv8-node", "= 15.14.0.1"
421
+
422
+ res = Gem::Resolver.new([ad], s)
423
+
424
+ assert_resolves_to [v15_linux.spec], res
425
+ end
426
+ end
427
+
360
428
  def test_only_returns_spec_once
361
429
  a1 = util_spec "a", "1", "c" => "= 1"
362
430
  b1 = util_spec "b", "1", "c" => "= 1"
@@ -509,7 +577,7 @@ class TestGemResolver < Gem::TestCase
509
577
 
510
578
  def test_raises_and_reports_an_implicit_request_properly
511
579
  a1 = util_spec "a", "1" do |s|
512
- s.add_runtime_dependency 'b', '= 2'
580
+ s.add_runtime_dependency "b", "= 2"
513
581
  end
514
582
 
515
583
  ad = make_dep "a", "= 1"
@@ -546,14 +614,14 @@ class TestGemResolver < Gem::TestCase
546
614
  dependency = e.conflict.dependency
547
615
 
548
616
  assert_includes %w[a b], dependency.name
549
- assert_equal req('>= 0'), dependency.requirement
617
+ assert_equal req(">= 0"), dependency.requirement
550
618
 
551
619
  activated = e.conflict.activated
552
- assert_equal 'c-1', activated.full_name
620
+ assert_equal "c-1", activated.full_name
553
621
 
554
- assert_equal dep('c', '= 1'), activated.request.dependency
622
+ assert_equal dep("c", "= 1"), activated.request.dependency
555
623
 
556
- assert_equal [dep('c', '>= 2'), dep('c', '= 1')],
624
+ assert_equal [dep("c", ">= 2"), dep("c", "= 1")],
557
625
  e.conflict.conflicting_dependencies
558
626
  end
559
627
 
@@ -617,15 +685,15 @@ class TestGemResolver < Gem::TestCase
617
685
  end
618
686
 
619
687
  def test_resolve_conflict
620
- a1 = util_spec 'a', 1
621
- a2 = util_spec 'a', 2
688
+ a1 = util_spec "a", 1
689
+ a2 = util_spec "a", 2
622
690
 
623
- b2 = util_spec 'b', 2, 'a' => '~> 2.0'
691
+ b2 = util_spec "b", 2, "a" => "~> 2.0"
624
692
 
625
693
  s = set a1, a2, b2
626
694
 
627
- a_dep = dep 'a', '~> 1.0'
628
- b_dep = dep 'b'
695
+ a_dep = dep "a", "~> 1.0"
696
+ b_dep = dep "b"
629
697
 
630
698
  r = Gem::Resolver.new [a_dep, b_dep], s
631
699
 
@@ -635,18 +703,18 @@ class TestGemResolver < Gem::TestCase
635
703
  end
636
704
 
637
705
  def test_resolve_bug_699
638
- a1 = util_spec 'a', '1', 'b' => '= 2',
639
- 'c' => '~> 1.0.3'
706
+ a1 = util_spec "a", "1", "b" => "= 2",
707
+ "c" => "~> 1.0.3"
640
708
 
641
- b1 = util_spec 'b', '2', 'c' => '~> 1.0'
709
+ b1 = util_spec "b", "2", "c" => "~> 1.0"
642
710
 
643
- c1 = util_spec 'c', '1.0.9'
644
- c2 = util_spec 'c', '1.1.0'
645
- c3 = util_spec 'c', '1.2.0'
711
+ c1 = util_spec "c", "1.0.9"
712
+ c2 = util_spec "c", "1.1.0"
713
+ c3 = util_spec "c", "1.2.0"
646
714
 
647
715
  s = set a1, b1, c1, c2, c3
648
716
 
649
- a_dep = dep 'a', '= 1'
717
+ a_dep = dep "a", "= 1"
650
718
 
651
719
  r = Gem::Resolver.new [a_dep], s
652
720
 
@@ -654,16 +722,16 @@ class TestGemResolver < Gem::TestCase
654
722
  end
655
723
 
656
724
  def test_resolve_rollback
657
- a1 = util_spec 'a', 1
658
- a2 = util_spec 'a', 2
725
+ a1 = util_spec "a", 1
726
+ a2 = util_spec "a", 2
659
727
 
660
- b1 = util_spec 'b', 1, 'a' => '~> 1.0'
661
- b2 = util_spec 'b', 2, 'a' => '~> 2.0'
728
+ b1 = util_spec "b", 1, "a" => "~> 1.0"
729
+ b2 = util_spec "b", 2, "a" => "~> 2.0"
662
730
 
663
731
  s = set a1, a2, b1, b2
664
732
 
665
- a_dep = dep 'a', '~> 1.0'
666
- b_dep = dep 'b'
733
+ a_dep = dep "a", "~> 1.0"
734
+ b_dep = dep "b"
667
735
 
668
736
  r = Gem::Resolver.new [a_dep, b_dep], s
669
737
 
@@ -711,15 +779,15 @@ class TestGemResolver < Gem::TestCase
711
779
  end
712
780
 
713
781
  def test_sorts_by_source_then_version
714
- sourceA = Gem::Source.new 'http://example.com/a'
715
- sourceB = Gem::Source.new 'http://example.com/b'
716
- sourceC = Gem::Source.new 'http://example.com/c'
782
+ sourceA = Gem::Source.new "http://example.com/a"
783
+ sourceB = Gem::Source.new "http://example.com/b"
784
+ sourceC = Gem::Source.new "http://example.com/c"
717
785
 
718
- spec_A_1 = util_spec 'some-dep', '0.0.1'
719
- spec_A_2 = util_spec 'some-dep', '1.0.0'
720
- spec_B_1 = util_spec 'some-dep', '0.0.1'
721
- spec_B_2 = util_spec 'some-dep', '0.0.2'
722
- spec_C_1 = util_spec 'some-dep', '0.1.0'
786
+ spec_A_1 = util_spec "some-dep", "0.0.1"
787
+ spec_A_2 = util_spec "some-dep", "1.0.0"
788
+ spec_B_1 = util_spec "some-dep", "0.0.1"
789
+ spec_B_2 = util_spec "some-dep", "0.0.2"
790
+ spec_C_1 = util_spec "some-dep", "0.1.0"
723
791
 
724
792
  set = StaticSet.new [
725
793
  Gem::Resolver::SpecSpecification.new(nil, spec_B_1, sourceB),
@@ -729,7 +797,7 @@ class TestGemResolver < Gem::TestCase
729
797
  Gem::Resolver::SpecSpecification.new(nil, spec_A_1, sourceA),
730
798
  ]
731
799
 
732
- dependency = make_dep 'some-dep', '> 0'
800
+ dependency = make_dep "some-dep", "> 0"
733
801
 
734
802
  resolver = Gem::Resolver.new [dependency], set
735
803
 
@@ -739,14 +807,14 @@ class TestGemResolver < Gem::TestCase
739
807
  def test_select_local_platforms
740
808
  r = Gem::Resolver.new nil, nil
741
809
 
742
- a1 = util_spec 'a', 1
810
+ a1 = util_spec "a", 1
743
811
 
744
- a1_p1 = util_spec 'a', 1 do |s|
812
+ a1_p1 = util_spec "a", 1 do |s|
745
813
  s.platform = Gem::Platform.local
746
814
  end
747
815
 
748
- a1_p2 = util_spec 'a', 1 do |s|
749
- s.platform = 'unknown'
816
+ a1_p2 = util_spec "a", 1 do |s|
817
+ s.platform = "unknown"
750
818
  end
751
819
 
752
820
  selected = r.select_local_platforms [a1, a1_p1, a1_p2]
@@ -755,18 +823,18 @@ class TestGemResolver < Gem::TestCase
755
823
  end
756
824
 
757
825
  def test_search_for_local_platform_partial_string_match
758
- a1 = util_spec 'a', 1
826
+ a1 = util_spec "a", 1
759
827
 
760
- a1_p1 = util_spec 'a', 1 do |s|
828
+ a1_p1 = util_spec "a", 1 do |s|
761
829
  s.platform = Gem::Platform.local.os
762
830
  end
763
831
 
764
- a1_p2 = util_spec 'a', 1 do |s|
765
- s.platform = 'unknown'
832
+ a1_p2 = util_spec "a", 1 do |s|
833
+ s.platform = "unknown"
766
834
  end
767
835
 
768
836
  s = set(a1_p1, a1_p2, a1)
769
- d = [make_dep('a')]
837
+ d = [make_dep("a")]
770
838
  r = Gem::Resolver.new(d, s)
771
839
 
772
840
  assert_resolves_to [a1_p1], r
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'helper'
2
+
3
+ require_relative "helper"
3
4
 
4
5
  class TestGemResolverActivationRequest < Gem::TestCase
5
6
  def setup
@@ -7,12 +8,12 @@ class TestGemResolverActivationRequest < Gem::TestCase
7
8
 
8
9
  @DR = Gem::Resolver
9
10
 
10
- @dep = @DR::DependencyRequest.new dep('a', '>= 0'), nil
11
+ @dep = @DR::DependencyRequest.new dep("a", ">= 0"), nil
11
12
 
12
13
  source = Gem::Source::Local.new
13
14
  platform = Gem::Platform::RUBY
14
15
 
15
- @a3 = @DR::IndexSpecification.new nil, 'a', v(3), source, platform
16
+ @a3 = @DR::IndexSpecification.new nil, "a", v(3), source, platform
16
17
 
17
18
  @req = @DR::ActivationRequest.new @a3, @dep
18
19
  end
@@ -20,7 +21,7 @@ class TestGemResolverActivationRequest < Gem::TestCase
20
21
  def test_development_eh
21
22
  refute @req.development?
22
23
 
23
- dep_req = @DR::DependencyRequest.new dep('a', '>= 0', :development), nil
24
+ dep_req = @DR::DependencyRequest.new dep("a", ">= 0", :development), nil
24
25
 
25
26
  act_req = @DR::ActivationRequest.new @a3, dep_req
26
27
 
@@ -28,8 +29,8 @@ class TestGemResolverActivationRequest < Gem::TestCase
28
29
  end
29
30
 
30
31
  def test_inspect
31
- assert_match 'a-3', @req.inspect
32
- assert_match 'from a (>= 0)', @req.inspect
32
+ assert_match "a-3", @req.inspect
33
+ assert_match "from a (>= 0)", @req.inspect
33
34
  end
34
35
 
35
36
  def test_installed_eh