rubygems-update 3.4.22 → 3.5.0

Sign up to get free protection for your applications and to get access to all the features.
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