rubygems-update 3.4.22 → 3.5.1

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 (540) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +105 -2
  3. data/Manifest.txt +46 -221
  4. data/README.md +1 -3
  5. data/bundler/CHANGELOG.md +63 -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 +254 -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 +46 -30
  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/.document +1 -0
  134. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  135. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +53 -6
  136. data/bundler/lib/bundler/vendor/fileutils/.document +1 -0
  137. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +8 -20
  138. data/bundler/lib/bundler/vendor/net-http-persistent/.document +1 -0
  139. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +3 -3
  140. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +2 -2
  141. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +1 -1
  142. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +34 -34
  143. data/bundler/lib/bundler/vendor/pub_grub/.document +1 -0
  144. data/bundler/lib/bundler/vendor/thor/.document +1 -0
  145. data/bundler/lib/bundler/vendor/tsort/.document +1 -0
  146. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +3 -0
  147. data/bundler/lib/bundler/vendor/uri/.document +1 -0
  148. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +256 -132
  149. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1 -0
  150. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +95 -31
  151. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  152. data/bundler/lib/bundler/vendored_net_http.rb +8 -0
  153. data/bundler/lib/bundler/vendored_persistent.rb +0 -4
  154. data/bundler/lib/bundler/vendored_timeout.rb +8 -0
  155. data/bundler/lib/bundler/version.rb +1 -1
  156. data/bundler/lib/bundler/vlad.rb +1 -1
  157. data/bundler/lib/bundler/yaml_serializer.rb +3 -3
  158. data/bundler/lib/bundler.rb +41 -32
  159. data/lib/rubygems/available_set.rb +4 -4
  160. data/lib/rubygems/basic_specification.rb +35 -37
  161. data/lib/rubygems/bundler_version_finder.rb +4 -4
  162. data/lib/rubygems/ci_detector.rb +75 -0
  163. data/lib/rubygems/command.rb +13 -15
  164. data/lib/rubygems/command_manager.rb +5 -4
  165. data/lib/rubygems/commands/build_command.rb +2 -2
  166. data/lib/rubygems/commands/cert_command.rb +1 -2
  167. data/lib/rubygems/commands/check_command.rb +4 -4
  168. data/lib/rubygems/commands/cleanup_command.rb +12 -14
  169. data/lib/rubygems/commands/contents_command.rb +4 -4
  170. data/lib/rubygems/commands/dependency_command.rb +4 -5
  171. data/lib/rubygems/commands/environment_command.rb +1 -3
  172. data/lib/rubygems/commands/exec_command.rb +1 -1
  173. data/lib/rubygems/commands/fetch_command.rb +2 -2
  174. data/lib/rubygems/commands/generate_index_command.rb +39 -74
  175. data/lib/rubygems/commands/help_command.rb +3 -3
  176. data/lib/rubygems/commands/info_command.rb +2 -2
  177. data/lib/rubygems/commands/install_command.rb +8 -16
  178. data/lib/rubygems/commands/list_command.rb +2 -2
  179. data/lib/rubygems/commands/lock_command.rb +1 -1
  180. data/lib/rubygems/commands/open_command.rb +1 -1
  181. data/lib/rubygems/commands/owner_command.rb +1 -1
  182. data/lib/rubygems/commands/pristine_command.rb +13 -15
  183. data/lib/rubygems/commands/push_command.rb +2 -2
  184. data/lib/rubygems/commands/query_command.rb +4 -5
  185. data/lib/rubygems/commands/rdoc_command.rb +2 -2
  186. data/lib/rubygems/commands/search_command.rb +2 -2
  187. data/lib/rubygems/commands/setup_command.rb +31 -34
  188. data/lib/rubygems/commands/sources_command.rb +12 -12
  189. data/lib/rubygems/commands/specification_command.rb +10 -10
  190. data/lib/rubygems/commands/stale_command.rb +1 -1
  191. data/lib/rubygems/commands/uninstall_command.rb +9 -10
  192. data/lib/rubygems/commands/unpack_command.rb +4 -4
  193. data/lib/rubygems/commands/update_command.rb +10 -12
  194. data/lib/rubygems/commands/which_command.rb +1 -1
  195. data/lib/rubygems/commands/yank_command.rb +1 -1
  196. data/lib/rubygems/compatibility.rb +5 -6
  197. data/lib/rubygems/config_file.rb +4 -4
  198. data/lib/rubygems/core_ext/kernel_gem.rb +0 -2
  199. data/lib/rubygems/core_ext/kernel_require.rb +19 -48
  200. data/lib/rubygems/core_ext/kernel_warn.rb +1 -1
  201. data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
  202. data/lib/rubygems/defaults.rb +15 -3
  203. data/lib/rubygems/dependency.rb +12 -14
  204. data/lib/rubygems/dependency_installer.rb +29 -30
  205. data/lib/rubygems/dependency_list.rb +1 -1
  206. data/lib/rubygems/deprecate.rb +16 -15
  207. data/lib/rubygems/doctor.rb +5 -5
  208. data/lib/rubygems/errors.rb +2 -6
  209. data/lib/rubygems/exceptions.rb +2 -1
  210. data/lib/rubygems/ext/builder.rb +15 -10
  211. data/lib/rubygems/ext/cargo_builder.rb +5 -5
  212. data/lib/rubygems/ext/ext_conf_builder.rb +1 -3
  213. data/lib/rubygems/gem_runner.rb +4 -4
  214. data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +3 -3
  215. data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +3 -3
  216. data/lib/rubygems/gemcutter_utilities.rb +18 -19
  217. data/lib/rubygems/install_update_options.rb +18 -19
  218. data/lib/rubygems/installer.rb +59 -33
  219. data/lib/rubygems/installer_uninstaller_utils.rb +0 -2
  220. data/lib/rubygems/local_remote_options.rb +7 -10
  221. data/lib/rubygems/name_tuple.rb +7 -9
  222. data/lib/rubygems/net/http.rb +3 -0
  223. data/lib/rubygems/net-http/.document +1 -0
  224. data/lib/rubygems/net-http/LICENSE.txt +22 -0
  225. data/lib/rubygems/net-http/lib/net/http/backward.rb +40 -0
  226. data/lib/rubygems/net-http/lib/net/http/exceptions.rb +34 -0
  227. data/lib/rubygems/net-http/lib/net/http/generic_request.rb +414 -0
  228. data/lib/rubygems/net-http/lib/net/http/header.rb +981 -0
  229. data/lib/rubygems/net-http/lib/net/http/proxy_delta.rb +17 -0
  230. data/lib/rubygems/net-http/lib/net/http/request.rb +88 -0
  231. data/lib/rubygems/net-http/lib/net/http/requests.rb +425 -0
  232. data/lib/rubygems/net-http/lib/net/http/response.rb +738 -0
  233. data/lib/rubygems/net-http/lib/net/http/responses.rb +1174 -0
  234. data/lib/rubygems/net-http/lib/net/http/status.rb +84 -0
  235. data/lib/rubygems/net-http/lib/net/http.rb +2496 -0
  236. data/lib/rubygems/net-http/lib/net/https.rb +23 -0
  237. data/lib/rubygems/net-protocol/.document +1 -0
  238. data/lib/rubygems/net-protocol/LICENSE.txt +22 -0
  239. data/lib/rubygems/net-protocol/lib/net/protocol.rb +544 -0
  240. data/lib/rubygems/optparse/lib/optparse.rb +39 -17
  241. data/lib/rubygems/package/old.rb +2 -2
  242. data/lib/rubygems/package/tar_header.rb +45 -39
  243. data/lib/rubygems/package/tar_reader/entry.rb +5 -4
  244. data/lib/rubygems/package/tar_reader.rb +5 -3
  245. data/lib/rubygems/package/tar_writer.rb +19 -17
  246. data/lib/rubygems/package.rb +27 -26
  247. data/lib/rubygems/package_task.rb +2 -2
  248. data/lib/rubygems/path_support.rb +9 -10
  249. data/lib/rubygems/platform.rb +60 -45
  250. data/lib/rubygems/query_utils.rb +7 -9
  251. data/lib/rubygems/remote_fetcher.rb +15 -15
  252. data/lib/rubygems/request/connection_pools.rb +3 -3
  253. data/lib/rubygems/request.rb +20 -17
  254. data/lib/rubygems/request_set/gem_dependency_api.rb +119 -122
  255. data/lib/rubygems/request_set/lockfile/parser.rb +9 -9
  256. data/lib/rubygems/request_set/lockfile/tokenizer.rb +20 -12
  257. data/lib/rubygems/request_set/lockfile.rb +6 -11
  258. data/lib/rubygems/request_set.rb +5 -5
  259. data/lib/rubygems/requirement.rb +7 -7
  260. data/lib/rubygems/resolv/.document +1 -0
  261. data/lib/rubygems/resolv/LICENSE.txt +22 -0
  262. data/lib/rubygems/resolv/lib/resolv.rb +3387 -0
  263. data/lib/rubygems/resolver/activation_request.rb +1 -3
  264. data/lib/rubygems/resolver/api_set/gem_parser.rb +7 -3
  265. data/lib/rubygems/resolver/best_set.rb +1 -1
  266. data/lib/rubygems/resolver/composed_set.rb +1 -1
  267. data/lib/rubygems/resolver/conflict.rb +4 -12
  268. data/lib/rubygems/resolver/index_set.rb +4 -4
  269. data/lib/rubygems/resolver/index_specification.rb +2 -2
  270. data/lib/rubygems/resolver/installer_set.rb +5 -6
  271. data/lib/rubygems/resolver/lock_set.rb +1 -1
  272. data/lib/rubygems/resolver/molinillo/.document +1 -0
  273. data/lib/rubygems/resolver.rb +3 -10
  274. data/lib/rubygems/s3_uri_signer.rb +6 -6
  275. data/lib/rubygems/safe_marshal/elements.rb +138 -0
  276. data/lib/rubygems/safe_marshal/reader.rb +306 -0
  277. data/lib/rubygems/safe_marshal/visitors/stream_printer.rb +31 -0
  278. data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +385 -0
  279. data/lib/rubygems/safe_marshal/visitors/visitor.rb +74 -0
  280. data/lib/rubygems/safe_marshal.rb +74 -0
  281. data/lib/rubygems/safe_yaml.rb +5 -28
  282. data/lib/rubygems/security/policies.rb +36 -38
  283. data/lib/rubygems/security/policy.rb +7 -11
  284. data/lib/rubygems/security/signer.rb +1 -1
  285. data/lib/rubygems/security/trust_dir.rb +3 -3
  286. data/lib/rubygems/security.rb +8 -22
  287. data/lib/rubygems/source/git.rb +1 -3
  288. data/lib/rubygems/source/installed.rb +0 -2
  289. data/lib/rubygems/source/local.rb +5 -8
  290. data/lib/rubygems/source/lock.rb +1 -3
  291. data/lib/rubygems/source/specific_file.rb +0 -1
  292. data/lib/rubygems/source/vendor.rb +0 -2
  293. data/lib/rubygems/source.rb +12 -12
  294. data/lib/rubygems/source_list.rb +4 -4
  295. data/lib/rubygems/spec_fetcher.rb +29 -29
  296. data/lib/rubygems/specification.rb +125 -138
  297. data/lib/rubygems/specification_policy.rb +55 -25
  298. data/lib/rubygems/stub_specification.rb +4 -5
  299. data/lib/rubygems/text.rb +1 -2
  300. data/lib/rubygems/timeout/.document +1 -0
  301. data/lib/rubygems/timeout/LICENSE.txt +22 -0
  302. data/lib/rubygems/timeout/lib/timeout.rb +199 -0
  303. data/lib/rubygems/timeout.rb +3 -0
  304. data/lib/rubygems/tsort/lib/tsort.rb +3 -0
  305. data/lib/rubygems/uninstaller.rb +7 -9
  306. data/lib/rubygems/update_suggestion.rb +5 -18
  307. data/lib/rubygems/uri_formatter.rb +1 -1
  308. data/lib/rubygems/user_interaction.rb +15 -21
  309. data/lib/rubygems/util/licenses.rb +65 -35
  310. data/lib/rubygems/util/list.rb +3 -1
  311. data/lib/rubygems/util.rb +2 -4
  312. data/lib/rubygems/validator.rb +5 -3
  313. data/lib/rubygems/version.rb +34 -28
  314. data/lib/rubygems/version_option.rb +2 -5
  315. data/lib/rubygems/yaml_serializer.rb +3 -3
  316. data/lib/rubygems.rb +37 -37
  317. data/rubygems-update.gemspec +4 -4
  318. data/setup.rb +2 -2
  319. metadata +50 -225
  320. data/lib/rubygems/indexer.rb +0 -428
  321. data/lib/rubygems/mock_gem_ui.rb +0 -86
  322. data/test/rubygems/alternate_cert.pem +0 -19
  323. data/test/rubygems/alternate_cert_32.pem +0 -19
  324. data/test/rubygems/alternate_key.pem +0 -27
  325. data/test/rubygems/bad_rake.rb +0 -3
  326. data/test/rubygems/bundler_test_gem.rb +0 -424
  327. data/test/rubygems/ca_cert.pem +0 -77
  328. data/test/rubygems/child_cert.pem +0 -19
  329. data/test/rubygems/child_cert_32.pem +0 -19
  330. data/test/rubygems/child_key.pem +0 -27
  331. data/test/rubygems/client.pem +0 -107
  332. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  333. data/test/rubygems/data/gem-private_key.pem +0 -27
  334. data/test/rubygems/data/gem-public_cert.pem +0 -20
  335. data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
  336. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  337. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  338. data/test/rubygems/encrypted_private_key.pem +0 -30
  339. data/test/rubygems/expired_cert.pem +0 -19
  340. data/test/rubygems/fake_certlib/openssl.rb +0 -9
  341. data/test/rubygems/foo/discover.rb +0 -1
  342. data/test/rubygems/future_cert.pem +0 -19
  343. data/test/rubygems/future_cert_32.pem +0 -19
  344. data/test/rubygems/good_rake.rb +0 -3
  345. data/test/rubygems/grandchild_cert.pem +0 -19
  346. data/test/rubygems/grandchild_cert_32.pem +0 -19
  347. data/test/rubygems/grandchild_key.pem +0 -27
  348. data/test/rubygems/helper.rb +0 -1649
  349. data/test/rubygems/installer_test_case.rb +0 -248
  350. data/test/rubygems/invalid_client.pem +0 -49
  351. data/test/rubygems/invalid_issuer_cert.pem +0 -20
  352. data/test/rubygems/invalid_issuer_cert_32.pem +0 -20
  353. data/test/rubygems/invalid_key.pem +0 -27
  354. data/test/rubygems/invalid_signer_cert.pem +0 -19
  355. data/test/rubygems/invalid_signer_cert_32.pem +0 -19
  356. data/test/rubygems/invalidchild_cert.pem +0 -19
  357. data/test/rubygems/invalidchild_cert_32.pem +0 -19
  358. data/test/rubygems/invalidchild_key.pem +0 -27
  359. data/test/rubygems/multifactor_auth_utilities.rb +0 -111
  360. data/test/rubygems/package/tar_test_case.rb +0 -175
  361. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  362. data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
  363. data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
  364. data/test/rubygems/plugin/exception/rubygems_plugin.rb +0 -4
  365. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -5
  366. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +0 -4
  367. data/test/rubygems/private3072_key.pem +0 -40
  368. data/test/rubygems/private_ec_key.pem +0 -9
  369. data/test/rubygems/private_key.pem +0 -27
  370. data/test/rubygems/public3072_cert.pem +0 -25
  371. data/test/rubygems/public_cert.pem +0 -20
  372. data/test/rubygems/public_cert_32.pem +0 -19
  373. data/test/rubygems/public_key.pem +0 -9
  374. data/test/rubygems/rubygems/commands/crash_command.rb +0 -5
  375. data/test/rubygems/rubygems_plugin.rb +0 -24
  376. data/test/rubygems/sff/discover.rb +0 -1
  377. data/test/rubygems/simple_gem.rb +0 -68
  378. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -9
  379. data/test/rubygems/specifications/foo-0.0.1-x86-mswin32.gemspec +0 -0
  380. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +0 -14
  381. data/test/rubygems/ssl_cert.pem +0 -80
  382. data/test/rubygems/ssl_key.pem +0 -27
  383. data/test/rubygems/test_bundled_ca.rb +0 -61
  384. data/test/rubygems/test_config.rb +0 -28
  385. data/test/rubygems/test_deprecate.rb +0 -158
  386. data/test/rubygems/test_exit.rb +0 -17
  387. data/test/rubygems/test_gem.rb +0 -1799
  388. data/test/rubygems/test_gem_available_set.rb +0 -130
  389. data/test/rubygems/test_gem_bundler_version_finder.rb +0 -127
  390. data/test/rubygems/test_gem_command.rb +0 -403
  391. data/test/rubygems/test_gem_command_manager.rb +0 -400
  392. data/test/rubygems/test_gem_commands_build_command.rb +0 -739
  393. data/test/rubygems/test_gem_commands_cert_command.rb +0 -866
  394. data/test/rubygems/test_gem_commands_check_command.rb +0 -68
  395. data/test/rubygems/test_gem_commands_cleanup_command.rb +0 -292
  396. data/test/rubygems/test_gem_commands_contents_command.rb +0 -271
  397. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -228
  398. data/test/rubygems/test_gem_commands_environment_command.rb +0 -169
  399. data/test/rubygems/test_gem_commands_exec_command.rb +0 -857
  400. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -258
  401. data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -81
  402. data/test/rubygems/test_gem_commands_help_command.rb +0 -94
  403. data/test/rubygems/test_gem_commands_info_command.rb +0 -70
  404. data/test/rubygems/test_gem_commands_install_command.rb +0 -1573
  405. data/test/rubygems/test_gem_commands_list_command.rb +0 -33
  406. data/test/rubygems/test_gem_commands_lock_command.rb +0 -67
  407. data/test/rubygems/test_gem_commands_mirror.rb +0 -20
  408. data/test/rubygems/test_gem_commands_open_command.rb +0 -101
  409. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -50
  410. data/test/rubygems/test_gem_commands_owner_command.rb +0 -503
  411. data/test/rubygems/test_gem_commands_pristine_command.rb +0 -708
  412. data/test/rubygems/test_gem_commands_push_command.rb +0 -603
  413. data/test/rubygems/test_gem_commands_query_command.rb +0 -858
  414. data/test/rubygems/test_gem_commands_search_command.rb +0 -16
  415. data/test/rubygems/test_gem_commands_server_command.rb +0 -20
  416. data/test/rubygems/test_gem_commands_setup_command.rb +0 -474
  417. data/test/rubygems/test_gem_commands_signin_command.rb +0 -259
  418. data/test/rubygems/test_gem_commands_signout_command.rb +0 -30
  419. data/test/rubygems/test_gem_commands_sources_command.rb +0 -534
  420. data/test/rubygems/test_gem_commands_specification_command.rb +0 -277
  421. data/test/rubygems/test_gem_commands_stale_command.rb +0 -43
  422. data/test/rubygems/test_gem_commands_uninstall_command.rb +0 -542
  423. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -224
  424. data/test/rubygems/test_gem_commands_update_command.rb +0 -836
  425. data/test/rubygems/test_gem_commands_which_command.rb +0 -85
  426. data/test/rubygems/test_gem_commands_yank_command.rb +0 -299
  427. data/test/rubygems/test_gem_config_file.rb +0 -551
  428. data/test/rubygems/test_gem_dependency.rb +0 -398
  429. data/test/rubygems/test_gem_dependency_installer.rb +0 -1190
  430. data/test/rubygems/test_gem_dependency_list.rb +0 -265
  431. data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -27
  432. data/test/rubygems/test_gem_doctor.rb +0 -195
  433. data/test/rubygems/test_gem_ext_builder.rb +0 -337
  434. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +0 -1
  435. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +0 -10
  436. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +0 -249
  437. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +0 -10
  438. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +0 -27
  439. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +0 -3
  440. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +0 -1
  441. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +0 -249
  442. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +0 -10
  443. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +0 -10
  444. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +0 -51
  445. data/test/rubygems/test_gem_ext_cargo_builder.rb +0 -167
  446. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +0 -34
  447. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +0 -60
  448. data/test/rubygems/test_gem_ext_cmake_builder.rb +0 -84
  449. data/test/rubygems/test_gem_ext_configure_builder.rb +0 -80
  450. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -229
  451. data/test/rubygems/test_gem_ext_rake_builder.rb +0 -113
  452. data/test/rubygems/test_gem_gem_runner.rb +0 -119
  453. data/test/rubygems/test_gem_gemcutter_utilities.rb +0 -361
  454. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -60
  455. data/test/rubygems/test_gem_indexer.rb +0 -381
  456. data/test/rubygems/test_gem_install_update_options.rb +0 -208
  457. data/test/rubygems/test_gem_installer.rb +0 -2512
  458. data/test/rubygems/test_gem_local_remote_options.rb +0 -133
  459. data/test/rubygems/test_gem_name_tuple.rb +0 -43
  460. data/test/rubygems/test_gem_package.rb +0 -1306
  461. data/test/rubygems/test_gem_package_old.rb +0 -91
  462. data/test/rubygems/test_gem_package_tar_header.rb +0 -226
  463. data/test/rubygems/test_gem_package_tar_reader.rb +0 -150
  464. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -350
  465. data/test/rubygems/test_gem_package_tar_writer.rb +0 -331
  466. data/test/rubygems/test_gem_package_task.rb +0 -118
  467. data/test/rubygems/test_gem_path_support.rb +0 -139
  468. data/test/rubygems/test_gem_platform.rb +0 -497
  469. data/test/rubygems/test_gem_rdoc.rb +0 -137
  470. data/test/rubygems/test_gem_remote_fetcher.rb +0 -1227
  471. data/test/rubygems/test_gem_request.rb +0 -547
  472. data/test/rubygems/test_gem_request_connection_pools.rb +0 -152
  473. data/test/rubygems/test_gem_request_set.rb +0 -672
  474. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +0 -853
  475. data/test/rubygems/test_gem_request_set_lockfile.rb +0 -469
  476. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +0 -544
  477. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +0 -307
  478. data/test/rubygems/test_gem_requirement.rb +0 -505
  479. data/test/rubygems/test_gem_resolver.rb +0 -859
  480. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -43
  481. data/test/rubygems/test_gem_resolver_api_set.rb +0 -210
  482. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -167
  483. data/test/rubygems/test_gem_resolver_best_set.rb +0 -159
  484. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -44
  485. data/test/rubygems/test_gem_resolver_conflict.rb +0 -82
  486. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -83
  487. data/test/rubygems/test_gem_resolver_git_set.rb +0 -188
  488. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -114
  489. data/test/rubygems/test_gem_resolver_index_set.rb +0 -88
  490. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -93
  491. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -47
  492. data/test/rubygems/test_gem_resolver_installer_set.rb +0 -320
  493. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -44
  494. data/test/rubygems/test_gem_resolver_lock_set.rb +0 -62
  495. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -98
  496. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -19
  497. data/test/rubygems/test_gem_resolver_specification.rb +0 -63
  498. data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -82
  499. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -82
  500. data/test/rubygems/test_gem_security.rb +0 -341
  501. data/test/rubygems/test_gem_security_policy.rb +0 -535
  502. data/test/rubygems/test_gem_security_signer.rb +0 -218
  503. data/test/rubygems/test_gem_security_trust_dir.rb +0 -99
  504. data/test/rubygems/test_gem_silent_ui.rb +0 -123
  505. data/test/rubygems/test_gem_source.rb +0 -254
  506. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -37
  507. data/test/rubygems/test_gem_source_git.rb +0 -310
  508. data/test/rubygems/test_gem_source_installed.rb +0 -35
  509. data/test/rubygems/test_gem_source_list.rb +0 -119
  510. data/test/rubygems/test_gem_source_local.rb +0 -107
  511. data/test/rubygems/test_gem_source_lock.rb +0 -113
  512. data/test/rubygems/test_gem_source_specific_file.rb +0 -76
  513. data/test/rubygems/test_gem_source_subpath_problem.rb +0 -50
  514. data/test/rubygems/test_gem_source_vendor.rb +0 -30
  515. data/test/rubygems/test_gem_spec_fetcher.rb +0 -338
  516. data/test/rubygems/test_gem_specification.rb +0 -3856
  517. data/test/rubygems/test_gem_stream_ui.rb +0 -255
  518. data/test/rubygems/test_gem_stub_specification.rb +0 -278
  519. data/test/rubygems/test_gem_text.rb +0 -103
  520. data/test/rubygems/test_gem_uninstaller.rb +0 -675
  521. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -31
  522. data/test/rubygems/test_gem_update_suggestion.rb +0 -209
  523. data/test/rubygems/test_gem_uri.rb +0 -41
  524. data/test/rubygems/test_gem_uri_formatter.rb +0 -27
  525. data/test/rubygems/test_gem_util.rb +0 -91
  526. data/test/rubygems/test_gem_validator.rb +0 -42
  527. data/test/rubygems/test_gem_version.rb +0 -305
  528. data/test/rubygems/test_gem_version_option.rb +0 -165
  529. data/test/rubygems/test_kernel.rb +0 -124
  530. data/test/rubygems/test_project_sanity.rb +0 -49
  531. data/test/rubygems/test_remote_fetch_error.rb +0 -20
  532. data/test/rubygems/test_require.rb +0 -732
  533. data/test/rubygems/test_rubygems.rb +0 -76
  534. data/test/rubygems/test_webauthn_listener.rb +0 -143
  535. data/test/rubygems/test_webauthn_listener_response.rb +0 -93
  536. data/test/rubygems/test_webauthn_poller.rb +0 -124
  537. data/test/rubygems/utilities.rb +0 -436
  538. data/test/rubygems/wrong_key_cert.pem +0 -19
  539. data/test/rubygems/wrong_key_cert_32.pem +0 -19
  540. data/test/test_changelog_generator.rb +0 -17
@@ -70,7 +70,7 @@ class Gem::Package::Old < Gem::Package
70
70
  file_data << line
71
71
  end
72
72
 
73
- file_data = file_data.strip.unpack("m")[0]
73
+ file_data = file_data.strip.unpack1("m")
74
74
  file_data = Zlib::Inflate.inflate file_data
75
75
 
76
76
  raise Gem::Package::FormatError, "#{full_name} in #{@gem} is corrupt" if
@@ -78,7 +78,7 @@ class Gem::Package::Old < Gem::Package
78
78
 
79
79
  FileUtils.rm_rf destination
80
80
 
81
- FileUtils.mkdir_p File.dirname(destination), :mode => dir_mode && 0o755
81
+ FileUtils.mkdir_p File.dirname(destination), mode: dir_mode && 0o755
82
82
 
83
83
  File.open destination, "wb", file_mode(entry["mode"]) do |out|
84
84
  out.write file_data
@@ -1,9 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- #--
3
+ # rubocop:disable Style/AsciiComments
4
+
4
5
  # Copyright (C) 2004 Mauricio Julio Fernández Pradier
5
6
  # See LICENSE.txt for additional licensing information.
6
- #++
7
+
8
+ # rubocop:enable Style/AsciiComments
7
9
 
8
10
  ##
9
11
  #--
@@ -100,32 +102,33 @@ class Gem::Package::TarHeader
100
102
 
101
103
  def self.from(stream)
102
104
  header = stream.read 512
103
- empty = (EMPTY_HEADER == header)
105
+ empty = (header == EMPTY_HEADER)
104
106
 
105
107
  fields = header.unpack UNPACK_FORMAT
106
108
 
107
- new :name => fields.shift,
108
- :mode => strict_oct(fields.shift),
109
- :uid => oct_or_256based(fields.shift),
110
- :gid => oct_or_256based(fields.shift),
111
- :size => strict_oct(fields.shift),
112
- :mtime => strict_oct(fields.shift),
113
- :checksum => strict_oct(fields.shift),
114
- :typeflag => fields.shift,
115
- :linkname => fields.shift,
116
- :magic => fields.shift,
117
- :version => strict_oct(fields.shift),
118
- :uname => fields.shift,
119
- :gname => fields.shift,
120
- :devmajor => strict_oct(fields.shift),
121
- :devminor => strict_oct(fields.shift),
122
- :prefix => fields.shift,
123
-
124
- :empty => empty
109
+ new name: fields.shift,
110
+ mode: strict_oct(fields.shift),
111
+ uid: oct_or_256based(fields.shift),
112
+ gid: oct_or_256based(fields.shift),
113
+ size: strict_oct(fields.shift),
114
+ mtime: strict_oct(fields.shift),
115
+ checksum: strict_oct(fields.shift),
116
+ typeflag: fields.shift,
117
+ linkname: fields.shift,
118
+ magic: fields.shift,
119
+ version: strict_oct(fields.shift),
120
+ uname: fields.shift,
121
+ gname: fields.shift,
122
+ devmajor: strict_oct(fields.shift),
123
+ devminor: strict_oct(fields.shift),
124
+ prefix: fields.shift,
125
+
126
+ empty: empty
125
127
  end
126
128
 
127
129
  def self.strict_oct(str)
128
- return str.strip.oct if /\A[0-7]*\z/.match?(str.strip)
130
+ str.strip!
131
+ return str.oct if /\A[0-7]*\z/.match?(str)
129
132
 
130
133
  raise ArgumentError, "#{str.inspect} is not an octal string"
131
134
  end
@@ -135,7 +138,8 @@ class Gem::Package::TarHeader
135
138
  # \ff flags a negative 256-based number
136
139
  # In case we have a match, parse it as a signed binary value
137
140
  # in big-endian order, except that the high-order bit is ignored.
138
- return str.unpack("N2").last if /\A[\x80\xff]/n.match?(str)
141
+
142
+ return str.unpack1("@4N") if /\A[\x80\xff]/n.match?(str)
139
143
  strict_oct(str)
140
144
  end
141
145
 
@@ -147,21 +151,23 @@ class Gem::Package::TarHeader
147
151
  raise ArgumentError, ":name, :size, :prefix and :mode required"
148
152
  end
149
153
 
150
- vals[:uid] ||= 0
151
- vals[:gid] ||= 0
152
- vals[:mtime] ||= 0
153
- vals[:checksum] ||= ""
154
- vals[:typeflag] = "0" if vals[:typeflag].nil? || vals[:typeflag].empty?
155
- vals[:magic] ||= "ustar"
156
- vals[:version] ||= "00"
157
- vals[:uname] ||= "wheel"
158
- vals[:gname] ||= "wheel"
159
- vals[:devmajor] ||= 0
160
- vals[:devminor] ||= 0
161
-
162
- FIELDS.each do |name|
163
- instance_variable_set "@#{name}", vals[name]
164
- end
154
+ @checksum = vals[:checksum] || ""
155
+ @devmajor = vals[:devmajor] || 0
156
+ @devminor = vals[:devminor] || 0
157
+ @gid = vals[:gid] || 0
158
+ @gname = vals[:gname] || "wheel"
159
+ @linkname = vals[:linkname]
160
+ @magic = vals[:magic] || "ustar"
161
+ @mode = vals[:mode]
162
+ @mtime = vals[:mtime] || 0
163
+ @name = vals[:name]
164
+ @prefix = vals[:prefix]
165
+ @size = vals[:size]
166
+ @typeflag = vals[:typeflag]
167
+ @typeflag = "0" if @typeflag.nil? || @typeflag.empty?
168
+ @uid = vals[:uid] || 0
169
+ @uname = vals[:uname] || "wheel"
170
+ @version = vals[:version] || "00"
165
171
 
166
172
  @empty = vals[:empty]
167
173
  end
@@ -239,6 +245,6 @@ class Gem::Package::TarHeader
239
245
  end
240
246
 
241
247
  def oct(num, len)
242
- "%0#{len}o" % num
248
+ format("%0#{len}o", num)
243
249
  end
244
250
  end
@@ -1,9 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- #++
3
+ # rubocop:disable Style/AsciiComments
4
+
4
5
  # Copyright (C) 2004 Mauricio Julio Fernández Pradier
5
6
  # See LICENSE.txt for additional licensing information.
6
- #--
7
+
8
+ # rubocop:enable Style/AsciiComments
7
9
 
8
10
  ##
9
11
  # Class for reading entries out of a tar file
@@ -143,14 +145,13 @@ class Gem::Package::TarReader::Entry
143
145
 
144
146
  def pos=(new_pos)
145
147
  seek(new_pos, IO::SEEK_SET)
146
- new_pos
147
148
  end
148
149
 
149
150
  def size
150
151
  @header.size
151
152
  end
152
153
 
153
- alias length size
154
+ alias_method :length, :size
154
155
 
155
156
  ##
156
157
  # Reads +maxlen+ bytes from the tar file entry, or the rest of the entry if nil
@@ -1,9 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- #--
3
+ # rubocop:disable Style/AsciiComments
4
+
4
5
  # Copyright (C) 2004 Mauricio Julio Fernández Pradier
5
6
  # See LICENSE.txt for additional licensing information.
6
- #++
7
+
8
+ # rubocop:enable Style/AsciiComments
7
9
 
8
10
  ##
9
11
  # TarReader reads tar files and allows iteration over their items
@@ -65,7 +67,7 @@ class Gem::Package::TarReader
65
67
  end
66
68
  end
67
69
 
68
- alias each_entry each
70
+ alias_method :each_entry, :each
69
71
 
70
72
  ##
71
73
  # NOTE: Do not call #rewind during #each
@@ -1,9 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- #--
3
+ # rubocop:disable Style/AsciiComments
4
+
4
5
  # Copyright (C) 2004 Mauricio Julio Fernández Pradier
5
6
  # See LICENSE.txt for additional licensing information.
6
- #++
7
+
8
+ # rubocop:enable Style/AsciiComments
7
9
 
8
10
  ##
9
11
  # Allows writing of tar files
@@ -114,9 +116,9 @@ class Gem::Package::TarWriter
114
116
  final_pos = @io.pos
115
117
  @io.pos = init_pos
116
118
 
117
- header = Gem::Package::TarHeader.new :name => name, :mode => mode,
118
- :size => size, :prefix => prefix,
119
- :mtime => Gem.source_date_epoch
119
+ header = Gem::Package::TarHeader.new name: name, mode: mode,
120
+ size: size, prefix: prefix,
121
+ mtime: Gem.source_date_epoch
120
122
 
121
123
  @io.write header
122
124
  @io.pos = final_pos
@@ -207,9 +209,9 @@ class Gem::Package::TarWriter
207
209
 
208
210
  name, prefix = split_name name
209
211
 
210
- header = Gem::Package::TarHeader.new(:name => name, :mode => mode,
211
- :size => size, :prefix => prefix,
212
- :mtime => Gem.source_date_epoch).to_s
212
+ header = Gem::Package::TarHeader.new(name: name, mode: mode,
213
+ size: size, prefix: prefix,
214
+ mtime: Gem.source_date_epoch).to_s
213
215
 
214
216
  @io.write header
215
217
  os = BoundedStream.new @io, size
@@ -233,11 +235,11 @@ class Gem::Package::TarWriter
233
235
 
234
236
  name, prefix = split_name name
235
237
 
236
- header = Gem::Package::TarHeader.new(:name => name, :mode => mode,
237
- :size => 0, :typeflag => "2",
238
- :linkname => target,
239
- :prefix => prefix,
240
- :mtime => Gem.source_date_epoch).to_s
238
+ header = Gem::Package::TarHeader.new(name: name, mode: mode,
239
+ size: 0, typeflag: "2",
240
+ linkname: target,
241
+ prefix: prefix,
242
+ mtime: Gem.source_date_epoch).to_s
241
243
 
242
244
  @io.write header
243
245
 
@@ -287,10 +289,10 @@ class Gem::Package::TarWriter
287
289
 
288
290
  name, prefix = split_name(name)
289
291
 
290
- header = Gem::Package::TarHeader.new :name => name, :mode => mode,
291
- :typeflag => "5", :size => 0,
292
- :prefix => prefix,
293
- :mtime => Gem.source_date_epoch
292
+ header = Gem::Package::TarHeader.new name: name, mode: mode,
293
+ typeflag: "5", size: 0,
294
+ prefix: prefix,
295
+ mtime: Gem.source_date_epoch
294
296
 
295
297
  @io.write header
296
298
 
@@ -1,9 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- #--
3
+ # rubocop:disable Style/AsciiComments
4
+
4
5
  # Copyright (C) 2004 Mauricio Julio Fernández Pradier
5
6
  # See LICENSE.txt for additional licensing information.
6
- #++
7
+
8
+ # rubocop:enable Style/AsciiComments
7
9
 
8
10
  require_relative "../rubygems"
9
11
  require_relative "security"
@@ -59,7 +61,7 @@ class Gem::Package
59
61
  if source
60
62
  @path = source.path
61
63
 
62
- message = message + " in #{path}" if path
64
+ message += " in #{path}" if path
63
65
  end
64
66
 
65
67
  super message
@@ -68,15 +70,13 @@ class Gem::Package
68
70
 
69
71
  class PathError < Error
70
72
  def initialize(destination, destination_dir)
71
- super "installing into parent path %s of %s is not allowed" %
72
- [destination, destination_dir]
73
+ super format("installing into parent path %s of %s is not allowed", destination, destination_dir)
73
74
  end
74
75
  end
75
76
 
76
77
  class SymlinkError < Error
77
78
  def initialize(name, destination, destination_dir)
78
- super "installing symlink '%s' pointing to parent path %s of %s is not allowed" %
79
- [name, destination, destination_dir]
79
+ super format("installing symlink '%s' pointing to parent path %s of %s is not allowed", name, destination, destination_dir)
80
80
  end
81
81
  end
82
82
 
@@ -155,7 +155,7 @@ class Gem::Package
155
155
  Gem::Package::FileSource.new gem
156
156
  end
157
157
 
158
- return super unless Gem::Package == self
158
+ return super unless self == Gem::Package
159
159
  return super unless gem.present?
160
160
 
161
161
  return super unless gem.start
@@ -357,18 +357,21 @@ EOM
357
357
 
358
358
  def digest(entry) # :nodoc:
359
359
  algorithms = if @checksums
360
- @checksums.keys
361
- else
362
- [Gem::Security::DIGEST_NAME].compact
360
+ @checksums.to_h {|algorithm, _| [algorithm, Gem::Security.create_digest(algorithm)] }
361
+ elsif Gem::Security::DIGEST_NAME
362
+ { Gem::Security::DIGEST_NAME => Gem::Security.create_digest(Gem::Security::DIGEST_NAME) }
363
363
  end
364
364
 
365
- algorithms.each do |algorithm|
366
- digester = Gem::Security.create_digest(algorithm)
365
+ return @digests if algorithms.nil? || algorithms.empty?
367
366
 
368
- digester << entry.readpartial(16_384) until entry.eof?
369
-
370
- entry.rewind
367
+ buf = String.new(capacity: 16_384, encoding: Encoding::BINARY)
368
+ until entry.eof?
369
+ entry.readpartial(16_384, buf)
370
+ algorithms.each_value {|digester| digester << buf }
371
+ end
372
+ entry.rewind
371
373
 
374
+ algorithms.each do |algorithm, digester|
372
375
  @digests[algorithm][entry.full_name] = digester
373
376
  end
374
377
 
@@ -384,7 +387,7 @@ EOM
384
387
  def extract_files(destination_dir, pattern = "*")
385
388
  verify unless @spec
386
389
 
387
- FileUtils.mkdir_p destination_dir, :mode => dir_mode && 0o755
390
+ FileUtils.mkdir_p destination_dir, mode: dir_mode && 0o755
388
391
 
389
392
  @gem.with_read_io do |io|
390
393
  reader = Gem::Package::TarReader.new io
@@ -394,7 +397,7 @@ EOM
394
397
 
395
398
  extract_tar_gz entry, destination_dir, pattern
396
399
 
397
- return # ignore further entries
400
+ break # ignore further entries
398
401
  end
399
402
  end
400
403
  rescue Zlib::GzipFile::Error, EOFError, Gem::Package::TarInvalidError => e
@@ -437,8 +440,6 @@ EOM
437
440
 
438
441
  FileUtils.rm_rf destination
439
442
 
440
- mkdir_options = {}
441
- mkdir_options[:mode] = dir_mode ? 0o755 : (entry.header.mode if entry.directory?)
442
443
  mkdir =
443
444
  if entry.directory?
444
445
  destination
@@ -447,7 +448,7 @@ EOM
447
448
  end
448
449
 
449
450
  unless directories.include?(mkdir)
450
- FileUtils.mkdir_p mkdir, **mkdir_options
451
+ FileUtils.mkdir_p mkdir, mode: dir_mode ? 0o755 : (entry.header.mode if entry.directory?)
451
452
  directories << mkdir
452
453
  end
453
454
 
@@ -512,7 +513,6 @@ EOM
512
513
  raise Gem::Package::PathError.new(destination, destination_dir) unless
513
514
  normalize_path(destination).start_with? normalize_path(destination_dir + "/")
514
515
 
515
- destination.tap(&Gem::UNTAINT)
516
516
  destination
517
517
  end
518
518
 
@@ -578,10 +578,10 @@ EOM
578
578
  )
579
579
 
580
580
  @spec.signing_key = nil
581
- @spec.cert_chain = @signer.cert_chain.map {|cert| cert.to_s }
581
+ @spec.cert_chain = @signer.cert_chain.map(&:to_s)
582
582
  else
583
583
  @signer = Gem::Security::Signer.new nil, nil, passphrase
584
- @spec.cert_chain = @signer.cert_chain.map {|cert| cert.to_pem } if
584
+ @spec.cert_chain = @signer.cert_chain.map(&:to_pem) if
585
585
  @signer.cert_chain
586
586
  end
587
587
  end
@@ -695,10 +695,10 @@ EOM
695
695
 
696
696
  unless @files.include? "data.tar.gz"
697
697
  raise Gem::Package::FormatError.new \
698
- "package content (data.tar.gz) is missing", @gem
698
+ "package content (data.tar.gz) is missing", @gem
699
699
  end
700
700
 
701
- if (duplicates = @files.group_by {|f| f }.select {|k,v| v.size > 1 }.map(&:first)) && duplicates.any?
701
+ if (duplicates = @files.group_by {|f| f }.select {|_k,v| v.size > 1 }.map(&:first)) && duplicates.any?
702
702
  raise Gem::Security::Exception, "duplicate files in the package: (#{duplicates.map(&:inspect).join(", ")})"
703
703
  end
704
704
  end
@@ -708,6 +708,7 @@ EOM
708
708
 
709
709
  def verify_gz(entry) # :nodoc:
710
710
  Zlib::GzipReader.wrap entry do |gzio|
711
+ # TODO: read into a buffer once zlib supports it
711
712
  gzio.read 16_384 until gzio.eof? # gzip checksum verification
712
713
  end
713
714
  rescue Zlib::GzipFile::Error => e
@@ -97,13 +97,13 @@ class Gem::PackageTask < Rake::PackageTask
97
97
  gem_path = File.join package_dir, gem_file
98
98
  gem_dir = File.join package_dir, gem_spec.full_name
99
99
 
100
- task :package => [:gem]
100
+ task package: [:gem]
101
101
 
102
102
  directory package_dir
103
103
  directory gem_dir
104
104
 
105
105
  desc "Build the gem file #{gem_file}"
106
- task :gem => [gem_path]
106
+ task gem: [gem_path]
107
107
 
108
108
  trace = Rake.application.options.trace
109
109
  Gem.configuration.verbose = trace
@@ -24,23 +24,22 @@ class Gem::PathSupport
24
24
  # hashtable, or defaults to ENV, the system environment.
25
25
  #
26
26
  def initialize(env)
27
- @home = env["GEM_HOME"] || Gem.default_dir
28
-
29
- if File::ALT_SEPARATOR
30
- @home = @home.gsub(File::ALT_SEPARATOR, File::SEPARATOR)
31
- end
32
-
33
- @home = expand(@home)
34
-
27
+ @home = normalize_home_dir(env["GEM_HOME"] || Gem.default_dir)
35
28
  @path = split_gem_path env["GEM_PATH"], @home
36
29
 
37
30
  @spec_cache_dir = env["GEM_SPEC_CACHE"] || Gem.default_spec_cache_dir
38
-
39
- @spec_cache_dir = @spec_cache_dir.dup.tap(&Gem::UNTAINT)
40
31
  end
41
32
 
42
33
  private
43
34
 
35
+ def normalize_home_dir(home)
36
+ if File::ALT_SEPARATOR
37
+ home = home.gsub(File::ALT_SEPARATOR, File::SEPARATOR)
38
+ end
39
+
40
+ expand(home)
41
+ end
42
+
44
43
  ##
45
44
  # Split the Gem search path (as reported by Gem.path).
46
45
 
@@ -24,6 +24,11 @@ class Gem::Platform
24
24
  match_platforms?(platform, Gem.platforms)
25
25
  end
26
26
 
27
+ class << self
28
+ extend Gem::Deprecate
29
+ rubygems_deprecate :match, "Gem::Platform.match_spec? or match_gem?"
30
+ end
31
+
27
32
  def self.match_platforms?(platform, platforms)
28
33
  platform = Gem::Platform.new(platform) unless platform.is_a?(Gem::Platform)
29
34
  platforms.any? do |local_platform|
@@ -38,10 +43,20 @@ class Gem::Platform
38
43
  match_gem?(spec.platform, spec.name)
39
44
  end
40
45
 
41
- def self.match_gem?(platform, gem_name)
42
- # NOTE: this method might be redefined by Ruby implementations to
43
- # customize behavior per RUBY_ENGINE, gem_name or other criteria.
44
- match_platforms?(platform, Gem.platforms)
46
+ if RUBY_ENGINE == "truffleruby"
47
+ def self.match_gem?(platform, gem_name)
48
+ raise "Not a string: #{gem_name.inspect}" unless String === gem_name
49
+
50
+ if REUSE_AS_BINARY_ON_TRUFFLERUBY.include?(gem_name)
51
+ match_platforms?(platform, [Gem::Platform::RUBY, Gem::Platform.local])
52
+ else
53
+ match_platforms?(platform, Gem.platforms)
54
+ end
55
+ end
56
+ else
57
+ def self.match_gem?(platform, gem_name)
58
+ match_platforms?(platform, Gem.platforms)
59
+ end
45
60
  end
46
61
 
47
62
  def self.sort_priority(platform)
@@ -74,7 +89,7 @@ class Gem::Platform
74
89
  when String then
75
90
  arch = arch.split "-"
76
91
 
77
- if arch.length > 2 && arch.last !~ /\d+(\.\d+)?$/ # reassemble x86-linux-{libc}
92
+ if arch.length > 2 && !arch.last.match?(/\d+(\.\d+)?$/) # reassemble x86-linux-{libc}
78
93
  extra = arch.pop
79
94
  arch.last << "-#{extra}"
80
95
  end
@@ -82,11 +97,11 @@ class Gem::Platform
82
97
  cpu = arch.shift
83
98
 
84
99
  @cpu = case cpu
85
- when /i\d86/ then "x86"
86
- else cpu
100
+ when /i\d86/ then "x86"
101
+ else cpu
87
102
  end
88
103
 
89
- if arch.length == 2 && arch.last =~ /^\d+(\.\d+)?$/ # for command-line
104
+ if arch.length == 2 && arch.last.match?(/^\d+(\.\d+)?$/) # for command-line
90
105
  @os, @version = arch
91
106
  return
92
107
  end
@@ -98,30 +113,30 @@ class Gem::Platform
98
113
  end # legacy jruby
99
114
 
100
115
  @os, @version = case os
101
- when /aix(\d+)?/ then [ "aix", $1 ]
102
- when /cygwin/ then [ "cygwin", nil ]
103
- when /darwin(\d+)?/ then [ "darwin", $1 ]
104
- when /^macruby$/ then [ "macruby", nil ]
105
- when /freebsd(\d+)?/ then [ "freebsd", $1 ]
106
- when /^java$/, /^jruby$/ then [ "java", nil ]
107
- when /^java([\d.]*)/ then [ "java", $1 ]
108
- when /^dalvik(\d+)?$/ then [ "dalvik", $1 ]
109
- when /^dotnet$/ then [ "dotnet", nil ]
110
- when /^dotnet([\d.]*)/ then [ "dotnet", $1 ]
111
- when /linux-?(\w+)?/ then [ "linux", $1 ]
112
- when /mingw32/ then [ "mingw32", nil ]
113
- when /mingw-?(\w+)?/ then [ "mingw", $1 ]
114
- when /(mswin\d+)(\_(\d+))?/ then
115
- os = $1
116
- version = $3
117
- @cpu = "x86" if @cpu.nil? && os =~ /32$/
118
- [os, version]
119
- when /netbsdelf/ then [ "netbsdelf", nil ]
120
- when /openbsd(\d+\.\d+)?/ then [ "openbsd", $1 ]
121
- when /solaris(\d+\.\d+)?/ then [ "solaris", $1 ]
122
- # test
123
- when /^(\w+_platform)(\d+)?/ then [ $1, $2 ]
124
- else [ "unknown", nil ]
116
+ when /aix(\d+)?/ then ["aix", $1]
117
+ when /cygwin/ then ["cygwin", nil]
118
+ when /darwin(\d+)?/ then ["darwin", $1]
119
+ when /^macruby$/ then ["macruby", nil]
120
+ when /freebsd(\d+)?/ then ["freebsd", $1]
121
+ when /^java$/, /^jruby$/ then ["java", nil]
122
+ when /^java([\d.]*)/ then ["java", $1]
123
+ when /^dalvik(\d+)?$/ then ["dalvik", $1]
124
+ when /^dotnet$/ then ["dotnet", nil]
125
+ when /^dotnet([\d.]*)/ then ["dotnet", $1]
126
+ when /linux-?(\w+)?/ then ["linux", $1]
127
+ when /mingw32/ then ["mingw32", nil]
128
+ when /mingw-?(\w+)?/ then ["mingw", $1]
129
+ when /(mswin\d+)(\_(\d+))?/ then
130
+ os = $1
131
+ version = $3
132
+ @cpu = "x86" if @cpu.nil? && os =~ /32$/
133
+ [os, version]
134
+ when /netbsdelf/ then ["netbsdelf", nil]
135
+ when /openbsd(\d+\.\d+)?/ then ["openbsd", $1]
136
+ when /solaris(\d+\.\d+)?/ then ["solaris", $1]
137
+ # test
138
+ when /^(\w+_platform)(\d+)?/ then [$1, $2]
139
+ else ["unknown", nil]
125
140
  end
126
141
  when Gem::Platform then
127
142
  @cpu = arch.cpu
@@ -148,7 +163,7 @@ class Gem::Platform
148
163
  self.class === other && to_a == other.to_a
149
164
  end
150
165
 
151
- alias :eql? :==
166
+ alias_method :eql?, :==
152
167
 
153
168
  def hash # :nodoc:
154
169
  to_a.hash
@@ -216,18 +231,18 @@ class Gem::Platform
216
231
  when String then
217
232
  # This data is from http://gems.rubyforge.org/gems/yaml on 19 Aug 2007
218
233
  other = case other
219
- when /^i686-darwin(\d)/ then ["x86", "darwin", $1 ]
220
- when /^i\d86-linux/ then ["x86", "linux", nil ]
221
- when "java", "jruby" then [nil, "java", nil ]
222
- when /^dalvik(\d+)?$/ then [nil, "dalvik", $1 ]
223
- when /dotnet(\-(\d+\.\d+))?/ then ["universal","dotnet", $2 ]
224
- when /mswin32(\_(\d+))?/ then ["x86", "mswin32", $2 ]
225
- when /mswin64(\_(\d+))?/ then ["x64", "mswin64", $2 ]
226
- when "powerpc-darwin" then ["powerpc", "darwin", nil ]
227
- when /powerpc-darwin(\d)/ then ["powerpc", "darwin", $1 ]
228
- when /sparc-solaris2.8/ then ["sparc", "solaris", "2.8" ]
229
- when /universal-darwin(\d)/ then ["universal", "darwin", $1 ]
230
- else other
234
+ when /^i686-darwin(\d)/ then ["x86", "darwin", $1]
235
+ when /^i\d86-linux/ then ["x86", "linux", nil]
236
+ when "java", "jruby" then [nil, "java", nil]
237
+ when /^dalvik(\d+)?$/ then [nil, "dalvik", $1]
238
+ when /dotnet(\-(\d+\.\d+))?/ then ["universal","dotnet", $2]
239
+ when /mswin32(\_(\d+))?/ then ["x86", "mswin32", $2]
240
+ when /mswin64(\_(\d+))?/ then ["x64", "mswin64", $2]
241
+ when "powerpc-darwin" then ["powerpc", "darwin", nil]
242
+ when /powerpc-darwin(\d)/ then ["powerpc", "darwin", $1]
243
+ when /sparc-solaris2.8/ then ["sparc", "solaris", "2.8"]
244
+ when /universal-darwin(\d)/ then ["universal", "darwin", $1]
245
+ else other
231
246
  end
232
247
 
233
248
  other = Gem::Platform.new other