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,11 +1,14 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'helper'
3
- require 'rubygems/commands/install_command'
4
- require 'rubygems/request_set'
5
- require 'rubygems/rdoc'
2
+
3
+ require_relative "helper"
4
+ require_relative "test_gem_update_suggestion"
5
+ require "rubygems/commands/install_command"
6
+ require "rubygems/request_set"
7
+ require "rubygems/rdoc"
6
8
 
7
9
  class TestGemCommandsInstallCommand < Gem::TestCase
8
10
  def setup
11
+ @orig_args = Gem::Command.build_args
9
12
  super
10
13
  common_installer_setup
11
14
 
@@ -13,7 +16,6 @@ class TestGemCommandsInstallCommand < Gem::TestCase
13
16
  @cmd.options[:document] = []
14
17
 
15
18
  @gemdeps = "tmp_install_gemdeps"
16
- @orig_args = Gem::Command.build_args
17
19
 
18
20
  common_installer_setup
19
21
  end
@@ -30,8 +32,8 @@ class TestGemCommandsInstallCommand < Gem::TestCase
30
32
 
31
33
  def test_execute_exclude_prerelease
32
34
  spec_fetcher do |fetcher|
33
- fetcher.gem 'a', 2
34
- fetcher.gem 'a', '2.pre'
35
+ fetcher.gem "a", 2
36
+ fetcher.gem "a", "2.pre"
35
37
  end
36
38
 
37
39
  @cmd.options[:args] = %w[a]
@@ -47,13 +49,13 @@ class TestGemCommandsInstallCommand < Gem::TestCase
47
49
 
48
50
  def test_execute_explicit_version_includes_prerelease
49
51
  specs = spec_fetcher do |fetcher|
50
- fetcher.gem 'a', 2
51
- fetcher.gem 'a', '2.a'
52
+ fetcher.gem "a", 2
53
+ fetcher.gem "a", "2.a"
52
54
  end
53
55
 
54
- a2_pre = specs['a-2.a']
56
+ a2_pre = specs["a-2.a"]
55
57
 
56
- @cmd.handle_options [a2_pre.name, '--version', a2_pre.version.to_s,
58
+ @cmd.handle_options [a2_pre.name, "--version", a2_pre.version.to_s,
57
59
  "--no-document"]
58
60
  assert @cmd.options[:prerelease]
59
61
  assert @cmd.options[:version].satisfied_by?(a2_pre.version)
@@ -69,12 +71,12 @@ class TestGemCommandsInstallCommand < Gem::TestCase
69
71
 
70
72
  def test_execute_local
71
73
  specs = spec_fetcher do |fetcher|
72
- fetcher.gem 'a', 2
74
+ fetcher.gem "a", 2
73
75
  end
74
76
 
75
77
  @cmd.options[:domain] = :local
76
78
 
77
- FileUtils.mv specs['a-2'].cache_file, @tempdir
79
+ FileUtils.mv specs["a-2"].cache_file, @tempdir
78
80
 
79
81
  @cmd.options[:args] = %w[a]
80
82
 
@@ -97,14 +99,14 @@ class TestGemCommandsInstallCommand < Gem::TestCase
97
99
 
98
100
  def test_execute_local_dependency_nonexistent
99
101
  specs = spec_fetcher do |fetcher|
100
- fetcher.gem 'foo', 2, 'bar' => '0.5'
102
+ fetcher.gem "foo", 2, "bar" => "0.5"
101
103
  end
102
104
 
103
105
  @cmd.options[:domain] = :local
104
106
 
105
- FileUtils.mv specs['foo-2'].cache_file, @tempdir
107
+ FileUtils.mv specs["foo-2"].cache_file, @tempdir
106
108
 
107
- @cmd.options[:args] = ['foo']
109
+ @cmd.options[:args] = ["foo"]
108
110
 
109
111
  use_ui @ui do
110
112
  orig_dir = Dir.pwd
@@ -128,15 +130,15 @@ ERROR: Could not find a valid gem 'bar' (= 0.5) (required by 'foo' (>= 0)) in a
128
130
 
129
131
  def test_execute_local_dependency_nonexistent_ignore_dependencies
130
132
  specs = spec_fetcher do |fetcher|
131
- fetcher.gem 'foo', 2, 'bar' => '0.5'
133
+ fetcher.gem "foo", 2, "bar" => "0.5"
132
134
  end
133
135
 
134
136
  @cmd.options[:domain] = :local
135
137
  @cmd.options[:ignore_dependencies] = true
136
138
 
137
- FileUtils.mv specs['foo-2'].cache_file, @tempdir
139
+ FileUtils.mv specs["foo-2"].cache_file, @tempdir
138
140
 
139
- @cmd.options[:args] = ['foo']
141
+ @cmd.options[:args] = ["foo"]
140
142
 
141
143
  use_ui @ui do
142
144
  orig_dir = Dir.pwd
@@ -155,16 +157,16 @@ ERROR: Could not find a valid gem 'bar' (= 0.5) (required by 'foo' (>= 0)) in a
155
157
 
156
158
  def test_execute_local_transitive_prerelease
157
159
  specs = spec_fetcher do |fetcher|
158
- fetcher.download 'a', 2, 'b' => "2.a", 'c' => '3'
159
- fetcher.download 'b', '2.a'
160
- fetcher.download 'c', '3'
160
+ fetcher.download "a", 2, "b" => "2.a", "c" => "3"
161
+ fetcher.download "b", "2.a"
162
+ fetcher.download "c", "3"
161
163
  end
162
164
 
163
165
  @cmd.options[:domain] = :local
164
166
 
165
- FileUtils.mv specs['a-2'].cache_file, @tempdir
166
- FileUtils.mv specs['b-2.a'].cache_file, @tempdir
167
- FileUtils.mv specs['c-3'].cache_file, @tempdir
167
+ FileUtils.mv specs["a-2"].cache_file, @tempdir
168
+ FileUtils.mv specs["b-2.a"].cache_file, @tempdir
169
+ FileUtils.mv specs["c-3"].cache_file, @tempdir
168
170
 
169
171
  @cmd.options[:args] = %w[a]
170
172
 
@@ -187,16 +189,16 @@ ERROR: Could not find a valid gem 'bar' (= 0.5) (required by 'foo' (>= 0)) in a
187
189
  end
188
190
 
189
191
  def test_execute_no_user_install
190
- pend 'skipped on MS Windows (chmod has no effect)' if win_platform?
191
- pend 'skipped in root privilege' if Process.uid.zero?
192
+ pend "skipped on MS Windows (chmod has no effect)" if win_platform?
193
+ pend "skipped in root privilege" if Process.uid.zero?
192
194
 
193
195
  specs = spec_fetcher do |fetcher|
194
- fetcher.gem 'a', 2
196
+ fetcher.gem "a", 2
195
197
  end
196
198
 
197
199
  @cmd.options[:user_install] = false
198
200
 
199
- FileUtils.mv specs['a-2'].cache_file, @tempdir
201
+ FileUtils.mv specs["a-2"].cache_file, @tempdir
200
202
 
201
203
  @cmd.options[:args] = %w[a]
202
204
 
@@ -295,10 +297,10 @@ ERROR: Could not find a valid gem 'bar' (= 0.5) (required by 'foo' (>= 0)) in a
295
297
 
296
298
  def test_execute_dependency_nonexistent
297
299
  spec_fetcher do |fetcher|
298
- fetcher.spec 'foo', 2, 'bar' => '0.5'
300
+ fetcher.spec "foo", 2, "bar" => "0.5"
299
301
  end
300
302
 
301
- @cmd.options[:args] = ['foo']
303
+ @cmd.options[:args] = ["foo"]
302
304
 
303
305
  use_ui @ui do
304
306
  e = assert_raise Gem::MockGemUi::TermError do
@@ -451,8 +453,8 @@ ERROR: Possible alternatives: non_existent_with_hint
451
453
 
452
454
  def test_execute_prerelease_skipped_when_no_flag_set
453
455
  spec_fetcher do |fetcher|
454
- fetcher.gem 'a', 1
455
- fetcher.gem 'a', '3.a'
456
+ fetcher.gem "a", 1
457
+ fetcher.gem "a", "3.a"
456
458
  end
457
459
 
458
460
  @cmd.options[:prerelease] = false
@@ -469,8 +471,8 @@ ERROR: Possible alternatives: non_existent_with_hint
469
471
 
470
472
  def test_execute_prerelease_wins_over_previous_ver
471
473
  spec_fetcher do |fetcher|
472
- fetcher.download 'a', 1
473
- fetcher.download 'a', '2.a'
474
+ fetcher.download "a", 1
475
+ fetcher.download "a", "2.a"
474
476
  end
475
477
 
476
478
  @cmd.options[:prerelease] = true
@@ -487,8 +489,8 @@ ERROR: Possible alternatives: non_existent_with_hint
487
489
 
488
490
  def test_execute_with_version_specified_by_colon
489
491
  spec_fetcher do |fetcher|
490
- fetcher.download 'a', 1
491
- fetcher.download 'a', 2
492
+ fetcher.download "a", 1
493
+ fetcher.download "a", 2
492
494
  end
493
495
 
494
496
  @cmd.options[:args] = %w[a:1]
@@ -504,8 +506,8 @@ ERROR: Possible alternatives: non_existent_with_hint
504
506
 
505
507
  def test_execute_prerelease_skipped_when_non_pre_available
506
508
  spec_fetcher do |fetcher|
507
- fetcher.gem 'a', '2.pre'
508
- fetcher.gem 'a', 2
509
+ fetcher.gem "a", "2.pre"
510
+ fetcher.gem "a", 2
509
511
  end
510
512
 
511
513
  @cmd.options[:prerelease] = true
@@ -525,15 +527,15 @@ ERROR: Possible alternatives: non_existent_with_hint
525
527
 
526
528
  local = Gem::Platform.local
527
529
  spec_fetcher do |fetcher|
528
- fetcher.download 'a', 2
529
- fetcher.download 'a', 2 do |s|
530
+ fetcher.download "a", 2
531
+ fetcher.download "a", 2 do |s|
530
532
  s.required_ruby_version = "< #{RUBY_VERSION}.a"
531
533
  s.platform = local
532
534
  end
533
- fetcher.download 'a', 3 do |s|
535
+ fetcher.download "a", 3 do |s|
534
536
  s.required_ruby_version = ">= #{next_ruby}"
535
537
  end
536
- fetcher.download 'a', 3 do |s|
538
+ fetcher.download "a", 3 do |s|
537
539
  s.required_ruby_version = ">= #{next_ruby}"
538
540
  s.platform = local
539
541
  end
@@ -553,8 +555,8 @@ ERROR: Possible alternatives: non_existent_with_hint
553
555
  def test_execute_required_ruby_version_upper_bound
554
556
  local = Gem::Platform.local
555
557
  spec_fetcher do |fetcher|
556
- fetcher.gem 'a', 2.0
557
- fetcher.gem 'a', 2.0 do |s|
558
+ fetcher.gem "a", 2.0
559
+ fetcher.gem "a", 2.0 do |s|
558
560
  s.required_ruby_version = "< #{RUBY_VERSION}.a"
559
561
  s.platform = local
560
562
  end
@@ -573,8 +575,8 @@ ERROR: Possible alternatives: non_existent_with_hint
573
575
 
574
576
  def test_execute_required_ruby_version_specific_not_met
575
577
  spec_fetcher do |fetcher|
576
- fetcher.gem 'a', '1.0' do |s|
577
- s.required_ruby_version = '= 1.4.6'
578
+ fetcher.gem "a", "1.0" do |s|
579
+ s.required_ruby_version = "= 1.4.6"
578
580
  end
579
581
  end
580
582
 
@@ -593,8 +595,8 @@ ERROR: Possible alternatives: non_existent_with_hint
593
595
 
594
596
  def test_execute_required_ruby_version_specific_prerelease_met
595
597
  spec_fetcher do |fetcher|
596
- fetcher.gem 'a', '1.0' do |s|
597
- s.required_ruby_version = '>= 1.4.6.preview2'
598
+ fetcher.gem "a", "1.0" do |s|
599
+ s.required_ruby_version = ">= 1.4.6.preview2"
598
600
  end
599
601
  end
600
602
 
@@ -613,7 +615,7 @@ ERROR: Possible alternatives: non_existent_with_hint
613
615
  next_ruby_pre = Gem.ruby_version.segments.map.with_index {|n, i| i == 1 ? n + 1 : n }.join(".") + ".a"
614
616
 
615
617
  spec_fetcher do |fetcher|
616
- fetcher.gem 'a', '1.0' do |s|
618
+ fetcher.gem "a", "1.0" do |s|
617
619
  s.required_ruby_version = "> #{next_ruby_pre}"
618
620
  end
619
621
  end
@@ -633,8 +635,8 @@ ERROR: Possible alternatives: non_existent_with_hint
633
635
 
634
636
  def test_execute_required_rubygems_version_wrong
635
637
  spec_fetcher do |fetcher|
636
- fetcher.gem 'a', '1.0' do |s|
637
- s.required_rubygems_version = '< 0'
638
+ fetcher.gem "a", "1.0" do |s|
639
+ s.required_rubygems_version = "< 0"
638
640
  end
639
641
  end
640
642
 
@@ -653,7 +655,7 @@ ERROR: Possible alternatives: non_existent_with_hint
653
655
 
654
656
  def test_execute_rdoc
655
657
  specs = spec_fetcher do |fetcher|
656
- fetcher.gem 'a', 2
658
+ fetcher.gem "a", 2
657
659
  end
658
660
 
659
661
  Gem.done_installing(&Gem::RDoc.method(:generation_hook))
@@ -661,7 +663,7 @@ ERROR: Possible alternatives: non_existent_with_hint
661
663
  @cmd.options[:document] = %w[rdoc ri]
662
664
  @cmd.options[:domain] = :local
663
665
 
664
- a2 = specs['a-2']
666
+ a2 = specs["a-2"]
665
667
  FileUtils.mv a2.cache_file, @tempdir
666
668
 
667
669
  @cmd.options[:args] = %w[a]
@@ -683,22 +685,22 @@ ERROR: Possible alternatives: non_existent_with_hint
683
685
 
684
686
  wait_for_child_process_to_exit
685
687
 
686
- assert_path_exist File.join(a2.doc_dir, 'ri')
687
- assert_path_exist File.join(a2.doc_dir, 'rdoc')
688
+ assert_path_exist File.join(a2.doc_dir, "ri")
689
+ assert_path_exist File.join(a2.doc_dir, "rdoc")
688
690
  end
689
691
 
690
692
  def test_execute_rdoc_with_path
691
693
  specs = spec_fetcher do |fetcher|
692
- fetcher.gem 'a', 2
694
+ fetcher.gem "a", 2
693
695
  end
694
696
 
695
697
  Gem.done_installing(&Gem::RDoc.method(:generation_hook))
696
698
 
697
699
  @cmd.options[:document] = %w[rdoc ri]
698
700
  @cmd.options[:domain] = :local
699
- @cmd.options[:install_dir] = 'whatever'
701
+ @cmd.options[:install_dir] = "whatever"
700
702
 
701
- a2 = specs['a-2']
703
+ a2 = specs["a-2"]
702
704
  FileUtils.mv a2.cache_file, @tempdir
703
705
 
704
706
  @cmd.options[:args] = %w[a]
@@ -720,19 +722,19 @@ ERROR: Possible alternatives: non_existent_with_hint
720
722
 
721
723
  wait_for_child_process_to_exit
722
724
 
723
- assert_path_exist 'whatever/doc/a-2', 'documentation not installed'
725
+ assert_path_exist "whatever/doc/a-2", "documentation not installed"
724
726
  end
725
727
 
726
728
  def test_execute_saves_build_args
727
729
  specs = spec_fetcher do |fetcher|
728
- fetcher.gem 'a', 2
730
+ fetcher.gem "a", 2
729
731
  end
730
732
 
731
733
  args = %w[--with-awesome=true --more-awesome=yes]
732
734
 
733
735
  Gem::Command.build_args = args
734
736
 
735
- a2 = specs['a-2']
737
+ a2 = specs["a-2"]
736
738
  FileUtils.mv a2.cache_file, @tempdir
737
739
 
738
740
  @cmd.options[:domain] = :local
@@ -762,7 +764,7 @@ ERROR: Possible alternatives: non_existent_with_hint
762
764
 
763
765
  def test_execute_remote
764
766
  spec_fetcher do |fetcher|
765
- fetcher.gem 'a', 2
767
+ fetcher.gem "a", 2
766
768
  end
767
769
 
768
770
  @cmd.options[:args] = %w[a]
@@ -782,7 +784,7 @@ ERROR: Possible alternatives: non_existent_with_hint
782
784
  FileUtils.touch("a.gem")
783
785
 
784
786
  spec_fetcher do |fetcher|
785
- fetcher.gem 'a', 2
787
+ fetcher.gem "a", 2
786
788
  end
787
789
 
788
790
  @cmd.options[:args] = %w[a]
@@ -800,7 +802,7 @@ ERROR: Possible alternatives: non_existent_with_hint
800
802
 
801
803
  def test_execute_remote_truncates_existing_gemspecs
802
804
  spec_fetcher do |fetcher|
803
- fetcher.gem 'a', 1
805
+ fetcher.gem "a", 1
804
806
  end
805
807
 
806
808
  @cmd.options[:domain] = :remote
@@ -816,7 +818,7 @@ ERROR: Possible alternatives: non_existent_with_hint
816
818
  assert_equal %w[a-1], @cmd.installed_specs.map {|spec| spec.full_name }
817
819
  assert_match "1 gem installed", @ui.output
818
820
 
819
- a1_gemspec = File.join(@gemhome, 'specifications', "a-1.gemspec")
821
+ a1_gemspec = File.join(@gemhome, "specifications", "a-1.gemspec")
820
822
 
821
823
  initial_a1_gemspec_content = File.read(a1_gemspec)
822
824
  modified_a1_gemspec_content = initial_a1_gemspec_content + "\n # AAAAAAA\n"
@@ -833,14 +835,14 @@ ERROR: Possible alternatives: non_existent_with_hint
833
835
 
834
836
  def test_execute_remote_ignores_files
835
837
  specs = spec_fetcher do |fetcher|
836
- fetcher.gem 'a', 1
837
- fetcher.gem 'a', 2
838
+ fetcher.gem "a", 1
839
+ fetcher.gem "a", 2
838
840
  end
839
841
 
840
842
  @cmd.options[:domain] = :remote
841
843
 
842
- a1 = specs['a-1']
843
- a2 = specs['a-2']
844
+ a1 = specs["a-1"]
845
+ a2 = specs["a-2"]
844
846
 
845
847
  FileUtils.mv a2.cache_file, @tempdir
846
848
 
@@ -849,7 +851,7 @@ ERROR: Possible alternatives: non_existent_with_hint
849
851
 
850
852
  @cmd.options[:args] = [a2.name]
851
853
 
852
- gemdir = File.join @gemhome, 'specifications'
854
+ gemdir = File.join @gemhome, "specifications"
853
855
 
854
856
  a2_gemspec = File.join(gemdir, "a-2.gemspec")
855
857
  a1_gemspec = File.join(gemdir, "a-1.gemspec")
@@ -878,12 +880,12 @@ ERROR: Possible alternatives: non_existent_with_hint
878
880
 
879
881
  def test_execute_two
880
882
  specs = spec_fetcher do |fetcher|
881
- fetcher.gem 'a', 2
882
- fetcher.gem 'b', 2
883
+ fetcher.gem "a", 2
884
+ fetcher.gem "b", 2
883
885
  end
884
886
 
885
- FileUtils.mv specs['a-2'].cache_file, @tempdir
886
- FileUtils.mv specs['b-2'].cache_file, @tempdir
887
+ FileUtils.mv specs["a-2"].cache_file, @tempdir
888
+ FileUtils.mv specs["b-2"].cache_file, @tempdir
887
889
 
888
890
  @cmd.options[:domain] = :local
889
891
 
@@ -929,10 +931,10 @@ ERROR: Possible alternatives: non_existent_with_hint
929
931
 
930
932
  def test_execute_two_version_specified_by_colon
931
933
  spec_fetcher do |fetcher|
932
- fetcher.gem 'a', 1
933
- fetcher.gem 'a', 2
934
- fetcher.gem 'b', 1
935
- fetcher.gem 'b', 2
934
+ fetcher.gem "a", 1
935
+ fetcher.gem "a", 2
936
+ fetcher.gem "b", 1
937
+ fetcher.gem "b", 2
936
938
  end
937
939
 
938
940
  @cmd.options[:args] = %w[a:1 b:1]
@@ -948,9 +950,9 @@ ERROR: Possible alternatives: non_existent_with_hint
948
950
 
949
951
  def test_execute_conservative
950
952
  spec_fetcher do |fetcher|
951
- fetcher.download 'b', 2
953
+ fetcher.download "b", 2
952
954
 
953
- fetcher.gem 'a', 2
955
+ fetcher.gem "a", 2
954
956
  end
955
957
 
956
958
  @cmd.options[:conservative] = true
@@ -981,7 +983,7 @@ ERROR: Possible alternatives: non_existent_with_hint
981
983
  done_installing = true
982
984
  end
983
985
 
984
- spec = util_spec 'a', 2
986
+ spec = util_spec "a", 2
985
987
 
986
988
  util_build_gem spec
987
989
 
@@ -989,21 +991,21 @@ ERROR: Possible alternatives: non_existent_with_hint
989
991
 
990
992
  @cmd.options[:ignore_dependencies] = true
991
993
 
992
- @cmd.install_gem 'a', '>= 0'
994
+ @cmd.install_gem "a", ">= 0"
993
995
 
994
996
  assert_equal %w[a-2], @cmd.installed_specs.map {|s| s.full_name }
995
997
 
996
- assert done_installing, 'documentation was not generated'
998
+ assert done_installing, "documentation was not generated"
997
999
  end
998
1000
 
999
1001
  def test_install_gem_ignore_dependencies_remote
1000
1002
  spec_fetcher do |fetcher|
1001
- fetcher.gem 'a', 2
1003
+ fetcher.gem "a", 2
1002
1004
  end
1003
1005
 
1004
1006
  @cmd.options[:ignore_dependencies] = true
1005
1007
 
1006
- @cmd.install_gem 'a', '>= 0'
1008
+ @cmd.install_gem "a", ">= 0"
1007
1009
 
1008
1010
  assert_equal %w[a-2], @cmd.installed_specs.map {|spec| spec.full_name }
1009
1011
  end
@@ -1011,22 +1013,22 @@ ERROR: Possible alternatives: non_existent_with_hint
1011
1013
  def test_install_gem_ignore_dependencies_remote_platform_local
1012
1014
  local = Gem::Platform.local
1013
1015
  spec_fetcher do |fetcher|
1014
- fetcher.gem 'a', 3
1016
+ fetcher.gem "a", 3
1015
1017
 
1016
- fetcher.gem 'a', 3 do |s|
1018
+ fetcher.gem "a", 3 do |s|
1017
1019
  s.platform = local
1018
1020
  end
1019
1021
  end
1020
1022
 
1021
1023
  @cmd.options[:ignore_dependencies] = true
1022
1024
 
1023
- @cmd.install_gem 'a', '>= 0'
1025
+ @cmd.install_gem "a", ">= 0"
1024
1026
 
1025
1027
  assert_equal %W[a-3-#{local}], @cmd.installed_specs.map {|spec| spec.full_name }
1026
1028
  end
1027
1029
 
1028
1030
  def test_install_gem_ignore_dependencies_specific_file
1029
- spec = util_spec 'a', 2
1031
+ spec = util_spec "a", 2
1030
1032
 
1031
1033
  util_build_gem spec
1032
1034
 
@@ -1041,8 +1043,8 @@ ERROR: Possible alternatives: non_existent_with_hint
1041
1043
 
1042
1044
  def test_parses_requirement_from_gemname
1043
1045
  spec_fetcher do |fetcher|
1044
- fetcher.gem 'a', 2
1045
- fetcher.gem 'b', 2
1046
+ fetcher.gem "a", 2
1047
+ fetcher.gem "b", 2
1046
1048
  end
1047
1049
 
1048
1050
  @cmd.options[:domain] = :local
@@ -1088,12 +1090,12 @@ ERROR: Possible alternatives: non_existent_with_hint
1088
1090
 
1089
1091
  assert_equal 2, e.exit_code
1090
1092
 
1091
- assert_match 'Unable to download data', @ui.error
1093
+ assert_match "Unable to download data", @ui.error
1092
1094
  end
1093
1095
 
1094
1096
  def test_show_source_problems_even_on_success
1095
1097
  spec_fetcher do |fetcher|
1096
- fetcher.download 'a', 2
1098
+ fetcher.download "a", 2
1097
1099
  end
1098
1100
 
1099
1101
  Gem.sources << "http://nonexistent.example"
@@ -1118,7 +1120,7 @@ ERROR: Possible alternatives: non_existent_with_hint
1118
1120
 
1119
1121
  def test_redact_credentials_from_uri_on_warning
1120
1122
  spec_fetcher do |fetcher|
1121
- fetcher.download 'a', 2
1123
+ fetcher.download "a", 2
1122
1124
  end
1123
1125
 
1124
1126
  Gem.sources << "http://username:SECURE_TOKEN@nonexistent.example"
@@ -1143,7 +1145,7 @@ ERROR: Possible alternatives: non_existent_with_hint
1143
1145
 
1144
1146
  def test_execute_uses_from_a_gemdeps
1145
1147
  spec_fetcher do |fetcher|
1146
- fetcher.gem 'a', 2
1148
+ fetcher.gem "a", 2
1147
1149
  end
1148
1150
 
1149
1151
  File.open @gemdeps, "w" do |f|
@@ -1166,7 +1168,7 @@ ERROR: Possible alternatives: non_existent_with_hint
1166
1168
 
1167
1169
  def test_execute_uses_from_a_gemdeps_with_no_lock
1168
1170
  spec_fetcher do |fetcher|
1169
- fetcher.gem 'a', 2
1171
+ fetcher.gem "a", 2
1170
1172
  end
1171
1173
 
1172
1174
  File.open @gemdeps, "w" do |f|
@@ -1190,8 +1192,8 @@ ERROR: Possible alternatives: non_existent_with_hint
1190
1192
 
1191
1193
  def test_execute_installs_from_a_gemdeps_with_conservative
1192
1194
  spec_fetcher do |fetcher|
1193
- fetcher.download 'a', 2
1194
- fetcher.gem 'a', 1
1195
+ fetcher.download "a", 2
1196
+ fetcher.gem "a", 1
1195
1197
  end
1196
1198
 
1197
1199
  File.open @gemdeps, "w" do |f|
@@ -1214,7 +1216,7 @@ ERROR: Possible alternatives: non_existent_with_hint
1214
1216
 
1215
1217
  def test_execute_installs_from_a_gemdeps
1216
1218
  spec_fetcher do |fetcher|
1217
- fetcher.download 'a', 2
1219
+ fetcher.download "a", 2
1218
1220
  end
1219
1221
 
1220
1222
  File.open @gemdeps, "w" do |f|
@@ -1236,8 +1238,8 @@ ERROR: Possible alternatives: non_existent_with_hint
1236
1238
 
1237
1239
  def test_execute_installs_deps_a_gemdeps
1238
1240
  spec_fetcher do |fetcher|
1239
- fetcher.download 'q', '1.0'
1240
- fetcher.download 'r', '2.0', 'q' => nil
1241
+ fetcher.download "q", "1.0"
1242
+ fetcher.download "r", "2.0", "q" => nil
1241
1243
  end
1242
1244
 
1243
1245
  File.open @gemdeps, "w" do |f|
@@ -1262,9 +1264,9 @@ ERROR: Possible alternatives: non_existent_with_hint
1262
1264
 
1263
1265
  def test_execute_uses_deps_a_gemdeps
1264
1266
  spec_fetcher do |fetcher|
1265
- fetcher.download 'r', '2.0', 'q' => nil
1267
+ fetcher.download "r", "2.0", "q" => nil
1266
1268
 
1267
- fetcher.spec 'q', '1.0'
1269
+ fetcher.spec "q", "1.0"
1268
1270
  end
1269
1271
 
1270
1272
  File.open @gemdeps, "w" do |f|
@@ -1289,8 +1291,8 @@ ERROR: Possible alternatives: non_existent_with_hint
1289
1291
 
1290
1292
  def test_execute_installs_deps_a_gemdeps_into_a_path
1291
1293
  spec_fetcher do |fetcher|
1292
- fetcher.download 'q', '1.0'
1293
- fetcher.download 'r', '2.0', 'q' => nil
1294
+ fetcher.download "q", "1.0"
1295
+ fetcher.download "r", "2.0", "q" => nil
1294
1296
  end
1295
1297
 
1296
1298
  File.open @gemdeps, "w" do |f|
@@ -1319,11 +1321,11 @@ ERROR: Possible alternatives: non_existent_with_hint
1319
1321
 
1320
1322
  def test_execute_with_gemdeps_path_ignores_system
1321
1323
  specs = spec_fetcher do |fetcher|
1322
- fetcher.download 'q', '1.0'
1323
- fetcher.download 'r', '2.0', 'q' => nil
1324
+ fetcher.download "q", "1.0"
1325
+ fetcher.download "r", "2.0", "q" => nil
1324
1326
  end
1325
1327
 
1326
- install_specs specs['q-1.0']
1328
+ install_specs specs["q-1.0"]
1327
1329
 
1328
1330
  File.open @gemdeps, "w" do |f|
1329
1331
  f << "gem 'r'"
@@ -1351,11 +1353,11 @@ ERROR: Possible alternatives: non_existent_with_hint
1351
1353
 
1352
1354
  def test_execute_uses_deps_a_gemdeps_with_a_path
1353
1355
  specs = spec_fetcher do |fetcher|
1354
- fetcher.gem 'q', '1.0'
1355
- fetcher.gem 'r', '2.0', 'q' => nil
1356
+ fetcher.gem "q", "1.0"
1357
+ fetcher.gem "r", "2.0", "q" => nil
1356
1358
  end
1357
1359
 
1358
- i = Gem::Installer.at specs['q-1.0'].cache_file, :install_dir => "gf-path"
1360
+ i = Gem::Installer.at specs["q-1.0"].cache_file, :install_dir => "gf-path"
1359
1361
  i.install
1360
1362
 
1361
1363
  assert File.file?("gf-path/specifications/q-1.0.gemspec"), "not installed"
@@ -1382,39 +1384,39 @@ ERROR: Possible alternatives: non_existent_with_hint
1382
1384
  end
1383
1385
 
1384
1386
  def test_handle_options_file
1385
- FileUtils.touch 'Gemfile'
1387
+ FileUtils.touch "Gemfile"
1386
1388
 
1387
1389
  @cmd.handle_options %w[-g Gemfile]
1388
1390
 
1389
- assert_equal 'Gemfile', @cmd.options[:gemdeps]
1391
+ assert_equal "Gemfile", @cmd.options[:gemdeps]
1390
1392
 
1391
- FileUtils.rm 'Gemfile'
1393
+ FileUtils.rm "Gemfile"
1392
1394
 
1393
- FileUtils.touch 'gem.deps.rb'
1395
+ FileUtils.touch "gem.deps.rb"
1394
1396
 
1395
1397
  @cmd.handle_options %w[--file gem.deps.rb]
1396
1398
 
1397
- assert_equal 'gem.deps.rb', @cmd.options[:gemdeps]
1399
+ assert_equal "gem.deps.rb", @cmd.options[:gemdeps]
1398
1400
 
1399
- FileUtils.rm 'gem.deps.rb'
1401
+ FileUtils.rm "gem.deps.rb"
1400
1402
 
1401
- FileUtils.touch 'Isolate'
1403
+ FileUtils.touch "Isolate"
1402
1404
 
1403
1405
  @cmd.handle_options %w[-g]
1404
1406
 
1405
- assert_equal 'Isolate', @cmd.options[:gemdeps]
1407
+ assert_equal "Isolate", @cmd.options[:gemdeps]
1406
1408
 
1407
- FileUtils.touch 'Gemfile'
1409
+ FileUtils.touch "Gemfile"
1408
1410
 
1409
1411
  @cmd.handle_options %w[-g]
1410
1412
 
1411
- assert_equal 'Gemfile', @cmd.options[:gemdeps]
1413
+ assert_equal "Gemfile", @cmd.options[:gemdeps]
1412
1414
 
1413
- FileUtils.touch 'gem.deps.rb'
1415
+ FileUtils.touch "gem.deps.rb"
1414
1416
 
1415
1417
  @cmd.handle_options %w[-g]
1416
1418
 
1417
- assert_equal 'gem.deps.rb', @cmd.options[:gemdeps]
1419
+ assert_equal "gem.deps.rb", @cmd.options[:gemdeps]
1418
1420
  end
1419
1421
 
1420
1422
  def test_handle_options_suggest
@@ -1442,9 +1444,9 @@ ERROR: Possible alternatives: non_existent_with_hint
1442
1444
  def test_explain_platform_local
1443
1445
  local = Gem::Platform.local
1444
1446
  spec_fetcher do |fetcher|
1445
- fetcher.spec 'a', 2
1447
+ fetcher.spec "a", 2
1446
1448
 
1447
- fetcher.spec 'a', 2 do |s|
1449
+ fetcher.spec "a", 2 do |s|
1448
1450
  s.platform = local
1449
1451
  end
1450
1452
  end
@@ -1468,9 +1470,9 @@ ERROR: Possible alternatives: non_existent_with_hint
1468
1470
  def test_explain_platform_local_ignore_dependencies
1469
1471
  local = Gem::Platform.local
1470
1472
  spec_fetcher do |fetcher|
1471
- fetcher.spec 'a', 3
1473
+ fetcher.spec "a", 3
1472
1474
 
1473
- fetcher.spec 'a', 3 do |s|
1475
+ fetcher.spec "a", 3 do |s|
1474
1476
  s.platform = local
1475
1477
  end
1476
1478
  end
@@ -1495,9 +1497,9 @@ ERROR: Possible alternatives: non_existent_with_hint
1495
1497
  def test_explain_platform_ruby
1496
1498
  local = Gem::Platform.local
1497
1499
  spec_fetcher do |fetcher|
1498
- fetcher.spec 'a', 2
1500
+ fetcher.spec "a", 2
1499
1501
 
1500
- fetcher.spec 'a', 2 do |s|
1502
+ fetcher.spec "a", 2 do |s|
1501
1503
  s.platform = local
1502
1504
  end
1503
1505
  end
@@ -1524,9 +1526,9 @@ ERROR: Possible alternatives: non_existent_with_hint
1524
1526
  def test_explain_platform_ruby_ignore_dependencies
1525
1527
  local = Gem::Platform.local
1526
1528
  spec_fetcher do |fetcher|
1527
- fetcher.spec 'a', 3
1529
+ fetcher.spec "a", 3
1528
1530
 
1529
- fetcher.spec 'a', 3 do |s|
1531
+ fetcher.spec "a", 3 do |s|
1530
1532
  s.platform = local
1531
1533
  end
1532
1534
  end
@@ -1550,4 +1552,22 @@ ERROR: Possible alternatives: non_existent_with_hint
1550
1552
  assert_equal " a-3", out.shift
1551
1553
  assert_empty out
1552
1554
  end
1555
+
1556
+ def test_suggest_update_if_enabled
1557
+ TestUpdateSuggestion.with_eglible_environment(cmd: @cmd) do
1558
+ spec_fetcher do |fetcher|
1559
+ fetcher.gem "a", 2
1560
+ end
1561
+
1562
+ @cmd.options[:args] = %w[a]
1563
+
1564
+ use_ui @ui do
1565
+ assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
1566
+ @cmd.execute
1567
+ end
1568
+ end
1569
+
1570
+ assert_includes @ui.output, "A new release of RubyGems is available: 1.2.3 → 2.0.0!"
1571
+ end
1572
+ end
1553
1573
  end