rubygems-update 3.4.22 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (528) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +99 -2
  3. data/Manifest.txt +34 -221
  4. data/README.md +1 -3
  5. data/bundler/CHANGELOG.md +53 -0
  6. data/bundler/bundler.gemspec +4 -2
  7. data/bundler/exe/bundle +1 -10
  8. data/bundler/lib/bundler/build_metadata.rb +3 -3
  9. data/bundler/lib/bundler/capistrano.rb +1 -1
  10. data/bundler/lib/bundler/checksum.rb +245 -0
  11. data/bundler/lib/bundler/ci_detector.rb +75 -0
  12. data/bundler/lib/bundler/cli/add.rb +3 -3
  13. data/bundler/lib/bundler/cli/binstubs.rb +4 -4
  14. data/bundler/lib/bundler/cli/cache.rb +1 -1
  15. data/bundler/lib/bundler/cli/check.rb +1 -1
  16. data/bundler/lib/bundler/cli/common.rb +9 -1
  17. data/bundler/lib/bundler/cli/config.rb +8 -7
  18. data/bundler/lib/bundler/cli/console.rb +3 -2
  19. data/bundler/lib/bundler/cli/doctor.rb +2 -2
  20. data/bundler/lib/bundler/cli/exec.rb +1 -1
  21. data/bundler/lib/bundler/cli/gem.rb +28 -23
  22. data/bundler/lib/bundler/cli/info.rb +2 -13
  23. data/bundler/lib/bundler/cli/install.rb +5 -4
  24. data/bundler/lib/bundler/cli/issue.rb +1 -1
  25. data/bundler/lib/bundler/cli/lock.rb +4 -4
  26. data/bundler/lib/bundler/cli/open.rb +1 -1
  27. data/bundler/lib/bundler/cli/outdated.rb +6 -6
  28. data/bundler/lib/bundler/cli/plugin.rb +7 -14
  29. data/bundler/lib/bundler/cli/pristine.rb +38 -30
  30. data/bundler/lib/bundler/cli/show.rb +2 -2
  31. data/bundler/lib/bundler/cli/update.rb +5 -5
  32. data/bundler/lib/bundler/cli.rb +215 -263
  33. data/bundler/lib/bundler/compact_index_client/cache.rb +29 -9
  34. data/bundler/lib/bundler/compact_index_client/cache_file.rb +153 -0
  35. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +7 -3
  36. data/bundler/lib/bundler/compact_index_client/updater.rb +79 -81
  37. data/bundler/lib/bundler/compact_index_client.rb +14 -7
  38. data/bundler/lib/bundler/constants.rb +1 -1
  39. data/bundler/lib/bundler/current_ruby.rb +5 -21
  40. data/bundler/lib/bundler/definition.rb +42 -15
  41. data/bundler/lib/bundler/dependency.rb +16 -12
  42. data/bundler/lib/bundler/digest.rb +2 -2
  43. data/bundler/lib/bundler/dsl.rb +43 -25
  44. data/bundler/lib/bundler/endpoint_specification.rb +5 -1
  45. data/bundler/lib/bundler/env.rb +1 -3
  46. data/bundler/lib/bundler/errors.rb +43 -0
  47. data/bundler/lib/bundler/fetcher/base.rb +3 -1
  48. data/bundler/lib/bundler/fetcher/compact_index.rb +4 -4
  49. data/bundler/lib/bundler/fetcher/downloader.rb +13 -11
  50. data/bundler/lib/bundler/fetcher/gem_remote_fetcher.rb +16 -0
  51. data/bundler/lib/bundler/fetcher/index.rb +1 -1
  52. data/bundler/lib/bundler/fetcher.rb +28 -25
  53. data/bundler/lib/bundler/friendly_errors.rb +5 -5
  54. data/bundler/lib/bundler/gem_helper.rb +1 -1
  55. data/bundler/lib/bundler/gem_helpers.rb +5 -2
  56. data/bundler/lib/bundler/graph.rb +9 -9
  57. data/bundler/lib/bundler/index.rb +1 -2
  58. data/bundler/lib/bundler/injector.rb +1 -1
  59. data/bundler/lib/bundler/inline.rb +3 -3
  60. data/bundler/lib/bundler/installer/gem_installer.rb +5 -5
  61. data/bundler/lib/bundler/installer/parallel_installer.rb +16 -8
  62. data/bundler/lib/bundler/installer/standalone.rb +2 -3
  63. data/bundler/lib/bundler/installer.rb +9 -9
  64. data/bundler/lib/bundler/lazy_specification.rb +24 -17
  65. data/bundler/lib/bundler/lockfile_generator.rb +9 -0
  66. data/bundler/lib/bundler/lockfile_parser.rb +81 -10
  67. data/bundler/lib/bundler/man/bundle-add.1 +3 -26
  68. data/bundler/lib/bundler/man/bundle-binstubs.1 +4 -16
  69. data/bundler/lib/bundler/man/bundle-cache.1 +3 -24
  70. data/bundler/lib/bundler/man/bundle-check.1 +3 -12
  71. data/bundler/lib/bundler/man/bundle-clean.1 +3 -10
  72. data/bundler/lib/bundler/man/bundle-config.1 +20 -211
  73. data/bundler/lib/bundler/man/bundle-config.1.ronn +6 -0
  74. data/bundler/lib/bundler/man/bundle-console.1 +4 -22
  75. data/bundler/lib/bundler/man/bundle-doctor.1 +4 -18
  76. data/bundler/lib/bundler/man/bundle-exec.1 +12 -73
  77. data/bundler/lib/bundler/man/bundle-gem.1 +13 -49
  78. data/bundler/lib/bundler/man/bundle-help.1 +3 -7
  79. data/bundler/lib/bundler/man/bundle-info.1 +3 -9
  80. data/bundler/lib/bundler/man/bundle-init.1 +3 -12
  81. data/bundler/lib/bundler/man/bundle-inject.1 +6 -19
  82. data/bundler/lib/bundler/man/bundle-install.1 +27 -125
  83. data/bundler/lib/bundler/man/bundle-install.1.ronn +1 -0
  84. data/bundler/lib/bundler/man/bundle-list.1 +4 -19
  85. data/bundler/lib/bundler/man/bundle-lock.1 +5 -29
  86. data/bundler/lib/bundler/man/bundle-open.1 +7 -27
  87. data/bundler/lib/bundler/man/bundle-outdated.1 +3 -55
  88. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +1 -0
  89. data/bundler/lib/bundler/man/bundle-platform.1 +5 -27
  90. data/bundler/lib/bundler/man/bundle-plugin.1 +3 -29
  91. data/bundler/lib/bundler/man/bundle-pristine.1 +5 -16
  92. data/bundler/lib/bundler/man/bundle-remove.1 +4 -14
  93. data/bundler/lib/bundler/man/bundle-show.1 +3 -10
  94. data/bundler/lib/bundler/man/bundle-update.1 +18 -137
  95. data/bundler/lib/bundler/man/bundle-version.1 +3 -16
  96. data/bundler/lib/bundler/man/bundle-viz.1 +4 -16
  97. data/bundler/lib/bundler/man/bundle.1 +5 -44
  98. data/bundler/lib/bundler/man/gemfile.5 +24 -301
  99. data/bundler/lib/bundler/man/gemfile.5.ronn +4 -0
  100. data/bundler/lib/bundler/match_metadata.rb +4 -0
  101. data/bundler/lib/bundler/match_platform.rb +1 -1
  102. data/bundler/lib/bundler/plugin/api/source.rb +3 -2
  103. data/bundler/lib/bundler/plugin/installer.rb +1 -1
  104. data/bundler/lib/bundler/plugin.rb +3 -3
  105. data/bundler/lib/bundler/resolver/base.rb +1 -1
  106. data/bundler/lib/bundler/resolver/incompatibility.rb +1 -1
  107. data/bundler/lib/bundler/resolver/spec_group.rb +1 -4
  108. data/bundler/lib/bundler/resolver.rb +16 -16
  109. data/bundler/lib/bundler/ruby_dsl.rb +20 -12
  110. data/bundler/lib/bundler/ruby_version.rb +1 -1
  111. data/bundler/lib/bundler/rubygems_ext.rb +24 -50
  112. data/bundler/lib/bundler/rubygems_gem_installer.rb +6 -56
  113. data/bundler/lib/bundler/rubygems_integration.rb +25 -94
  114. data/bundler/lib/bundler/runtime.rb +2 -2
  115. data/bundler/lib/bundler/self_manager.rb +23 -7
  116. data/bundler/lib/bundler/settings.rb +27 -7
  117. data/bundler/lib/bundler/setup.rb +4 -1
  118. data/bundler/lib/bundler/shared_helpers.rb +35 -13
  119. data/bundler/lib/bundler/source/git/git_proxy.rb +15 -15
  120. data/bundler/lib/bundler/source/git.rb +4 -3
  121. data/bundler/lib/bundler/source/metadata.rb +15 -15
  122. data/bundler/lib/bundler/source/path.rb +7 -6
  123. data/bundler/lib/bundler/source/rubygems.rb +21 -14
  124. data/bundler/lib/bundler/source.rb +2 -0
  125. data/bundler/lib/bundler/spec_set.rb +38 -10
  126. data/bundler/lib/bundler/stub_specification.rb +1 -0
  127. data/bundler/lib/bundler/templates/Executable.bundler +1 -1
  128. data/bundler/lib/bundler/templates/newgem/README.md.tt +3 -3
  129. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +2 -6
  130. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +1 -1
  131. data/bundler/lib/bundler/templates/newgem/standard.yml.tt +1 -1
  132. data/bundler/lib/bundler/ui/shell.rb +1 -1
  133. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  134. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +53 -6
  135. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +8 -20
  136. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +3 -3
  137. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +2 -2
  138. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +1 -1
  139. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +35 -35
  140. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +3 -0
  141. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +256 -132
  142. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1 -0
  143. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +95 -31
  144. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  145. data/bundler/lib/bundler/vendored_net_http.rb +8 -0
  146. data/bundler/lib/bundler/vendored_persistent.rb +0 -4
  147. data/bundler/lib/bundler/vendored_timeout.rb +8 -0
  148. data/bundler/lib/bundler/version.rb +1 -1
  149. data/bundler/lib/bundler/vlad.rb +1 -1
  150. data/bundler/lib/bundler/yaml_serializer.rb +3 -3
  151. data/bundler/lib/bundler.rb +38 -27
  152. data/lib/rubygems/available_set.rb +4 -4
  153. data/lib/rubygems/basic_specification.rb +35 -37
  154. data/lib/rubygems/bundler_version_finder.rb +4 -4
  155. data/lib/rubygems/ci_detector.rb +75 -0
  156. data/lib/rubygems/command.rb +13 -15
  157. data/lib/rubygems/command_manager.rb +5 -4
  158. data/lib/rubygems/commands/build_command.rb +2 -2
  159. data/lib/rubygems/commands/cert_command.rb +1 -2
  160. data/lib/rubygems/commands/check_command.rb +4 -4
  161. data/lib/rubygems/commands/cleanup_command.rb +12 -14
  162. data/lib/rubygems/commands/contents_command.rb +4 -4
  163. data/lib/rubygems/commands/dependency_command.rb +4 -5
  164. data/lib/rubygems/commands/environment_command.rb +1 -3
  165. data/lib/rubygems/commands/exec_command.rb +1 -1
  166. data/lib/rubygems/commands/fetch_command.rb +2 -2
  167. data/lib/rubygems/commands/generate_index_command.rb +39 -74
  168. data/lib/rubygems/commands/help_command.rb +3 -3
  169. data/lib/rubygems/commands/info_command.rb +2 -2
  170. data/lib/rubygems/commands/install_command.rb +8 -16
  171. data/lib/rubygems/commands/list_command.rb +2 -2
  172. data/lib/rubygems/commands/lock_command.rb +1 -1
  173. data/lib/rubygems/commands/open_command.rb +1 -1
  174. data/lib/rubygems/commands/owner_command.rb +1 -1
  175. data/lib/rubygems/commands/pristine_command.rb +13 -15
  176. data/lib/rubygems/commands/push_command.rb +2 -2
  177. data/lib/rubygems/commands/query_command.rb +4 -5
  178. data/lib/rubygems/commands/rdoc_command.rb +2 -2
  179. data/lib/rubygems/commands/search_command.rb +2 -2
  180. data/lib/rubygems/commands/setup_command.rb +31 -34
  181. data/lib/rubygems/commands/sources_command.rb +12 -12
  182. data/lib/rubygems/commands/specification_command.rb +10 -10
  183. data/lib/rubygems/commands/stale_command.rb +1 -1
  184. data/lib/rubygems/commands/uninstall_command.rb +9 -10
  185. data/lib/rubygems/commands/unpack_command.rb +4 -4
  186. data/lib/rubygems/commands/update_command.rb +10 -12
  187. data/lib/rubygems/commands/which_command.rb +1 -1
  188. data/lib/rubygems/commands/yank_command.rb +1 -1
  189. data/lib/rubygems/compatibility.rb +5 -6
  190. data/lib/rubygems/config_file.rb +4 -4
  191. data/lib/rubygems/core_ext/kernel_gem.rb +0 -2
  192. data/lib/rubygems/core_ext/kernel_require.rb +19 -48
  193. data/lib/rubygems/core_ext/kernel_warn.rb +1 -1
  194. data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
  195. data/lib/rubygems/defaults.rb +15 -3
  196. data/lib/rubygems/dependency.rb +12 -14
  197. data/lib/rubygems/dependency_installer.rb +29 -30
  198. data/lib/rubygems/dependency_list.rb +1 -1
  199. data/lib/rubygems/deprecate.rb +16 -15
  200. data/lib/rubygems/doctor.rb +5 -5
  201. data/lib/rubygems/errors.rb +2 -6
  202. data/lib/rubygems/exceptions.rb +2 -1
  203. data/lib/rubygems/ext/builder.rb +15 -10
  204. data/lib/rubygems/ext/cargo_builder.rb +5 -5
  205. data/lib/rubygems/ext/ext_conf_builder.rb +1 -3
  206. data/lib/rubygems/gem_runner.rb +4 -4
  207. data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +3 -3
  208. data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +3 -3
  209. data/lib/rubygems/gemcutter_utilities.rb +18 -19
  210. data/lib/rubygems/install_update_options.rb +18 -19
  211. data/lib/rubygems/installer.rb +59 -33
  212. data/lib/rubygems/installer_uninstaller_utils.rb +0 -2
  213. data/lib/rubygems/local_remote_options.rb +7 -10
  214. data/lib/rubygems/name_tuple.rb +7 -9
  215. data/lib/rubygems/net/http.rb +3 -0
  216. data/lib/rubygems/net-http/LICENSE.txt +22 -0
  217. data/lib/rubygems/net-http/lib/net/http/backward.rb +40 -0
  218. data/lib/rubygems/net-http/lib/net/http/exceptions.rb +34 -0
  219. data/lib/rubygems/net-http/lib/net/http/generic_request.rb +414 -0
  220. data/lib/rubygems/net-http/lib/net/http/header.rb +981 -0
  221. data/lib/rubygems/net-http/lib/net/http/proxy_delta.rb +17 -0
  222. data/lib/rubygems/net-http/lib/net/http/request.rb +88 -0
  223. data/lib/rubygems/net-http/lib/net/http/requests.rb +425 -0
  224. data/lib/rubygems/net-http/lib/net/http/response.rb +738 -0
  225. data/lib/rubygems/net-http/lib/net/http/responses.rb +1174 -0
  226. data/lib/rubygems/net-http/lib/net/http/status.rb +84 -0
  227. data/lib/rubygems/net-http/lib/net/http.rb +2496 -0
  228. data/lib/rubygems/net-http/lib/net/https.rb +23 -0
  229. data/lib/rubygems/net-protocol/LICENSE.txt +22 -0
  230. data/lib/rubygems/net-protocol/lib/net/protocol.rb +544 -0
  231. data/lib/rubygems/optparse/lib/optparse.rb +39 -17
  232. data/lib/rubygems/package/old.rb +2 -2
  233. data/lib/rubygems/package/tar_header.rb +45 -39
  234. data/lib/rubygems/package/tar_reader/entry.rb +5 -4
  235. data/lib/rubygems/package/tar_reader.rb +5 -3
  236. data/lib/rubygems/package/tar_writer.rb +19 -17
  237. data/lib/rubygems/package.rb +27 -26
  238. data/lib/rubygems/package_task.rb +2 -2
  239. data/lib/rubygems/path_support.rb +9 -10
  240. data/lib/rubygems/platform.rb +60 -45
  241. data/lib/rubygems/query_utils.rb +7 -9
  242. data/lib/rubygems/remote_fetcher.rb +15 -15
  243. data/lib/rubygems/request/connection_pools.rb +3 -3
  244. data/lib/rubygems/request.rb +20 -17
  245. data/lib/rubygems/request_set/gem_dependency_api.rb +119 -122
  246. data/lib/rubygems/request_set/lockfile/parser.rb +9 -9
  247. data/lib/rubygems/request_set/lockfile/tokenizer.rb +20 -12
  248. data/lib/rubygems/request_set/lockfile.rb +6 -11
  249. data/lib/rubygems/request_set.rb +5 -5
  250. data/lib/rubygems/requirement.rb +7 -7
  251. data/lib/rubygems/resolv/LICENSE.txt +22 -0
  252. data/lib/rubygems/resolv/lib/resolv.rb +3387 -0
  253. data/lib/rubygems/resolver/activation_request.rb +1 -3
  254. data/lib/rubygems/resolver/api_set/gem_parser.rb +7 -3
  255. data/lib/rubygems/resolver/best_set.rb +1 -1
  256. data/lib/rubygems/resolver/composed_set.rb +1 -1
  257. data/lib/rubygems/resolver/conflict.rb +4 -12
  258. data/lib/rubygems/resolver/index_set.rb +4 -4
  259. data/lib/rubygems/resolver/index_specification.rb +2 -2
  260. data/lib/rubygems/resolver/installer_set.rb +5 -6
  261. data/lib/rubygems/resolver/lock_set.rb +1 -1
  262. data/lib/rubygems/resolver.rb +3 -10
  263. data/lib/rubygems/s3_uri_signer.rb +6 -6
  264. data/lib/rubygems/safe_marshal/elements.rb +138 -0
  265. data/lib/rubygems/safe_marshal/reader.rb +306 -0
  266. data/lib/rubygems/safe_marshal/visitors/stream_printer.rb +31 -0
  267. data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +385 -0
  268. data/lib/rubygems/safe_marshal/visitors/visitor.rb +74 -0
  269. data/lib/rubygems/safe_marshal.rb +74 -0
  270. data/lib/rubygems/safe_yaml.rb +5 -28
  271. data/lib/rubygems/security/policies.rb +36 -38
  272. data/lib/rubygems/security/policy.rb +7 -11
  273. data/lib/rubygems/security/signer.rb +1 -1
  274. data/lib/rubygems/security/trust_dir.rb +3 -3
  275. data/lib/rubygems/security.rb +8 -22
  276. data/lib/rubygems/source/git.rb +1 -3
  277. data/lib/rubygems/source/installed.rb +0 -2
  278. data/lib/rubygems/source/local.rb +5 -8
  279. data/lib/rubygems/source/lock.rb +1 -3
  280. data/lib/rubygems/source/specific_file.rb +0 -1
  281. data/lib/rubygems/source/vendor.rb +0 -2
  282. data/lib/rubygems/source.rb +12 -12
  283. data/lib/rubygems/source_list.rb +4 -4
  284. data/lib/rubygems/spec_fetcher.rb +29 -29
  285. data/lib/rubygems/specification.rb +125 -138
  286. data/lib/rubygems/specification_policy.rb +55 -25
  287. data/lib/rubygems/stub_specification.rb +4 -5
  288. data/lib/rubygems/text.rb +1 -2
  289. data/lib/rubygems/timeout/LICENSE.txt +22 -0
  290. data/lib/rubygems/timeout/lib/timeout.rb +199 -0
  291. data/lib/rubygems/timeout.rb +3 -0
  292. data/lib/rubygems/tsort/lib/tsort.rb +3 -0
  293. data/lib/rubygems/uninstaller.rb +7 -9
  294. data/lib/rubygems/update_suggestion.rb +5 -18
  295. data/lib/rubygems/uri_formatter.rb +1 -1
  296. data/lib/rubygems/user_interaction.rb +15 -21
  297. data/lib/rubygems/util/licenses.rb +65 -35
  298. data/lib/rubygems/util/list.rb +3 -1
  299. data/lib/rubygems/util.rb +2 -4
  300. data/lib/rubygems/validator.rb +5 -3
  301. data/lib/rubygems/version.rb +34 -28
  302. data/lib/rubygems/version_option.rb +2 -5
  303. data/lib/rubygems/yaml_serializer.rb +3 -3
  304. data/lib/rubygems.rb +37 -37
  305. data/rubygems-update.gemspec +4 -4
  306. data/setup.rb +2 -2
  307. metadata +38 -225
  308. data/lib/rubygems/indexer.rb +0 -428
  309. data/lib/rubygems/mock_gem_ui.rb +0 -86
  310. data/test/rubygems/alternate_cert.pem +0 -19
  311. data/test/rubygems/alternate_cert_32.pem +0 -19
  312. data/test/rubygems/alternate_key.pem +0 -27
  313. data/test/rubygems/bad_rake.rb +0 -3
  314. data/test/rubygems/bundler_test_gem.rb +0 -424
  315. data/test/rubygems/ca_cert.pem +0 -77
  316. data/test/rubygems/child_cert.pem +0 -19
  317. data/test/rubygems/child_cert_32.pem +0 -19
  318. data/test/rubygems/child_key.pem +0 -27
  319. data/test/rubygems/client.pem +0 -107
  320. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  321. data/test/rubygems/data/gem-private_key.pem +0 -27
  322. data/test/rubygems/data/gem-public_cert.pem +0 -20
  323. data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
  324. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  325. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  326. data/test/rubygems/encrypted_private_key.pem +0 -30
  327. data/test/rubygems/expired_cert.pem +0 -19
  328. data/test/rubygems/fake_certlib/openssl.rb +0 -9
  329. data/test/rubygems/foo/discover.rb +0 -1
  330. data/test/rubygems/future_cert.pem +0 -19
  331. data/test/rubygems/future_cert_32.pem +0 -19
  332. data/test/rubygems/good_rake.rb +0 -3
  333. data/test/rubygems/grandchild_cert.pem +0 -19
  334. data/test/rubygems/grandchild_cert_32.pem +0 -19
  335. data/test/rubygems/grandchild_key.pem +0 -27
  336. data/test/rubygems/helper.rb +0 -1649
  337. data/test/rubygems/installer_test_case.rb +0 -248
  338. data/test/rubygems/invalid_client.pem +0 -49
  339. data/test/rubygems/invalid_issuer_cert.pem +0 -20
  340. data/test/rubygems/invalid_issuer_cert_32.pem +0 -20
  341. data/test/rubygems/invalid_key.pem +0 -27
  342. data/test/rubygems/invalid_signer_cert.pem +0 -19
  343. data/test/rubygems/invalid_signer_cert_32.pem +0 -19
  344. data/test/rubygems/invalidchild_cert.pem +0 -19
  345. data/test/rubygems/invalidchild_cert_32.pem +0 -19
  346. data/test/rubygems/invalidchild_key.pem +0 -27
  347. data/test/rubygems/multifactor_auth_utilities.rb +0 -111
  348. data/test/rubygems/package/tar_test_case.rb +0 -175
  349. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  350. data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
  351. data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
  352. data/test/rubygems/plugin/exception/rubygems_plugin.rb +0 -4
  353. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -5
  354. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +0 -4
  355. data/test/rubygems/private3072_key.pem +0 -40
  356. data/test/rubygems/private_ec_key.pem +0 -9
  357. data/test/rubygems/private_key.pem +0 -27
  358. data/test/rubygems/public3072_cert.pem +0 -25
  359. data/test/rubygems/public_cert.pem +0 -20
  360. data/test/rubygems/public_cert_32.pem +0 -19
  361. data/test/rubygems/public_key.pem +0 -9
  362. data/test/rubygems/rubygems/commands/crash_command.rb +0 -5
  363. data/test/rubygems/rubygems_plugin.rb +0 -24
  364. data/test/rubygems/sff/discover.rb +0 -1
  365. data/test/rubygems/simple_gem.rb +0 -68
  366. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -9
  367. data/test/rubygems/specifications/foo-0.0.1-x86-mswin32.gemspec +0 -0
  368. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +0 -14
  369. data/test/rubygems/ssl_cert.pem +0 -80
  370. data/test/rubygems/ssl_key.pem +0 -27
  371. data/test/rubygems/test_bundled_ca.rb +0 -61
  372. data/test/rubygems/test_config.rb +0 -28
  373. data/test/rubygems/test_deprecate.rb +0 -158
  374. data/test/rubygems/test_exit.rb +0 -17
  375. data/test/rubygems/test_gem.rb +0 -1799
  376. data/test/rubygems/test_gem_available_set.rb +0 -130
  377. data/test/rubygems/test_gem_bundler_version_finder.rb +0 -127
  378. data/test/rubygems/test_gem_command.rb +0 -403
  379. data/test/rubygems/test_gem_command_manager.rb +0 -400
  380. data/test/rubygems/test_gem_commands_build_command.rb +0 -739
  381. data/test/rubygems/test_gem_commands_cert_command.rb +0 -866
  382. data/test/rubygems/test_gem_commands_check_command.rb +0 -68
  383. data/test/rubygems/test_gem_commands_cleanup_command.rb +0 -292
  384. data/test/rubygems/test_gem_commands_contents_command.rb +0 -271
  385. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -228
  386. data/test/rubygems/test_gem_commands_environment_command.rb +0 -169
  387. data/test/rubygems/test_gem_commands_exec_command.rb +0 -857
  388. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -258
  389. data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -81
  390. data/test/rubygems/test_gem_commands_help_command.rb +0 -94
  391. data/test/rubygems/test_gem_commands_info_command.rb +0 -70
  392. data/test/rubygems/test_gem_commands_install_command.rb +0 -1573
  393. data/test/rubygems/test_gem_commands_list_command.rb +0 -33
  394. data/test/rubygems/test_gem_commands_lock_command.rb +0 -67
  395. data/test/rubygems/test_gem_commands_mirror.rb +0 -20
  396. data/test/rubygems/test_gem_commands_open_command.rb +0 -101
  397. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -50
  398. data/test/rubygems/test_gem_commands_owner_command.rb +0 -503
  399. data/test/rubygems/test_gem_commands_pristine_command.rb +0 -708
  400. data/test/rubygems/test_gem_commands_push_command.rb +0 -603
  401. data/test/rubygems/test_gem_commands_query_command.rb +0 -858
  402. data/test/rubygems/test_gem_commands_search_command.rb +0 -16
  403. data/test/rubygems/test_gem_commands_server_command.rb +0 -20
  404. data/test/rubygems/test_gem_commands_setup_command.rb +0 -474
  405. data/test/rubygems/test_gem_commands_signin_command.rb +0 -259
  406. data/test/rubygems/test_gem_commands_signout_command.rb +0 -30
  407. data/test/rubygems/test_gem_commands_sources_command.rb +0 -534
  408. data/test/rubygems/test_gem_commands_specification_command.rb +0 -277
  409. data/test/rubygems/test_gem_commands_stale_command.rb +0 -43
  410. data/test/rubygems/test_gem_commands_uninstall_command.rb +0 -542
  411. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -224
  412. data/test/rubygems/test_gem_commands_update_command.rb +0 -836
  413. data/test/rubygems/test_gem_commands_which_command.rb +0 -85
  414. data/test/rubygems/test_gem_commands_yank_command.rb +0 -299
  415. data/test/rubygems/test_gem_config_file.rb +0 -551
  416. data/test/rubygems/test_gem_dependency.rb +0 -398
  417. data/test/rubygems/test_gem_dependency_installer.rb +0 -1190
  418. data/test/rubygems/test_gem_dependency_list.rb +0 -265
  419. data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -27
  420. data/test/rubygems/test_gem_doctor.rb +0 -195
  421. data/test/rubygems/test_gem_ext_builder.rb +0 -337
  422. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +0 -1
  423. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +0 -10
  424. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +0 -249
  425. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +0 -10
  426. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +0 -27
  427. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +0 -3
  428. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +0 -1
  429. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +0 -249
  430. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +0 -10
  431. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +0 -10
  432. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +0 -51
  433. data/test/rubygems/test_gem_ext_cargo_builder.rb +0 -167
  434. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +0 -34
  435. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +0 -60
  436. data/test/rubygems/test_gem_ext_cmake_builder.rb +0 -84
  437. data/test/rubygems/test_gem_ext_configure_builder.rb +0 -80
  438. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -229
  439. data/test/rubygems/test_gem_ext_rake_builder.rb +0 -113
  440. data/test/rubygems/test_gem_gem_runner.rb +0 -119
  441. data/test/rubygems/test_gem_gemcutter_utilities.rb +0 -361
  442. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -60
  443. data/test/rubygems/test_gem_indexer.rb +0 -381
  444. data/test/rubygems/test_gem_install_update_options.rb +0 -208
  445. data/test/rubygems/test_gem_installer.rb +0 -2512
  446. data/test/rubygems/test_gem_local_remote_options.rb +0 -133
  447. data/test/rubygems/test_gem_name_tuple.rb +0 -43
  448. data/test/rubygems/test_gem_package.rb +0 -1306
  449. data/test/rubygems/test_gem_package_old.rb +0 -91
  450. data/test/rubygems/test_gem_package_tar_header.rb +0 -226
  451. data/test/rubygems/test_gem_package_tar_reader.rb +0 -150
  452. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -350
  453. data/test/rubygems/test_gem_package_tar_writer.rb +0 -331
  454. data/test/rubygems/test_gem_package_task.rb +0 -118
  455. data/test/rubygems/test_gem_path_support.rb +0 -139
  456. data/test/rubygems/test_gem_platform.rb +0 -497
  457. data/test/rubygems/test_gem_rdoc.rb +0 -137
  458. data/test/rubygems/test_gem_remote_fetcher.rb +0 -1227
  459. data/test/rubygems/test_gem_request.rb +0 -547
  460. data/test/rubygems/test_gem_request_connection_pools.rb +0 -152
  461. data/test/rubygems/test_gem_request_set.rb +0 -672
  462. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +0 -853
  463. data/test/rubygems/test_gem_request_set_lockfile.rb +0 -469
  464. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +0 -544
  465. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +0 -307
  466. data/test/rubygems/test_gem_requirement.rb +0 -505
  467. data/test/rubygems/test_gem_resolver.rb +0 -859
  468. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -43
  469. data/test/rubygems/test_gem_resolver_api_set.rb +0 -210
  470. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -167
  471. data/test/rubygems/test_gem_resolver_best_set.rb +0 -159
  472. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -44
  473. data/test/rubygems/test_gem_resolver_conflict.rb +0 -82
  474. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -83
  475. data/test/rubygems/test_gem_resolver_git_set.rb +0 -188
  476. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -114
  477. data/test/rubygems/test_gem_resolver_index_set.rb +0 -88
  478. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -93
  479. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -47
  480. data/test/rubygems/test_gem_resolver_installer_set.rb +0 -320
  481. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -44
  482. data/test/rubygems/test_gem_resolver_lock_set.rb +0 -62
  483. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -98
  484. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -19
  485. data/test/rubygems/test_gem_resolver_specification.rb +0 -63
  486. data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -82
  487. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -82
  488. data/test/rubygems/test_gem_security.rb +0 -341
  489. data/test/rubygems/test_gem_security_policy.rb +0 -535
  490. data/test/rubygems/test_gem_security_signer.rb +0 -218
  491. data/test/rubygems/test_gem_security_trust_dir.rb +0 -99
  492. data/test/rubygems/test_gem_silent_ui.rb +0 -123
  493. data/test/rubygems/test_gem_source.rb +0 -254
  494. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -37
  495. data/test/rubygems/test_gem_source_git.rb +0 -310
  496. data/test/rubygems/test_gem_source_installed.rb +0 -35
  497. data/test/rubygems/test_gem_source_list.rb +0 -119
  498. data/test/rubygems/test_gem_source_local.rb +0 -107
  499. data/test/rubygems/test_gem_source_lock.rb +0 -113
  500. data/test/rubygems/test_gem_source_specific_file.rb +0 -76
  501. data/test/rubygems/test_gem_source_subpath_problem.rb +0 -50
  502. data/test/rubygems/test_gem_source_vendor.rb +0 -30
  503. data/test/rubygems/test_gem_spec_fetcher.rb +0 -338
  504. data/test/rubygems/test_gem_specification.rb +0 -3856
  505. data/test/rubygems/test_gem_stream_ui.rb +0 -255
  506. data/test/rubygems/test_gem_stub_specification.rb +0 -278
  507. data/test/rubygems/test_gem_text.rb +0 -103
  508. data/test/rubygems/test_gem_uninstaller.rb +0 -675
  509. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -31
  510. data/test/rubygems/test_gem_update_suggestion.rb +0 -209
  511. data/test/rubygems/test_gem_uri.rb +0 -41
  512. data/test/rubygems/test_gem_uri_formatter.rb +0 -27
  513. data/test/rubygems/test_gem_util.rb +0 -91
  514. data/test/rubygems/test_gem_validator.rb +0 -42
  515. data/test/rubygems/test_gem_version.rb +0 -305
  516. data/test/rubygems/test_gem_version_option.rb +0 -165
  517. data/test/rubygems/test_kernel.rb +0 -124
  518. data/test/rubygems/test_project_sanity.rb +0 -49
  519. data/test/rubygems/test_remote_fetch_error.rb +0 -20
  520. data/test/rubygems/test_require.rb +0 -732
  521. data/test/rubygems/test_rubygems.rb +0 -76
  522. data/test/rubygems/test_webauthn_listener.rb +0 -143
  523. data/test/rubygems/test_webauthn_listener_response.rb +0 -93
  524. data/test/rubygems/test_webauthn_poller.rb +0 -124
  525. data/test/rubygems/utilities.rb +0 -436
  526. data/test/rubygems/wrong_key_cert.pem +0 -19
  527. data/test/rubygems/wrong_key_cert_32.pem +0 -19
  528. data/test/test_changelog_generator.rb +0 -17
@@ -4,17 +4,12 @@ require "rubygems" unless defined?(Gem)
4
4
 
5
5
  module Bundler
6
6
  class RubygemsIntegration
7
- if defined?(Gem::Ext::Builder::CHDIR_MONITOR)
8
- EXT_LOCK = Gem::Ext::Builder::CHDIR_MONITOR
9
- else
10
- require "monitor"
7
+ require "monitor"
11
8
 
12
- EXT_LOCK = Monitor.new
13
- end
9
+ EXT_LOCK = Monitor.new
14
10
 
15
11
  def initialize
16
12
  @replaced_methods = {}
17
- backport_ext_builder_monitor
18
13
  end
19
14
 
20
15
  def version
@@ -43,18 +38,6 @@ module Bundler
43
38
  Gem.loaded_specs[name]
44
39
  end
45
40
 
46
- def add_to_load_path(paths)
47
- return Gem.add_to_load_path(*paths) if Gem.respond_to?(:add_to_load_path)
48
-
49
- if insert_index = Gem.load_path_insert_index
50
- # Gem directories must come after -I and ENV['RUBYLIB']
51
- $LOAD_PATH.insert(insert_index, *paths)
52
- else
53
- # We are probably testing in core, -I and RUBYLIB don't apply
54
- $LOAD_PATH.unshift(*paths)
55
- end
56
- end
57
-
58
41
  def mark_loaded(spec)
59
42
  if spec.respond_to?(:activated=)
60
43
  current = Gem.loaded_specs[spec.name]
@@ -91,9 +74,9 @@ module Bundler
91
74
  def spec_matches_for_glob(spec, glob)
92
75
  return spec.matches_for_glob(glob) if spec.respond_to?(:matches_for_glob)
93
76
 
94
- spec.load_paths.map do |lp|
77
+ spec.load_paths.flat_map do |lp|
95
78
  Dir["#{lp}/#{glob}#{suffix_pattern}"]
96
- end.flatten(1)
79
+ end
97
80
  end
98
81
 
99
82
  def stub_set_spec(stub, spec)
@@ -116,16 +99,6 @@ module Bundler
116
99
  Gem::Util.inflate(obj)
117
100
  end
118
101
 
119
- def correct_for_windows_path(path)
120
- if Gem::Util.respond_to?(:correct_for_windows_path)
121
- Gem::Util.correct_for_windows_path(path)
122
- elsif path[0].chr == "/" && path[1].chr =~ /[a-z]/i && path[2].chr == ":"
123
- path[1..-1]
124
- else
125
- path
126
- end
127
- end
128
-
129
102
  def gem_dir
130
103
  Gem.dir
131
104
  end
@@ -161,7 +134,7 @@ module Bundler
161
134
  def spec_cache_dirs
162
135
  @spec_cache_dirs ||= begin
163
136
  dirs = gem_path.map {|dir| File.join(dir, "specifications") }
164
- dirs << Gem.spec_cache_dir if Gem.respond_to?(:spec_cache_dir) # Not in RubyGems 2.0.3 or earlier
137
+ dirs << Gem.spec_cache_dir
165
138
  dirs.uniq.select {|dir| File.directory? dir }
166
139
  end
167
140
  end
@@ -183,18 +156,6 @@ module Bundler
183
156
  loaded_gem_paths.flatten
184
157
  end
185
158
 
186
- def load_plugins
187
- Gem.load_plugins if Gem.respond_to?(:load_plugins)
188
- end
189
-
190
- def load_plugin_files(files)
191
- Gem.load_plugin_files(files) if Gem.respond_to?(:load_plugin_files)
192
- end
193
-
194
- def load_env_plugins
195
- Gem.load_env_plugins if Gem.respond_to?(:load_env_plugins)
196
- end
197
-
198
159
  def ui=(obj)
199
160
  Gem::DefaultUserInteraction.ui = obj
200
161
  end
@@ -230,8 +191,7 @@ module Bundler
230
191
  if Gem.respond_to?(:discover_gems_on_require=)
231
192
  Gem.discover_gems_on_require = false
232
193
  else
233
- kernel = (class << ::Kernel; self; end)
234
- [kernel, ::Kernel].each do |k|
194
+ [::Kernel.singleton_class, ::Kernel].each do |k|
235
195
  if k.private_method_defined?(:gem_original_require)
236
196
  redefine_method(k, :require, k.instance_method(:gem_original_require))
237
197
  end
@@ -240,12 +200,9 @@ module Bundler
240
200
  end
241
201
 
242
202
  def replace_gem(specs, specs_by_name)
243
- reverse_rubygems_kernel_mixin
244
-
245
203
  executables = nil
246
204
 
247
- kernel = (class << ::Kernel; self; end)
248
- [kernel, ::Kernel].each do |kernel_class|
205
+ [::Kernel.singleton_class, ::Kernel].each do |kernel_class|
249
206
  redefine_method(kernel_class, :gem) do |dep, *reqs|
250
207
  if executables&.include?(File.basename(caller.first.split(":").first))
251
208
  break
@@ -358,6 +315,14 @@ module Bundler
358
315
  def replace_entrypoints(specs)
359
316
  specs_by_name = add_default_gems_to(specs)
360
317
 
318
+ reverse_rubygems_kernel_mixin
319
+ begin
320
+ # bundled_gems only provide with Ruby 3.3 or later
321
+ require "bundled_gems"
322
+ rescue LoadError
323
+ else
324
+ Gem::BUNDLED_GEMS.replace_require(specs) if Gem::BUNDLED_GEMS.respond_to?(:replace_require)
325
+ end
361
326
  replace_gem(specs, specs_by_name)
362
327
  stub_rubygems(specs)
363
328
  replace_bin_path(specs_by_name)
@@ -447,30 +412,28 @@ module Bundler
447
412
  Gem::Specification.all = specs
448
413
  end
449
414
 
450
- def fetch_specs(remote, name)
415
+ def fetch_specs(remote, name, fetcher)
451
416
  require "rubygems/remote_fetcher"
452
417
  path = remote.uri.to_s + "#{name}.#{Gem.marshal_version}.gz"
453
- fetcher = gem_remote_fetcher
454
- fetcher.headers = { "X-Gemfile-Source" => remote.original_uri.to_s } if remote.original_uri
455
418
  string = fetcher.fetch_path(path)
456
- Bundler.safe_load_marshal(string)
419
+ specs = Bundler.safe_load_marshal(string)
420
+ raise MarshalError, "Specs #{name} from #{remote} is expected to be an Array but was unexpected class #{specs.class}" unless specs.is_a?(Array)
421
+ specs
457
422
  rescue Gem::RemoteFetcher::FetchError
458
423
  # it's okay for prerelease to fail
459
424
  raise unless name == "prerelease_specs"
460
425
  end
461
426
 
462
- def fetch_all_remote_specs(remote)
463
- specs = fetch_specs(remote, "specs")
464
- pres = fetch_specs(remote, "prerelease_specs") || []
427
+ def fetch_all_remote_specs(remote, gem_remote_fetcher)
428
+ specs = fetch_specs(remote, "specs", gem_remote_fetcher)
429
+ pres = fetch_specs(remote, "prerelease_specs", gem_remote_fetcher) || []
465
430
 
466
431
  specs.concat(pres)
467
432
  end
468
433
 
469
- def download_gem(spec, uri, cache_dir)
434
+ def download_gem(spec, uri, cache_dir, fetcher)
470
435
  require "rubygems/remote_fetcher"
471
436
  uri = Bundler.settings.mirror_for(uri)
472
- fetcher = gem_remote_fetcher
473
- fetcher.headers = { "X-Gemfile-Source" => spec.remote.original_uri.to_s } if spec.remote.original_uri
474
437
  Bundler::Retry.new("download gem from #{uri}").attempts do
475
438
  gem_file_name = spec.file_name
476
439
  local_gem_path = File.join cache_dir, gem_file_name
@@ -478,7 +441,6 @@ module Bundler
478
441
 
479
442
  begin
480
443
  remote_gem_path = uri + "gems/#{gem_file_name}"
481
- remote_gem_path = remote_gem_path.to_s if provides?("< 3.2.0.rc.1")
482
444
 
483
445
  SharedHelpers.filesystem_access(local_gem_path) do
484
446
  fetcher.cache_update_path remote_gem_path, local_gem_path
@@ -497,12 +459,6 @@ module Bundler
497
459
  raise Bundler::HTTPError, "Could not download gem from #{uri} due to underlying error <#{e.message}>"
498
460
  end
499
461
 
500
- def gem_remote_fetcher
501
- require "rubygems/remote_fetcher"
502
- proxy = Gem.configuration[:http_proxy]
503
- Gem::RemoteFetcher.new(proxy)
504
- end
505
-
506
462
  def build(spec, skip_validation = false)
507
463
  require "rubygems/package"
508
464
  Gem::Package.build(spec, skip_validation)
@@ -518,25 +474,6 @@ module Bundler
518
474
  end
519
475
  end
520
476
 
521
- def backport_ext_builder_monitor
522
- # So we can avoid requiring "rubygems/ext" in its entirety
523
- Gem.module_eval <<-RUBY, __FILE__, __LINE__ + 1
524
- module Ext
525
- end
526
- RUBY
527
-
528
- require "rubygems/ext/builder"
529
-
530
- Gem::Ext::Builder.class_eval do
531
- unless const_defined?(:CHDIR_MONITOR)
532
- const_set(:CHDIR_MONITOR, EXT_LOCK)
533
- end
534
-
535
- remove_const(:CHDIR_MUTEX) if const_defined?(:CHDIR_MUTEX)
536
- const_set(:CHDIR_MUTEX, const_get(:CHDIR_MONITOR))
537
- end
538
- end
539
-
540
477
  def find_bundler(version)
541
478
  find_name("bundler").find {|s| s.version.to_s == version }
542
479
  end
@@ -545,14 +482,8 @@ module Bundler
545
482
  Gem::Specification.stubs_for(name).map(&:to_spec)
546
483
  end
547
484
 
548
- if Gem::Specification.respond_to?(:default_stubs)
549
- def default_stubs
550
- Gem::Specification.default_stubs("*.gemspec")
551
- end
552
- else
553
- def default_stubs
554
- Gem::Specification.send(:default_stubs, "*.gemspec")
555
- end
485
+ def default_stubs
486
+ Gem::Specification.default_stubs("*.gemspec")
556
487
  end
557
488
  end
558
489
 
@@ -28,11 +28,11 @@ module Bundler
28
28
  spec.load_paths.reject {|path| $LOAD_PATH.include?(path) }
29
29
  end.reverse.flatten
30
30
 
31
- Bundler.rubygems.add_to_load_path(load_paths)
31
+ Gem.add_to_load_path(*load_paths)
32
32
 
33
33
  setup_manpath
34
34
 
35
- lock(:preserve_unknown_sections => true)
35
+ lock(preserve_unknown_sections: true)
36
36
 
37
37
  self
38
38
  end
@@ -9,17 +9,23 @@ module Bundler
9
9
  def restart_with_locked_bundler_if_needed
10
10
  return unless needs_switching? && installed?
11
11
 
12
- restart_with(lockfile_version)
12
+ restart_with(restart_version)
13
13
  end
14
14
 
15
15
  def install_locked_bundler_and_restart_with_it_if_needed
16
16
  return unless needs_switching?
17
17
 
18
- Bundler.ui.info \
19
- "Bundler #{current_version} is running, but your lockfile was generated with #{lockfile_version}. " \
20
- "Installing Bundler #{lockfile_version} and restarting using that version."
18
+ if restart_version == lockfile_version
19
+ Bundler.ui.info \
20
+ "Bundler #{current_version} is running, but your lockfile was generated with #{lockfile_version}. " \
21
+ "Installing Bundler #{lockfile_version} and restarting using that version."
22
+ else
23
+ Bundler.ui.info \
24
+ "Bundler #{current_version} is running, but your configuration was #{restart_version}. " \
25
+ "Installing Bundler #{restart_version} and restarting using that version."
26
+ end
21
27
 
22
- install_and_restart_with(lockfile_version)
28
+ install_and_restart_with(restart_version)
23
29
  end
24
30
 
25
31
  def update_bundler_and_restart_with_it_if_needed(target)
@@ -79,7 +85,8 @@ module Bundler
79
85
  autoswitching_applies? &&
80
86
  released?(lockfile_version) &&
81
87
  !running?(lockfile_version) &&
82
- !updating?
88
+ !updating? &&
89
+ Bundler.settings[:version] != "system"
83
90
  end
84
91
 
85
92
  def autoswitching_applies?
@@ -151,7 +158,7 @@ module Bundler
151
158
  def installed?
152
159
  Bundler.configure
153
160
 
154
- Bundler.rubygems.find_bundler(lockfile_version.to_s)
161
+ Bundler.rubygems.find_bundler(restart_version.to_s)
155
162
  end
156
163
 
157
164
  def current_version
@@ -166,5 +173,14 @@ module Bundler
166
173
  rescue ArgumentError
167
174
  @lockfile_version = nil
168
175
  end
176
+
177
+ def restart_version
178
+ return @restart_version if defined?(@restart_version)
179
+ # BUNDLE_VERSION=x.y.z
180
+ @restart_version = Gem::Version.new(Bundler.settings[:version])
181
+ rescue ArgumentError
182
+ # BUNDLE_VERSION=lockfile
183
+ @restart_version = lockfile_version
184
+ end
169
185
  end
170
186
  end
@@ -46,6 +46,20 @@ module Bundler
46
46
  update_requires_all_flag
47
47
  ].freeze
48
48
 
49
+ REMEMBERED_KEYS = %w[
50
+ bin
51
+ cache_all
52
+ clean
53
+ deployment
54
+ frozen
55
+ no_prune
56
+ path
57
+ shebang
58
+ path.system
59
+ without
60
+ with
61
+ ].freeze
62
+
49
63
  NUMBER_KEYS = %w[
50
64
  jobs
51
65
  redirect
@@ -74,6 +88,7 @@ module Bundler
74
88
  shebang
75
89
  system_bindir
76
90
  trust-policy
91
+ version
77
92
  ].freeze
78
93
 
79
94
  DEFAULT_CONFIG = {
@@ -83,6 +98,7 @@ module Bundler
83
98
  "BUNDLE_REDIRECT" => 5,
84
99
  "BUNDLE_RETRY" => 3,
85
100
  "BUNDLE_TIMEOUT" => 10,
101
+ "BUNDLE_VERSION" => "lockfile",
86
102
  }.freeze
87
103
 
88
104
  def initialize(root = nil)
@@ -113,7 +129,7 @@ module Bundler
113
129
  end
114
130
 
115
131
  def set_command_option(key, value)
116
- if Bundler.feature_flag.forget_cli_options?
132
+ if !is_remembered(key) || Bundler.feature_flag.forget_cli_options?
117
133
  temporary(key => value)
118
134
  value
119
135
  else
@@ -319,11 +335,11 @@ module Bundler
319
335
 
320
336
  def configs
321
337
  @configs ||= {
322
- :temporary => @temporary,
323
- :local => @local_config,
324
- :env => @env_config,
325
- :global => @global_config,
326
- :default => DEFAULT_CONFIG,
338
+ temporary: @temporary,
339
+ local: @local_config,
340
+ env: @env_config,
341
+ global: @global_config,
342
+ default: DEFAULT_CONFIG,
327
343
  }
328
344
  end
329
345
 
@@ -372,6 +388,10 @@ module Bundler
372
388
  ARRAY_KEYS.include?(self.class.key_to_s(key))
373
389
  end
374
390
 
391
+ def is_remembered(key)
392
+ REMEMBERED_KEYS.include?(self.class.key_to_s(key))
393
+ end
394
+
375
395
  def is_credential(key)
376
396
  key == "gem.push_key"
377
397
  end
@@ -507,7 +527,7 @@ module Bundler
507
527
  (https?.*?) # URI
508
528
  (\.#{Regexp.union(PER_URI_OPTIONS)})? # optional suffix key
509
529
  \z
510
- /ix.freeze
530
+ /ix
511
531
 
512
532
  def self.key_for(key)
513
533
  key = normalize_uri(key).to_s if key.is_a?(String) && key.start_with?("http", "mirror.http")
@@ -12,7 +12,10 @@ if Bundler::SharedHelpers.in_bundle?
12
12
  Bundler.ui.error e.message
13
13
  Bundler.ui.warn e.backtrace.join("\n") if ENV["DEBUG"]
14
14
  if e.is_a?(Bundler::GemNotFound)
15
- suggested_cmd = "bundle install"
15
+ default_bundle = Gem.bin_path("bundler", "bundle")
16
+ current_bundle = Bundler::SharedHelpers.bundle_bin_path
17
+ suggested_bundle = default_bundle == current_bundle ? "bundle" : current_bundle
18
+ suggested_cmd = "#{suggested_bundle} install"
16
19
  original_gemfile = Bundler.original_env["BUNDLE_GEMFILE"]
17
20
  suggested_cmd += " --gemfile #{original_gemfile}" if original_gemfile
18
21
  Bundler.ui.warn "Run `#{suggested_cmd}` to install missing gems."
@@ -13,13 +13,13 @@ module Bundler
13
13
  def root
14
14
  gemfile = find_gemfile
15
15
  raise GemfileNotFound, "Could not locate Gemfile" unless gemfile
16
- Pathname.new(gemfile).tap {|x| x.untaint if RUBY_VERSION < "2.7" }.expand_path.parent
16
+ Pathname.new(gemfile).expand_path.parent
17
17
  end
18
18
 
19
19
  def default_gemfile
20
20
  gemfile = find_gemfile
21
21
  raise GemfileNotFound, "Could not locate Gemfile" unless gemfile
22
- Pathname.new(gemfile).tap {|x| x.untaint if RUBY_VERSION < "2.7" }.expand_path
22
+ Pathname.new(gemfile).expand_path
23
23
  end
24
24
 
25
25
  def default_lockfile
@@ -28,7 +28,7 @@ module Bundler
28
28
  case gemfile.basename.to_s
29
29
  when "gems.rb" then Pathname.new(gemfile.sub(/.rb$/, ".locked"))
30
30
  else Pathname.new("#{gemfile}.lock")
31
- end.tap {|x| x.untaint if RUBY_VERSION < "2.7" }
31
+ end
32
32
  end
33
33
 
34
34
  def default_bundle_dir
@@ -100,7 +100,7 @@ module Bundler
100
100
  #
101
101
  # @see {Bundler::PermissionError}
102
102
  def filesystem_access(path, action = :write, &block)
103
- yield(path.dup.tap {|x| x.untaint if RUBY_VERSION < "2.7" })
103
+ yield(path.dup)
104
104
  rescue Errno::EACCES
105
105
  raise PermissionError.new(path, action)
106
106
  rescue Errno::EAGAIN
@@ -117,16 +117,18 @@ module Bundler
117
117
  raise GenericSystemCallError.new(e, "There was an error accessing `#{path}`.")
118
118
  end
119
119
 
120
- def major_deprecation(major_version, message, print_caller_location: false)
120
+ def major_deprecation(major_version, message, removed_message: nil, print_caller_location: false)
121
121
  if print_caller_location
122
122
  caller_location = caller_locations(2, 2).first
123
- message = "#{message} (called at #{caller_location.path}:#{caller_location.lineno})"
123
+ suffix = " (called at #{caller_location.path}:#{caller_location.lineno})"
124
+ message += suffix
125
+ removed_message += suffix if removed_message
124
126
  end
125
127
 
126
128
  bundler_major_version = Bundler.bundler_major_version
127
129
  if bundler_major_version > major_version
128
130
  require_relative "errors"
129
- raise DeprecatedError, "[REMOVED] #{message}"
131
+ raise DeprecatedError, "[REMOVED] #{removed_message || message}"
130
132
  end
131
133
 
132
134
  return unless bundler_major_version >= major_version && prints_major_deprecations?
@@ -193,6 +195,21 @@ module Bundler
193
195
  Digest(name)
194
196
  end
195
197
 
198
+ def checksum_for_file(path, digest)
199
+ return unless path.file?
200
+ # This must use File.read instead of Digest.file().hexdigest
201
+ # because we need to preserve \n line endings on windows when calculating
202
+ # the checksum
203
+ SharedHelpers.filesystem_access(path, :read) do
204
+ File.open(path, "rb") do |f|
205
+ digest = SharedHelpers.digest(digest).new
206
+ buf = String.new(capacity: 16_384, encoding: Encoding::BINARY)
207
+ digest << buf while f.read(16_384, buf)
208
+ digest.hexdigest
209
+ end
210
+ end
211
+ end
212
+
196
213
  def write_to_gemfile(gemfile_path, contents)
197
214
  filesystem_access(gemfile_path) {|g| File.open(g, "w") {|file| file.puts contents } }
198
215
  end
@@ -250,7 +267,7 @@ module Bundler
250
267
 
251
268
  def search_up(*names)
252
269
  previous = nil
253
- current = File.expand_path(SharedHelpers.pwd).tap {|x| x.untaint if RUBY_VERSION < "2.7" }
270
+ current = File.expand_path(SharedHelpers.pwd)
254
271
 
255
272
  until !File.directory?(current) || current == previous
256
273
  if ENV["BUNDLER_SPEC_RUN"]
@@ -287,6 +304,13 @@ module Bundler
287
304
  public :set_env
288
305
 
289
306
  def set_bundle_variables
307
+ Bundler::SharedHelpers.set_env "BUNDLE_BIN_PATH", bundle_bin_path
308
+ Bundler::SharedHelpers.set_env "BUNDLE_GEMFILE", find_gemfile.to_s
309
+ Bundler::SharedHelpers.set_env "BUNDLER_VERSION", Bundler::VERSION
310
+ Bundler::SharedHelpers.set_env "BUNDLER_SETUP", File.expand_path("setup", __dir__)
311
+ end
312
+
313
+ def bundle_bin_path
290
314
  # bundler exe & lib folders have same root folder, typical gem installation
291
315
  exe_file = File.expand_path("../../exe/bundle", __dir__)
292
316
 
@@ -296,11 +320,9 @@ module Bundler
296
320
  # bundler is a default gem, exe path is separate
297
321
  exe_file = Bundler.rubygems.bin_path("bundler", "bundle", VERSION) unless File.exist?(exe_file)
298
322
 
299
- Bundler::SharedHelpers.set_env "BUNDLE_BIN_PATH", exe_file
300
- Bundler::SharedHelpers.set_env "BUNDLE_GEMFILE", find_gemfile.to_s
301
- Bundler::SharedHelpers.set_env "BUNDLER_VERSION", Bundler::VERSION
302
- Bundler::SharedHelpers.set_env "BUNDLER_SETUP", File.expand_path("setup", __dir__) unless RUBY_VERSION < "2.7"
323
+ exe_file
303
324
  end
325
+ public :bundle_bin_path
304
326
 
305
327
  def set_path
306
328
  validate_bundle_path
@@ -312,7 +334,7 @@ module Bundler
312
334
  def set_rubyopt
313
335
  rubyopt = [ENV["RUBYOPT"]].compact
314
336
  setup_require = "-r#{File.expand_path("setup", __dir__)}"
315
- return if !rubyopt.empty? && rubyopt.first =~ /#{Regexp.escape(setup_require)}/
337
+ return if !rubyopt.empty? && rubyopt.first.include?(setup_require)
316
338
  rubyopt.unshift setup_require
317
339
  Bundler::SharedHelpers.set_env "RUBYOPT", rubyopt.join(" ")
318
340
  end
@@ -80,14 +80,14 @@ module Bundler
80
80
 
81
81
  def current_branch
82
82
  @current_branch ||= with_path do
83
- git_local("rev-parse", "--abbrev-ref", "HEAD", :dir => path).strip
83
+ git_local("rev-parse", "--abbrev-ref", "HEAD", dir: path).strip
84
84
  end
85
85
  end
86
86
 
87
87
  def contains?(commit)
88
88
  allowed_with_path do
89
- result, status = git_null("branch", "--contains", commit, :dir => path)
90
- status.success? && result =~ /^\* (.*)$/
89
+ result, status = git_null("branch", "--contains", commit, dir: path)
90
+ status.success? && result.match?(/^\* (.*)$/)
91
91
  end
92
92
  end
93
93
 
@@ -132,18 +132,18 @@ module Bundler
132
132
 
133
133
  ref = @commit_ref || (locked_to_full_sha? && @revision)
134
134
  if ref
135
- git "config", "uploadpack.allowAnySHA1InWant", "true", :dir => path.to_s if @commit_ref.nil? && needs_allow_any_sha1_in_want?
135
+ git "config", "uploadpack.allowAnySHA1InWant", "true", dir: path.to_s if @commit_ref.nil? && needs_allow_any_sha1_in_want?
136
136
 
137
- git "fetch", "--force", "--quiet", *extra_fetch_args(ref), :dir => destination
137
+ git "fetch", "--force", "--quiet", *extra_fetch_args(ref), dir: destination
138
138
  end
139
139
 
140
- git "reset", "--hard", @revision, :dir => destination
140
+ git "reset", "--hard", @revision, dir: destination
141
141
 
142
142
  if submodules
143
- git_retry "submodule", "update", "--init", "--recursive", :dir => destination
143
+ git_retry "submodule", "update", "--init", "--recursive", dir: destination
144
144
  elsif Gem::Version.create(version) >= Gem::Version.create("2.9.0")
145
145
  inner_command = "git -C $toplevel submodule deinit --force $sm_path"
146
- git_retry "submodule", "foreach", "--quiet", inner_command, :dir => destination
146
+ git_retry "submodule", "foreach", "--quiet", inner_command, dir: destination
147
147
  end
148
148
  end
149
149
 
@@ -266,32 +266,32 @@ module Bundler
266
266
  def git_null(*command, dir: nil)
267
267
  check_allowed(command)
268
268
 
269
- capture(command, dir, :ignore_err => true)
269
+ capture(command, dir, ignore_err: true)
270
270
  end
271
271
 
272
272
  def git_retry(*command, dir: nil)
273
273
  command_with_no_credentials = check_allowed(command)
274
274
 
275
275
  Bundler::Retry.new("`#{command_with_no_credentials}` at #{dir || SharedHelpers.pwd}").attempts do
276
- git(*command, :dir => dir)
276
+ git(*command, dir: dir)
277
277
  end
278
278
  end
279
279
 
280
280
  def git(*command, dir: nil)
281
- run_command(*command, :dir => dir) do |unredacted_command|
281
+ run_command(*command, dir: dir) do |unredacted_command|
282
282
  check_allowed(unredacted_command)
283
283
  end
284
284
  end
285
285
 
286
286
  def git_local(*command, dir: nil)
287
- run_command(*command, :dir => dir) do |unredacted_command|
287
+ run_command(*command, dir: dir) do |unredacted_command|
288
288
  redact_and_check_presence(unredacted_command)
289
289
  end
290
290
  end
291
291
 
292
292
  def has_revision_cached?
293
293
  return unless @revision && path.exist?
294
- git("cat-file", "-e", @revision, :dir => path)
294
+ git("cat-file", "-e", @revision, dir: path)
295
295
  true
296
296
  rescue GitError
297
297
  false
@@ -314,7 +314,7 @@ module Bundler
314
314
  end
315
315
 
316
316
  def verify(reference)
317
- git("rev-parse", "--verify", reference, :dir => path).strip
317
+ git("rev-parse", "--verify", reference, dir: path).strip
318
318
  end
319
319
 
320
320
  # Adds credentials to the URI
@@ -398,7 +398,7 @@ module Bundler
398
398
  if Bundler.feature_flag.bundler_3_mode? || supports_minus_c?
399
399
  ["git", "-C", dir.to_s, *cmd]
400
400
  else
401
- ["git", *cmd, { :chdir => dir.to_s }]
401
+ ["git", *cmd, { chdir: dir.to_s }]
402
402
  end
403
403
  end
404
404
 
@@ -11,6 +11,7 @@ module Bundler
11
11
 
12
12
  def initialize(options)
13
13
  @options = options
14
+ @checksum_store = Checksum::Store.new
14
15
  @glob = options["glob"] || DEFAULT_GLOB
15
16
 
16
17
  @allow_cached = false
@@ -19,7 +20,7 @@ module Bundler
19
20
  # Stringify options that could be set as symbols
20
21
  %w[ref branch tag revision].each {|k| options[k] = options[k].to_s if options[k] }
21
22
 
22
- @uri = URINormalizer.normalize_suffix(options["uri"] || "", :trailing_slash => false)
23
+ @uri = URINormalizer.normalize_suffix(options["uri"] || "", trailing_slash: false)
23
24
  @safe_uri = URICredentialsFilter.credential_filtered_uri(@uri)
24
25
  @branch = options["branch"]
25
26
  @ref = options["ref"] || options["branch"] || options["tag"]
@@ -197,7 +198,7 @@ module Bundler
197
198
  @copied = true
198
199
  end
199
200
 
200
- generate_bin_options = { :disable_extensions => !Bundler.rubygems.spec_missing_extensions?(spec), :build_args => options[:build_args] }
201
+ generate_bin_options = { disable_extensions: !Bundler.rubygems.spec_missing_extensions?(spec), build_args: options[:build_args] }
201
202
  generate_bin(spec, generate_bin_options)
202
203
 
203
204
  requires_checkout? ? spec.post_install_message : nil
@@ -359,7 +360,7 @@ module Bundler
359
360
 
360
361
  def load_gemspec(file)
361
362
  stub = Gem::StubSpecification.gemspec_stub(file, install_path.parent, install_path.parent)
362
- stub.full_gem_path = Pathname.new(file).dirname.expand_path(root).to_s.tap {|x| x.untaint if RUBY_VERSION < "2.7" }
363
+ stub.full_gem_path = Pathname.new(file).dirname.expand_path(root).to_s
363
364
  StubSpecification.from_stub(stub)
364
365
  end
365
366