rubygems-update 3.2.30 → 3.4.10

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 (641) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1666 -994
  3. data/CONTRIBUTING.md +71 -15
  4. data/Manifest.txt +93 -37
  5. data/POLICIES.md +65 -16
  6. data/README.md +28 -13
  7. data/UPGRADING.md +5 -81
  8. data/bin/gem +2 -10
  9. data/bin/update_rubygems +5 -5
  10. data/bundler/CHANGELOG.md +647 -1
  11. data/bundler/README.md +3 -6
  12. data/bundler/UPGRADING.md +11 -4
  13. data/bundler/bundler.gemspec +8 -10
  14. data/bundler/exe/bundle +7 -11
  15. data/bundler/exe/bundler +1 -1
  16. data/bundler/lib/bundler/.document +1 -0
  17. data/bundler/lib/bundler/build_metadata.rb +3 -3
  18. data/bundler/lib/bundler/cli/add.rb +1 -1
  19. data/bundler/lib/bundler/cli/binstubs.rb +5 -1
  20. data/bundler/lib/bundler/cli/check.rb +1 -1
  21. data/bundler/lib/bundler/cli/common.rb +4 -2
  22. data/bundler/lib/bundler/cli/config.rb +10 -1
  23. data/bundler/lib/bundler/cli/console.rb +2 -2
  24. data/bundler/lib/bundler/cli/doctor.rb +10 -3
  25. data/bundler/lib/bundler/cli/gem.rb +136 -42
  26. data/bundler/lib/bundler/cli/info.rb +17 -3
  27. data/bundler/lib/bundler/cli/init.rb +6 -2
  28. data/bundler/lib/bundler/cli/install.rb +15 -33
  29. data/bundler/lib/bundler/cli/lock.rb +8 -5
  30. data/bundler/lib/bundler/cli/open.rb +6 -4
  31. data/bundler/lib/bundler/cli/outdated.rb +13 -6
  32. data/bundler/lib/bundler/cli/platform.rb +2 -2
  33. data/bundler/lib/bundler/cli/show.rb +1 -1
  34. data/bundler/lib/bundler/cli/update.rb +8 -4
  35. data/bundler/lib/bundler/cli/viz.rb +1 -1
  36. data/bundler/lib/bundler/cli.rb +67 -21
  37. data/bundler/lib/bundler/compact_index_client/cache.rb +1 -10
  38. data/bundler/lib/bundler/compact_index_client/updater.rb +53 -44
  39. data/bundler/lib/bundler/compact_index_client.rb +0 -6
  40. data/bundler/lib/bundler/constants.rb +1 -1
  41. data/bundler/lib/bundler/current_ruby.rb +18 -6
  42. data/bundler/lib/bundler/definition.rb +259 -242
  43. data/bundler/lib/bundler/dependency.rb +24 -71
  44. data/bundler/lib/bundler/digest.rb +1 -1
  45. data/bundler/lib/bundler/dsl.rb +29 -46
  46. data/bundler/lib/bundler/endpoint_specification.rb +15 -13
  47. data/bundler/lib/bundler/env.rb +2 -2
  48. data/bundler/lib/bundler/environment_preserver.rb +7 -3
  49. data/bundler/lib/bundler/errors.rb +15 -15
  50. data/bundler/lib/bundler/feature_flag.rb +0 -1
  51. data/bundler/lib/bundler/fetcher/base.rb +6 -8
  52. data/bundler/lib/bundler/fetcher/compact_index.rb +18 -25
  53. data/bundler/lib/bundler/fetcher/dependency.rb +2 -6
  54. data/bundler/lib/bundler/fetcher/downloader.rb +2 -5
  55. data/bundler/lib/bundler/fetcher/index.rb +0 -26
  56. data/bundler/lib/bundler/fetcher.rb +22 -29
  57. data/bundler/lib/bundler/force_platform.rb +18 -0
  58. data/bundler/lib/bundler/friendly_errors.rb +21 -7
  59. data/bundler/lib/bundler/gem_helper.rb +4 -4
  60. data/bundler/lib/bundler/gem_helpers.rb +9 -2
  61. data/bundler/lib/bundler/gem_version_promoter.rb +53 -98
  62. data/bundler/lib/bundler/graph.rb +3 -3
  63. data/bundler/lib/bundler/index.rb +13 -51
  64. data/bundler/lib/bundler/injector.rb +18 -4
  65. data/bundler/lib/bundler/inline.rb +9 -21
  66. data/bundler/lib/bundler/installer/gem_installer.rb +13 -5
  67. data/bundler/lib/bundler/installer/parallel_installer.rb +3 -33
  68. data/bundler/lib/bundler/installer/standalone.rb +42 -11
  69. data/bundler/lib/bundler/installer.rb +20 -44
  70. data/bundler/lib/bundler/lazy_specification.rb +72 -55
  71. data/bundler/lib/bundler/lockfile_generator.rb +3 -3
  72. data/bundler/lib/bundler/lockfile_parser.rb +28 -26
  73. data/bundler/lib/bundler/man/bundle-add.1 +21 -5
  74. data/bundler/lib/bundler/man/bundle-add.1.ronn +16 -4
  75. data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
  76. data/bundler/lib/bundler/man/bundle-cache.1 +7 -1
  77. data/bundler/lib/bundler/man/bundle-cache.1.ronn +7 -0
  78. data/bundler/lib/bundler/man/bundle-check.1 +1 -1
  79. data/bundler/lib/bundler/man/bundle-clean.1 +2 -2
  80. data/bundler/lib/bundler/man/bundle-clean.1.ronn +1 -1
  81. data/bundler/lib/bundler/man/bundle-config.1 +34 -15
  82. data/bundler/lib/bundler/man/bundle-config.1.ronn +31 -19
  83. data/bundler/lib/bundler/man/bundle-console.1 +53 -0
  84. data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
  85. data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
  86. data/bundler/lib/bundler/man/bundle-exec.1 +6 -6
  87. data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -6
  88. data/bundler/lib/bundler/man/bundle-gem.1 +37 -34
  89. data/bundler/lib/bundler/man/bundle-gem.1.ronn +21 -5
  90. data/bundler/lib/bundler/man/bundle-help.1 +13 -0
  91. data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
  92. data/bundler/lib/bundler/man/bundle-info.1 +1 -1
  93. data/bundler/lib/bundler/man/bundle-init.1 +5 -1
  94. data/bundler/lib/bundler/man/bundle-init.1.ronn +2 -0
  95. data/bundler/lib/bundler/man/bundle-inject.1 +5 -2
  96. data/bundler/lib/bundler/man/bundle-inject.1.ronn +3 -1
  97. data/bundler/lib/bundler/man/bundle-install.1 +6 -31
  98. data/bundler/lib/bundler/man/bundle-install.1.ronn +8 -31
  99. data/bundler/lib/bundler/man/bundle-list.1 +1 -1
  100. data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
  101. data/bundler/lib/bundler/man/bundle-open.1 +22 -2
  102. data/bundler/lib/bundler/man/bundle-open.1.ronn +9 -1
  103. data/bundler/lib/bundler/man/bundle-outdated.1 +3 -10
  104. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +1 -10
  105. data/bundler/lib/bundler/man/bundle-platform.1 +16 -6
  106. data/bundler/lib/bundler/man/bundle-platform.1.ronn +14 -7
  107. data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
  108. data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
  109. data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
  110. data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
  111. data/bundler/lib/bundler/man/bundle-show.1 +1 -1
  112. data/bundler/lib/bundler/man/bundle-update.1 +2 -2
  113. data/bundler/lib/bundler/man/bundle-update.1.ronn +2 -1
  114. data/bundler/lib/bundler/man/bundle-version.1 +35 -0
  115. data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
  116. data/bundler/lib/bundler/man/bundle-viz.1 +4 -1
  117. data/bundler/lib/bundler/man/bundle-viz.1.ronn +2 -0
  118. data/bundler/lib/bundler/man/bundle.1 +15 -10
  119. data/bundler/lib/bundler/man/bundle.1.ronn +12 -7
  120. data/bundler/lib/bundler/man/gemfile.5 +117 -80
  121. data/bundler/lib/bundler/man/gemfile.5.ronn +105 -84
  122. data/bundler/lib/bundler/man/index.txt +4 -0
  123. data/bundler/lib/bundler/match_metadata.rb +13 -0
  124. data/bundler/lib/bundler/match_platform.rb +0 -1
  125. data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
  126. data/bundler/lib/bundler/mirror.rb +5 -7
  127. data/bundler/lib/bundler/plugin/api/source.rb +4 -9
  128. data/bundler/lib/bundler/plugin/index.rb +4 -4
  129. data/bundler/lib/bundler/plugin/installer/git.rb +0 -4
  130. data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -8
  131. data/bundler/lib/bundler/plugin/installer.rb +6 -3
  132. data/bundler/lib/bundler/plugin.rb +3 -1
  133. data/bundler/lib/bundler/process_lock.rb +1 -1
  134. data/bundler/lib/bundler/remote_specification.rb +7 -5
  135. data/bundler/lib/bundler/resolver/base.rb +109 -0
  136. data/bundler/lib/bundler/resolver/candidate.rb +94 -0
  137. data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
  138. data/bundler/lib/bundler/resolver/package.rb +72 -0
  139. data/bundler/lib/bundler/resolver/root.rb +25 -0
  140. data/bundler/lib/bundler/resolver/spec_group.rb +43 -71
  141. data/bundler/lib/bundler/resolver.rb +332 -308
  142. data/bundler/lib/bundler/ruby_dsl.rb +1 -1
  143. data/bundler/lib/bundler/ruby_version.rb +5 -18
  144. data/bundler/lib/bundler/rubygems_ext.rb +144 -25
  145. data/bundler/lib/bundler/rubygems_gem_installer.rb +32 -20
  146. data/bundler/lib/bundler/rubygems_integration.rb +24 -95
  147. data/bundler/lib/bundler/runtime.rb +2 -7
  148. data/bundler/lib/bundler/self_manager.rb +168 -0
  149. data/bundler/lib/bundler/settings.rb +5 -10
  150. data/bundler/lib/bundler/setup.rb +4 -1
  151. data/bundler/lib/bundler/shared_helpers.rb +17 -25
  152. data/bundler/lib/bundler/source/git/git_proxy.rb +219 -71
  153. data/bundler/lib/bundler/source/git.rb +23 -26
  154. data/bundler/lib/bundler/source/metadata.rb +3 -4
  155. data/bundler/lib/bundler/source/path/installer.rb +1 -22
  156. data/bundler/lib/bundler/source/path.rb +7 -7
  157. data/bundler/lib/bundler/source/rubygems.rb +91 -130
  158. data/bundler/lib/bundler/source/rubygems_aggregate.rb +1 -1
  159. data/bundler/lib/bundler/source.rb +4 -5
  160. data/bundler/lib/bundler/source_list.rb +19 -31
  161. data/bundler/lib/bundler/source_map.rb +15 -2
  162. data/bundler/lib/bundler/spec_set.rb +63 -35
  163. data/bundler/lib/bundler/stub_specification.rb +5 -3
  164. data/bundler/lib/bundler/templates/Executable +3 -5
  165. data/bundler/lib/bundler/templates/Executable.bundler +6 -11
  166. data/bundler/lib/bundler/templates/Executable.standalone +4 -4
  167. data/bundler/lib/bundler/templates/Gemfile +0 -2
  168. data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
  169. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +8 -2
  170. data/bundler/lib/bundler/templates/newgem/README.md.tt +7 -11
  171. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +27 -3
  172. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
  173. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
  174. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
  175. data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
  176. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +13 -3
  177. data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
  178. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +13 -4
  179. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +22 -16
  180. data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
  181. data/bundler/lib/bundler/templates/newgem/standard.yml.tt +3 -0
  182. data/bundler/lib/bundler/templates/newgem/test/minitest/{newgem_test.rb.tt → test_newgem.rb.tt} +1 -1
  183. data/bundler/lib/bundler/ui/shell.rb +36 -13
  184. data/bundler/lib/bundler/ui/silent.rb +21 -5
  185. data/bundler/lib/bundler/uri_normalizer.rb +23 -0
  186. data/bundler/lib/bundler/vendor/.document +1 -0
  187. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
  188. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
  189. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
  190. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1350 -408
  191. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
  192. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
  193. data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
  194. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
  195. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
  196. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
  197. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
  198. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
  199. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
  200. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
  201. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
  202. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
  203. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
  204. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
  205. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
  206. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
  207. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +243 -0
  208. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
  209. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
  210. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +6 -6
  211. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -2
  212. data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +6 -2
  213. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +6 -0
  214. data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +9 -4
  215. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +19 -1
  216. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +23 -5
  217. data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
  218. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
  219. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  220. data/bundler/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
  221. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +452 -0
  222. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +76 -91
  223. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
  224. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -2
  225. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +32 -13
  226. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -3
  227. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -2
  228. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +2 -2
  229. data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
  230. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -3
  231. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +14 -21
  232. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +11 -17
  233. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  234. data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +83 -0
  235. data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +23 -0
  236. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -3
  237. data/bundler/lib/bundler/vendored_persistent.rb +1 -33
  238. data/bundler/lib/bundler/{vendored_molinillo.rb → vendored_pub_grub.rb} +1 -1
  239. data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_tsort.rb} +1 -1
  240. data/bundler/lib/bundler/version.rb +5 -1
  241. data/bundler/lib/bundler/worker.rb +5 -7
  242. data/bundler/lib/bundler.rb +50 -77
  243. data/hide_lib_for_update/note.txt +0 -4
  244. data/lib/rubygems/available_set.rb +3 -3
  245. data/lib/rubygems/basic_specification.rb +12 -12
  246. data/lib/rubygems/bundler_version_finder.rb +14 -46
  247. data/lib/rubygems/command.rb +47 -39
  248. data/lib/rubygems/command_manager.rb +34 -13
  249. data/lib/rubygems/commands/build_command.rb +11 -8
  250. data/lib/rubygems/commands/cert_command.rb +39 -39
  251. data/lib/rubygems/commands/check_command.rb +20 -20
  252. data/lib/rubygems/commands/cleanup_command.rb +23 -23
  253. data/lib/rubygems/commands/contents_command.rb +13 -13
  254. data/lib/rubygems/commands/dependency_command.rb +35 -45
  255. data/lib/rubygems/commands/environment_command.rb +10 -7
  256. data/lib/rubygems/commands/exec_command.rb +248 -0
  257. data/lib/rubygems/commands/fetch_command.rb +32 -13
  258. data/lib/rubygems/commands/generate_index_command.rb +17 -17
  259. data/lib/rubygems/commands/help_command.rb +6 -6
  260. data/lib/rubygems/commands/info_command.rb +3 -3
  261. data/lib/rubygems/commands/install_command.rb +31 -24
  262. data/lib/rubygems/commands/list_command.rb +4 -4
  263. data/lib/rubygems/commands/lock_command.rb +4 -4
  264. data/lib/rubygems/commands/mirror_command.rb +3 -3
  265. data/lib/rubygems/commands/open_command.rb +9 -9
  266. data/lib/rubygems/commands/outdated_command.rb +5 -5
  267. data/lib/rubygems/commands/owner_command.rb +17 -12
  268. data/lib/rubygems/commands/pristine_command.rb +64 -49
  269. data/lib/rubygems/commands/push_command.rb +16 -16
  270. data/lib/rubygems/commands/query_command.rb +9 -9
  271. data/lib/rubygems/commands/rdoc_command.rb +26 -25
  272. data/lib/rubygems/commands/search_command.rb +4 -4
  273. data/lib/rubygems/commands/server_command.rb +16 -79
  274. data/lib/rubygems/commands/setup_command.rb +172 -173
  275. data/lib/rubygems/commands/signin_command.rb +9 -9
  276. data/lib/rubygems/commands/signout_command.rb +7 -7
  277. data/lib/rubygems/commands/sources_command.rb +22 -22
  278. data/lib/rubygems/commands/specification_command.rb +18 -18
  279. data/lib/rubygems/commands/stale_command.rb +2 -2
  280. data/lib/rubygems/commands/uninstall_command.rb +43 -40
  281. data/lib/rubygems/commands/unpack_command.rb +13 -13
  282. data/lib/rubygems/commands/update_command.rb +61 -72
  283. data/lib/rubygems/commands/which_command.rb +7 -7
  284. data/lib/rubygems/commands/yank_command.rb +11 -11
  285. data/lib/rubygems/compatibility.rb +4 -2
  286. data/lib/rubygems/config_file.rb +58 -25
  287. data/lib/rubygems/core_ext/kernel_gem.rb +1 -6
  288. data/lib/rubygems/core_ext/kernel_require.rb +108 -115
  289. data/lib/rubygems/core_ext/kernel_warn.rb +33 -37
  290. data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
  291. data/lib/rubygems/defaults.rb +32 -36
  292. data/lib/rubygems/dependency.rb +20 -17
  293. data/lib/rubygems/dependency_installer.rb +37 -37
  294. data/lib/rubygems/dependency_list.rb +7 -7
  295. data/lib/rubygems/deprecate.rb +55 -8
  296. data/lib/rubygems/doctor.rb +21 -21
  297. data/lib/rubygems/errors.rb +3 -6
  298. data/lib/rubygems/exceptions.rb +35 -7
  299. data/lib/rubygems/ext/build_error.rb +1 -1
  300. data/lib/rubygems/ext/builder.rb +51 -22
  301. data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +27 -0
  302. data/lib/rubygems/ext/cargo_builder.rb +360 -0
  303. data/lib/rubygems/ext/cmake_builder.rb +2 -2
  304. data/lib/rubygems/ext/configure_builder.rb +1 -1
  305. data/lib/rubygems/ext/ext_conf_builder.rb +35 -59
  306. data/lib/rubygems/ext/rake_builder.rb +3 -3
  307. data/lib/rubygems/ext.rb +7 -6
  308. data/lib/rubygems/gem_runner.rb +12 -16
  309. data/lib/rubygems/gemcutter_utilities.rb +60 -21
  310. data/lib/rubygems/indexer.rb +30 -28
  311. data/lib/rubygems/install_default_message.rb +2 -2
  312. data/lib/rubygems/install_message.rb +2 -2
  313. data/lib/rubygems/install_update_options.rb +70 -61
  314. data/lib/rubygems/installer.rb +135 -87
  315. data/lib/rubygems/installer_uninstaller_utils.rb +2 -2
  316. data/lib/rubygems/local_remote_options.rb +22 -24
  317. data/lib/rubygems/mock_gem_ui.rb +2 -2
  318. data/lib/rubygems/name_tuple.rb +6 -7
  319. data/lib/rubygems/optparse/.document +1 -0
  320. data/lib/rubygems/optparse/COPYING +56 -0
  321. data/lib/rubygems/optparse/lib/optionparser.rb +2 -0
  322. data/lib/rubygems/optparse/lib/optparse/ac.rb +54 -0
  323. data/lib/rubygems/optparse/lib/optparse/date.rb +18 -0
  324. data/lib/rubygems/optparse/lib/optparse/kwargs.rb +22 -0
  325. data/lib/rubygems/optparse/lib/optparse/shellwords.rb +7 -0
  326. data/lib/rubygems/optparse/lib/optparse/time.rb +11 -0
  327. data/lib/rubygems/optparse/lib/optparse/uri.rb +7 -0
  328. data/lib/rubygems/optparse/lib/optparse/version.rb +71 -0
  329. data/lib/rubygems/optparse/lib/optparse.rb +2308 -0
  330. data/lib/rubygems/optparse.rb +3 -0
  331. data/lib/rubygems/package/file_source.rb +2 -2
  332. data/lib/rubygems/package/old.rb +9 -9
  333. data/lib/rubygems/package/tar_header.rb +62 -62
  334. data/lib/rubygems/package/tar_reader/entry.rb +90 -9
  335. data/lib/rubygems/package/tar_reader.rb +1 -29
  336. data/lib/rubygems/package/tar_writer.rb +7 -7
  337. data/lib/rubygems/package.rb +77 -60
  338. data/lib/rubygems/package_task.rb +4 -4
  339. data/lib/rubygems/path_support.rb +1 -6
  340. data/lib/rubygems/platform.rb +94 -61
  341. data/lib/rubygems/psych_tree.rb +1 -1
  342. data/lib/rubygems/query_utils.rb +49 -51
  343. data/lib/rubygems/rdoc.rb +2 -2
  344. data/lib/rubygems/remote_fetcher.rb +27 -27
  345. data/lib/rubygems/request/connection_pools.rb +4 -4
  346. data/lib/rubygems/request/http_pool.rb +1 -1
  347. data/lib/rubygems/request.rb +24 -24
  348. data/lib/rubygems/request_set/gem_dependency_api.rb +122 -123
  349. data/lib/rubygems/request_set/lockfile/parser.rb +26 -26
  350. data/lib/rubygems/request_set/lockfile/tokenizer.rb +4 -4
  351. data/lib/rubygems/request_set/lockfile.rb +9 -9
  352. data/lib/rubygems/request_set.rb +18 -18
  353. data/lib/rubygems/requirement.rb +15 -15
  354. data/lib/rubygems/resolver/activation_request.rb +3 -3
  355. data/lib/rubygems/resolver/api_set.rb +4 -4
  356. data/lib/rubygems/resolver/api_specification.rb +6 -6
  357. data/lib/rubygems/resolver/best_set.rb +5 -5
  358. data/lib/rubygems/resolver/conflict.rb +10 -10
  359. data/lib/rubygems/resolver/dependency_request.rb +2 -2
  360. data/lib/rubygems/resolver/git_set.rb +2 -2
  361. data/lib/rubygems/resolver/git_specification.rb +6 -6
  362. data/lib/rubygems/resolver/index_set.rb +3 -3
  363. data/lib/rubygems/resolver/index_specification.rb +6 -5
  364. data/lib/rubygems/resolver/installed_specification.rb +4 -4
  365. data/lib/rubygems/resolver/installer_set.rb +21 -26
  366. data/lib/rubygems/resolver/local_specification.rb +2 -2
  367. data/lib/rubygems/resolver/lock_set.rb +4 -4
  368. data/lib/rubygems/resolver/lock_specification.rb +4 -4
  369. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +3 -3
  370. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
  371. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  372. data/lib/rubygems/resolver/molinillo.rb +1 -1
  373. data/lib/rubygems/resolver/specification.rb +1 -1
  374. data/lib/rubygems/resolver/stats.rb +1 -1
  375. data/lib/rubygems/resolver/vendor_set.rb +1 -1
  376. data/lib/rubygems/resolver/vendor_specification.rb +3 -3
  377. data/lib/rubygems/resolver.rb +40 -40
  378. data/lib/rubygems/s3_uri_signer.rb +6 -6
  379. data/lib/rubygems/safe_yaml.rb +10 -10
  380. data/lib/rubygems/security/policies.rb +47 -47
  381. data/lib/rubygems/security/policy.rb +19 -21
  382. data/lib/rubygems/security/signer.rb +5 -5
  383. data/lib/rubygems/security/trust_dir.rb +4 -4
  384. data/lib/rubygems/security.rb +37 -43
  385. data/lib/rubygems/security_option.rb +7 -7
  386. data/lib/rubygems/source/git.rb +25 -24
  387. data/lib/rubygems/source/installed.rb +1 -1
  388. data/lib/rubygems/source/local.rb +2 -2
  389. data/lib/rubygems/source/specific_file.rb +1 -1
  390. data/lib/rubygems/source.rb +27 -32
  391. data/lib/rubygems/source_list.rb +5 -9
  392. data/lib/rubygems/spec_fetcher.rb +37 -37
  393. data/lib/rubygems/specification.rb +265 -211
  394. data/lib/rubygems/specification_policy.rb +49 -30
  395. data/lib/rubygems/stub_specification.rb +24 -27
  396. data/lib/rubygems/text.rb +22 -21
  397. data/lib/rubygems/tsort/.document +1 -0
  398. data/lib/rubygems/tsort/LICENSE.txt +22 -0
  399. data/lib/rubygems/tsort/lib/tsort.rb +452 -0
  400. data/lib/rubygems/tsort.rb +3 -0
  401. data/lib/rubygems/uninstaller.rb +29 -26
  402. data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
  403. data/lib/rubygems/update_suggestion.rb +69 -0
  404. data/lib/rubygems/uri.rb +45 -30
  405. data/lib/rubygems/uri_formatter.rb +1 -1
  406. data/lib/rubygems/user_interaction.rb +42 -28
  407. data/lib/rubygems/util/licenses.rb +4 -2
  408. data/lib/rubygems/util.rb +12 -16
  409. data/lib/rubygems/validator.rb +6 -6
  410. data/lib/rubygems/version.rb +28 -17
  411. data/lib/rubygems/version_option.rb +5 -5
  412. data/lib/rubygems.rb +129 -117
  413. data/rubygems-update.gemspec +3 -3
  414. data/setup.rb +11 -16
  415. data/test/rubygems/alternate_cert.pem +14 -14
  416. data/test/rubygems/alternate_cert_32.pem +15 -15
  417. data/test/rubygems/alternate_key.pem +25 -25
  418. data/test/rubygems/bundler_test_gem.rb +419 -0
  419. data/test/rubygems/child_cert.pem +15 -16
  420. data/test/rubygems/child_cert_32.pem +15 -16
  421. data/test/rubygems/child_key.pem +25 -25
  422. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  423. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  424. data/test/rubygems/encrypted_private_key.pem +26 -26
  425. data/test/rubygems/expired_cert.pem +15 -15
  426. data/test/rubygems/future_cert.pem +15 -15
  427. data/test/rubygems/future_cert_32.pem +15 -15
  428. data/test/rubygems/grandchild_cert.pem +15 -16
  429. data/test/rubygems/grandchild_cert_32.pem +15 -16
  430. data/test/rubygems/grandchild_key.pem +25 -25
  431. data/test/rubygems/helper.rb +237 -207
  432. data/test/rubygems/installer_test_case.rb +13 -13
  433. data/test/rubygems/invalid_issuer_cert.pem +16 -16
  434. data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
  435. data/test/rubygems/invalid_key.pem +25 -25
  436. data/test/rubygems/invalid_signer_cert.pem +15 -15
  437. data/test/rubygems/invalid_signer_cert_32.pem +15 -15
  438. data/test/rubygems/invalidchild_cert.pem +15 -16
  439. data/test/rubygems/invalidchild_cert_32.pem +15 -16
  440. data/test/rubygems/invalidchild_key.pem +25 -25
  441. data/test/rubygems/package/tar_test_case.rb +52 -17
  442. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  443. data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
  444. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
  445. data/test/rubygems/private_key.pem +25 -25
  446. data/test/rubygems/public_cert.pem +16 -16
  447. data/test/rubygems/public_cert_32.pem +15 -15
  448. data/test/rubygems/public_key.pem +7 -7
  449. data/test/rubygems/rubygems_plugin.rb +2 -2
  450. data/test/rubygems/simple_gem.rb +1 -1
  451. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +4 -4
  452. data/test/rubygems/test_bundled_ca.rb +11 -11
  453. data/test/rubygems/test_config.rb +5 -5
  454. data/test/rubygems/test_deprecate.rb +3 -3
  455. data/test/rubygems/test_exit.rb +17 -0
  456. data/test/rubygems/test_gem.rb +367 -757
  457. data/test/rubygems/test_gem_available_set.rb +21 -21
  458. data/test/rubygems/test_gem_bundler_version_finder.rb +27 -47
  459. data/test/rubygems/test_gem_command.rb +45 -45
  460. data/test/rubygems/test_gem_command_manager.rb +124 -27
  461. data/test/rubygems/test_gem_commands_build_command.rb +73 -63
  462. data/test/rubygems/test_gem_commands_cert_command.rb +105 -107
  463. data/test/rubygems/test_gem_commands_check_command.rb +4 -4
  464. data/test/rubygems/test_gem_commands_cleanup_command.rb +40 -40
  465. data/test/rubygems/test_gem_commands_contents_command.rb +28 -28
  466. data/test/rubygems/test_gem_commands_dependency_command.rb +36 -36
  467. data/test/rubygems/test_gem_commands_environment_command.rb +38 -14
  468. data/test/rubygems/test_gem_commands_exec_command.rb +851 -0
  469. data/test/rubygems/test_gem_commands_fetch_command.rb +159 -26
  470. data/test/rubygems/test_gem_commands_generate_index_command.rb +7 -7
  471. data/test/rubygems/test_gem_commands_help_command.rb +13 -13
  472. data/test/rubygems/test_gem_commands_info_command.rb +28 -2
  473. data/test/rubygems/test_gem_commands_install_command.rb +200 -132
  474. data/test/rubygems/test_gem_commands_list_command.rb +4 -4
  475. data/test/rubygems/test_gem_commands_lock_command.rb +10 -10
  476. data/test/rubygems/test_gem_commands_mirror.rb +2 -2
  477. data/test/rubygems/test_gem_commands_open_command.rb +5 -5
  478. data/test/rubygems/test_gem_commands_outdated_command.rb +9 -9
  479. data/test/rubygems/test_gem_commands_owner_command.rb +126 -45
  480. data/test/rubygems/test_gem_commands_pristine_command.rb +141 -92
  481. data/test/rubygems/test_gem_commands_push_command.rb +85 -59
  482. data/test/rubygems/test_gem_commands_query_command.rb +73 -73
  483. data/test/rubygems/test_gem_commands_search_command.rb +2 -2
  484. data/test/rubygems/test_gem_commands_server_command.rb +6 -48
  485. data/test/rubygems/test_gem_commands_setup_command.rb +169 -92
  486. data/test/rubygems/test_gem_commands_signin_command.rb +154 -26
  487. data/test/rubygems/test_gem_commands_signout_command.rb +3 -3
  488. data/test/rubygems/test_gem_commands_sources_command.rb +74 -25
  489. data/test/rubygems/test_gem_commands_specification_command.rb +32 -32
  490. data/test/rubygems/test_gem_commands_stale_command.rb +4 -4
  491. data/test/rubygems/test_gem_commands_uninstall_command.rb +99 -82
  492. data/test/rubygems/test_gem_commands_unpack_command.rb +31 -31
  493. data/test/rubygems/test_gem_commands_update_command.rb +202 -91
  494. data/test/rubygems/test_gem_commands_which_command.rb +6 -6
  495. data/test/rubygems/test_gem_commands_yank_command.rb +43 -43
  496. data/test/rubygems/test_gem_config_file.rb +93 -81
  497. data/test/rubygems/test_gem_dependency.rb +78 -80
  498. data/test/rubygems/test_gem_dependency_installer.rb +165 -165
  499. data/test/rubygems/test_gem_dependency_list.rb +47 -47
  500. data/test/rubygems/test_gem_dependency_resolution_error.rb +4 -4
  501. data/test/rubygems/test_gem_doctor.rb +26 -26
  502. data/test/rubygems/test_gem_ext_builder.rb +60 -62
  503. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +1 -0
  504. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +8 -0
  505. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +233 -0
  506. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +10 -0
  507. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +27 -0
  508. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +1 -0
  509. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +1 -0
  510. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +247 -0
  511. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +10 -0
  512. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +8 -0
  513. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +51 -0
  514. data/test/rubygems/test_gem_ext_cargo_builder.rb +166 -0
  515. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +33 -0
  516. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +60 -0
  517. data/test/rubygems/test_gem_ext_cmake_builder.rb +17 -15
  518. data/test/rubygems/test_gem_ext_configure_builder.rb +13 -13
  519. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +53 -50
  520. data/test/rubygems/test_gem_ext_rake_builder.rb +15 -15
  521. data/test/rubygems/test_gem_gem_runner.rb +13 -8
  522. data/test/rubygems/test_gem_gemcutter_utilities.rb +71 -65
  523. data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -4
  524. data/test/rubygems/test_gem_indexer.rb +90 -67
  525. data/test/rubygems/test_gem_install_update_options.rb +18 -18
  526. data/test/rubygems/test_gem_installer.rb +511 -327
  527. data/test/rubygems/test_gem_local_remote_options.rb +10 -10
  528. data/test/rubygems/test_gem_name_tuple.rb +4 -4
  529. data/test/rubygems/test_gem_package.rb +246 -236
  530. data/test/rubygems/test_gem_package_old.rb +13 -13
  531. data/test/rubygems/test_gem_package_tar_header.rb +47 -47
  532. data/test/rubygems/test_gem_package_tar_reader.rb +55 -8
  533. data/test/rubygems/test_gem_package_tar_reader_entry.rb +161 -16
  534. data/test/rubygems/test_gem_package_tar_writer.rb +76 -76
  535. data/test/rubygems/test_gem_package_task.rb +18 -18
  536. data/test/rubygems/test_gem_path_support.rb +15 -19
  537. data/test/rubygems/test_gem_platform.rb +335 -214
  538. data/test/rubygems/test_gem_rdoc.rb +14 -14
  539. data/test/rubygems/test_gem_remote_fetcher.rb +169 -154
  540. data/test/rubygems/test_gem_request.rb +65 -59
  541. data/test/rubygems/test_gem_request_connection_pools.rb +29 -29
  542. data/test/rubygems/test_gem_request_set.rb +100 -100
  543. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +209 -211
  544. data/test/rubygems/test_gem_request_set_lockfile.rb +86 -86
  545. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +58 -58
  546. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +62 -62
  547. data/test/rubygems/test_gem_requirement.rb +47 -42
  548. data/test/rubygems/test_gem_resolver.rb +173 -106
  549. data/test/rubygems/test_gem_resolver_activation_request.rb +6 -6
  550. data/test/rubygems/test_gem_resolver_api_set.rb +33 -33
  551. data/test/rubygems/test_gem_resolver_api_specification.rb +47 -47
  552. data/test/rubygems/test_gem_resolver_best_set.rb +22 -22
  553. data/test/rubygems/test_gem_resolver_composed_set.rb +1 -1
  554. data/test/rubygems/test_gem_resolver_conflict.rb +12 -12
  555. data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -15
  556. data/test/rubygems/test_gem_resolver_git_set.rb +21 -21
  557. data/test/rubygems/test_gem_resolver_git_specification.rb +21 -21
  558. data/test/rubygems/test_gem_resolver_index_set.rb +12 -12
  559. data/test/rubygems/test_gem_resolver_index_specification.rb +16 -16
  560. data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -5
  561. data/test/rubygems/test_gem_resolver_installer_set.rb +79 -35
  562. data/test/rubygems/test_gem_resolver_local_specification.rb +7 -7
  563. data/test/rubygems/test_gem_resolver_lock_set.rb +12 -12
  564. data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -17
  565. data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -1
  566. data/test/rubygems/test_gem_resolver_specification.rb +8 -8
  567. data/test/rubygems/test_gem_resolver_vendor_set.rb +6 -6
  568. data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -10
  569. data/test/rubygems/test_gem_security.rb +69 -69
  570. data/test/rubygems/test_gem_security_policy.rb +72 -72
  571. data/test/rubygems/test_gem_security_signer.rb +34 -34
  572. data/test/rubygems/test_gem_security_trust_dir.rb +6 -6
  573. data/test/rubygems/test_gem_silent_ui.rb +38 -32
  574. data/test/rubygems/test_gem_source.rb +44 -44
  575. data/test/rubygems/test_gem_source_fetch_problem.rb +9 -9
  576. data/test/rubygems/test_gem_source_git.rb +69 -62
  577. data/test/rubygems/test_gem_source_installed.rb +16 -16
  578. data/test/rubygems/test_gem_source_list.rb +5 -5
  579. data/test/rubygems/test_gem_source_local.rb +14 -14
  580. data/test/rubygems/test_gem_source_lock.rb +31 -31
  581. data/test/rubygems/test_gem_source_specific_file.rb +17 -17
  582. data/test/rubygems/test_gem_source_subpath_problem.rb +7 -7
  583. data/test/rubygems/test_gem_source_vendor.rb +13 -13
  584. data/test/rubygems/test_gem_spec_fetcher.rb +72 -72
  585. data/test/rubygems/test_gem_specification.rb +560 -493
  586. data/test/rubygems/test_gem_stream_ui.rb +20 -20
  587. data/test/rubygems/test_gem_stub_specification.rb +32 -48
  588. data/test/rubygems/test_gem_text.rb +7 -1
  589. data/test/rubygems/test_gem_uninstaller.rb +113 -113
  590. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -3
  591. data/test/rubygems/test_gem_update_suggestion.rb +208 -0
  592. data/test/rubygems/test_gem_uri.rb +4 -4
  593. data/test/rubygems/test_gem_uri_formatter.rb +14 -14
  594. data/test/rubygems/test_gem_util.rb +23 -23
  595. data/test/rubygems/test_gem_validator.rb +8 -8
  596. data/test/rubygems/test_gem_version.rb +27 -16
  597. data/test/rubygems/test_gem_version_option.rb +15 -15
  598. data/test/rubygems/test_kernel.rb +42 -60
  599. data/test/rubygems/test_project_sanity.rb +2 -2
  600. data/test/rubygems/test_remote_fetch_error.rb +6 -6
  601. data/test/rubygems/test_require.rb +132 -174
  602. data/test/rubygems/test_rubygems.rb +42 -12
  603. data/test/rubygems/utilities.rb +59 -37
  604. data/test/rubygems/wrong_key_cert.pem +15 -15
  605. data/test/rubygems/wrong_key_cert_32.pem +15 -15
  606. data/test/test_changelog_generator.rb +1 -0
  607. metadata +97 -41
  608. data/bundler/lib/bundler/dep_proxy.rb +0 -55
  609. data/bundler/lib/bundler/gemdeps.rb +0 -29
  610. data/bundler/lib/bundler/psyched_yaml.rb +0 -22
  611. data/bundler/lib/bundler/templates/gems.rb +0 -8
  612. data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
  613. data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
  614. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
  615. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
  616. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
  617. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
  618. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
  619. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
  620. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
  621. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
  622. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
  623. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
  624. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
  625. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
  626. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -143
  627. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
  628. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
  629. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
  630. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
  631. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
  632. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
  633. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
  634. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
  635. data/bundler/lib/bundler/version_ranges.rb +0 -122
  636. data/lib/rubygems/psych_additions.rb +0 -10
  637. data/lib/rubygems/server.rb +0 -882
  638. data/test/rubygems/bogussources.rb +0 -9
  639. data/test/rubygems/data/null-type.gemspec.rz +0 -0
  640. data/test/rubygems/test_gem_server.rb +0 -608
  641. /data/bundler/lib/bundler/templates/newgem/ext/newgem/{extconf.rb.tt → extconf-c.rb.tt} +0 -0
@@ -1,11 +1,13 @@
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
+ require_relative "helper"
3
+ require_relative "test_gem_update_suggestion"
4
+ require "rubygems/commands/install_command"
5
+ require "rubygems/request_set"
6
+ require "rubygems/rdoc"
6
7
 
7
8
  class TestGemCommandsInstallCommand < Gem::TestCase
8
9
  def setup
10
+ @orig_args = Gem::Command.build_args
9
11
  super
10
12
  common_installer_setup
11
13
 
@@ -13,7 +15,6 @@ class TestGemCommandsInstallCommand < Gem::TestCase
13
15
  @cmd.options[:document] = []
14
16
 
15
17
  @gemdeps = "tmp_install_gemdeps"
16
- @orig_args = Gem::Command.build_args
17
18
 
18
19
  common_installer_setup
19
20
  end
@@ -30,8 +31,8 @@ class TestGemCommandsInstallCommand < Gem::TestCase
30
31
 
31
32
  def test_execute_exclude_prerelease
32
33
  spec_fetcher do |fetcher|
33
- fetcher.gem 'a', 2
34
- fetcher.gem 'a', '2.pre'
34
+ fetcher.gem "a", 2
35
+ fetcher.gem "a", "2.pre"
35
36
  end
36
37
 
37
38
  @cmd.options[:args] = %w[a]
@@ -47,13 +48,13 @@ class TestGemCommandsInstallCommand < Gem::TestCase
47
48
 
48
49
  def test_execute_explicit_version_includes_prerelease
49
50
  specs = spec_fetcher do |fetcher|
50
- fetcher.gem 'a', 2
51
- fetcher.gem 'a', '2.a'
51
+ fetcher.gem "a", 2
52
+ fetcher.gem "a", "2.a"
52
53
  end
53
54
 
54
- a2_pre = specs['a-2.a']
55
+ a2_pre = specs["a-2.a"]
55
56
 
56
- @cmd.handle_options [a2_pre.name, '--version', a2_pre.version.to_s,
57
+ @cmd.handle_options [a2_pre.name, "--version", a2_pre.version.to_s,
57
58
  "--no-document"]
58
59
  assert @cmd.options[:prerelease]
59
60
  assert @cmd.options[:version].satisfied_by?(a2_pre.version)
@@ -69,12 +70,12 @@ class TestGemCommandsInstallCommand < Gem::TestCase
69
70
 
70
71
  def test_execute_local
71
72
  specs = spec_fetcher do |fetcher|
72
- fetcher.gem 'a', 2
73
+ fetcher.gem "a", 2
73
74
  end
74
75
 
75
76
  @cmd.options[:domain] = :local
76
77
 
77
- FileUtils.mv specs['a-2'].cache_file, @tempdir
78
+ FileUtils.mv specs["a-2"].cache_file, @tempdir
78
79
 
79
80
  @cmd.options[:args] = %w[a]
80
81
 
@@ -97,14 +98,14 @@ class TestGemCommandsInstallCommand < Gem::TestCase
97
98
 
98
99
  def test_execute_local_dependency_nonexistent
99
100
  specs = spec_fetcher do |fetcher|
100
- fetcher.gem 'foo', 2, 'bar' => '0.5'
101
+ fetcher.gem "foo", 2, "bar" => "0.5"
101
102
  end
102
103
 
103
104
  @cmd.options[:domain] = :local
104
105
 
105
- FileUtils.mv specs['foo-2'].cache_file, @tempdir
106
+ FileUtils.mv specs["foo-2"].cache_file, @tempdir
106
107
 
107
- @cmd.options[:args] = ['foo']
108
+ @cmd.options[:args] = ["foo"]
108
109
 
109
110
  use_ui @ui do
110
111
  orig_dir = Dir.pwd
@@ -128,15 +129,15 @@ ERROR: Could not find a valid gem 'bar' (= 0.5) (required by 'foo' (>= 0)) in a
128
129
 
129
130
  def test_execute_local_dependency_nonexistent_ignore_dependencies
130
131
  specs = spec_fetcher do |fetcher|
131
- fetcher.gem 'foo', 2, 'bar' => '0.5'
132
+ fetcher.gem "foo", 2, "bar" => "0.5"
132
133
  end
133
134
 
134
135
  @cmd.options[:domain] = :local
135
136
  @cmd.options[:ignore_dependencies] = true
136
137
 
137
- FileUtils.mv specs['foo-2'].cache_file, @tempdir
138
+ FileUtils.mv specs["foo-2"].cache_file, @tempdir
138
139
 
139
- @cmd.options[:args] = ['foo']
140
+ @cmd.options[:args] = ["foo"]
140
141
 
141
142
  use_ui @ui do
142
143
  orig_dir = Dir.pwd
@@ -155,16 +156,16 @@ ERROR: Could not find a valid gem 'bar' (= 0.5) (required by 'foo' (>= 0)) in a
155
156
 
156
157
  def test_execute_local_transitive_prerelease
157
158
  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'
159
+ fetcher.download "a", 2, "b" => "2.a", "c" => "3"
160
+ fetcher.download "b", "2.a"
161
+ fetcher.download "c", "3"
161
162
  end
162
163
 
163
164
  @cmd.options[:domain] = :local
164
165
 
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
166
+ FileUtils.mv specs["a-2"].cache_file, @tempdir
167
+ FileUtils.mv specs["b-2.a"].cache_file, @tempdir
168
+ FileUtils.mv specs["c-3"].cache_file, @tempdir
168
169
 
169
170
  @cmd.options[:args] = %w[a]
170
171
 
@@ -187,16 +188,16 @@ ERROR: Could not find a valid gem 'bar' (= 0.5) (required by 'foo' (>= 0)) in a
187
188
  end
188
189
 
189
190
  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?
191
+ pend "skipped on MS Windows (chmod has no effect)" if win_platform?
192
+ pend "skipped in root privilege" if Process.uid.zero?
192
193
 
193
194
  specs = spec_fetcher do |fetcher|
194
- fetcher.gem 'a', 2
195
+ fetcher.gem "a", 2
195
196
  end
196
197
 
197
198
  @cmd.options[:user_install] = false
198
199
 
199
- FileUtils.mv specs['a-2'].cache_file, @tempdir
200
+ FileUtils.mv specs["a-2"].cache_file, @tempdir
200
201
 
201
202
  @cmd.options[:args] = %w[a]
202
203
 
@@ -277,12 +278,28 @@ ERROR: Could not find a valid gem 'bar' (= 0.5) (required by 'foo' (>= 0)) in a
277
278
  assert_match(/ould not find a valid gem 'nonexistent'/, @ui.error)
278
279
  end
279
280
 
281
+ def test_execute_nonexistent_force
282
+ spec_fetcher
283
+
284
+ @cmd.options[:args] = %w[nonexistent]
285
+ @cmd.options[:force] = true
286
+
287
+ use_ui @ui do
288
+ e = assert_raise Gem::MockGemUi::TermError do
289
+ @cmd.execute
290
+ end
291
+ assert_equal 2, e.exit_code
292
+ end
293
+
294
+ assert_match(/ould not find a valid gem 'nonexistent'/, @ui.error)
295
+ end
296
+
280
297
  def test_execute_dependency_nonexistent
281
298
  spec_fetcher do |fetcher|
282
- fetcher.spec 'foo', 2, 'bar' => '0.5'
299
+ fetcher.spec "foo", 2, "bar" => "0.5"
283
300
  end
284
301
 
285
- @cmd.options[:args] = ['foo']
302
+ @cmd.options[:args] = ["foo"]
286
303
 
287
304
  use_ui @ui do
288
305
  e = assert_raise Gem::MockGemUi::TermError do
@@ -435,8 +452,8 @@ ERROR: Possible alternatives: non_existent_with_hint
435
452
 
436
453
  def test_execute_prerelease_skipped_when_no_flag_set
437
454
  spec_fetcher do |fetcher|
438
- fetcher.gem 'a', 1
439
- fetcher.gem 'a', '3.a'
455
+ fetcher.gem "a", 1
456
+ fetcher.gem "a", "3.a"
440
457
  end
441
458
 
442
459
  @cmd.options[:prerelease] = false
@@ -453,8 +470,8 @@ ERROR: Possible alternatives: non_existent_with_hint
453
470
 
454
471
  def test_execute_prerelease_wins_over_previous_ver
455
472
  spec_fetcher do |fetcher|
456
- fetcher.download 'a', 1
457
- fetcher.download 'a', '2.a'
473
+ fetcher.download "a", 1
474
+ fetcher.download "a", "2.a"
458
475
  end
459
476
 
460
477
  @cmd.options[:prerelease] = true
@@ -471,8 +488,8 @@ ERROR: Possible alternatives: non_existent_with_hint
471
488
 
472
489
  def test_execute_with_version_specified_by_colon
473
490
  spec_fetcher do |fetcher|
474
- fetcher.download 'a', 1
475
- fetcher.download 'a', 2
491
+ fetcher.download "a", 1
492
+ fetcher.download "a", 2
476
493
  end
477
494
 
478
495
  @cmd.options[:args] = %w[a:1]
@@ -488,8 +505,8 @@ ERROR: Possible alternatives: non_existent_with_hint
488
505
 
489
506
  def test_execute_prerelease_skipped_when_non_pre_available
490
507
  spec_fetcher do |fetcher|
491
- fetcher.gem 'a', '2.pre'
492
- fetcher.gem 'a', 2
508
+ fetcher.gem "a", "2.pre"
509
+ fetcher.gem "a", 2
493
510
  end
494
511
 
495
512
  @cmd.options[:prerelease] = true
@@ -505,19 +522,19 @@ ERROR: Possible alternatives: non_existent_with_hint
505
522
  end
506
523
 
507
524
  def test_execute_required_ruby_version
508
- next_ruby = Gem.ruby_version.segments.map.with_index{|n, i| i == 1 ? n + 1 : n }.join(".")
525
+ next_ruby = Gem.ruby_version.segments.map.with_index {|n, i| i == 1 ? n + 1 : n }.join(".")
509
526
 
510
527
  local = Gem::Platform.local
511
528
  spec_fetcher do |fetcher|
512
- fetcher.download 'a', 2
513
- fetcher.download 'a', 2 do |s|
529
+ fetcher.download "a", 2
530
+ fetcher.download "a", 2 do |s|
514
531
  s.required_ruby_version = "< #{RUBY_VERSION}.a"
515
532
  s.platform = local
516
533
  end
517
- fetcher.download 'a', 3 do |s|
534
+ fetcher.download "a", 3 do |s|
518
535
  s.required_ruby_version = ">= #{next_ruby}"
519
536
  end
520
- fetcher.download 'a', 3 do |s|
537
+ fetcher.download "a", 3 do |s|
521
538
  s.required_ruby_version = ">= #{next_ruby}"
522
539
  s.platform = local
523
540
  end
@@ -537,8 +554,8 @@ ERROR: Possible alternatives: non_existent_with_hint
537
554
  def test_execute_required_ruby_version_upper_bound
538
555
  local = Gem::Platform.local
539
556
  spec_fetcher do |fetcher|
540
- fetcher.gem 'a', 2.0
541
- fetcher.gem 'a', 2.0 do |s|
557
+ fetcher.gem "a", 2.0
558
+ fetcher.gem "a", 2.0 do |s|
542
559
  s.required_ruby_version = "< #{RUBY_VERSION}.a"
543
560
  s.platform = local
544
561
  end
@@ -557,8 +574,8 @@ ERROR: Possible alternatives: non_existent_with_hint
557
574
 
558
575
  def test_execute_required_ruby_version_specific_not_met
559
576
  spec_fetcher do |fetcher|
560
- fetcher.gem 'a', '1.0' do |s|
561
- s.required_ruby_version = '= 1.4.6'
577
+ fetcher.gem "a", "1.0" do |s|
578
+ s.required_ruby_version = "= 1.4.6"
562
579
  end
563
580
  end
564
581
 
@@ -577,8 +594,8 @@ ERROR: Possible alternatives: non_existent_with_hint
577
594
 
578
595
  def test_execute_required_ruby_version_specific_prerelease_met
579
596
  spec_fetcher do |fetcher|
580
- fetcher.gem 'a', '1.0' do |s|
581
- s.required_ruby_version = '>= 1.4.6.preview2'
597
+ fetcher.gem "a", "1.0" do |s|
598
+ s.required_ruby_version = ">= 1.4.6.preview2"
582
599
  end
583
600
  end
584
601
 
@@ -594,10 +611,10 @@ ERROR: Possible alternatives: non_existent_with_hint
594
611
  end
595
612
 
596
613
  def test_execute_required_ruby_version_specific_prerelease_not_met
597
- next_ruby_pre = Gem.ruby_version.segments.map.with_index{|n, i| i == 1 ? n + 1 : n }.join(".") + ".a"
614
+ next_ruby_pre = Gem.ruby_version.segments.map.with_index {|n, i| i == 1 ? n + 1 : n }.join(".") + ".a"
598
615
 
599
616
  spec_fetcher do |fetcher|
600
- fetcher.gem 'a', '1.0' do |s|
617
+ fetcher.gem "a", "1.0" do |s|
601
618
  s.required_ruby_version = "> #{next_ruby_pre}"
602
619
  end
603
620
  end
@@ -617,8 +634,8 @@ ERROR: Possible alternatives: non_existent_with_hint
617
634
 
618
635
  def test_execute_required_rubygems_version_wrong
619
636
  spec_fetcher do |fetcher|
620
- fetcher.gem 'a', '1.0' do |s|
621
- s.required_rubygems_version = '< 0'
637
+ fetcher.gem "a", "1.0" do |s|
638
+ s.required_rubygems_version = "< 0"
622
639
  end
623
640
  end
624
641
 
@@ -637,7 +654,7 @@ ERROR: Possible alternatives: non_existent_with_hint
637
654
 
638
655
  def test_execute_rdoc
639
656
  specs = spec_fetcher do |fetcher|
640
- fetcher.gem 'a', 2
657
+ fetcher.gem "a", 2
641
658
  end
642
659
 
643
660
  Gem.done_installing(&Gem::RDoc.method(:generation_hook))
@@ -645,7 +662,7 @@ ERROR: Possible alternatives: non_existent_with_hint
645
662
  @cmd.options[:document] = %w[rdoc ri]
646
663
  @cmd.options[:domain] = :local
647
664
 
648
- a2 = specs['a-2']
665
+ a2 = specs["a-2"]
649
666
  FileUtils.mv a2.cache_file, @tempdir
650
667
 
651
668
  @cmd.options[:args] = %w[a]
@@ -667,22 +684,22 @@ ERROR: Possible alternatives: non_existent_with_hint
667
684
 
668
685
  wait_for_child_process_to_exit
669
686
 
670
- assert_path_exist File.join(a2.doc_dir, 'ri')
671
- assert_path_exist File.join(a2.doc_dir, 'rdoc')
687
+ assert_path_exist File.join(a2.doc_dir, "ri")
688
+ assert_path_exist File.join(a2.doc_dir, "rdoc")
672
689
  end
673
690
 
674
691
  def test_execute_rdoc_with_path
675
692
  specs = spec_fetcher do |fetcher|
676
- fetcher.gem 'a', 2
693
+ fetcher.gem "a", 2
677
694
  end
678
695
 
679
696
  Gem.done_installing(&Gem::RDoc.method(:generation_hook))
680
697
 
681
698
  @cmd.options[:document] = %w[rdoc ri]
682
699
  @cmd.options[:domain] = :local
683
- @cmd.options[:install_dir] = 'whatever'
700
+ @cmd.options[:install_dir] = "whatever"
684
701
 
685
- a2 = specs['a-2']
702
+ a2 = specs["a-2"]
686
703
  FileUtils.mv a2.cache_file, @tempdir
687
704
 
688
705
  @cmd.options[:args] = %w[a]
@@ -704,19 +721,19 @@ ERROR: Possible alternatives: non_existent_with_hint
704
721
 
705
722
  wait_for_child_process_to_exit
706
723
 
707
- assert_path_exist 'whatever/doc/a-2', 'documentation not installed'
724
+ assert_path_exist "whatever/doc/a-2", "documentation not installed"
708
725
  end
709
726
 
710
727
  def test_execute_saves_build_args
711
728
  specs = spec_fetcher do |fetcher|
712
- fetcher.gem 'a', 2
729
+ fetcher.gem "a", 2
713
730
  end
714
731
 
715
732
  args = %w[--with-awesome=true --more-awesome=yes]
716
733
 
717
734
  Gem::Command.build_args = args
718
735
 
719
- a2 = specs['a-2']
736
+ a2 = specs["a-2"]
720
737
  FileUtils.mv a2.cache_file, @tempdir
721
738
 
722
739
  @cmd.options[:domain] = :local
@@ -746,7 +763,7 @@ ERROR: Possible alternatives: non_existent_with_hint
746
763
 
747
764
  def test_execute_remote
748
765
  spec_fetcher do |fetcher|
749
- fetcher.gem 'a', 2
766
+ fetcher.gem "a", 2
750
767
  end
751
768
 
752
769
  @cmd.options[:args] = %w[a]
@@ -766,7 +783,7 @@ ERROR: Possible alternatives: non_existent_with_hint
766
783
  FileUtils.touch("a.gem")
767
784
 
768
785
  spec_fetcher do |fetcher|
769
- fetcher.gem 'a', 2
786
+ fetcher.gem "a", 2
770
787
  end
771
788
 
772
789
  @cmd.options[:args] = %w[a]
@@ -782,16 +799,49 @@ ERROR: Possible alternatives: non_existent_with_hint
782
799
  assert_match "1 gem installed", @ui.output
783
800
  end
784
801
 
802
+ def test_execute_remote_truncates_existing_gemspecs
803
+ spec_fetcher do |fetcher|
804
+ fetcher.gem "a", 1
805
+ end
806
+
807
+ @cmd.options[:domain] = :remote
808
+
809
+ @cmd.options[:args] = %w[a]
810
+
811
+ use_ui @ui do
812
+ assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
813
+ @cmd.execute
814
+ end
815
+ end
816
+
817
+ assert_equal %w[a-1], @cmd.installed_specs.map {|spec| spec.full_name }
818
+ assert_match "1 gem installed", @ui.output
819
+
820
+ a1_gemspec = File.join(@gemhome, "specifications", "a-1.gemspec")
821
+
822
+ initial_a1_gemspec_content = File.read(a1_gemspec)
823
+ modified_a1_gemspec_content = initial_a1_gemspec_content + "\n # AAAAAAA\n"
824
+ File.write(a1_gemspec, modified_a1_gemspec_content)
825
+
826
+ use_ui @ui do
827
+ assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
828
+ @cmd.execute
829
+ end
830
+ end
831
+
832
+ assert_equal initial_a1_gemspec_content, File.read(a1_gemspec)
833
+ end
834
+
785
835
  def test_execute_remote_ignores_files
786
836
  specs = spec_fetcher do |fetcher|
787
- fetcher.gem 'a', 1
788
- fetcher.gem 'a', 2
837
+ fetcher.gem "a", 1
838
+ fetcher.gem "a", 2
789
839
  end
790
840
 
791
841
  @cmd.options[:domain] = :remote
792
842
 
793
- a1 = specs['a-1']
794
- a2 = specs['a-2']
843
+ a1 = specs["a-1"]
844
+ a2 = specs["a-2"]
795
845
 
796
846
  FileUtils.mv a2.cache_file, @tempdir
797
847
 
@@ -800,7 +850,7 @@ ERROR: Possible alternatives: non_existent_with_hint
800
850
 
801
851
  @cmd.options[:args] = [a2.name]
802
852
 
803
- gemdir = File.join @gemhome, 'specifications'
853
+ gemdir = File.join @gemhome, "specifications"
804
854
 
805
855
  a2_gemspec = File.join(gemdir, "a-2.gemspec")
806
856
  a1_gemspec = File.join(gemdir, "a-1.gemspec")
@@ -829,12 +879,12 @@ ERROR: Possible alternatives: non_existent_with_hint
829
879
 
830
880
  def test_execute_two
831
881
  specs = spec_fetcher do |fetcher|
832
- fetcher.gem 'a', 2
833
- fetcher.gem 'b', 2
882
+ fetcher.gem "a", 2
883
+ fetcher.gem "b", 2
834
884
  end
835
885
 
836
- FileUtils.mv specs['a-2'].cache_file, @tempdir
837
- FileUtils.mv specs['b-2'].cache_file, @tempdir
886
+ FileUtils.mv specs["a-2"].cache_file, @tempdir
887
+ FileUtils.mv specs["b-2"].cache_file, @tempdir
838
888
 
839
889
  @cmd.options[:domain] = :local
840
890
 
@@ -880,10 +930,10 @@ ERROR: Possible alternatives: non_existent_with_hint
880
930
 
881
931
  def test_execute_two_version_specified_by_colon
882
932
  spec_fetcher do |fetcher|
883
- fetcher.gem 'a', 1
884
- fetcher.gem 'a', 2
885
- fetcher.gem 'b', 1
886
- fetcher.gem 'b', 2
933
+ fetcher.gem "a", 1
934
+ fetcher.gem "a", 2
935
+ fetcher.gem "b", 1
936
+ fetcher.gem "b", 2
887
937
  end
888
938
 
889
939
  @cmd.options[:args] = %w[a:1 b:1]
@@ -899,9 +949,9 @@ ERROR: Possible alternatives: non_existent_with_hint
899
949
 
900
950
  def test_execute_conservative
901
951
  spec_fetcher do |fetcher|
902
- fetcher.download 'b', 2
952
+ fetcher.download "b", 2
903
953
 
904
- fetcher.gem 'a', 2
954
+ fetcher.gem "a", 2
905
955
  end
906
956
 
907
957
  @cmd.options[:conservative] = true
@@ -932,7 +982,7 @@ ERROR: Possible alternatives: non_existent_with_hint
932
982
  done_installing = true
933
983
  end
934
984
 
935
- spec = util_spec 'a', 2
985
+ spec = util_spec "a", 2
936
986
 
937
987
  util_build_gem spec
938
988
 
@@ -940,21 +990,21 @@ ERROR: Possible alternatives: non_existent_with_hint
940
990
 
941
991
  @cmd.options[:ignore_dependencies] = true
942
992
 
943
- @cmd.install_gem 'a', '>= 0'
993
+ @cmd.install_gem "a", ">= 0"
944
994
 
945
995
  assert_equal %w[a-2], @cmd.installed_specs.map {|s| s.full_name }
946
996
 
947
- assert done_installing, 'documentation was not generated'
997
+ assert done_installing, "documentation was not generated"
948
998
  end
949
999
 
950
1000
  def test_install_gem_ignore_dependencies_remote
951
1001
  spec_fetcher do |fetcher|
952
- fetcher.gem 'a', 2
1002
+ fetcher.gem "a", 2
953
1003
  end
954
1004
 
955
1005
  @cmd.options[:ignore_dependencies] = true
956
1006
 
957
- @cmd.install_gem 'a', '>= 0'
1007
+ @cmd.install_gem "a", ">= 0"
958
1008
 
959
1009
  assert_equal %w[a-2], @cmd.installed_specs.map {|spec| spec.full_name }
960
1010
  end
@@ -962,22 +1012,22 @@ ERROR: Possible alternatives: non_existent_with_hint
962
1012
  def test_install_gem_ignore_dependencies_remote_platform_local
963
1013
  local = Gem::Platform.local
964
1014
  spec_fetcher do |fetcher|
965
- fetcher.gem 'a', 3
1015
+ fetcher.gem "a", 3
966
1016
 
967
- fetcher.gem 'a', 3 do |s|
1017
+ fetcher.gem "a", 3 do |s|
968
1018
  s.platform = local
969
1019
  end
970
1020
  end
971
1021
 
972
1022
  @cmd.options[:ignore_dependencies] = true
973
1023
 
974
- @cmd.install_gem 'a', '>= 0'
1024
+ @cmd.install_gem "a", ">= 0"
975
1025
 
976
1026
  assert_equal %W[a-3-#{local}], @cmd.installed_specs.map {|spec| spec.full_name }
977
1027
  end
978
1028
 
979
1029
  def test_install_gem_ignore_dependencies_specific_file
980
- spec = util_spec 'a', 2
1030
+ spec = util_spec "a", 2
981
1031
 
982
1032
  util_build_gem spec
983
1033
 
@@ -992,8 +1042,8 @@ ERROR: Possible alternatives: non_existent_with_hint
992
1042
 
993
1043
  def test_parses_requirement_from_gemname
994
1044
  spec_fetcher do |fetcher|
995
- fetcher.gem 'a', 2
996
- fetcher.gem 'b', 2
1045
+ fetcher.gem "a", 2
1046
+ fetcher.gem "b", 2
997
1047
  end
998
1048
 
999
1049
  @cmd.options[:domain] = :local
@@ -1039,12 +1089,12 @@ ERROR: Possible alternatives: non_existent_with_hint
1039
1089
 
1040
1090
  assert_equal 2, e.exit_code
1041
1091
 
1042
- assert_match 'Unable to download data', @ui.error
1092
+ assert_match "Unable to download data", @ui.error
1043
1093
  end
1044
1094
 
1045
1095
  def test_show_source_problems_even_on_success
1046
1096
  spec_fetcher do |fetcher|
1047
- fetcher.download 'a', 2
1097
+ fetcher.download "a", 2
1048
1098
  end
1049
1099
 
1050
1100
  Gem.sources << "http://nonexistent.example"
@@ -1069,7 +1119,7 @@ ERROR: Possible alternatives: non_existent_with_hint
1069
1119
 
1070
1120
  def test_redact_credentials_from_uri_on_warning
1071
1121
  spec_fetcher do |fetcher|
1072
- fetcher.download 'a', 2
1122
+ fetcher.download "a", 2
1073
1123
  end
1074
1124
 
1075
1125
  Gem.sources << "http://username:SECURE_TOKEN@nonexistent.example"
@@ -1094,7 +1144,7 @@ ERROR: Possible alternatives: non_existent_with_hint
1094
1144
 
1095
1145
  def test_execute_uses_from_a_gemdeps
1096
1146
  spec_fetcher do |fetcher|
1097
- fetcher.gem 'a', 2
1147
+ fetcher.gem "a", 2
1098
1148
  end
1099
1149
 
1100
1150
  File.open @gemdeps, "w" do |f|
@@ -1117,7 +1167,7 @@ ERROR: Possible alternatives: non_existent_with_hint
1117
1167
 
1118
1168
  def test_execute_uses_from_a_gemdeps_with_no_lock
1119
1169
  spec_fetcher do |fetcher|
1120
- fetcher.gem 'a', 2
1170
+ fetcher.gem "a", 2
1121
1171
  end
1122
1172
 
1123
1173
  File.open @gemdeps, "w" do |f|
@@ -1141,8 +1191,8 @@ ERROR: Possible alternatives: non_existent_with_hint
1141
1191
 
1142
1192
  def test_execute_installs_from_a_gemdeps_with_conservative
1143
1193
  spec_fetcher do |fetcher|
1144
- fetcher.download 'a', 2
1145
- fetcher.gem 'a', 1
1194
+ fetcher.download "a", 2
1195
+ fetcher.gem "a", 1
1146
1196
  end
1147
1197
 
1148
1198
  File.open @gemdeps, "w" do |f|
@@ -1165,7 +1215,7 @@ ERROR: Possible alternatives: non_existent_with_hint
1165
1215
 
1166
1216
  def test_execute_installs_from_a_gemdeps
1167
1217
  spec_fetcher do |fetcher|
1168
- fetcher.download 'a', 2
1218
+ fetcher.download "a", 2
1169
1219
  end
1170
1220
 
1171
1221
  File.open @gemdeps, "w" do |f|
@@ -1187,8 +1237,8 @@ ERROR: Possible alternatives: non_existent_with_hint
1187
1237
 
1188
1238
  def test_execute_installs_deps_a_gemdeps
1189
1239
  spec_fetcher do |fetcher|
1190
- fetcher.download 'q', '1.0'
1191
- fetcher.download 'r', '2.0', 'q' => nil
1240
+ fetcher.download "q", "1.0"
1241
+ fetcher.download "r", "2.0", "q" => nil
1192
1242
  end
1193
1243
 
1194
1244
  File.open @gemdeps, "w" do |f|
@@ -1213,9 +1263,9 @@ ERROR: Possible alternatives: non_existent_with_hint
1213
1263
 
1214
1264
  def test_execute_uses_deps_a_gemdeps
1215
1265
  spec_fetcher do |fetcher|
1216
- fetcher.download 'r', '2.0', 'q' => nil
1266
+ fetcher.download "r", "2.0", "q" => nil
1217
1267
 
1218
- fetcher.spec 'q', '1.0'
1268
+ fetcher.spec "q", "1.0"
1219
1269
  end
1220
1270
 
1221
1271
  File.open @gemdeps, "w" do |f|
@@ -1240,8 +1290,8 @@ ERROR: Possible alternatives: non_existent_with_hint
1240
1290
 
1241
1291
  def test_execute_installs_deps_a_gemdeps_into_a_path
1242
1292
  spec_fetcher do |fetcher|
1243
- fetcher.download 'q', '1.0'
1244
- fetcher.download 'r', '2.0', 'q' => nil
1293
+ fetcher.download "q", "1.0"
1294
+ fetcher.download "r", "2.0", "q" => nil
1245
1295
  end
1246
1296
 
1247
1297
  File.open @gemdeps, "w" do |f|
@@ -1270,11 +1320,11 @@ ERROR: Possible alternatives: non_existent_with_hint
1270
1320
 
1271
1321
  def test_execute_with_gemdeps_path_ignores_system
1272
1322
  specs = spec_fetcher do |fetcher|
1273
- fetcher.download 'q', '1.0'
1274
- fetcher.download 'r', '2.0', 'q' => nil
1323
+ fetcher.download "q", "1.0"
1324
+ fetcher.download "r", "2.0", "q" => nil
1275
1325
  end
1276
1326
 
1277
- install_specs specs['q-1.0']
1327
+ install_specs specs["q-1.0"]
1278
1328
 
1279
1329
  File.open @gemdeps, "w" do |f|
1280
1330
  f << "gem 'r'"
@@ -1302,11 +1352,11 @@ ERROR: Possible alternatives: non_existent_with_hint
1302
1352
 
1303
1353
  def test_execute_uses_deps_a_gemdeps_with_a_path
1304
1354
  specs = spec_fetcher do |fetcher|
1305
- fetcher.gem 'q', '1.0'
1306
- fetcher.gem 'r', '2.0', 'q' => nil
1355
+ fetcher.gem "q", "1.0"
1356
+ fetcher.gem "r", "2.0", "q" => nil
1307
1357
  end
1308
1358
 
1309
- i = Gem::Installer.at specs['q-1.0'].cache_file, :install_dir => "gf-path"
1359
+ i = Gem::Installer.at specs["q-1.0"].cache_file, :install_dir => "gf-path"
1310
1360
  i.install
1311
1361
 
1312
1362
  assert File.file?("gf-path/specifications/q-1.0.gemspec"), "not installed"
@@ -1333,39 +1383,39 @@ ERROR: Possible alternatives: non_existent_with_hint
1333
1383
  end
1334
1384
 
1335
1385
  def test_handle_options_file
1336
- FileUtils.touch 'Gemfile'
1386
+ FileUtils.touch "Gemfile"
1337
1387
 
1338
1388
  @cmd.handle_options %w[-g Gemfile]
1339
1389
 
1340
- assert_equal 'Gemfile', @cmd.options[:gemdeps]
1390
+ assert_equal "Gemfile", @cmd.options[:gemdeps]
1341
1391
 
1342
- FileUtils.rm 'Gemfile'
1392
+ FileUtils.rm "Gemfile"
1343
1393
 
1344
- FileUtils.touch 'gem.deps.rb'
1394
+ FileUtils.touch "gem.deps.rb"
1345
1395
 
1346
1396
  @cmd.handle_options %w[--file gem.deps.rb]
1347
1397
 
1348
- assert_equal 'gem.deps.rb', @cmd.options[:gemdeps]
1398
+ assert_equal "gem.deps.rb", @cmd.options[:gemdeps]
1349
1399
 
1350
- FileUtils.rm 'gem.deps.rb'
1400
+ FileUtils.rm "gem.deps.rb"
1351
1401
 
1352
- FileUtils.touch 'Isolate'
1402
+ FileUtils.touch "Isolate"
1353
1403
 
1354
1404
  @cmd.handle_options %w[-g]
1355
1405
 
1356
- assert_equal 'Isolate', @cmd.options[:gemdeps]
1406
+ assert_equal "Isolate", @cmd.options[:gemdeps]
1357
1407
 
1358
- FileUtils.touch 'Gemfile'
1408
+ FileUtils.touch "Gemfile"
1359
1409
 
1360
1410
  @cmd.handle_options %w[-g]
1361
1411
 
1362
- assert_equal 'Gemfile', @cmd.options[:gemdeps]
1412
+ assert_equal "Gemfile", @cmd.options[:gemdeps]
1363
1413
 
1364
- FileUtils.touch 'gem.deps.rb'
1414
+ FileUtils.touch "gem.deps.rb"
1365
1415
 
1366
1416
  @cmd.handle_options %w[-g]
1367
1417
 
1368
- assert_equal 'gem.deps.rb', @cmd.options[:gemdeps]
1418
+ assert_equal "gem.deps.rb", @cmd.options[:gemdeps]
1369
1419
  end
1370
1420
 
1371
1421
  def test_handle_options_suggest
@@ -1393,9 +1443,9 @@ ERROR: Possible alternatives: non_existent_with_hint
1393
1443
  def test_explain_platform_local
1394
1444
  local = Gem::Platform.local
1395
1445
  spec_fetcher do |fetcher|
1396
- fetcher.spec 'a', 2
1446
+ fetcher.spec "a", 2
1397
1447
 
1398
- fetcher.spec 'a', 2 do |s|
1448
+ fetcher.spec "a", 2 do |s|
1399
1449
  s.platform = local
1400
1450
  end
1401
1451
  end
@@ -1419,9 +1469,9 @@ ERROR: Possible alternatives: non_existent_with_hint
1419
1469
  def test_explain_platform_local_ignore_dependencies
1420
1470
  local = Gem::Platform.local
1421
1471
  spec_fetcher do |fetcher|
1422
- fetcher.spec 'a', 3
1472
+ fetcher.spec "a", 3
1423
1473
 
1424
- fetcher.spec 'a', 3 do |s|
1474
+ fetcher.spec "a", 3 do |s|
1425
1475
  s.platform = local
1426
1476
  end
1427
1477
  end
@@ -1446,9 +1496,9 @@ ERROR: Possible alternatives: non_existent_with_hint
1446
1496
  def test_explain_platform_ruby
1447
1497
  local = Gem::Platform.local
1448
1498
  spec_fetcher do |fetcher|
1449
- fetcher.spec 'a', 2
1499
+ fetcher.spec "a", 2
1450
1500
 
1451
- fetcher.spec 'a', 2 do |s|
1501
+ fetcher.spec "a", 2 do |s|
1452
1502
  s.platform = local
1453
1503
  end
1454
1504
  end
@@ -1475,9 +1525,9 @@ ERROR: Possible alternatives: non_existent_with_hint
1475
1525
  def test_explain_platform_ruby_ignore_dependencies
1476
1526
  local = Gem::Platform.local
1477
1527
  spec_fetcher do |fetcher|
1478
- fetcher.spec 'a', 3
1528
+ fetcher.spec "a", 3
1479
1529
 
1480
- fetcher.spec 'a', 3 do |s|
1530
+ fetcher.spec "a", 3 do |s|
1481
1531
  s.platform = local
1482
1532
  end
1483
1533
  end
@@ -1501,4 +1551,22 @@ ERROR: Possible alternatives: non_existent_with_hint
1501
1551
  assert_equal " a-3", out.shift
1502
1552
  assert_empty out
1503
1553
  end
1554
+
1555
+ def test_suggest_update_if_enabled
1556
+ TestUpdateSuggestion.with_eglible_environment(cmd: @cmd) do
1557
+ spec_fetcher do |fetcher|
1558
+ fetcher.gem "a", 2
1559
+ end
1560
+
1561
+ @cmd.options[:args] = %w[a]
1562
+
1563
+ use_ui @ui do
1564
+ assert_raise Gem::MockGemUi::SystemExitException, @ui.error do
1565
+ @cmd.execute
1566
+ end
1567
+ end
1568
+
1569
+ assert_includes @ui.output, "A new release of RubyGems is available: 1.2.3 → 2.0.0!"
1570
+ end
1571
+ end
1504
1572
  end