rubygems-update 3.3.18 → 3.4.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (615) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1429 -1064
  3. data/CONTRIBUTING.md +31 -8
  4. data/Manifest.txt +61 -36
  5. data/POLICIES.md +55 -20
  6. data/README.md +19 -6
  7. data/bundler/CHANGELOG.md +457 -1
  8. data/bundler/README.md +3 -6
  9. data/bundler/UPGRADING.md +11 -4
  10. data/bundler/bundler.gemspec +8 -10
  11. data/bundler/exe/bundle +5 -16
  12. data/bundler/lib/bundler/build_metadata.rb +2 -2
  13. data/bundler/lib/bundler/cli/add.rb +1 -1
  14. data/bundler/lib/bundler/cli/binstubs.rb +6 -2
  15. data/bundler/lib/bundler/cli/check.rb +1 -1
  16. data/bundler/lib/bundler/cli/common.rb +2 -0
  17. data/bundler/lib/bundler/cli/console.rb +2 -2
  18. data/bundler/lib/bundler/cli/doctor.rb +4 -6
  19. data/bundler/lib/bundler/cli/gem.rb +62 -40
  20. data/bundler/lib/bundler/cli/info.rb +1 -1
  21. data/bundler/lib/bundler/cli/init.rb +6 -2
  22. data/bundler/lib/bundler/cli/install.rb +8 -6
  23. data/bundler/lib/bundler/cli/lock.rb +8 -5
  24. data/bundler/lib/bundler/cli/open.rb +6 -4
  25. data/bundler/lib/bundler/cli/outdated.rb +14 -7
  26. data/bundler/lib/bundler/cli/platform.rb +7 -5
  27. data/bundler/lib/bundler/cli/viz.rb +1 -1
  28. data/bundler/lib/bundler/cli.rb +53 -7
  29. data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
  30. data/bundler/lib/bundler/compact_index_client/updater.rb +40 -39
  31. data/bundler/lib/bundler/constants.rb +1 -1
  32. data/bundler/lib/bundler/current_ruby.rb +16 -5
  33. data/bundler/lib/bundler/definition.rb +262 -133
  34. data/bundler/lib/bundler/dependency.rb +20 -86
  35. data/bundler/lib/bundler/digest.rb +1 -1
  36. data/bundler/lib/bundler/dsl.rb +6 -7
  37. data/bundler/lib/bundler/endpoint_specification.rb +2 -13
  38. data/bundler/lib/bundler/env.rb +2 -2
  39. data/bundler/lib/bundler/environment_preserver.rb +3 -2
  40. data/bundler/lib/bundler/errors.rb +1 -11
  41. data/bundler/lib/bundler/feature_flag.rb +0 -2
  42. data/bundler/lib/bundler/fetcher/compact_index.rb +11 -13
  43. data/bundler/lib/bundler/fetcher/dependency.rb +2 -6
  44. data/bundler/lib/bundler/fetcher/downloader.rb +4 -5
  45. data/bundler/lib/bundler/fetcher/index.rb +1 -2
  46. data/bundler/lib/bundler/fetcher.rb +21 -15
  47. data/bundler/lib/bundler/force_platform.rb +18 -0
  48. data/bundler/lib/bundler/friendly_errors.rb +1 -4
  49. data/bundler/lib/bundler/gem_helper.rb +3 -4
  50. data/bundler/lib/bundler/gem_helpers.rb +7 -2
  51. data/bundler/lib/bundler/gem_version_promoter.rb +53 -98
  52. data/bundler/lib/bundler/graph.rb +3 -3
  53. data/bundler/lib/bundler/index.rb +13 -47
  54. data/bundler/lib/bundler/injector.rb +5 -4
  55. data/bundler/lib/bundler/inline.rb +9 -11
  56. data/bundler/lib/bundler/installer/parallel_installer.rb +4 -34
  57. data/bundler/lib/bundler/installer/standalone.rb +13 -9
  58. data/bundler/lib/bundler/installer.rb +17 -29
  59. data/bundler/lib/bundler/lazy_specification.rb +54 -53
  60. data/bundler/lib/bundler/lockfile_generator.rb +3 -3
  61. data/bundler/lib/bundler/lockfile_parser.rb +17 -16
  62. data/bundler/lib/bundler/man/bundle-add.1 +6 -2
  63. data/bundler/lib/bundler/man/bundle-add.1.ronn +4 -1
  64. data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
  65. data/bundler/lib/bundler/man/bundle-cache.1 +9 -3
  66. data/bundler/lib/bundler/man/bundle-cache.1.ronn +9 -2
  67. data/bundler/lib/bundler/man/bundle-check.1 +1 -1
  68. data/bundler/lib/bundler/man/bundle-clean.1 +2 -2
  69. data/bundler/lib/bundler/man/bundle-clean.1.ronn +1 -1
  70. data/bundler/lib/bundler/man/bundle-config.1 +26 -10
  71. data/bundler/lib/bundler/man/bundle-config.1.ronn +17 -10
  72. data/bundler/lib/bundler/man/bundle-console.1 +53 -0
  73. data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
  74. data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
  75. data/bundler/lib/bundler/man/bundle-exec.1 +6 -6
  76. data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -6
  77. data/bundler/lib/bundler/man/bundle-gem.1 +27 -37
  78. data/bundler/lib/bundler/man/bundle-gem.1.ronn +5 -5
  79. data/bundler/lib/bundler/man/bundle-help.1 +13 -0
  80. data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
  81. data/bundler/lib/bundler/man/bundle-info.1 +3 -3
  82. data/bundler/lib/bundler/man/bundle-info.1.ronn +3 -3
  83. data/bundler/lib/bundler/man/bundle-init.1 +5 -1
  84. data/bundler/lib/bundler/man/bundle-init.1.ronn +2 -0
  85. data/bundler/lib/bundler/man/bundle-inject.1 +5 -2
  86. data/bundler/lib/bundler/man/bundle-inject.1.ronn +3 -1
  87. data/bundler/lib/bundler/man/bundle-install.1 +5 -30
  88. data/bundler/lib/bundler/man/bundle-install.1.ronn +6 -29
  89. data/bundler/lib/bundler/man/bundle-list.1 +1 -1
  90. data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
  91. data/bundler/lib/bundler/man/bundle-open.1 +22 -2
  92. data/bundler/lib/bundler/man/bundle-open.1.ronn +9 -1
  93. data/bundler/lib/bundler/man/bundle-outdated.1 +13 -9
  94. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +12 -9
  95. data/bundler/lib/bundler/man/bundle-platform.1 +16 -6
  96. data/bundler/lib/bundler/man/bundle-platform.1.ronn +14 -7
  97. data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
  98. data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
  99. data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
  100. data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
  101. data/bundler/lib/bundler/man/bundle-show.1 +1 -1
  102. data/bundler/lib/bundler/man/bundle-update.1 +1 -1
  103. data/bundler/lib/bundler/man/bundle-version.1 +35 -0
  104. data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
  105. data/bundler/lib/bundler/man/bundle-viz.1 +4 -1
  106. data/bundler/lib/bundler/man/bundle-viz.1.ronn +2 -0
  107. data/bundler/lib/bundler/man/bundle.1 +15 -10
  108. data/bundler/lib/bundler/man/bundle.1.ronn +12 -7
  109. data/bundler/lib/bundler/man/gemfile.5 +55 -55
  110. data/bundler/lib/bundler/man/gemfile.5.ronn +57 -53
  111. data/bundler/lib/bundler/man/index.txt +4 -0
  112. data/bundler/lib/bundler/match_metadata.rb +13 -0
  113. data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
  114. data/bundler/lib/bundler/mirror.rb +5 -7
  115. data/bundler/lib/bundler/plugin/index.rb +5 -5
  116. data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -4
  117. data/bundler/lib/bundler/plugin/installer.rb +5 -2
  118. data/bundler/lib/bundler/plugin.rb +3 -1
  119. data/bundler/lib/bundler/remote_specification.rb +7 -12
  120. data/bundler/lib/bundler/resolver/base.rb +107 -0
  121. data/bundler/lib/bundler/resolver/candidate.rb +94 -0
  122. data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
  123. data/bundler/lib/bundler/resolver/package.rb +72 -0
  124. data/bundler/lib/bundler/resolver/root.rb +25 -0
  125. data/bundler/lib/bundler/resolver/spec_group.rb +42 -71
  126. data/bundler/lib/bundler/resolver.rb +335 -328
  127. data/bundler/lib/bundler/ruby_dsl.rb +7 -1
  128. data/bundler/lib/bundler/ruby_version.rb +8 -8
  129. data/bundler/lib/bundler/rubygems_ext.rb +100 -9
  130. data/bundler/lib/bundler/rubygems_gem_installer.rb +23 -14
  131. data/bundler/lib/bundler/rubygems_integration.rb +11 -15
  132. data/bundler/lib/bundler/runtime.rb +2 -6
  133. data/bundler/lib/bundler/safe_marshal.rb +31 -0
  134. data/bundler/lib/bundler/settings.rb +5 -11
  135. data/bundler/lib/bundler/setup.rb +4 -1
  136. data/bundler/lib/bundler/shared_helpers.rb +3 -3
  137. data/bundler/lib/bundler/source/git/git_proxy.rb +237 -74
  138. data/bundler/lib/bundler/source/git.rb +55 -30
  139. data/bundler/lib/bundler/source/metadata.rb +1 -2
  140. data/bundler/lib/bundler/source/path/installer.rb +1 -22
  141. data/bundler/lib/bundler/source/path.rb +6 -6
  142. data/bundler/lib/bundler/source/rubygems.rb +26 -81
  143. data/bundler/lib/bundler/source.rb +1 -1
  144. data/bundler/lib/bundler/source_list.rb +8 -2
  145. data/bundler/lib/bundler/spec_set.rb +60 -37
  146. data/bundler/lib/bundler/templates/Executable +1 -1
  147. data/bundler/lib/bundler/templates/Executable.bundler +5 -10
  148. data/bundler/lib/bundler/templates/Executable.standalone +2 -0
  149. data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
  150. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +3 -0
  151. data/bundler/lib/bundler/templates/newgem/README.md.tt +6 -4
  152. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +12 -1
  153. data/bundler/lib/bundler/templates/newgem/bin/console.tt +0 -4
  154. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
  155. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
  156. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt +10 -0
  157. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
  158. data/bundler/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +1 -1
  159. data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
  160. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +10 -0
  161. data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
  162. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +13 -4
  163. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +9 -2
  164. data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
  165. data/bundler/lib/bundler/ui/shell.rb +35 -12
  166. data/bundler/lib/bundler/ui/silent.rb +21 -5
  167. data/bundler/lib/bundler/uri_normalizer.rb +23 -0
  168. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
  169. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
  170. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
  171. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1351 -409
  172. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
  173. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
  174. data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
  175. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
  176. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
  177. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
  178. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
  179. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
  180. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
  181. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
  182. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
  183. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
  184. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
  185. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
  186. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
  187. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
  188. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +248 -0
  189. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
  190. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
  191. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +1 -1
  192. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +64 -16
  193. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
  194. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -1
  195. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +27 -7
  196. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -2
  197. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -1
  198. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
  199. data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
  200. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -2
  201. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +15 -9
  202. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +11 -6
  203. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  204. data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +1 -2
  205. data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +2 -1
  206. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -2
  207. data/bundler/lib/bundler/vendored_persistent.rb +1 -33
  208. data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_pub_grub.rb} +1 -1
  209. data/bundler/lib/bundler/version.rb +5 -1
  210. data/bundler/lib/bundler/worker.rb +5 -7
  211. data/bundler/lib/bundler.rb +25 -77
  212. data/{bin → exe}/gem +4 -5
  213. data/{bin → exe}/update_rubygems +12 -10
  214. data/lib/rubygems/available_set.rb +4 -3
  215. data/lib/rubygems/basic_specification.rb +5 -4
  216. data/lib/rubygems/bundler_version_finder.rb +2 -2
  217. data/lib/rubygems/command.rb +41 -32
  218. data/lib/rubygems/command_manager.rb +30 -15
  219. data/lib/rubygems/commands/build_command.rb +12 -8
  220. data/lib/rubygems/commands/cert_command.rb +34 -33
  221. data/lib/rubygems/commands/check_command.rb +21 -20
  222. data/lib/rubygems/commands/cleanup_command.rb +18 -17
  223. data/lib/rubygems/commands/contents_command.rb +14 -13
  224. data/lib/rubygems/commands/dependency_command.rb +17 -16
  225. data/lib/rubygems/commands/environment_command.rb +6 -5
  226. data/lib/rubygems/commands/exec_command.rb +249 -0
  227. data/lib/rubygems/commands/fetch_command.rb +10 -9
  228. data/lib/rubygems/commands/generate_index_command.rb +18 -17
  229. data/lib/rubygems/commands/help_command.rb +7 -6
  230. data/lib/rubygems/commands/info_command.rb +3 -3
  231. data/lib/rubygems/commands/install_command.rb +28 -23
  232. data/lib/rubygems/commands/list_command.rb +4 -3
  233. data/lib/rubygems/commands/lock_command.rb +5 -4
  234. data/lib/rubygems/commands/mirror_command.rb +4 -3
  235. data/lib/rubygems/commands/open_command.rb +10 -9
  236. data/lib/rubygems/commands/outdated_command.rb +6 -5
  237. data/lib/rubygems/commands/owner_command.rb +17 -14
  238. data/lib/rubygems/commands/pristine_command.rb +46 -36
  239. data/lib/rubygems/commands/push_command.rb +9 -8
  240. data/lib/rubygems/commands/query_command.rb +9 -8
  241. data/lib/rubygems/commands/rdoc_command.rb +21 -19
  242. data/lib/rubygems/commands/search_command.rb +4 -3
  243. data/lib/rubygems/commands/server_command.rb +4 -3
  244. data/lib/rubygems/commands/setup_command.rb +97 -106
  245. data/lib/rubygems/commands/signin_command.rb +10 -9
  246. data/lib/rubygems/commands/signout_command.rb +8 -7
  247. data/lib/rubygems/commands/sources_command.rb +22 -21
  248. data/lib/rubygems/commands/specification_command.rb +14 -13
  249. data/lib/rubygems/commands/stale_command.rb +3 -2
  250. data/lib/rubygems/commands/uninstall_command.rb +44 -40
  251. data/lib/rubygems/commands/unpack_command.rb +14 -13
  252. data/lib/rubygems/commands/update_command.rb +42 -63
  253. data/lib/rubygems/commands/which_command.rb +8 -7
  254. data/lib/rubygems/commands/yank_command.rb +12 -11
  255. data/lib/rubygems/config_file.rb +55 -21
  256. data/lib/rubygems/core_ext/kernel_gem.rb +1 -6
  257. data/lib/rubygems/core_ext/kernel_require.rb +109 -115
  258. data/lib/rubygems/core_ext/kernel_warn.rb +33 -37
  259. data/lib/rubygems/core_ext/tcpsocket_init.rb +3 -1
  260. data/lib/rubygems/defaults.rb +33 -18
  261. data/lib/rubygems/dependency.rb +15 -11
  262. data/lib/rubygems/dependency_installer.rb +38 -37
  263. data/lib/rubygems/dependency_list.rb +7 -6
  264. data/lib/rubygems/deprecate.rb +3 -2
  265. data/lib/rubygems/doctor.rb +19 -18
  266. data/lib/rubygems/errors.rb +3 -2
  267. data/lib/rubygems/exceptions.rb +16 -8
  268. data/lib/rubygems/ext/build_error.rb +2 -1
  269. data/lib/rubygems/ext/builder.rb +37 -21
  270. data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +9 -5
  271. data/lib/rubygems/ext/cargo_builder.rb +150 -111
  272. data/lib/rubygems/ext/cmake_builder.rb +2 -2
  273. data/lib/rubygems/ext/configure_builder.rb +2 -1
  274. data/lib/rubygems/ext/ext_conf_builder.rb +11 -9
  275. data/lib/rubygems/ext/rake_builder.rb +7 -5
  276. data/lib/rubygems/ext.rb +8 -7
  277. data/lib/rubygems/gem_runner.rb +6 -5
  278. data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +163 -0
  279. data/lib/rubygems/gemcutter_utilities/webauthn_listener.rb +105 -0
  280. data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +78 -0
  281. data/lib/rubygems/gemcutter_utilities.rb +90 -34
  282. data/lib/rubygems/indexer.rb +29 -28
  283. data/lib/rubygems/install_default_message.rb +3 -2
  284. data/lib/rubygems/install_message.rb +3 -2
  285. data/lib/rubygems/install_update_options.rb +56 -55
  286. data/lib/rubygems/installer.rb +54 -46
  287. data/lib/rubygems/installer_uninstaller_utils.rb +2 -2
  288. data/lib/rubygems/local_remote_options.rb +19 -20
  289. data/lib/rubygems/mock_gem_ui.rb +3 -2
  290. data/lib/rubygems/name_tuple.rb +5 -4
  291. data/lib/rubygems/optparse/lib/optparse.rb +20 -15
  292. data/lib/rubygems/optparse.rb +1 -1
  293. data/lib/rubygems/package/digest_io.rb +1 -0
  294. data/lib/rubygems/package/file_source.rb +3 -2
  295. data/lib/rubygems/package/io_source.rb +1 -0
  296. data/lib/rubygems/package/old.rb +9 -8
  297. data/lib/rubygems/package/source.rb +1 -0
  298. data/lib/rubygems/package/tar_header.rb +63 -62
  299. data/lib/rubygems/package/tar_reader/entry.rb +91 -9
  300. data/lib/rubygems/package/tar_reader.rb +2 -29
  301. data/lib/rubygems/package/tar_writer.rb +8 -7
  302. data/lib/rubygems/package.rb +64 -48
  303. data/lib/rubygems/package_task.rb +5 -4
  304. data/lib/rubygems/path_support.rb +1 -0
  305. data/lib/rubygems/platform.rb +79 -53
  306. data/lib/rubygems/psych_tree.rb +2 -1
  307. data/lib/rubygems/query_utils.rb +35 -35
  308. data/lib/rubygems/rdoc.rb +3 -2
  309. data/lib/rubygems/remote_fetcher.rb +23 -22
  310. data/lib/rubygems/request/connection_pools.rb +4 -4
  311. data/lib/rubygems/request/http_pool.rb +2 -1
  312. data/lib/rubygems/request/https_pool.rb +1 -0
  313. data/lib/rubygems/request.rb +23 -22
  314. data/lib/rubygems/request_set/gem_dependency_api.rb +123 -123
  315. data/lib/rubygems/request_set/lockfile/parser.rb +28 -27
  316. data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -3
  317. data/lib/rubygems/request_set/lockfile.rb +6 -5
  318. data/lib/rubygems/request_set.rb +20 -19
  319. data/lib/rubygems/requirement.rb +15 -14
  320. data/lib/rubygems/resolver/activation_request.rb +4 -3
  321. data/lib/rubygems/resolver/api_set.rb +5 -4
  322. data/lib/rubygems/resolver/api_specification.rb +7 -6
  323. data/lib/rubygems/resolver/best_set.rb +6 -5
  324. data/lib/rubygems/resolver/composed_set.rb +1 -0
  325. data/lib/rubygems/resolver/conflict.rb +11 -10
  326. data/lib/rubygems/resolver/current_set.rb +1 -0
  327. data/lib/rubygems/resolver/dependency_request.rb +3 -2
  328. data/lib/rubygems/resolver/git_set.rb +3 -2
  329. data/lib/rubygems/resolver/git_specification.rb +7 -6
  330. data/lib/rubygems/resolver/index_set.rb +4 -3
  331. data/lib/rubygems/resolver/index_specification.rb +7 -5
  332. data/lib/rubygems/resolver/installed_specification.rb +5 -4
  333. data/lib/rubygems/resolver/installer_set.rb +15 -17
  334. data/lib/rubygems/resolver/local_specification.rb +3 -2
  335. data/lib/rubygems/resolver/lock_set.rb +5 -4
  336. data/lib/rubygems/resolver/lock_specification.rb +5 -4
  337. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +1 -1
  338. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
  339. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  340. data/lib/rubygems/resolver/molinillo.rb +2 -1
  341. data/lib/rubygems/resolver/requirement_list.rb +1 -0
  342. data/lib/rubygems/resolver/set.rb +1 -0
  343. data/lib/rubygems/resolver/source_set.rb +2 -0
  344. data/lib/rubygems/resolver/spec_specification.rb +1 -0
  345. data/lib/rubygems/resolver/specification.rb +2 -1
  346. data/lib/rubygems/resolver/stats.rb +2 -1
  347. data/lib/rubygems/resolver/vendor_set.rb +2 -1
  348. data/lib/rubygems/resolver/vendor_specification.rb +4 -3
  349. data/lib/rubygems/resolver.rb +41 -40
  350. data/lib/rubygems/s3_uri_signer.rb +10 -8
  351. data/lib/rubygems/safe_yaml.rb +4 -2
  352. data/lib/rubygems/security/policies.rb +48 -47
  353. data/lib/rubygems/security/policy.rb +19 -18
  354. data/lib/rubygems/security/signer.rb +6 -5
  355. data/lib/rubygems/security/trust_dir.rb +5 -4
  356. data/lib/rubygems/security.rb +30 -42
  357. data/lib/rubygems/security_option.rb +6 -5
  358. data/lib/rubygems/shellwords.rb +3 -0
  359. data/lib/rubygems/source/git.rb +22 -22
  360. data/lib/rubygems/source/installed.rb +2 -1
  361. data/lib/rubygems/source/local.rb +3 -2
  362. data/lib/rubygems/source/lock.rb +1 -0
  363. data/lib/rubygems/source/specific_file.rb +2 -1
  364. data/lib/rubygems/source/vendor.rb +1 -0
  365. data/lib/rubygems/source.rb +16 -16
  366. data/lib/rubygems/spec_fetcher.rb +10 -9
  367. data/lib/rubygems/specification.rb +121 -114
  368. data/lib/rubygems/specification_policy.rb +36 -15
  369. data/lib/rubygems/stub_specification.rb +11 -9
  370. data/lib/rubygems/text.rb +2 -2
  371. data/lib/rubygems/tsort/lib/tsort.rb +308 -310
  372. data/lib/rubygems/tsort.rb +1 -1
  373. data/lib/rubygems/uninstaller.rb +19 -18
  374. data/lib/rubygems/update_suggestion.rb +69 -0
  375. data/lib/rubygems/uri.rb +4 -4
  376. data/lib/rubygems/uri_formatter.rb +1 -1
  377. data/lib/rubygems/user_interaction.rb +37 -21
  378. data/lib/rubygems/util/licenses.rb +4 -3
  379. data/lib/rubygems/util/list.rb +1 -0
  380. data/lib/rubygems/util.rb +12 -15
  381. data/lib/rubygems/validator.rb +7 -6
  382. data/lib/rubygems/version.rb +17 -11
  383. data/lib/rubygems/version_option.rb +4 -3
  384. data/lib/rubygems.rb +89 -68
  385. data/rubygems-update.gemspec +10 -8
  386. data/setup.rb +10 -9
  387. data/test/rubygems/alternate_cert.pem +14 -14
  388. data/test/rubygems/alternate_cert_32.pem +15 -15
  389. data/test/rubygems/alternate_key.pem +25 -25
  390. data/test/rubygems/bad_rake.rb +1 -0
  391. data/test/rubygems/bundler_test_gem.rb +421 -0
  392. data/test/rubygems/child_cert.pem +15 -16
  393. data/test/rubygems/child_cert_32.pem +15 -16
  394. data/test/rubygems/child_key.pem +25 -25
  395. data/test/rubygems/encrypted_private_key.pem +26 -26
  396. data/test/rubygems/expired_cert.pem +15 -15
  397. data/test/rubygems/fake_certlib/openssl.rb +1 -0
  398. data/test/rubygems/future_cert.pem +15 -15
  399. data/test/rubygems/future_cert_32.pem +15 -15
  400. data/test/rubygems/good_rake.rb +1 -0
  401. data/test/rubygems/grandchild_cert.pem +15 -16
  402. data/test/rubygems/grandchild_cert_32.pem +15 -16
  403. data/test/rubygems/grandchild_key.pem +25 -25
  404. data/test/rubygems/helper.rb +172 -151
  405. data/test/rubygems/installer_test_case.rb +14 -13
  406. data/test/rubygems/invalid_issuer_cert.pem +16 -16
  407. data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
  408. data/test/rubygems/invalid_key.pem +25 -25
  409. data/test/rubygems/invalid_signer_cert.pem +15 -15
  410. data/test/rubygems/invalid_signer_cert_32.pem +15 -15
  411. data/test/rubygems/invalidchild_cert.pem +15 -16
  412. data/test/rubygems/invalidchild_cert_32.pem +15 -16
  413. data/test/rubygems/invalidchild_key.pem +25 -25
  414. data/test/rubygems/multifactor_auth_utilities.rb +111 -0
  415. data/test/rubygems/package/tar_test_case.rb +53 -17
  416. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  417. data/test/rubygems/plugin/exception/rubygems_plugin.rb +2 -1
  418. data/test/rubygems/plugin/load/rubygems_plugin.rb +1 -0
  419. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +2 -1
  420. data/test/rubygems/private_key.pem +25 -25
  421. data/test/rubygems/public_cert.pem +16 -16
  422. data/test/rubygems/public_cert_32.pem +15 -15
  423. data/test/rubygems/public_key.pem +7 -7
  424. data/test/rubygems/rubygems/commands/crash_command.rb +1 -0
  425. data/test/rubygems/rubygems_plugin.rb +3 -2
  426. data/test/rubygems/simple_gem.rb +2 -1
  427. data/test/rubygems/specifications/bar-0.0.2.gemspec +2 -0
  428. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +6 -4
  429. data/test/rubygems/test_bundled_ca.rb +13 -12
  430. data/test/rubygems/test_config.rb +5 -4
  431. data/test/rubygems/test_deprecate.rb +5 -4
  432. data/test/rubygems/test_exit.rb +9 -3
  433. data/test/rubygems/test_gem.rb +339 -677
  434. data/test/rubygems/test_gem_available_set.rb +22 -21
  435. data/test/rubygems/test_gem_bundler_version_finder.rb +6 -4
  436. data/test/rubygems/test_gem_command.rb +45 -44
  437. data/test/rubygems/test_gem_command_manager.rb +96 -30
  438. data/test/rubygems/test_gem_commands_build_command.rb +74 -63
  439. data/test/rubygems/test_gem_commands_cert_command.rb +98 -99
  440. data/test/rubygems/test_gem_commands_check_command.rb +5 -4
  441. data/test/rubygems/test_gem_commands_cleanup_command.rb +41 -40
  442. data/test/rubygems/test_gem_commands_contents_command.rb +28 -27
  443. data/test/rubygems/test_gem_commands_dependency_command.rb +37 -36
  444. data/test/rubygems/test_gem_commands_environment_command.rb +17 -16
  445. data/test/rubygems/test_gem_commands_exec_command.rb +853 -0
  446. data/test/rubygems/test_gem_commands_fetch_command.rb +38 -37
  447. data/test/rubygems/test_gem_commands_generate_index_command.rb +8 -7
  448. data/test/rubygems/test_gem_commands_help_command.rb +14 -13
  449. data/test/rubygems/test_gem_commands_info_command.rb +29 -2
  450. data/test/rubygems/test_gem_commands_install_command.rb +152 -132
  451. data/test/rubygems/test_gem_commands_list_command.rb +5 -4
  452. data/test/rubygems/test_gem_commands_lock_command.rb +11 -10
  453. data/test/rubygems/test_gem_commands_mirror.rb +3 -2
  454. data/test/rubygems/test_gem_commands_open_command.rb +5 -4
  455. data/test/rubygems/test_gem_commands_outdated_command.rb +10 -9
  456. data/test/rubygems/test_gem_commands_owner_command.rb +227 -50
  457. data/test/rubygems/test_gem_commands_pristine_command.rb +142 -93
  458. data/test/rubygems/test_gem_commands_push_command.rb +189 -64
  459. data/test/rubygems/test_gem_commands_query_command.rb +74 -73
  460. data/test/rubygems/test_gem_commands_search_command.rb +3 -2
  461. data/test/rubygems/test_gem_commands_server_command.rb +3 -2
  462. data/test/rubygems/test_gem_commands_setup_command.rb +123 -96
  463. data/test/rubygems/test_gem_commands_signin_command.rb +71 -31
  464. data/test/rubygems/test_gem_commands_signout_command.rb +3 -3
  465. data/test/rubygems/test_gem_commands_sources_command.rb +29 -29
  466. data/test/rubygems/test_gem_commands_specification_command.rb +33 -32
  467. data/test/rubygems/test_gem_commands_stale_command.rb +5 -4
  468. data/test/rubygems/test_gem_commands_uninstall_command.rb +99 -81
  469. data/test/rubygems/test_gem_commands_unpack_command.rb +32 -31
  470. data/test/rubygems/test_gem_commands_update_command.rb +96 -95
  471. data/test/rubygems/test_gem_commands_which_command.rb +7 -6
  472. data/test/rubygems/test_gem_commands_yank_command.rb +162 -43
  473. data/test/rubygems/test_gem_config_file.rb +94 -81
  474. data/test/rubygems/test_gem_dependency.rb +76 -73
  475. data/test/rubygems/test_gem_dependency_installer.rb +200 -165
  476. data/test/rubygems/test_gem_dependency_list.rb +48 -47
  477. data/test/rubygems/test_gem_dependency_resolution_error.rb +5 -4
  478. data/test/rubygems/test_gem_doctor.rb +27 -26
  479. data/test/rubygems/test_gem_ext_builder.rb +60 -61
  480. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +4 -4
  481. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{Cargo.lock → ext/custom_name_lib/Cargo.lock} +23 -33
  482. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{Cargo.toml → ext/custom_name_lib/Cargo.toml} +1 -1
  483. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{src → ext/custom_name_lib/src}/lib.rs +1 -1
  484. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +3 -0
  485. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +37 -33
  486. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +1 -1
  487. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +2 -0
  488. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +12 -0
  489. data/test/rubygems/test_gem_ext_cargo_builder.rb +48 -59
  490. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +20 -19
  491. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +21 -36
  492. data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -15
  493. data/test/rubygems/test_gem_ext_configure_builder.rb +14 -13
  494. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +51 -52
  495. data/test/rubygems/test_gem_ext_rake_builder.rb +16 -15
  496. data/test/rubygems/test_gem_gem_runner.rb +15 -9
  497. data/test/rubygems/test_gem_gemcutter_utilities.rb +170 -84
  498. data/test/rubygems/test_gem_impossible_dependencies_error.rb +5 -4
  499. data/test/rubygems/test_gem_indexer.rb +87 -67
  500. data/test/rubygems/test_gem_install_update_options.rb +17 -16
  501. data/test/rubygems/test_gem_installer.rb +422 -304
  502. data/test/rubygems/test_gem_local_remote_options.rb +11 -10
  503. data/test/rubygems/test_gem_name_tuple.rb +5 -4
  504. data/test/rubygems/test_gem_package.rb +243 -231
  505. data/test/rubygems/test_gem_package_old.rb +14 -13
  506. data/test/rubygems/test_gem_package_tar_header.rb +48 -47
  507. data/test/rubygems/test_gem_package_tar_reader.rb +56 -8
  508. data/test/rubygems/test_gem_package_tar_reader_entry.rb +162 -16
  509. data/test/rubygems/test_gem_package_tar_writer.rb +77 -76
  510. data/test/rubygems/test_gem_package_task.rb +19 -18
  511. data/test/rubygems/test_gem_path_support.rb +15 -14
  512. data/test/rubygems/test_gem_platform.rb +333 -227
  513. data/test/rubygems/test_gem_rdoc.rb +15 -14
  514. data/test/rubygems/test_gem_remote_fetcher.rb +155 -154
  515. data/test/rubygems/test_gem_request.rb +64 -58
  516. data/test/rubygems/test_gem_request_connection_pools.rb +30 -29
  517. data/test/rubygems/test_gem_request_set.rb +101 -100
  518. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +210 -211
  519. data/test/rubygems/test_gem_request_set_lockfile.rb +87 -86
  520. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +58 -57
  521. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +63 -62
  522. data/test/rubygems/test_gem_requirement.rb +48 -41
  523. data/test/rubygems/test_gem_resolver.rb +167 -99
  524. data/test/rubygems/test_gem_resolver_activation_request.rb +7 -6
  525. data/test/rubygems/test_gem_resolver_api_set.rb +34 -33
  526. data/test/rubygems/test_gem_resolver_api_specification.rb +48 -47
  527. data/test/rubygems/test_gem_resolver_best_set.rb +23 -22
  528. data/test/rubygems/test_gem_resolver_composed_set.rb +2 -1
  529. data/test/rubygems/test_gem_resolver_conflict.rb +13 -12
  530. data/test/rubygems/test_gem_resolver_dependency_request.rb +16 -15
  531. data/test/rubygems/test_gem_resolver_git_set.rb +22 -21
  532. data/test/rubygems/test_gem_resolver_git_specification.rb +22 -21
  533. data/test/rubygems/test_gem_resolver_index_set.rb +13 -12
  534. data/test/rubygems/test_gem_resolver_index_specification.rb +17 -16
  535. data/test/rubygems/test_gem_resolver_installed_specification.rb +6 -5
  536. data/test/rubygems/test_gem_resolver_installer_set.rb +79 -34
  537. data/test/rubygems/test_gem_resolver_local_specification.rb +8 -7
  538. data/test/rubygems/test_gem_resolver_lock_set.rb +13 -12
  539. data/test/rubygems/test_gem_resolver_lock_specification.rb +18 -17
  540. data/test/rubygems/test_gem_resolver_requirement_list.rb +2 -1
  541. data/test/rubygems/test_gem_resolver_specification.rb +9 -8
  542. data/test/rubygems/test_gem_resolver_vendor_set.rb +7 -6
  543. data/test/rubygems/test_gem_resolver_vendor_specification.rb +11 -10
  544. data/test/rubygems/test_gem_security.rb +69 -68
  545. data/test/rubygems/test_gem_security_policy.rb +72 -72
  546. data/test/rubygems/test_gem_security_signer.rb +35 -34
  547. data/test/rubygems/test_gem_security_trust_dir.rb +7 -6
  548. data/test/rubygems/test_gem_silent_ui.rb +39 -32
  549. data/test/rubygems/test_gem_source.rb +45 -44
  550. data/test/rubygems/test_gem_source_fetch_problem.rb +10 -9
  551. data/test/rubygems/test_gem_source_git.rb +69 -62
  552. data/test/rubygems/test_gem_source_installed.rb +17 -16
  553. data/test/rubygems/test_gem_source_list.rb +6 -5
  554. data/test/rubygems/test_gem_source_local.rb +15 -14
  555. data/test/rubygems/test_gem_source_lock.rb +32 -31
  556. data/test/rubygems/test_gem_source_specific_file.rb +18 -17
  557. data/test/rubygems/test_gem_source_subpath_problem.rb +8 -7
  558. data/test/rubygems/test_gem_source_vendor.rb +14 -13
  559. data/test/rubygems/test_gem_spec_fetcher.rb +73 -72
  560. data/test/rubygems/test_gem_specification.rb +533 -469
  561. data/test/rubygems/test_gem_stream_ui.rb +53 -22
  562. data/test/rubygems/test_gem_stub_specification.rb +33 -32
  563. data/test/rubygems/test_gem_text.rb +2 -1
  564. data/test/rubygems/test_gem_uninstaller.rb +118 -117
  565. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +4 -3
  566. data/test/rubygems/test_gem_update_suggestion.rb +209 -0
  567. data/test/rubygems/test_gem_uri.rb +6 -4
  568. data/test/rubygems/test_gem_uri_formatter.rb +15 -14
  569. data/test/rubygems/test_gem_util.rb +24 -23
  570. data/test/rubygems/test_gem_validator.rb +8 -8
  571. data/test/rubygems/test_gem_version.rb +24 -16
  572. data/test/rubygems/test_gem_version_option.rb +16 -15
  573. data/test/rubygems/test_kernel.rb +43 -48
  574. data/test/rubygems/test_project_sanity.rb +32 -3
  575. data/test/rubygems/test_remote_fetch_error.rb +8 -7
  576. data/test/rubygems/test_require.rb +118 -103
  577. data/test/rubygems/test_rubygems.rb +10 -8
  578. data/test/rubygems/test_webauthn_listener.rb +143 -0
  579. data/test/rubygems/test_webauthn_listener_response.rb +93 -0
  580. data/test/rubygems/test_webauthn_poller.rb +124 -0
  581. data/test/rubygems/utilities.rb +98 -34
  582. data/test/rubygems/wrong_key_cert.pem +15 -15
  583. data/test/rubygems/wrong_key_cert_32.pem +15 -15
  584. data/test/test_changelog_generator.rb +1 -1
  585. metadata +99 -46
  586. data/bundler/lib/bundler/dep_proxy.rb +0 -55
  587. data/bundler/lib/bundler/templates/gems.rb +0 -5
  588. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +0 -5
  589. data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
  590. data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
  591. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
  592. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
  593. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
  594. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
  595. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
  596. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
  597. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
  598. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
  599. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
  600. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
  601. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
  602. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
  603. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -149
  604. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
  605. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
  606. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
  607. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
  608. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
  609. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
  610. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
  611. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
  612. data/bundler/lib/bundler/vendored_molinillo.rb +0 -4
  613. data/bundler/lib/bundler/version_ranges.rb +0 -122
  614. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb +0 -21
  615. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/build.rb +0 -21
@@ -1,18 +1,19 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'helper'
2
+
3
+ require_relative "helper"
3
4
 
4
5
  unless Gem::HAVE_OPENSSL
5
- warn 'Skipping Gem::Security::Signer tests. openssl not found.'
6
+ warn "Skipping Gem::Security::Signer tests. openssl not found."
6
7
  end
7
8
 
8
9
  class TestGemSecuritySigner < Gem::TestCase
9
- ALTERNATE_KEY = load_key 'alternate'
10
- CHILD_KEY = load_key 'child'
11
- GRANDCHILD_KEY = load_key 'grandchild'
10
+ ALTERNATE_KEY = load_key "alternate"
11
+ CHILD_KEY = load_key "child"
12
+ GRANDCHILD_KEY = load_key "grandchild"
12
13
 
13
- CHILD_CERT = load_cert 'child'
14
- GRANDCHILD_CERT = load_cert 'grandchild'
15
- EXPIRED_CERT = load_cert 'expired'
14
+ CHILD_CERT = load_cert "child"
15
+ GRANDCHILD_CERT = load_cert "grandchild"
16
+ EXPIRED_CERT = load_cert "expired"
16
17
 
17
18
  def setup
18
19
  super
@@ -42,7 +43,7 @@ class TestGemSecuritySigner < Gem::TestCase
42
43
 
43
44
  def test_initialize_cert_chain_invalid
44
45
  assert_raise OpenSSL::X509::CertificateError do
45
- Gem::Security::Signer.new nil, ['garbage']
46
+ Gem::Security::Signer.new nil, ["garbage"]
46
47
  end
47
48
  end
48
49
 
@@ -54,12 +55,12 @@ class TestGemSecuritySigner < Gem::TestCase
54
55
  end
55
56
 
56
57
  def test_initialize_default
57
- FileUtils.mkdir_p File.join(Gem.user_home, '.gem')
58
+ FileUtils.mkdir_p File.join(Gem.user_home, ".gem")
58
59
 
59
- private_key_path = File.join Gem.user_home, '.gem', 'gem-private_key.pem'
60
+ private_key_path = File.join Gem.user_home, ".gem", "gem-private_key.pem"
60
61
  Gem::Security.write PRIVATE_KEY, private_key_path
61
62
 
62
- public_cert_path = File.join Gem.user_home, '.gem', 'gem-public_cert.pem'
63
+ public_cert_path = File.join Gem.user_home, ".gem", "gem-public_cert.pem"
63
64
  Gem::Security.write PUBLIC_CERT, public_cert_path
64
65
 
65
66
  signer = Gem::Security::Signer.new nil, nil
@@ -87,7 +88,7 @@ class TestGemSecuritySigner < Gem::TestCase
87
88
  def test_extract_name
88
89
  signer = Gem::Security::Signer.new nil, nil
89
90
 
90
- assert_equal 'child@example', signer.extract_name(CHILD_CERT)
91
+ assert_equal "child@example", signer.extract_name(CHILD_CERT)
91
92
  end
92
93
 
93
94
  def test_load_cert_chain
@@ -117,25 +118,25 @@ class TestGemSecuritySigner < Gem::TestCase
117
118
  def test_sign
118
119
  signer = Gem::Security::Signer.new PRIVATE_KEY, [PUBLIC_CERT]
119
120
 
120
- signature = signer.sign 'hello'
121
+ signature = signer.sign "hello"
121
122
 
122
123
  expected = <<-EXPECTED
123
- cHze2sEfRysoUMCfGVAx/7o8jxj5liJJ2ptNxe2jf3l+EZvyjdqpXo9Ndzxx
124
- 6xLp2rxLG4K2//ip4aCH5Sh7hnia+F5u6iuLBETPlklPrmw5dnuKZxolz+vM
125
- 0O1aOZsQHcVzQoESTGjkms3KZk+gn3lg0sSBbAV5/LyDYoHCEjxlcA5D+Olb
126
- rDmRyBMOnMS+q489OZ5Hr6B2YJJ3QbUwIZNhUeNmOxIBEYTrrKkZ92qkxbRN
127
- qhlqFP4jR6zXFeyBCOr0KpTiWBNuxBFXDsxmhGyt2BOIjD6qmKn7RSIfYg/U
128
- toqvglr0kdbknSRRjBVLK6tsgr07aLT9gNP7mTW2PA==
124
+ FmrCYxEXW3dgYYNMxPdS16VrdXT+d5nyXTVlRm64ZHSgMxMAaPtQJsVYv73m
125
+ DWHTzNnLhhINSpgBMLh5a4atM52yxVdkPUTgqIH+LeIPBXn8xaP5JLmfDcmI
126
+ tBpc/9DhS3v9iKCX40igAArFu7Gg3swbgQ61SP+U22LvG5nDQZQz3sudtsw3
127
+ qKPykFVaYjrRwzvBdSdJ1PwlAsanSwcwS/GKPtmE/ykZ6X5XOx7wvCDL/zGy
128
+ B8khkB8hDKC6moCzebmUxCBmTmXD0Wjzon+bf4MOriVE3a0ySGRvpr1mKR2+
129
+ 9EaVo7pDJLEM487+xg1CAZHRhwshd6II00XEzG/jBQ==
129
130
  EXPECTED
130
131
 
131
- assert_equal expected, [signature].pack('m')
132
+ assert_equal expected, [signature].pack("m")
132
133
  end
133
134
 
134
135
  def test_sign_expired
135
136
  signer = Gem::Security::Signer.new PRIVATE_KEY, [EXPIRED_CERT]
136
137
 
137
138
  e = assert_raise Gem::Security::Exception do
138
- signer.sign 'hello'
139
+ signer.sign "hello"
139
140
  end
140
141
 
141
142
  assert_match "certificate /CN=nobody/DC=example not valid after 1970-01-01 00:00:00 UTC", e.message
@@ -143,17 +144,17 @@ toqvglr0kdbknSRRjBVLK6tsgr07aLT9gNP7mTW2PA==
143
144
 
144
145
  def test_sign_expired_auto_update
145
146
  pend if Gem.java_platform?
146
- FileUtils.mkdir_p File.join(Gem.user_home, '.gem'), :mode => 0700
147
+ FileUtils.mkdir_p File.join(Gem.user_home, ".gem"), :mode => 0700
147
148
 
148
- private_key_path = File.join(Gem.user_home, '.gem', 'gem-private_key.pem')
149
+ private_key_path = File.join(Gem.user_home, ".gem", "gem-private_key.pem")
149
150
  Gem::Security.write PRIVATE_KEY, private_key_path
150
151
 
151
- cert_path = File.join Gem.user_home, '.gem', 'gem-public_cert.pem'
152
+ cert_path = File.join Gem.user_home, ".gem", "gem-public_cert.pem"
152
153
  Gem::Security.write EXPIRED_CERT, cert_path
153
154
 
154
155
  signer = Gem::Security::Signer.new PRIVATE_KEY, [EXPIRED_CERT]
155
156
 
156
- signer.sign 'hello'
157
+ signer.sign "hello"
157
158
 
158
159
  cert = OpenSSL::X509::Certificate.new File.read cert_path
159
160
 
@@ -163,14 +164,14 @@ toqvglr0kdbknSRRjBVLK6tsgr07aLT9gNP7mTW2PA==
163
164
  expiry = EXPIRED_CERT.not_after.strftime "%Y%m%d%H%M%S"
164
165
 
165
166
  expired_path =
166
- File.join Gem.user_home, '.gem', "gem-public_cert.pem.expired.#{expiry}"
167
+ File.join Gem.user_home, ".gem", "gem-public_cert.pem.expired.#{expiry}"
167
168
 
168
169
  assert_path_exist expired_path
169
170
  assert_equal EXPIRED_CERT.to_pem, File.read(expired_path)
170
171
  end
171
172
 
172
173
  def test_sign_expired_auto_update_exists
173
- FileUtils.mkdir_p File.join(Gem.user_home, '.gem'), :mode => 0700
174
+ FileUtils.mkdir_p File.join(Gem.user_home, ".gem"), :mode => 0700
174
175
 
175
176
  expiry = EXPIRED_CERT.not_after.strftime "%Y%m%d%H%M%S"
176
177
  expired_path =
@@ -178,16 +179,16 @@ toqvglr0kdbknSRRjBVLK6tsgr07aLT9gNP7mTW2PA==
178
179
 
179
180
  Gem::Security.write EXPIRED_CERT, expired_path
180
181
 
181
- private_key_path = File.join(Gem.user_home, 'gem-private_key.pem')
182
+ private_key_path = File.join(Gem.user_home, "gem-private_key.pem")
182
183
  Gem::Security.write PRIVATE_KEY, private_key_path
183
184
 
184
- cert_path = File.join Gem.user_home, 'gem-public_cert.pem'
185
+ cert_path = File.join Gem.user_home, "gem-public_cert.pem"
185
186
  Gem::Security.write EXPIRED_CERT, cert_path
186
187
 
187
188
  signer = Gem::Security::Signer.new PRIVATE_KEY, [EXPIRED_CERT]
188
189
 
189
190
  e = assert_raise Gem::Security::Exception do
190
- signer.sign 'hello'
191
+ signer.sign "hello"
191
192
  end
192
193
 
193
194
  assert_match %r{certificate /CN=nobody/DC=example not valid}, e.message
@@ -196,14 +197,14 @@ toqvglr0kdbknSRRjBVLK6tsgr07aLT9gNP7mTW2PA==
196
197
  def test_sign_no_key
197
198
  signer = Gem::Security::Signer.new nil, nil
198
199
 
199
- assert_nil signer.sign 'stuff'
200
+ assert_nil signer.sign "stuff"
200
201
  end
201
202
 
202
203
  def test_sign_wrong_key
203
204
  signer = Gem::Security::Signer.new ALTERNATE_KEY, [PUBLIC_CERT]
204
205
 
205
206
  assert_raise Gem::Security::Exception do
206
- signer.sign 'hello'
207
+ signer.sign "hello"
207
208
  end
208
209
  end
209
210
 
@@ -211,7 +212,7 @@ toqvglr0kdbknSRRjBVLK6tsgr07aLT9gNP7mTW2PA==
211
212
  signer = Gem::Security::Signer.new ALTERNATE_KEY, []
212
213
 
213
214
  assert_raise Gem::Security::Exception do
214
- signer.sign 'hello'
215
+ signer.sign "hello"
215
216
  end
216
217
  end
217
218
  end if Gem::HAVE_OPENSSL
@@ -1,17 +1,18 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'helper'
2
+
3
+ require_relative "helper"
3
4
 
4
5
  unless Gem::HAVE_OPENSSL
5
- warn 'Skipping Gem::Security::TrustDir tests. openssl not found.'
6
+ warn "Skipping Gem::Security::TrustDir tests. openssl not found."
6
7
  end
7
8
 
8
9
  class TestGemSecurityTrustDir < Gem::TestCase
9
- CHILD_CERT = load_cert 'child'
10
+ CHILD_CERT = load_cert "child"
10
11
 
11
12
  def setup
12
13
  super
13
14
 
14
- @dest_dir = File.join @tempdir, 'trust'
15
+ @dest_dir = File.join @tempdir, "trust"
15
16
 
16
17
  @trust_dir = Gem::Security::TrustDir.new @dest_dir
17
18
  end
@@ -70,7 +71,7 @@ class TestGemSecurityTrustDir < Gem::TestCase
70
71
  assert_path_exist @dest_dir
71
72
 
72
73
  mask = 040700 & (~File.umask)
73
- mask |= 0200000 if /aix/ =~ RUBY_PLATFORM
74
+ mask |= 0200000 if RUBY_PLATFORM.include?("aix")
74
75
 
75
76
  assert_equal mask, File.stat(@dest_dir).mode unless win_platform?
76
77
  end
@@ -91,7 +92,7 @@ class TestGemSecurityTrustDir < Gem::TestCase
91
92
  @trust_dir.verify
92
93
 
93
94
  mask = 040700 & (~File.umask)
94
- mask |= 0200000 if /aix/ =~ RUBY_PLATFORM
95
+ mask |= 0200000 if RUBY_PLATFORM.include?("aix")
95
96
 
96
97
  assert_equal mask, File.stat(@dest_dir).mode unless win_platform?
97
98
  end
@@ -1,7 +1,8 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'helper'
3
- require 'rubygems/user_interaction'
4
- require 'timeout'
2
+
3
+ require_relative "helper"
4
+ require "rubygems/user_interaction"
5
+ require "timeout"
5
6
 
6
7
  class TestGemSilentUI < Gem::TestCase
7
8
  def setup
@@ -18,28 +19,28 @@ class TestGemSilentUI < Gem::TestCase
18
19
  value = nil
19
20
  out, err = capture_output do
20
21
  use_ui @sui do
21
- value = @sui.ask 'Problem?'
22
+ value = @sui.ask "Problem?"
22
23
  end
23
24
  end
24
25
 
25
- assert_empty out, 'No output'
26
- assert_empty err, 'No output'
26
+ assert_empty out, "No output"
27
+ assert_empty err, "No output"
27
28
 
28
- assert_nil value, 'No value'
29
+ assert_nil value, "No value"
29
30
  end
30
31
 
31
32
  def test_ask_for_password
32
33
  value = nil
33
34
  out, err = capture_output do
34
35
  use_ui @sui do
35
- value = @sui.ask_for_password 'Problem?'
36
+ value = @sui.ask_for_password "Problem?"
36
37
  end
37
38
  end
38
39
 
39
- assert_empty out, 'No output'
40
- assert_empty err, 'No output'
40
+ assert_empty out, "No output"
41
+ assert_empty err, "No output"
41
42
 
42
- assert_nil value, 'No value'
43
+ assert_nil value, "No value"
43
44
  end
44
45
 
45
46
  def test_ask_yes_no
@@ -47,70 +48,76 @@ class TestGemSilentUI < Gem::TestCase
47
48
  out, err = capture_output do
48
49
  use_ui @sui do
49
50
  assert_raise(Gem::OperationNotSupportedError) do
50
- @sui.ask_yes_no 'Problem?'
51
+ @sui.ask_yes_no "Problem?"
51
52
  end
52
53
  end
53
54
  end
54
55
 
55
- assert_empty out, 'No output'
56
- assert_empty err, 'No output'
56
+ assert_empty out, "No output"
57
+ assert_empty err, "No output"
57
58
 
58
59
  out, err = capture_output do
59
60
  use_ui @sui do
60
- value = @sui.ask_yes_no 'Problem?', true
61
+ value = @sui.ask_yes_no "Problem?", true
61
62
  end
62
63
  end
63
64
 
64
- assert_empty out, 'No output'
65
- assert_empty err, 'No output'
65
+ assert_empty out, "No output"
66
+ assert_empty err, "No output"
66
67
 
67
- assert value, 'Value is true'
68
+ assert value, "Value is true"
68
69
 
69
70
  out, err = capture_output do
70
71
  use_ui @sui do
71
- value = @sui.ask_yes_no 'Problem?', false
72
+ value = @sui.ask_yes_no "Problem?", false
72
73
  end
73
74
  end
74
75
 
75
- assert_empty out, 'No output'
76
- assert_empty err, 'No output'
76
+ assert_empty out, "No output"
77
+ assert_empty err, "No output"
77
78
 
78
- assert_equal value, false, 'Value is false'
79
+ assert_equal value, false, "Value is false"
79
80
  end
80
81
 
81
82
  def test_choose_from_list
82
83
  value = nil
83
84
  out, err = capture_output do
84
85
  use_ui @sui do
85
- value = @sui.choose_from_list 'Problem?', %w[yes no]
86
+ value = @sui.choose_from_list "Problem?", %w[yes no]
86
87
  end
87
88
  end
88
89
 
89
- assert_empty out, 'No output'
90
- assert_empty err, 'No output'
90
+ assert_empty out, "No output"
91
+ assert_empty err, "No output"
91
92
 
92
- assert_equal [nil, nil], value, 'Value is nil!'
93
+ assert_equal [nil, nil], value, "Value is nil!"
93
94
  end
94
95
 
95
96
  def test_progress_reporter
96
97
  out, err = capture_output do
97
98
  use_ui @sui do
98
- @sui.progress_reporter 10, 'hi'
99
+ @sui.progress_reporter 10, "hi"
99
100
  end
100
101
  end
101
102
 
102
- assert_empty out, 'No output'
103
- assert_empty err, 'No output'
103
+ assert_empty out, "No output"
104
+ assert_empty err, "No output"
104
105
  end
105
106
 
106
107
  def test_download_reporter
107
108
  out, err = capture_output do
108
109
  use_ui @sui do
109
- @sui.download_reporter.fetch 'a.gem', 1024
110
+ @sui.download_reporter.fetch "a.gem", 1024
110
111
  end
111
112
  end
112
113
 
113
- assert_empty out, 'No output'
114
- assert_empty err, 'No output'
114
+ assert_empty out, "No output"
115
+ assert_empty err, "No output"
116
+ end
117
+
118
+ def test_new_without_dev_null
119
+ File.stub(:open, ->(path, mode) { raise Errno::ENOTCAPABLE if path == IO::NULL }) do
120
+ Gem::SilentUI.new
121
+ end
115
122
  end
116
123
  end
@@ -1,7 +1,8 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'helper'
3
- require 'rubygems/source'
4
- require 'rubygems/indexer'
2
+
3
+ require_relative "helper"
4
+ require "rubygems/source"
5
+ require "rubygems/indexer"
5
6
 
6
7
  class TestGemSource < Gem::TestCase
7
8
  def tuple(*args)
@@ -12,10 +13,10 @@ class TestGemSource < Gem::TestCase
12
13
  super
13
14
 
14
15
  @specs = spec_fetcher do |fetcher|
15
- fetcher.spec 'a', '1.a'
16
- fetcher.gem 'a', 1
17
- fetcher.spec 'a', 2
18
- fetcher.spec 'b', 2
16
+ fetcher.spec "a", "1.a"
17
+ fetcher.gem "a", 1
18
+ fetcher.spec "a", 2
19
+ fetcher.spec "b", 2
19
20
  end
20
21
 
21
22
  @source = Gem::Source.new(@gem_repo)
@@ -23,14 +24,14 @@ class TestGemSource < Gem::TestCase
23
24
 
24
25
  def test_initialize_invalid_uri
25
26
  assert_raise URI::InvalidURIError do
26
- Gem::Source.new 'git@example:a.git'
27
+ Gem::Source.new "git@example:a.git"
27
28
  end
28
29
  end
29
30
 
30
31
  def test_initialize_git
31
- repository = 'git@example:a.git'
32
+ repository = "git@example:a.git"
32
33
 
33
- source = Gem::Source::Git.new 'a', repository, 'master', false
34
+ source = Gem::Source::Git.new "a", repository, nil, false
34
35
 
35
36
  assert_equal repository, source.uri
36
37
  end
@@ -38,13 +39,13 @@ class TestGemSource < Gem::TestCase
38
39
  def test_cache_dir_escapes_windows_paths
39
40
  uri = URI.parse("file:///C:/WINDOWS/Temp/gem_repo")
40
41
  root = Gem.spec_cache_dir
41
- cache_dir = @source.cache_dir(uri).gsub(root, '')
42
+ cache_dir = @source.cache_dir(uri).gsub(root, "")
42
43
  assert cache_dir !~ /:/, "#{cache_dir} should not contain a :"
43
44
  end
44
45
 
45
46
  def test_dependency_resolver_set_bundler_api
46
- response = Net::HTTPResponse.new '1.1', 200, 'OK'
47
- response.uri = URI('http://example')
47
+ response = Net::HTTPResponse.new "1.1", 200, "OK"
48
+ response.uri = URI("http://example")
48
49
 
49
50
  @fetcher.data[@gem_repo] = response
50
51
 
@@ -70,11 +71,11 @@ class TestGemSource < Gem::TestCase
70
71
  end
71
72
 
72
73
  def test_fetch_spec
73
- a1 = @specs['a-1']
74
+ a1 = @specs["a-1"]
74
75
 
75
76
  spec_uri = "#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{a1.spec_name}"
76
77
 
77
- spec = @source.fetch_spec tuple('a', Gem::Version.new(1), 'ruby')
78
+ spec = @source.fetch_spec tuple("a", Gem::Version.new(1), "ruby")
78
79
  assert_equal a1.full_name, spec.full_name
79
80
 
80
81
  cache_dir = @source.cache_dir URI.parse(spec_uri)
@@ -85,7 +86,7 @@ class TestGemSource < Gem::TestCase
85
86
  end
86
87
 
87
88
  def test_fetch_spec_cached
88
- a1 = @specs['a-1']
89
+ a1 = @specs["a-1"]
89
90
 
90
91
  spec_uri = "#{@gem_repo}/#{Gem::MARSHAL_SPEC_DIR}#{a1.spec_name}"
91
92
  @fetcher.data["#{spec_uri}.rz"] = nil
@@ -95,11 +96,11 @@ class TestGemSource < Gem::TestCase
95
96
 
96
97
  cache_file = File.join cache_dir, a1.spec_name
97
98
 
98
- File.open cache_file, 'wb' do |io|
99
+ File.open cache_file, "wb" do |io|
99
100
  Marshal.dump a1, io
100
101
  end
101
102
 
102
- spec = @source.fetch_spec tuple('a', Gem::Version.new(1), 'ruby')
103
+ spec = @source.fetch_spec tuple("a", Gem::Version.new(1), "ruby")
103
104
  assert_equal a1.full_name, spec.full_name
104
105
  end
105
106
 
@@ -108,24 +109,24 @@ class TestGemSource < Gem::TestCase
108
109
  fetcher.legacy_platform
109
110
  end
110
111
 
111
- spec = @source.fetch_spec tuple('pl', Gem::Version.new(1), 'i386-linux')
112
+ spec = @source.fetch_spec tuple("pl", Gem::Version.new(1), "i386-linux")
112
113
 
113
- assert_equal specs['pl-1-x86-linux'].full_name, spec.full_name
114
+ assert_equal specs["pl-1-x86-linux"].full_name, spec.full_name
114
115
  end
115
116
 
116
117
  def test_fetch_spec_platform_ruby
117
- spec = @source.fetch_spec tuple('a', Gem::Version.new(1), nil)
118
- assert_equal @specs['a-1'].full_name, spec.full_name
118
+ spec = @source.fetch_spec tuple("a", Gem::Version.new(1), nil)
119
+ assert_equal @specs["a-1"].full_name, spec.full_name
119
120
 
120
- spec = @source.fetch_spec tuple('a', Gem::Version.new(1), '')
121
- assert_equal @specs['a-1'].full_name, spec.full_name
121
+ spec = @source.fetch_spec tuple("a", Gem::Version.new(1), "")
122
+ assert_equal @specs["a-1"].full_name, spec.full_name
122
123
  end
123
124
 
124
125
  def test_load_specs
125
126
  released = @source.load_specs(:released).map {|spec| spec.full_name }
126
127
  assert_equal %W[a-2 a-1 b-2], released
127
128
 
128
- cache_dir = File.join Gem.spec_cache_dir, 'gems.example.com%80'
129
+ cache_dir = File.join Gem.spec_cache_dir, "gems.example.com%80"
129
130
  assert File.exist?(cache_dir), "#{cache_dir} does not exist"
130
131
 
131
132
  cache_file = File.join cache_dir, "specs.#{Gem.marshal_version}"
@@ -136,19 +137,19 @@ class TestGemSource < Gem::TestCase
136
137
  latest_specs = @source.load_specs :latest
137
138
 
138
139
  # Make sure the cached version is actually different:
139
- latest_specs << Gem::NameTuple.new('cached', Gem::Version.new('1.0.0'), 'ruby')
140
+ latest_specs << Gem::NameTuple.new("cached", Gem::Version.new("1.0.0"), "ruby")
140
141
 
141
142
  @fetcher.data["#{@gem_repo}latest_specs.#{Gem.marshal_version}.gz"] = nil
142
143
  @fetcher.data["#{@gem_repo}latest_specs.#{Gem.marshal_version}"] =
143
- ' ' * Marshal.dump(latest_specs).length
144
+ " " * Marshal.dump(latest_specs).length
144
145
 
145
- cache_dir = File.join Gem.spec_cache_dir, 'gems.example.com%80'
146
+ cache_dir = File.join Gem.spec_cache_dir, "gems.example.com%80"
146
147
 
147
148
  FileUtils.mkdir_p cache_dir
148
149
 
149
150
  cache_file = File.join cache_dir, "latest_specs.#{Gem.marshal_version}"
150
151
 
151
- File.open cache_file, 'wb' do |io|
152
+ File.open cache_file, "wb" do |io|
152
153
  Marshal.dump latest_specs, io
153
154
  end
154
155
 
@@ -161,18 +162,18 @@ class TestGemSource < Gem::TestCase
161
162
  latest_specs = @source.load_specs :latest
162
163
 
163
164
  # Make sure the cached version is actually different:
164
- latest_specs << Gem::NameTuple.new('fixed', Gem::Version.new('1.0.0'), 'ruby')
165
+ latest_specs << Gem::NameTuple.new("fixed", Gem::Version.new("1.0.0"), "ruby")
165
166
  # Setup valid data on the 'remote'
166
167
  @fetcher.data["#{@gem_repo}latest_specs.#{Gem.marshal_version}.gz"] =
167
168
  util_gzip(Marshal.dump(latest_specs))
168
169
 
169
- cache_dir = File.join Gem.spec_cache_dir, 'gems.example.com%80'
170
+ cache_dir = File.join Gem.spec_cache_dir, "gems.example.com%80"
170
171
 
171
172
  FileUtils.mkdir_p cache_dir
172
173
 
173
174
  cache_file = File.join cache_dir, "latest_specs.#{Gem.marshal_version}"
174
175
 
175
- File.open cache_file, 'wb' do |io|
176
+ File.open cache_file, "wb" do |io|
176
177
  # Setup invalid data in the cache:
177
178
  io.write Marshal.dump(latest_specs)[0, 10]
178
179
  end
@@ -192,34 +193,34 @@ class TestGemSource < Gem::TestCase
192
193
 
193
194
  def test_spaceship
194
195
  remote = @source
195
- specific = Gem::Source::SpecificFile.new @specs['a-1'].cache_file
196
+ specific = Gem::Source::SpecificFile.new @specs["a-1"].cache_file
196
197
  installed = Gem::Source::Installed.new
197
198
  local = Gem::Source::Local.new
198
199
 
199
- assert_equal(0, remote.<=>(remote), 'remote <=> remote')
200
+ assert_equal(0, remote.<=>(remote), "remote <=> remote")
200
201
 
201
- assert_equal(-1, remote.<=>(specific), 'remote <=> specific')
202
- assert_equal(1, specific.<=>(remote), 'specific <=> remote')
202
+ assert_equal(-1, remote.<=>(specific), "remote <=> specific")
203
+ assert_equal(1, specific.<=>(remote), "specific <=> remote")
203
204
 
204
- assert_equal(-1, remote.<=>(local), 'remote <=> local')
205
- assert_equal(1, local.<=>(remote), 'local <=> remote')
205
+ assert_equal(-1, remote.<=>(local), "remote <=> local")
206
+ assert_equal(1, local.<=>(remote), "local <=> remote")
206
207
 
207
- assert_equal(-1, remote.<=>(installed), 'remote <=> installed')
208
- assert_equal(1, installed.<=>(remote), 'installed <=> remote')
208
+ assert_equal(-1, remote.<=>(installed), "remote <=> installed")
209
+ assert_equal(1, installed.<=>(remote), "installed <=> remote")
209
210
 
210
211
  no_uri = @source.dup
211
212
  no_uri.instance_variable_set :@uri, nil
212
213
 
213
- assert_equal(-1, remote.<=>(no_uri), 'remote <=> no_uri')
214
+ assert_equal(-1, remote.<=>(no_uri), "remote <=> no_uri")
214
215
  end
215
216
 
216
217
  def test_spaceship_order_is_preserved_when_uri_differs
217
218
  sourceA = Gem::Source.new "http://example.com/a"
218
219
  sourceB = Gem::Source.new "http://example.com/b"
219
220
 
220
- assert_equal(0, sourceA.<=>(sourceA), 'sourceA <=> sourceA')
221
- assert_equal(1, sourceA.<=>(sourceB), 'sourceA <=> sourceB')
222
- assert_equal(1, sourceB.<=>(sourceA), 'sourceB <=> sourceA')
221
+ assert_equal(0, sourceA.<=>(sourceA), "sourceA <=> sourceA")
222
+ assert_equal(1, sourceA.<=>(sourceB), "sourceA <=> sourceB")
223
+ assert_equal(1, sourceB.<=>(sourceA), "sourceB <=> sourceA")
223
224
  end
224
225
 
225
226
  def test_update_cache_eh
@@ -1,10 +1,11 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'helper'
2
+
3
+ require_relative "helper"
3
4
 
4
5
  class TestGemSourceFetchProblem < Gem::TestCase
5
6
  def test_exception
6
7
  source = Gem::Source.new @gem_repo
7
- error = RuntimeError.new 'test'
8
+ error = RuntimeError.new "test"
8
9
 
9
10
  sf = Gem::SourceFetchProblem.new source, error
10
11
 
@@ -12,25 +13,25 @@ class TestGemSourceFetchProblem < Gem::TestCase
12
13
  raise sf
13
14
  end
14
15
 
15
- assert_equal 'test', e.message
16
+ assert_equal "test", e.message
16
17
  end
17
18
 
18
19
  def test_password_redacted
19
- source = Gem::Source.new 'https://username:secret@gemsource.com'
20
- error = RuntimeError.new 'test'
20
+ source = Gem::Source.new "https://username:secret@gemsource.com"
21
+ error = RuntimeError.new "test"
21
22
 
22
23
  sf = Gem::SourceFetchProblem.new source, error
23
24
 
24
- refute_match sf.wordy, 'secret'
25
+ refute_match sf.wordy, "secret"
25
26
  end
26
27
 
27
28
  def test_source_password_no_redacted
28
- source = Gem::Source.new 'https://username:secret@gemsource.com'
29
- error = RuntimeError.new 'test'
29
+ source = Gem::Source.new "https://username:secret@gemsource.com"
30
+ error = RuntimeError.new "test"
30
31
 
31
32
  sf = Gem::SourceFetchProblem.new source, error
32
33
  sf.wordy
33
34
 
34
- assert_match 'secret', source.uri.to_s
35
+ assert_match "secret", source.uri.to_s
35
36
  end
36
37
  end