rubygems-update 3.1.6 → 3.4.10

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