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,26 +1,27 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'helper'
2
+
3
+ require_relative "helper"
3
4
 
4
5
  class TestGemResolverInstallerSet < Gem::TestCase
5
6
  def test_add_always_install
6
7
  spec_fetcher do |fetcher|
7
- fetcher.download 'a', 1
8
- fetcher.download 'a', 2
8
+ fetcher.download "a", 1
9
+ fetcher.download "a", 2
9
10
  end
10
11
 
11
- util_gem 'a', 1
12
+ util_gem "a", 1
12
13
 
13
14
  set = Gem::Resolver::InstallerSet.new :both
14
15
 
15
- set.add_always_install dep('a')
16
+ set.add_always_install dep("a")
16
17
 
17
18
  assert_equal %w[a-2], set.always_install.map {|s| s.full_name }
18
19
 
19
20
  e = assert_raise Gem::UnsatisfiableDependencyError do
20
- set.add_always_install dep('b')
21
+ set.add_always_install dep("b")
21
22
  end
22
23
 
23
- assert_equal dep('b'), e.dependency.dependency
24
+ assert_equal dep("b"), e.dependency.dependency
24
25
  end
25
26
 
26
27
  def test_add_always_install_errors
@@ -30,7 +31,7 @@ class TestGemResolverInstallerSet < Gem::TestCase
30
31
  set = Gem::Resolver::InstallerSet.new :both
31
32
 
32
33
  e = assert_raise Gem::UnsatisfiableDependencyError do
33
- set.add_always_install dep 'a'
34
+ set.add_always_install dep "a"
34
35
  end
35
36
 
36
37
  refute_empty e.errors
@@ -38,64 +39,96 @@ class TestGemResolverInstallerSet < Gem::TestCase
38
39
 
39
40
  def test_add_always_install_platform
40
41
  spec_fetcher do |fetcher|
41
- fetcher.download 'a', 1
42
- fetcher.download 'a', 2 do |s|
43
- s.platform = Gem::Platform.new 'x86-freebsd-9'
42
+ fetcher.download "a", 1
43
+ fetcher.download "a", 2 do |s|
44
+ s.platform = Gem::Platform.new "x86-freebsd-9"
44
45
  end
45
46
  end
46
47
 
47
48
  set = Gem::Resolver::InstallerSet.new :both
48
49
 
49
- set.add_always_install dep('a')
50
+ set.add_always_install dep("a")
50
51
 
51
52
  assert_equal %w[a-1], set.always_install.map {|s| s.full_name }
52
53
  end
53
54
 
55
+ def test_add_always_install_platform_if_gem_platforms_modified_by_platform_flag
56
+ freebsd = Gem::Platform.new "x86-freebsd-9"
57
+
58
+ spec_fetcher do |fetcher|
59
+ fetcher.download "a", 1
60
+ fetcher.download "a", 1 do |s|
61
+ s.platform = freebsd
62
+ end
63
+ end
64
+
65
+ # equivalent to --platform=x86-freebsd-9
66
+ Gem.platforms << freebsd
67
+ set = Gem::Resolver::InstallerSet.new :both
68
+
69
+ set.add_always_install dep("a")
70
+
71
+ assert_equal %w[a-1-x86-freebsd-9], set.always_install.map {|s| s.full_name }
72
+ end
73
+
74
+ def test_add_always_install_index_spec_platform
75
+ _, a_1_local_gem = util_gem "a", 1 do |s|
76
+ s.platform = Gem::Platform.local
77
+ end
78
+
79
+ FileUtils.mv a_1_local_gem, @tempdir
80
+
81
+ set = Gem::Resolver::InstallerSet.new :both
82
+ set.add_always_install dep("a")
83
+
84
+ assert_equal [Gem::Platform.local], set.always_install.map {|s| s.platform }
85
+ end
86
+
54
87
  def test_add_always_install_prerelease
55
88
  spec_fetcher do |fetcher|
56
- fetcher.gem 'a', 1
57
- fetcher.gem 'a', '3.a'
89
+ fetcher.gem "a", 1
90
+ fetcher.gem "a", "3.a"
58
91
  end
59
92
 
60
93
  set = Gem::Resolver::InstallerSet.new :both
61
94
 
62
- set.add_always_install dep('a')
95
+ set.add_always_install dep("a")
63
96
 
64
97
  assert_equal %w[a-1], set.always_install.map {|s| s.full_name }
65
98
  end
66
99
 
67
100
  def test_add_always_install_prerelease_github_problem
68
101
  spec_fetcher do |fetcher|
69
- fetcher.gem 'a', 1
102
+ fetcher.gem "a", 1
70
103
  end
71
104
 
72
105
  # Github has an issue in which it will generate a misleading prerelease output in its RubyGems server API and
73
106
  # returns a 0 version for the gem while it doesn't exist.
74
107
  @fetcher.data["#{@gem_repo}prerelease_specs.#{Gem.marshal_version}.gz"] = util_gzip(Marshal.dump([
75
- Gem::NameTuple.new('a', Gem::Version.new(0), 'ruby'),
108
+ Gem::NameTuple.new("a", Gem::Version.new(0), "ruby"),
76
109
  ]))
77
110
 
78
111
  set = Gem::Resolver::InstallerSet.new :both
79
112
 
80
- set.add_always_install dep('a')
113
+ set.add_always_install dep("a")
81
114
 
82
115
  assert_equal %w[a-1], set.always_install.map {|s| s.full_name }
83
116
  end
84
117
 
85
118
  def test_add_always_install_prerelease_only
86
119
  spec_fetcher do |fetcher|
87
- fetcher.gem 'a', '3.a'
120
+ fetcher.gem "a", "3.a"
88
121
  end
89
122
 
90
123
  set = Gem::Resolver::InstallerSet.new :both
91
124
 
92
125
  assert_raise Gem::UnsatisfiableDependencyError do
93
- set.add_always_install dep('a')
126
+ set.add_always_install dep("a")
94
127
  end
95
128
  end
96
129
 
97
130
  def test_add_local
98
- a_1, a_1_gem = util_gem 'a', 1
131
+ a_1, a_1_gem = util_gem "a", 1
99
132
 
100
133
  a_1_source = Gem::Source::SpecificFile.new a_1_gem
101
134
 
@@ -108,7 +141,7 @@ class TestGemResolverInstallerSet < Gem::TestCase
108
141
  FileUtils.rm a_1_gem
109
142
  util_clear_gems
110
143
 
111
- req = Gem::Resolver::DependencyRequest.new dep('a'), nil
144
+ req = Gem::Resolver::DependencyRequest.new dep("a"), nil
112
145
 
113
146
  assert_equal %w[a-1], set.find_all(req).map {|spec| spec.full_name }
114
147
  end
@@ -146,7 +179,7 @@ class TestGemResolverInstallerSet < Gem::TestCase
146
179
 
147
180
  set.instance_variable_get(:@errors) << :a
148
181
 
149
- req = Gem::Resolver::DependencyRequest.new dep('a'), nil
182
+ req = Gem::Resolver::DependencyRequest.new dep("a"), nil
150
183
 
151
184
  set.find_all req
152
185
 
@@ -155,42 +188,54 @@ class TestGemResolverInstallerSet < Gem::TestCase
155
188
 
156
189
  def test_find_all_always_install
157
190
  spec_fetcher do |fetcher|
158
- fetcher.download 'a', 2
191
+ fetcher.download "a", 2
159
192
  end
160
193
 
161
- util_gem 'a', 1
194
+ util_gem "a", 1
162
195
 
163
196
  set = Gem::Resolver::InstallerSet.new :both
164
197
 
165
- set.add_always_install dep 'a'
198
+ set.add_always_install dep "a"
166
199
 
167
- req = Gem::Resolver::DependencyRequest.new dep('a'), nil
200
+ req = Gem::Resolver::DependencyRequest.new dep("a"), nil
168
201
 
169
202
  assert_equal %w[a-2], set.find_all(req).map {|spec| spec.full_name }
170
203
  end
171
204
 
172
205
  def test_find_all_prerelease
173
206
  spec_fetcher do |fetcher|
174
- fetcher.download 'a', '1'
175
- fetcher.download 'a', '1.a'
207
+ fetcher.download "a", "1"
208
+ fetcher.download "a", "1.a"
176
209
  end
177
210
 
178
211
  set = Gem::Resolver::InstallerSet.new :both
179
212
 
180
- req = Gem::Resolver::DependencyRequest.new dep('a'), nil
213
+ req = Gem::Resolver::DependencyRequest.new dep("a"), nil
181
214
 
182
215
  assert_equal %w[a-1], set.find_all(req).map {|spec| spec.full_name }
183
216
 
184
- req = Gem::Resolver::DependencyRequest.new dep('a', '>= 0.a'), nil
217
+ req = Gem::Resolver::DependencyRequest.new dep("a", ">= 0.a"), nil
185
218
 
186
219
  assert_equal %w[a-1 a-1.a],
187
220
  set.find_all(req).map {|spec| spec.full_name }.sort
188
221
  end
189
222
 
223
+ def test_find_all_prerelease_dependencies_with_add_local
224
+ activesupport_7_1_0_alpha = util_spec "activesupport", "7.1.0.alpha"
225
+
226
+ install_gem activesupport_7_1_0_alpha
227
+
228
+ set = Gem::Resolver::InstallerSet.new :both
229
+
230
+ req = Gem::Resolver::DependencyRequest.new dep("activesupport", ">= 4.2.0"), nil
231
+
232
+ assert_equal %w[activesupport-7.1.0.alpha], set.find_all(req).map {|spec| spec.full_name }
233
+ end
234
+
190
235
  def test_load_spec
191
236
  specs = spec_fetcher do |fetcher|
192
- fetcher.spec 'a', 2
193
- fetcher.spec 'a', 2 do |s|
237
+ fetcher.spec "a", 2
238
+ fetcher.spec "a", 2 do |s|
194
239
  s.platform = Gem::Platform.local
195
240
  end
196
241
  end
@@ -200,7 +245,7 @@ class TestGemResolverInstallerSet < Gem::TestCase
200
245
 
201
246
  set = Gem::Resolver::InstallerSet.new :remote
202
247
 
203
- spec = set.load_spec 'a', version, Gem::Platform.local, source
248
+ spec = set.load_spec "a", version, Gem::Platform.local, source
204
249
 
205
250
  assert_equal specs["a-2-#{Gem::Platform.local}"].full_name, spec.full_name
206
251
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'helper'
3
- require 'rubygems/available_set'
2
+
3
+ require_relative "helper"
4
+ require "rubygems/available_set"
4
5
 
5
6
  class TestGemResolverLocalSpecification < Gem::TestCase
6
7
  def setup
@@ -11,12 +12,12 @@ class TestGemResolverLocalSpecification < Gem::TestCase
11
12
 
12
13
  def test_install
13
14
  specs = spec_fetcher do |fetcher|
14
- fetcher.gem 'a', 2
15
+ fetcher.gem "a", 2
15
16
  end
16
17
 
17
- source = Gem::Source::SpecificFile.new 'gems/a-2.gem'
18
+ source = Gem::Source::SpecificFile.new "gems/a-2.gem"
18
19
 
19
- spec = Gem::Resolver::LocalSpecification.new @set, specs['a-2'], source
20
+ spec = Gem::Resolver::LocalSpecification.new @set, specs["a-2"], source
20
21
 
21
22
  called = false
22
23
 
@@ -24,13 +25,13 @@ class TestGemResolverLocalSpecification < Gem::TestCase
24
25
  called = installer
25
26
  end
26
27
 
27
- assert_path_exist File.join @gemhome, 'specifications', 'a-2.gemspec'
28
+ assert_path_exist File.join @gemhome, "specifications", "a-2.gemspec"
28
29
 
29
30
  assert_kind_of Gem::Installer, called
30
31
  end
31
32
 
32
33
  def test_installable_platform_eh
33
- b, b_gem = util_gem 'a', 1 do |s|
34
+ b, b_gem = util_gem "a", 1 do |s|
34
35
  s.platform = Gem::Platform.new %w[cpu other_platform 1]
35
36
  end
36
37
 
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'helper'
2
+
3
+ require_relative "helper"
3
4
 
4
5
  class TestGemResolverLockSet < Gem::TestCase
5
6
  def setup
@@ -12,7 +13,7 @@ class TestGemResolverLockSet < Gem::TestCase
12
13
  end
13
14
 
14
15
  def test_add
15
- specs = @set.add 'a', '2', Gem::Platform::RUBY
16
+ specs = @set.add "a", "2", Gem::Platform::RUBY
16
17
  spec = specs.first
17
18
 
18
19
  assert_equal %w[a-2], @set.specs.map {|t| t.full_name }
@@ -20,39 +21,39 @@ class TestGemResolverLockSet < Gem::TestCase
20
21
  assert_kind_of Gem::Resolver::LockSpecification, spec
21
22
 
22
23
  assert_equal @set, spec.set
23
- assert_equal 'a', spec.name
24
+ assert_equal "a", spec.name
24
25
  assert_equal v(2), spec.version
25
26
  assert_equal Gem::Platform::RUBY, spec.platform
26
27
  assert_equal @lock_source, spec.source
27
28
  end
28
29
 
29
30
  def test_find_all
30
- @set.add 'a', '1.a', Gem::Platform::RUBY
31
- @set.add 'a', '2', Gem::Platform::RUBY
32
- @set.add 'b', '2', Gem::Platform::RUBY
31
+ @set.add "a", "1.a", Gem::Platform::RUBY
32
+ @set.add "a", "2", Gem::Platform::RUBY
33
+ @set.add "b", "2", Gem::Platform::RUBY
33
34
 
34
- found = @set.find_all dep 'a'
35
+ found = @set.find_all dep "a"
35
36
 
36
37
  assert_equal %w[a-2], found.map {|s| s.full_name }
37
38
 
38
- found = @set.find_all dep 'a', '>= 0.a'
39
+ found = @set.find_all dep "a", ">= 0.a"
39
40
 
40
41
  assert_equal %w[a-1.a a-2], found.map {|s| s.full_name }
41
42
  end
42
43
 
43
44
  def test_load_spec
44
45
  spec_fetcher do |fetcher|
45
- fetcher.spec 'a', 2
46
+ fetcher.spec "a", 2
46
47
  end
47
48
 
48
49
  version = v(2)
49
- @set.add 'a', version, Gem::Platform::RUBY
50
+ @set.add "a", version, Gem::Platform::RUBY
50
51
 
51
- loaded = @set.load_spec 'a', version, Gem::Platform::RUBY, nil
52
+ loaded = @set.load_spec "a", version, Gem::Platform::RUBY, nil
52
53
 
53
54
  assert_kind_of Gem::Specification, loaded
54
55
 
55
- assert_equal 'a-2', loaded.full_name
56
+ assert_equal "a-2", loaded.full_name
56
57
  end
57
58
 
58
59
  def test_prefetch
@@ -1,7 +1,8 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'helper'
3
- require 'rubygems/installer'
4
- require 'rubygems/resolver'
2
+
3
+ require_relative "helper"
4
+ require "rubygems/installer"
5
+ require "rubygems/resolver"
5
6
 
6
7
  class TestGemResolverLockSpecification < Gem::TestCase
7
8
  def setup
@@ -14,9 +15,9 @@ class TestGemResolverLockSpecification < Gem::TestCase
14
15
  end
15
16
 
16
17
  def test_initialize
17
- spec = @LS.new @set, 'a', v(2), [@source], Gem::Platform::RUBY
18
+ spec = @LS.new @set, "a", v(2), [@source], Gem::Platform::RUBY
18
19
 
19
- assert_equal 'a', spec.name
20
+ assert_equal "a", spec.name
20
21
  assert_equal v(2), spec.version
21
22
  assert_equal Gem::Platform::RUBY, spec.platform
22
23
 
@@ -24,9 +25,9 @@ class TestGemResolverLockSpecification < Gem::TestCase
24
25
  end
25
26
 
26
27
  def test_add_dependency
27
- l_spec = @LS.new @set, 'a', v(2), [@source], Gem::Platform::RUBY
28
+ l_spec = @LS.new @set, "a", v(2), [@source], Gem::Platform::RUBY
28
29
 
29
- b_dep = dep('b', '>= 0')
30
+ b_dep = dep("b", ">= 0")
30
31
 
31
32
  l_spec.add_dependency b_dep
32
33
 
@@ -35,10 +36,10 @@ class TestGemResolverLockSpecification < Gem::TestCase
35
36
 
36
37
  def test_install
37
38
  spec_fetcher do |fetcher|
38
- fetcher.download 'a', 2
39
+ fetcher.download "a", 2
39
40
  end
40
41
 
41
- spec = @LS.new @set, 'a', v(2), [@source], Gem::Platform::RUBY
42
+ spec = @LS.new @set, "a", v(2), [@source], Gem::Platform::RUBY
42
43
 
43
44
  called = false
44
45
 
@@ -50,9 +51,9 @@ class TestGemResolverLockSpecification < Gem::TestCase
50
51
  end
51
52
 
52
53
  def test_install_installed
53
- spec = @LS.new @set, 'a', v(2), [@source], Gem::Platform::RUBY
54
+ spec = @LS.new @set, "a", v(2), [@source], Gem::Platform::RUBY
54
55
 
55
- FileUtils.touch File.join(@gemhome, 'specifications', spec.spec.spec_name)
56
+ FileUtils.touch File.join(@gemhome, "specifications", spec.spec.spec_name)
56
57
 
57
58
  called = false
58
59
 
@@ -66,17 +67,17 @@ class TestGemResolverLockSpecification < Gem::TestCase
66
67
  def test_spec
67
68
  version = v(2)
68
69
 
69
- l_spec = @LS.new @set, 'a', version, [@source], Gem::Platform::RUBY
70
+ l_spec = @LS.new @set, "a", version, [@source], Gem::Platform::RUBY
70
71
 
71
- b_dep = dep 'b', '>= 0'
72
- c_dep = dep 'c', '~> 1'
72
+ b_dep = dep "b", ">= 0"
73
+ c_dep = dep "c", "~> 1"
73
74
 
74
75
  l_spec.add_dependency b_dep
75
76
  l_spec.add_dependency c_dep
76
77
 
77
78
  spec = l_spec.spec
78
79
 
79
- assert_equal 'a', spec.name
80
+ assert_equal "a", spec.name
80
81
  assert_equal version, spec.version
81
82
  assert_equal Gem::Platform::RUBY, spec.platform
82
83
 
@@ -84,13 +85,13 @@ class TestGemResolverLockSpecification < Gem::TestCase
84
85
  end
85
86
 
86
87
  def test_spec_loaded
87
- real_spec = util_spec 'a', 2
88
+ real_spec = util_spec "a", 2
88
89
  install_specs real_spec
89
90
  real_spec.activate
90
91
 
91
92
  version = v(2)
92
93
 
93
- l_spec = @LS.new @set, 'a', version, [@source], Gem::Platform::RUBY
94
+ l_spec = @LS.new @set, "a", version, [@source], Gem::Platform::RUBY
94
95
 
95
96
  assert_same real_spec, l_spec.spec
96
97
  end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'helper'
2
+
3
+ require_relative "helper"
3
4
 
4
5
  class TestGemResolverRequirementList < Gem::TestCase
5
6
  def setup
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'helper'
2
+
3
+ require_relative "helper"
3
4
 
4
5
  class TestGemResolverSpecification < Gem::TestCase
5
6
  class TestSpec < Gem::Resolver::Specification
@@ -16,31 +17,31 @@ class TestGemResolverSpecification < Gem::TestCase
16
17
  def test_install
17
18
  gemhome = "#{@gemhome}2"
18
19
  spec_fetcher do |fetcher|
19
- fetcher.gem 'a', 1
20
+ fetcher.gem "a", 1
20
21
  end
21
22
 
22
- a = util_spec 'a', 1
23
+ a = util_spec "a", 1
23
24
 
24
25
  a_spec = TestSpec.new a
25
26
  a_spec.source = Gem::Source.new @gem_repo
26
27
 
27
28
  a_spec.install :install_dir => gemhome
28
29
 
29
- assert_path_exist File.join gemhome, 'gems', a.full_name
30
+ assert_path_exist File.join gemhome, "gems", a.full_name
30
31
 
31
- expected = File.join gemhome, 'specifications', a.spec_name
32
+ expected = File.join gemhome, "specifications", a.spec_name
32
33
 
33
34
  assert_equal expected, a_spec.spec.loaded_from
34
35
  end
35
36
 
36
37
  def test_installable_platform_eh
37
- a = util_spec 'a', 1
38
+ a = util_spec "a", 1
38
39
 
39
40
  a_spec = TestSpec.new a
40
41
 
41
42
  assert a_spec.installable_platform?
42
43
 
43
- b = util_spec 'a', 1 do |s|
44
+ b = util_spec "a", 1 do |s|
44
45
  s.platform = Gem::Platform.new %w[cpu other_platform 1]
45
46
  end
46
47
 
@@ -50,7 +51,7 @@ class TestGemResolverSpecification < Gem::TestCase
50
51
  end
51
52
 
52
53
  def test_source
53
- a = util_spec 'a', 1
54
+ a = util_spec "a", 1
54
55
 
55
56
  source = Gem::Source.new @gem_repo
56
57
 
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'helper'
2
+
3
+ require_relative "helper"
3
4
 
4
5
  class TestGemResolverVendorSet < Gem::TestCase
5
6
  def setup
@@ -40,7 +41,7 @@ class TestGemResolverVendorSet < Gem::TestCase
40
41
 
41
42
  @set.add_vendor_gem name, directory
42
43
 
43
- dependency = dep 'a', '~> 1'
44
+ dependency = dep "a", "~> 1"
44
45
 
45
46
  req = Gem::Resolver::DependencyRequest.new dependency, nil
46
47
 
@@ -58,15 +59,15 @@ class TestGemResolverVendorSet < Gem::TestCase
58
59
  end
59
60
 
60
61
  def test_find_all_prerelease
61
- name, _, directory = vendor_gem 'a', '1.a'
62
+ name, _, directory = vendor_gem "a", "1.a"
62
63
 
63
64
  @set.add_vendor_gem name, directory
64
65
 
65
- req = Gem::Resolver::DependencyRequest.new dep('a'), nil
66
+ req = Gem::Resolver::DependencyRequest.new dep("a"), nil
66
67
 
67
68
  assert_empty @set.find_all req
68
69
 
69
- req = Gem::Resolver::DependencyRequest.new dep('a', '>= 0.a'), nil
70
+ req = Gem::Resolver::DependencyRequest.new dep("a", ">= 0.a"), nil
70
71
 
71
72
  refute_empty @set.find_all req
72
73
  end
@@ -75,7 +76,7 @@ class TestGemResolverVendorSet < Gem::TestCase
75
76
  error = Object.const_defined?(:KeyError) ? KeyError : IndexError
76
77
 
77
78
  assert_raise error do
78
- @set.load_spec 'b', v(1), Gem::Platform::RUBY, nil
79
+ @set.load_spec "b", v(1), Gem::Platform::RUBY, nil
79
80
  end
80
81
  end
81
82
  end
@@ -1,12 +1,13 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'helper'
2
+
3
+ require_relative "helper"
3
4
 
4
5
  class TestGemResolverVendorSpecification < Gem::TestCase
5
6
  def setup
6
7
  super
7
8
 
8
9
  @set = Gem::Resolver::VendorSet.new
9
- @spec = Gem::Specification.new 'a', 1
10
+ @spec = Gem::Specification.new "a", 1
10
11
  end
11
12
 
12
13
  def test_equals2
@@ -14,7 +15,7 @@ class TestGemResolverVendorSpecification < Gem::TestCase
14
15
 
15
16
  assert_equal v_spec_a, v_spec_a
16
17
 
17
- spec_b = Gem::Specification.new 'b', 1
18
+ spec_b = Gem::Specification.new "b", 1
18
19
  v_spec_b = Gem::Resolver::VendorSpecification.new @set, spec_b
19
20
 
20
21
  refute_equal v_spec_a, v_spec_b
@@ -27,24 +28,24 @@ class TestGemResolverVendorSpecification < Gem::TestCase
27
28
  i_set = Gem::Resolver::IndexSet.new
28
29
  source = Gem::Source.new @gem_repo
29
30
  i_spec = Gem::Resolver::IndexSpecification.new(
30
- i_set, 'a', v(1), source, Gem::Platform::RUBY)
31
+ i_set, "a", v(1), source, Gem::Platform::RUBY)
31
32
 
32
33
  refute_equal v_spec_a, i_spec
33
34
  end
34
35
 
35
36
  def test_dependencies
36
- @spec.add_dependency 'b'
37
- @spec.add_dependency 'c'
37
+ @spec.add_dependency "b"
38
+ @spec.add_dependency "c"
38
39
 
39
40
  v_spec = Gem::Resolver::VendorSpecification.new @set, @spec
40
41
 
41
- assert_equal [dep('b'), dep('c')], v_spec.dependencies
42
+ assert_equal [dep("b"), dep("c")], v_spec.dependencies
42
43
  end
43
44
 
44
45
  def test_full_name
45
46
  v_spec = Gem::Resolver::VendorSpecification.new @set, @spec
46
47
 
47
- assert_equal 'a-1', v_spec.full_name
48
+ assert_equal "a-1", v_spec.full_name
48
49
  end
49
50
 
50
51
  def test_install
@@ -62,7 +63,7 @@ class TestGemResolverVendorSpecification < Gem::TestCase
62
63
  def test_name
63
64
  v_spec = Gem::Resolver::VendorSpecification.new @set, @spec
64
65
 
65
- assert_equal 'a', v_spec.name
66
+ assert_equal "a", v_spec.name
66
67
  end
67
68
 
68
69
  def test_platform
@@ -72,7 +73,7 @@ class TestGemResolverVendorSpecification < Gem::TestCase
72
73
  end
73
74
 
74
75
  def test_version
75
- spec = Gem::Specification.new 'a', 1
76
+ spec = Gem::Specification.new "a", 1
76
77
 
77
78
  v_spec = Gem::Resolver::VendorSpecification.new @set, spec
78
79