rubygems-update 3.0.6 → 3.2.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (628) hide show
  1. checksums.yaml +4 -4
  2. data/{History.txt → CHANGELOG.md} +1100 -436
  3. data/CODE_OF_CONDUCT.md +55 -19
  4. data/CONTRIBUTING.md +37 -10
  5. data/MAINTAINERS.txt +1 -6
  6. data/Manifest.txt +104 -64
  7. data/POLICIES.md +6 -12
  8. data/README.md +6 -6
  9. data/Rakefile +121 -111
  10. data/bin/gem +0 -6
  11. data/bin/update_rubygems +2 -2
  12. data/bundler/CHANGELOG.md +1788 -1251
  13. data/bundler/LICENSE.md +18 -19
  14. data/bundler/README.md +9 -10
  15. data/bundler/UPGRADING.md +215 -0
  16. data/bundler/bundler.gemspec +9 -26
  17. data/bundler/exe/bundle +22 -3
  18. data/bundler/lib/bundler.rb +233 -94
  19. data/bundler/lib/bundler/build_metadata.rb +5 -13
  20. data/bundler/lib/bundler/capistrano.rb +4 -4
  21. data/bundler/lib/bundler/cli.rb +221 -148
  22. data/bundler/lib/bundler/cli/add.rb +28 -16
  23. data/bundler/lib/bundler/cli/binstubs.rb +6 -2
  24. data/bundler/lib/bundler/cli/cache.rb +24 -17
  25. data/bundler/lib/bundler/cli/clean.rb +1 -1
  26. data/bundler/lib/bundler/cli/common.rb +25 -12
  27. data/bundler/lib/bundler/cli/config.rb +161 -86
  28. data/bundler/lib/bundler/cli/console.rb +1 -1
  29. data/bundler/lib/bundler/cli/doctor.rb +5 -5
  30. data/bundler/lib/bundler/cli/exec.rb +8 -20
  31. data/bundler/lib/bundler/cli/fund.rb +36 -0
  32. data/bundler/lib/bundler/cli/gem.rb +125 -32
  33. data/bundler/lib/bundler/cli/info.rb +29 -6
  34. data/bundler/lib/bundler/cli/init.rb +2 -2
  35. data/bundler/lib/bundler/cli/inject.rb +1 -1
  36. data/bundler/lib/bundler/cli/install.rb +27 -23
  37. data/bundler/lib/bundler/cli/issue.rb +5 -5
  38. data/bundler/lib/bundler/cli/list.rb +12 -10
  39. data/bundler/lib/bundler/cli/open.rb +10 -6
  40. data/bundler/lib/bundler/cli/outdated.rb +134 -109
  41. data/bundler/lib/bundler/cli/plugin.rb +19 -2
  42. data/bundler/lib/bundler/cli/pristine.rb +6 -1
  43. data/bundler/lib/bundler/cli/show.rb +2 -2
  44. data/bundler/lib/bundler/cli/update.rb +34 -12
  45. data/bundler/lib/bundler/compact_index_client.rb +26 -10
  46. data/bundler/lib/bundler/compact_index_client/cache.rb +6 -14
  47. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
  48. data/bundler/lib/bundler/compact_index_client/updater.rb +8 -20
  49. data/bundler/lib/bundler/current_ruby.rb +9 -7
  50. data/bundler/lib/bundler/definition.rb +133 -132
  51. data/bundler/lib/bundler/dep_proxy.rb +16 -9
  52. data/bundler/lib/bundler/dependency.rb +19 -14
  53. data/bundler/lib/bundler/deployment.rb +1 -1
  54. data/bundler/lib/bundler/dsl.rb +54 -71
  55. data/bundler/lib/bundler/endpoint_specification.rb +1 -1
  56. data/bundler/lib/bundler/env.rb +9 -14
  57. data/bundler/lib/bundler/environment_preserver.rb +26 -3
  58. data/bundler/lib/bundler/errors.rb +1 -0
  59. data/bundler/lib/bundler/feature_flag.rb +19 -34
  60. data/bundler/lib/bundler/fetcher.rb +19 -16
  61. data/bundler/lib/bundler/fetcher/base.rb +1 -1
  62. data/bundler/lib/bundler/fetcher/compact_index.rb +27 -13
  63. data/bundler/lib/bundler/fetcher/dependency.rb +1 -1
  64. data/bundler/lib/bundler/fetcher/downloader.rb +6 -3
  65. data/bundler/lib/bundler/fetcher/index.rb +8 -7
  66. data/bundler/lib/bundler/friendly_errors.rb +27 -19
  67. data/bundler/lib/bundler/gem_helper.rb +68 -37
  68. data/bundler/lib/bundler/gem_helpers.rb +38 -29
  69. data/bundler/lib/bundler/gem_tasks.rb +1 -1
  70. data/bundler/lib/bundler/gem_version_promoter.rb +5 -5
  71. data/bundler/lib/bundler/graph.rb +3 -3
  72. data/bundler/lib/bundler/index.rb +12 -7
  73. data/bundler/lib/bundler/injector.rb +32 -12
  74. data/bundler/lib/bundler/inline.rb +41 -30
  75. data/bundler/lib/bundler/installer.rb +41 -60
  76. data/bundler/lib/bundler/installer/gem_installer.rb +8 -4
  77. data/bundler/lib/bundler/installer/parallel_installer.rb +20 -26
  78. data/bundler/lib/bundler/installer/standalone.rb +18 -4
  79. data/bundler/lib/bundler/lazy_specification.rb +41 -27
  80. data/bundler/lib/bundler/lockfile_generator.rb +1 -1
  81. data/bundler/lib/bundler/lockfile_parser.rb +16 -33
  82. data/bundler/lib/bundler/{ssl_certs → man}/.document +0 -0
  83. data/bundler/lib/bundler/man/bundle-add.1 +66 -0
  84. data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +7 -1
  85. data/bundler/lib/bundler/man/bundle-binstubs.1 +42 -0
  86. data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +3 -5
  87. data/bundler/lib/bundler/man/bundle-cache.1 +55 -0
  88. data/bundler/{man/bundle-package.ronn → lib/bundler/man/bundle-cache.1.ronn} +15 -15
  89. data/bundler/lib/bundler/man/bundle-check.1 +31 -0
  90. data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
  91. data/bundler/lib/bundler/man/bundle-clean.1 +24 -0
  92. data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
  93. data/bundler/lib/bundler/man/bundle-config.1 +488 -0
  94. data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +59 -67
  95. data/bundler/lib/bundler/man/bundle-doctor.1 +44 -0
  96. data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
  97. data/bundler/lib/bundler/man/bundle-exec.1 +165 -0
  98. data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +1 -1
  99. data/bundler/lib/bundler/man/bundle-gem.1 +102 -0
  100. data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
  101. data/bundler/lib/bundler/man/bundle-info.1 +20 -0
  102. data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
  103. data/bundler/lib/bundler/man/bundle-init.1 +25 -0
  104. data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +1 -1
  105. data/bundler/lib/bundler/man/bundle-inject.1 +33 -0
  106. data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
  107. data/bundler/lib/bundler/man/bundle-install.1 +338 -0
  108. data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +34 -7
  109. data/bundler/lib/bundler/man/bundle-list.1 +50 -0
  110. data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
  111. data/bundler/lib/bundler/man/bundle-lock.1 +84 -0
  112. data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
  113. data/bundler/lib/bundler/man/bundle-open.1 +32 -0
  114. data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
  115. data/bundler/lib/bundler/man/bundle-outdated.1 +155 -0
  116. data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
  117. data/bundler/lib/bundler/man/bundle-platform.1 +61 -0
  118. data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
  119. data/bundler/lib/bundler/man/bundle-pristine.1 +34 -0
  120. data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
  121. data/bundler/lib/bundler/man/bundle-remove.1 +31 -0
  122. data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
  123. data/bundler/lib/bundler/man/bundle-show.1 +23 -0
  124. data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
  125. data/bundler/lib/bundler/man/bundle-update.1 +394 -0
  126. data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +3 -3
  127. data/bundler/lib/bundler/man/bundle-viz.1 +39 -0
  128. data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
  129. data/bundler/lib/bundler/man/bundle.1 +136 -0
  130. data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +2 -2
  131. data/bundler/lib/bundler/man/gemfile.5 +686 -0
  132. data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +16 -20
  133. data/bundler/lib/bundler/man/index.txt +25 -0
  134. data/bundler/lib/bundler/match_platform.rb +1 -1
  135. data/bundler/lib/bundler/mirror.rb +5 -5
  136. data/bundler/lib/bundler/plugin.rb +75 -36
  137. data/bundler/lib/bundler/plugin/api.rb +1 -1
  138. data/bundler/lib/bundler/plugin/api/source.rb +12 -7
  139. data/bundler/lib/bundler/plugin/dsl.rb +1 -1
  140. data/bundler/lib/bundler/plugin/index.rb +24 -4
  141. data/bundler/lib/bundler/plugin/installer.rb +33 -22
  142. data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
  143. data/bundler/lib/bundler/plugin/source_list.rb +5 -1
  144. data/bundler/lib/bundler/psyched_yaml.rb +0 -15
  145. data/bundler/lib/bundler/remote_specification.rb +5 -4
  146. data/bundler/lib/bundler/resolver.rb +191 -87
  147. data/bundler/lib/bundler/resolver/spec_group.rb +76 -48
  148. data/bundler/lib/bundler/retry.rb +3 -3
  149. data/bundler/lib/bundler/ruby_version.rb +5 -20
  150. data/bundler/lib/bundler/rubygems_ext.rb +76 -72
  151. data/bundler/lib/bundler/rubygems_gem_installer.rb +47 -13
  152. data/bundler/lib/bundler/rubygems_integration.rb +159 -444
  153. data/bundler/lib/bundler/runtime.rb +6 -23
  154. data/bundler/lib/bundler/settings.rb +67 -93
  155. data/bundler/lib/bundler/setup.rb +11 -12
  156. data/bundler/lib/bundler/shared_helpers.rb +54 -80
  157. data/bundler/lib/bundler/similarity_detector.rb +3 -3
  158. data/bundler/lib/bundler/source.rb +12 -6
  159. data/bundler/lib/bundler/source/git.rb +47 -38
  160. data/bundler/lib/bundler/source/git/git_proxy.rb +101 -102
  161. data/bundler/lib/bundler/source/metadata.rb +7 -6
  162. data/bundler/lib/bundler/source/path.rb +20 -11
  163. data/bundler/lib/bundler/source/path/installer.rb +10 -10
  164. data/bundler/lib/bundler/source/rubygems.rb +56 -29
  165. data/bundler/lib/bundler/source/rubygems/remote.rb +3 -4
  166. data/bundler/lib/bundler/source_list.rb +32 -30
  167. data/bundler/lib/bundler/spec_set.rb +37 -25
  168. data/bundler/lib/bundler/stub_specification.rb +40 -34
  169. data/bundler/lib/bundler/templates/Executable.bundler +23 -14
  170. data/bundler/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
  171. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  172. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +16 -2
  173. data/bundler/lib/bundler/templates/newgem/README.md.tt +7 -5
  174. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +19 -5
  175. data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
  176. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
  177. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
  178. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
  179. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
  180. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
  181. data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  182. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +18 -31
  183. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
  184. data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
  185. data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
  186. data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
  187. data/bundler/lib/bundler/templates/newgem/test/minitest/test_helper.rb.tt +6 -0
  188. data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  189. data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  190. data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -1
  191. data/bundler/lib/bundler/ui.rb +3 -3
  192. data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
  193. data/bundler/lib/bundler/ui/shell.rb +7 -11
  194. data/bundler/lib/bundler/uri_credentials_filter.rb +10 -4
  195. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +161 -0
  196. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +66 -0
  197. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +176 -0
  198. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
  199. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +273 -147
  200. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +5 -6
  201. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +7 -0
  202. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +36 -4
  203. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
  204. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
  205. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
  206. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
  207. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +6 -6
  208. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
  209. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +3 -3
  210. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +39 -11
  211. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +4 -4
  212. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  213. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +11 -0
  214. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +53 -51
  215. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +2 -2
  216. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +302 -462
  217. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +40 -0
  218. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +53 -0
  219. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
  220. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +16 -9
  221. data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +28 -13
  222. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +1 -1
  223. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +3 -2
  224. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +7 -17
  225. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +20 -9
  226. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +19 -8
  227. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +63 -43
  228. data/bundler/lib/bundler/vendor/thor/lib/thor/command.rb +21 -14
  229. data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +78 -0
  230. data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +3 -3
  231. data/bundler/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -0
  232. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor.rb +2 -2
  233. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +1 -1
  234. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +6 -6
  235. data/bundler/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
  236. data/bundler/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
  237. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +7 -3
  238. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +20 -7
  239. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +21 -5
  240. data/bundler/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +1 -0
  241. data/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +15 -14
  242. data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +4 -4
  243. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +65 -8
  244. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +10 -2
  245. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +3 -3
  246. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +18 -2
  247. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  248. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
  249. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +104 -0
  250. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +744 -0
  251. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +94 -0
  252. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
  253. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1568 -0
  254. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +88 -0
  255. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +23 -0
  256. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +261 -0
  257. data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +21 -0
  258. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +294 -0
  259. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +546 -0
  260. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +125 -0
  261. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
  262. data/bundler/lib/bundler/vendored_fileutils.rb +1 -6
  263. data/bundler/lib/bundler/vendored_molinillo.rb +1 -1
  264. data/bundler/lib/bundler/vendored_persistent.rb +7 -12
  265. data/bundler/lib/bundler/vendored_thor.rb +2 -2
  266. data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
  267. data/bundler/lib/bundler/vendored_uri.rb +4 -0
  268. data/bundler/lib/bundler/version.rb +1 -20
  269. data/bundler/lib/bundler/version_ranges.rb +51 -5
  270. data/bundler/lib/bundler/vlad.rb +2 -2
  271. data/bundler/lib/bundler/worker.rb +2 -4
  272. data/bundler/lib/bundler/yaml_serializer.rb +3 -4
  273. data/lib/rubygems.rb +198 -222
  274. data/lib/rubygems/available_set.rb +4 -5
  275. data/lib/rubygems/basic_specification.rb +32 -19
  276. data/lib/rubygems/bundler_version_finder.rb +19 -9
  277. data/lib/rubygems/command.rb +73 -21
  278. data/lib/rubygems/command_manager.rb +5 -12
  279. data/lib/rubygems/commands/build_command.rb +51 -18
  280. data/lib/rubygems/commands/cert_command.rb +2 -11
  281. data/lib/rubygems/commands/check_command.rb +0 -2
  282. data/lib/rubygems/commands/cleanup_command.rb +17 -13
  283. data/lib/rubygems/commands/contents_command.rb +7 -9
  284. data/lib/rubygems/commands/dependency_command.rb +9 -10
  285. data/lib/rubygems/commands/environment_command.rb +1 -6
  286. data/lib/rubygems/commands/fetch_command.rb +2 -4
  287. data/lib/rubygems/commands/generate_index_command.rb +3 -2
  288. data/lib/rubygems/commands/help_command.rb +4 -4
  289. data/lib/rubygems/commands/info_command.rb +9 -4
  290. data/lib/rubygems/commands/install_command.rb +12 -54
  291. data/lib/rubygems/commands/list_command.rb +8 -7
  292. data/lib/rubygems/commands/lock_command.rb +3 -5
  293. data/lib/rubygems/commands/mirror_command.rb +0 -1
  294. data/lib/rubygems/commands/open_command.rb +1 -4
  295. data/lib/rubygems/commands/outdated_command.rb +0 -1
  296. data/lib/rubygems/commands/owner_command.rb +10 -10
  297. data/lib/rubygems/commands/pristine_command.rb +13 -9
  298. data/lib/rubygems/commands/push_command.rb +12 -51
  299. data/lib/rubygems/commands/query_command.rb +14 -330
  300. data/lib/rubygems/commands/rdoc_command.rb +0 -1
  301. data/lib/rubygems/commands/search_command.rb +7 -7
  302. data/lib/rubygems/commands/server_command.rb +3 -1
  303. data/lib/rubygems/commands/setup_command.rb +143 -101
  304. data/lib/rubygems/commands/signin_command.rb +0 -1
  305. data/lib/rubygems/commands/signout_command.rb +0 -2
  306. data/lib/rubygems/commands/sources_command.rb +22 -6
  307. data/lib/rubygems/commands/specification_command.rb +8 -3
  308. data/lib/rubygems/commands/stale_command.rb +1 -1
  309. data/lib/rubygems/commands/uninstall_command.rb +2 -3
  310. data/lib/rubygems/commands/unpack_command.rb +3 -32
  311. data/lib/rubygems/commands/update_command.rb +73 -28
  312. data/lib/rubygems/commands/which_command.rb +0 -1
  313. data/lib/rubygems/commands/yank_command.rb +10 -7
  314. data/lib/rubygems/compatibility.rb +4 -4
  315. data/lib/rubygems/config_file.rb +48 -27
  316. data/lib/rubygems/core_ext/kernel_gem.rb +7 -6
  317. data/lib/rubygems/core_ext/kernel_require.rb +44 -6
  318. data/lib/rubygems/core_ext/kernel_warn.rb +22 -13
  319. data/lib/rubygems/core_ext/tcpsocket_init.rb +52 -0
  320. data/lib/rubygems/defaults.rb +110 -23
  321. data/lib/rubygems/dependency.rb +28 -14
  322. data/lib/rubygems/dependency_installer.rb +11 -166
  323. data/lib/rubygems/dependency_list.rb +17 -18
  324. data/lib/rubygems/deprecate.rb +51 -6
  325. data/lib/rubygems/doctor.rb +4 -4
  326. data/lib/rubygems/errors.rb +5 -7
  327. data/lib/rubygems/exceptions.rb +2 -24
  328. data/lib/rubygems/ext.rb +6 -6
  329. data/lib/rubygems/ext/build_error.rb +2 -0
  330. data/lib/rubygems/ext/builder.rb +45 -82
  331. data/lib/rubygems/ext/cmake_builder.rb +6 -7
  332. data/lib/rubygems/ext/configure_builder.rb +5 -8
  333. data/lib/rubygems/ext/ext_conf_builder.rb +27 -23
  334. data/lib/rubygems/ext/rake_builder.rb +4 -6
  335. data/lib/rubygems/gem_runner.rb +3 -10
  336. data/lib/rubygems/gemcutter_utilities.rb +111 -37
  337. data/lib/rubygems/indexer.rb +9 -26
  338. data/lib/rubygems/install_update_options.rb +7 -7
  339. data/lib/rubygems/installer.rb +91 -98
  340. data/lib/rubygems/installer_test_case.rb +104 -42
  341. data/lib/rubygems/installer_uninstaller_utils.rb +29 -0
  342. data/lib/rubygems/local_remote_options.rb +1 -1
  343. data/lib/rubygems/mock_gem_ui.rb +1 -4
  344. data/lib/rubygems/name_tuple.rb +4 -7
  345. data/lib/rubygems/openssl.rb +7 -0
  346. data/lib/rubygems/package.rb +49 -32
  347. data/lib/rubygems/package/digest_io.rb +0 -2
  348. data/lib/rubygems/package/file_source.rb +0 -2
  349. data/lib/rubygems/package/io_source.rb +0 -2
  350. data/lib/rubygems/package/old.rb +1 -3
  351. data/lib/rubygems/package/tar_header.rb +4 -6
  352. data/lib/rubygems/package/tar_reader.rb +15 -12
  353. data/lib/rubygems/package/tar_reader/entry.rb +0 -3
  354. data/lib/rubygems/package/tar_test_case.rb +2 -4
  355. data/lib/rubygems/package/tar_writer.rb +6 -16
  356. data/lib/rubygems/package_task.rb +1 -7
  357. data/lib/rubygems/path_support.rb +2 -2
  358. data/lib/rubygems/platform.rb +22 -16
  359. data/lib/rubygems/query_utils.rb +353 -0
  360. data/lib/rubygems/rdoc.rb +0 -12
  361. data/lib/rubygems/remote_fetcher.rb +33 -59
  362. data/lib/rubygems/request.rb +11 -14
  363. data/lib/rubygems/request/connection_pools.rb +3 -7
  364. data/lib/rubygems/request/http_pool.rb +0 -1
  365. data/lib/rubygems/request_set.rb +10 -23
  366. data/lib/rubygems/request_set/gem_dependency_api.rb +9 -11
  367. data/lib/rubygems/request_set/lockfile.rb +13 -12
  368. data/lib/rubygems/request_set/lockfile/parser.rb +2 -2
  369. data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -1
  370. data/lib/rubygems/requirement.rb +36 -35
  371. data/lib/rubygems/resolver.rb +20 -16
  372. data/lib/rubygems/resolver/activation_request.rb +27 -51
  373. data/lib/rubygems/resolver/api_set.rb +31 -24
  374. data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
  375. data/lib/rubygems/resolver/api_specification.rb +24 -10
  376. data/lib/rubygems/resolver/best_set.rb +4 -6
  377. data/lib/rubygems/resolver/composed_set.rb +3 -5
  378. data/lib/rubygems/resolver/conflict.rb +2 -9
  379. data/lib/rubygems/resolver/current_set.rb +0 -2
  380. data/lib/rubygems/resolver/dependency_request.rb +1 -3
  381. data/lib/rubygems/resolver/git_set.rb +0 -2
  382. data/lib/rubygems/resolver/git_specification.rb +0 -2
  383. data/lib/rubygems/resolver/index_set.rb +1 -3
  384. data/lib/rubygems/resolver/index_specification.rb +32 -2
  385. data/lib/rubygems/resolver/installed_specification.rb +0 -2
  386. data/lib/rubygems/resolver/installer_set.rb +63 -16
  387. data/lib/rubygems/resolver/local_specification.rb +0 -2
  388. data/lib/rubygems/resolver/lock_set.rb +3 -5
  389. data/lib/rubygems/resolver/lock_specification.rb +2 -4
  390. data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
  391. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
  392. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +8 -0
  393. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +39 -6
  394. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
  395. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
  396. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
  397. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
  398. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
  399. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
  400. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
  401. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
  402. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +51 -12
  403. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +76 -8
  404. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
  405. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +12 -0
  406. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
  407. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +510 -165
  408. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
  409. data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
  410. data/lib/rubygems/resolver/requirement_list.rb +0 -1
  411. data/lib/rubygems/resolver/set.rb +0 -2
  412. data/lib/rubygems/resolver/source_set.rb +0 -2
  413. data/lib/rubygems/resolver/spec_specification.rb +14 -2
  414. data/lib/rubygems/resolver/specification.rb +13 -2
  415. data/lib/rubygems/resolver/vendor_set.rb +0 -2
  416. data/lib/rubygems/resolver/vendor_specification.rb +0 -2
  417. data/lib/rubygems/s3_uri_signer.rb +15 -13
  418. data/lib/rubygems/safe_yaml.rb +4 -4
  419. data/lib/rubygems/security.rb +27 -34
  420. data/lib/rubygems/security/policy.rb +4 -8
  421. data/lib/rubygems/security/signer.rb +8 -9
  422. data/lib/rubygems/security/trust_dir.rb +1 -3
  423. data/lib/rubygems/server.rb +20 -16
  424. data/lib/rubygems/source.rb +30 -13
  425. data/lib/rubygems/source/git.rb +7 -8
  426. data/lib/rubygems/source/installed.rb +0 -2
  427. data/lib/rubygems/source/local.rb +2 -4
  428. data/lib/rubygems/source/lock.rb +0 -2
  429. data/lib/rubygems/source/specific_file.rb +0 -2
  430. data/lib/rubygems/source/vendor.rb +0 -2
  431. data/lib/rubygems/source_list.rb +6 -6
  432. data/lib/rubygems/spec_fetcher.rb +22 -34
  433. data/lib/rubygems/specification.rb +207 -278
  434. data/lib/rubygems/specification_policy.rb +135 -57
  435. data/{bundler/lib/bundler/ssl_certs/index.rubygems.org → lib/rubygems/ssl_certs/rubygems.org}/GlobalSignRootCA.pem +0 -0
  436. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
  437. data/lib/rubygems/stub_specification.rb +4 -5
  438. data/lib/rubygems/test_case.rb +221 -341
  439. data/lib/rubygems/test_utilities.rb +22 -18
  440. data/lib/rubygems/text.rb +2 -3
  441. data/lib/rubygems/uninstaller.rb +49 -30
  442. data/lib/rubygems/uri_formatter.rb +2 -4
  443. data/lib/rubygems/uri_parser.rb +34 -0
  444. data/lib/rubygems/uri_parsing.rb +23 -0
  445. data/lib/rubygems/user_interaction.rb +3 -20
  446. data/lib/rubygems/util.rb +20 -44
  447. data/lib/rubygems/util/licenses.rb +400 -400
  448. data/lib/rubygems/validator.rb +9 -31
  449. data/lib/rubygems/version.rb +29 -21
  450. data/lib/rubygems/version_option.rb +6 -0
  451. data/rubygems-update.gemspec +4 -11
  452. data/setup.rb +2 -7
  453. data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
  454. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  455. data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
  456. data/test/rubygems/rubygems_plugin.rb +0 -2
  457. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
  458. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
  459. data/test/rubygems/test_bundled_ca.rb +42 -45
  460. data/test/rubygems/test_config.rb +0 -2
  461. data/test/rubygems/test_deprecate.rb +41 -5
  462. data/test/rubygems/test_gem.rb +405 -236
  463. data/test/rubygems/test_gem_available_set.rb +5 -6
  464. data/test/rubygems/test_gem_bundler_version_finder.rb +20 -2
  465. data/test/rubygems/test_gem_command.rb +144 -9
  466. data/test/rubygems/test_gem_command_manager.rb +40 -17
  467. data/test/rubygems/test_gem_commands_build_command.rb +386 -13
  468. data/test/rubygems/test_gem_commands_cert_command.rb +18 -6
  469. data/test/rubygems/test_gem_commands_check_command.rb +0 -2
  470. data/test/rubygems/test_gem_commands_cleanup_command.rb +35 -10
  471. data/test/rubygems/test_gem_commands_contents_command.rb +50 -19
  472. data/test/rubygems/test_gem_commands_dependency_command.rb +1 -3
  473. data/test/rubygems/test_gem_commands_environment_command.rb +21 -33
  474. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -2
  475. data/test/rubygems/test_gem_commands_generate_index_command.rb +32 -2
  476. data/test/rubygems/test_gem_commands_help_command.rb +16 -8
  477. data/test/rubygems/test_gem_commands_info_command.rb +6 -7
  478. data/test/rubygems/test_gem_commands_install_command.rb +368 -34
  479. data/test/rubygems/test_gem_commands_list_command.rb +0 -2
  480. data/test/rubygems/test_gem_commands_lock_command.rb +0 -2
  481. data/test/rubygems/test_gem_commands_mirror.rb +1 -2
  482. data/test/rubygems/test_gem_commands_open_command.rb +4 -6
  483. data/test/rubygems/test_gem_commands_outdated_command.rb +18 -1
  484. data/test/rubygems/test_gem_commands_owner_command.rb +62 -9
  485. data/test/rubygems/test_gem_commands_pristine_command.rb +148 -16
  486. data/test/rubygems/test_gem_commands_push_command.rb +94 -21
  487. data/test/rubygems/test_gem_commands_query_command.rb +35 -10
  488. data/test/rubygems/test_gem_commands_search_command.rb +0 -2
  489. data/test/rubygems/test_gem_commands_server_command.rb +6 -4
  490. data/test/rubygems/test_gem_commands_setup_command.rb +228 -128
  491. data/test/rubygems/test_gem_commands_signin_command.rb +36 -11
  492. data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
  493. data/test/rubygems/test_gem_commands_sources_command.rb +193 -9
  494. data/test/rubygems/test_gem_commands_specification_command.rb +46 -20
  495. data/test/rubygems/test_gem_commands_stale_command.rb +0 -2
  496. data/test/rubygems/test_gem_commands_uninstall_command.rb +108 -52
  497. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -2
  498. data/test/rubygems/test_gem_commands_update_command.rb +201 -29
  499. data/test/rubygems/test_gem_commands_which_command.rb +3 -5
  500. data/test/rubygems/test_gem_commands_yank_command.rb +86 -5
  501. data/test/rubygems/test_gem_config_file.rb +25 -13
  502. data/test/rubygems/test_gem_dependency.rb +6 -2
  503. data/test/rubygems/test_gem_dependency_installer.rb +169 -252
  504. data/test/rubygems/test_gem_dependency_list.rb +31 -26
  505. data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -3
  506. data/test/rubygems/test_gem_doctor.rb +28 -2
  507. data/test/rubygems/test_gem_ext_builder.rb +51 -44
  508. data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -23
  509. data/test/rubygems/test_gem_ext_configure_builder.rb +6 -14
  510. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +21 -29
  511. data/test/rubygems/test_gem_ext_rake_builder.rb +39 -22
  512. data/test/rubygems/test_gem_gem_runner.rb +47 -2
  513. data/test/rubygems/test_gem_gemcutter_utilities.rb +16 -13
  514. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -2
  515. data/test/rubygems/test_gem_indexer.rb +40 -55
  516. data/test/rubygems/test_gem_install_update_options.rb +45 -21
  517. data/test/rubygems/test_gem_installer.rb +661 -338
  518. data/test/rubygems/test_gem_local_remote_options.rb +0 -2
  519. data/test/rubygems/test_gem_name_tuple.rb +0 -2
  520. data/test/rubygems/test_gem_package.rb +132 -45
  521. data/test/rubygems/test_gem_package_old.rb +56 -55
  522. data/test/rubygems/test_gem_package_tar_header.rb +18 -1
  523. data/test/rubygems/test_gem_package_tar_reader.rb +0 -2
  524. data/test/rubygems/test_gem_package_tar_reader_entry.rb +6 -7
  525. data/test/rubygems/test_gem_package_tar_writer.rb +20 -12
  526. data/test/rubygems/test_gem_package_task.rb +46 -13
  527. data/test/rubygems/test_gem_path_support.rb +17 -13
  528. data/test/rubygems/test_gem_platform.rb +74 -7
  529. data/test/rubygems/test_gem_rdoc.rb +0 -1
  530. data/test/rubygems/test_gem_remote_fetcher.rb +223 -209
  531. data/test/rubygems/test_gem_request.rb +30 -19
  532. data/test/rubygems/test_gem_request_connection_pools.rb +2 -2
  533. data/test/rubygems/test_gem_request_set.rb +104 -29
  534. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +4 -6
  535. data/test/rubygems/test_gem_request_set_lockfile.rb +4 -5
  536. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -10
  537. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -118
  538. data/test/rubygems/test_gem_requirement.rb +50 -4
  539. data/test/rubygems/test_gem_resolver.rb +73 -31
  540. data/test/rubygems/test_gem_resolver_activation_request.rb +3 -34
  541. data/test/rubygems/test_gem_resolver_api_set.rb +60 -59
  542. data/test/rubygems/test_gem_resolver_api_specification.rb +3 -5
  543. data/test/rubygems/test_gem_resolver_best_set.rb +27 -6
  544. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -2
  545. data/test/rubygems/test_gem_resolver_conflict.rb +1 -7
  546. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -2
  547. data/test/rubygems/test_gem_resolver_git_set.rb +0 -2
  548. data/test/rubygems/test_gem_resolver_git_specification.rb +1 -2
  549. data/test/rubygems/test_gem_resolver_index_set.rb +2 -4
  550. data/test/rubygems/test_gem_resolver_index_specification.rb +7 -4
  551. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -3
  552. data/test/rubygems/test_gem_resolver_installer_set.rb +10 -10
  553. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -2
  554. data/test/rubygems/test_gem_resolver_lock_set.rb +3 -5
  555. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -2
  556. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -2
  557. data/test/rubygems/test_gem_resolver_specification.rb +0 -2
  558. data/test/rubygems/test_gem_resolver_vendor_set.rb +1 -3
  559. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -2
  560. data/test/rubygems/test_gem_security.rb +27 -25
  561. data/test/rubygems/test_gem_security_policy.rb +7 -12
  562. data/test/rubygems/test_gem_security_signer.rb +11 -12
  563. data/test/rubygems/test_gem_security_trust_dir.rb +4 -6
  564. data/test/rubygems/test_gem_server.rb +13 -12
  565. data/test/rubygems/test_gem_silent_ui.rb +0 -1
  566. data/test/rubygems/test_gem_source.rb +32 -17
  567. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -1
  568. data/test/rubygems/test_gem_source_git.rb +12 -18
  569. data/test/rubygems/test_gem_source_installed.rb +11 -13
  570. data/test/rubygems/test_gem_source_list.rb +1 -1
  571. data/test/rubygems/test_gem_source_local.rb +8 -9
  572. data/test/rubygems/test_gem_source_lock.rb +17 -19
  573. data/test/rubygems/test_gem_source_specific_file.rb +9 -10
  574. data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
  575. data/test/rubygems/test_gem_source_vendor.rb +7 -9
  576. data/test/rubygems/test_gem_spec_fetcher.rb +11 -4
  577. data/test/rubygems/test_gem_specification.rb +363 -245
  578. data/test/rubygems/test_gem_stream_ui.rb +3 -1
  579. data/test/rubygems/test_gem_stub_specification.rb +6 -7
  580. data/test/rubygems/test_gem_text.rb +1 -2
  581. data/test/rubygems/test_gem_uninstaller.rb +165 -22
  582. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -2
  583. data/test/rubygems/test_gem_uri_formatter.rb +0 -2
  584. data/test/rubygems/test_gem_util.rb +17 -15
  585. data/test/rubygems/test_gem_validator.rb +4 -7
  586. data/test/rubygems/test_gem_version.rb +23 -10
  587. data/test/rubygems/test_gem_version_option.rb +1 -3
  588. data/test/rubygems/test_kernel.rb +25 -9
  589. data/test/rubygems/test_project_sanity.rb +20 -0
  590. data/test/rubygems/test_remote_fetch_error.rb +1 -2
  591. data/test/rubygems/test_require.rb +394 -56
  592. data/test/test_changelog_generator.rb +17 -0
  593. metadata +109 -155
  594. data/.rubocop.yml +0 -67
  595. data/.travis.yml +0 -38
  596. data/appveyor.yml +0 -43
  597. data/bundler/CODE_OF_CONDUCT.md +0 -42
  598. data/bundler/CONTRIBUTING.md +0 -17
  599. data/bundler/exe/bundle_ruby +0 -60
  600. data/bundler/lib/bundler/cli/package.rb +0 -49
  601. data/bundler/lib/bundler/compatibility_guard.rb +0 -14
  602. data/bundler/lib/bundler/gem_remote_fetcher.rb +0 -43
  603. data/bundler/lib/bundler/ssl_certs/certificate_manager.rb +0 -66
  604. data/bundler/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  605. data/bundler/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
  606. data/bundler/lib/bundler/templates/newgem/test/test_helper.rb.tt +0 -4
  607. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
  608. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb +0 -27
  609. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb +0 -129
  610. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb +0 -12
  611. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb +0 -129
  612. data/lib/rubygems/source_local.rb +0 -7
  613. data/lib/rubygems/source_specific_file.rb +0 -6
  614. data/lib/rubygems/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +0 -21
  615. data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  616. data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
  617. data/lib/ubygems.rb +0 -14
  618. data/util/CL2notes +0 -55
  619. data/util/ci +0 -82
  620. data/util/cops/deprecations.rb +0 -52
  621. data/util/create_certs.rb +0 -171
  622. data/util/create_certs.sh +0 -27
  623. data/util/create_encrypted_key.rb +0 -16
  624. data/util/generate_spdx_license_list.rb +0 -61
  625. data/util/patch_with_prs.rb +0 -77
  626. data/util/rubocop +0 -8
  627. data/util/update_bundled_ca_certificates.rb +0 -139
  628. data/util/update_changelog.rb +0 -67
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/commands/stale_command'
4
4
 
5
5
  class TestGemCommandsStaleCommand < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
9
8
  @stub_ui = Gem::MockGemUi.new
@@ -40,5 +39,4 @@ class TestGemCommandsStaleCommand < Gem::TestCase
40
39
  assert_equal("#{foo_bar.name}-#{foo_bar.version}", lines[0].split.first)
41
40
  assert_equal("#{bar_baz.name}-#{bar_baz.version}", lines[1].split.first)
42
41
  end
43
-
44
42
  end
@@ -3,22 +3,15 @@ require 'rubygems/installer_test_case'
3
3
  require 'rubygems/commands/uninstall_command'
4
4
 
5
5
  class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
6
-
7
6
  def setup
8
7
  super
9
- common_installer_setup
10
-
11
- build_rake_in do
12
- use_ui @ui do
13
- @installer.install
14
- end
15
- end
16
-
17
8
  @cmd = Gem::Commands::UninstallCommand.new
18
9
  @executable = File.join(@gemhome, 'bin', 'executable')
19
10
  end
20
11
 
21
12
  def test_execute_all_named
13
+ initial_install
14
+
22
15
  util_make_gems
23
16
 
24
17
  default = new_default_spec 'default', '1'
@@ -47,14 +40,64 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
47
40
  Gem::Specification.all_names.sort
48
41
  end
49
42
 
43
+ def test_execute_all_named_default_single
44
+ z_1 = new_default_spec 'z', '1'
45
+ install_default_gems z_1
46
+
47
+ assert_includes Gem::Specification.all_names, 'z-1'
48
+
49
+ @cmd.options[:all] = true
50
+ @cmd.options[:args] = %w[z]
51
+
52
+ use_ui @ui do
53
+ @cmd.execute
54
+ end
55
+
56
+ assert_equal %w[z-1], Gem::Specification.all_names.sort
57
+
58
+ output = @ui.output.split "\n"
59
+
60
+ assert_equal 'Gem z-1 cannot be uninstalled because it is a default gem', output.shift
61
+ end
62
+
63
+ def test_execute_all_named_default_multiple
64
+ z_1 = new_default_spec 'z', '1'
65
+ install_default_gems z_1
66
+
67
+ z_2, = util_gem 'z', 2
68
+ install_gem z_2
69
+
70
+ assert_includes Gem::Specification.all_names, 'z-1'
71
+ assert_includes Gem::Specification.all_names, 'z-2'
72
+
73
+ @cmd.options[:all] = true
74
+ @cmd.options[:args] = %w[z]
75
+
76
+ use_ui @ui do
77
+ @cmd.execute
78
+ end
79
+
80
+ assert_equal %w[z-1], Gem::Specification.all_names.sort
81
+
82
+ output = @ui.output.split "\n"
83
+
84
+ assert_equal 'Gem z-1 cannot be uninstalled because it is a default gem', output.shift
85
+ assert_equal 'Successfully uninstalled z-2', output.shift
86
+ end
87
+
50
88
  def test_execute_dependency_order
89
+ initial_install
90
+
51
91
  c = quick_gem 'c' do |spec|
52
92
  spec.add_dependency 'a'
53
93
  end
54
94
 
55
95
  util_build_gem c
56
96
  installer = util_installer c, @gemhome
57
- use_ui @ui do installer.install end
97
+
98
+ use_ui @ui do
99
+ installer.install
100
+ end
58
101
 
59
102
  ui = Gem::MockGemUi.new
60
103
 
@@ -73,15 +116,7 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
73
116
  end
74
117
 
75
118
  def test_execute_removes_executable
76
- ui = Gem::MockGemUi.new
77
-
78
- util_setup_gem ui
79
-
80
- build_rake_in do
81
- use_ui ui do
82
- @installer.install
83
- end
84
- end
119
+ initial_install
85
120
 
86
121
  if win_platform?
87
122
  assert File.exist?(@executable)
@@ -92,7 +127,9 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
92
127
  # Evil hack to prevent false removal success
93
128
  FileUtils.rm_f @executable
94
129
 
95
- File.open @executable, "wb+" do |f| f.puts "binary" end
130
+ File.open @executable, "wb+" do |f|
131
+ f.puts "binary"
132
+ end
96
133
 
97
134
  @cmd.options[:executables] = true
98
135
  @cmd.options[:args] = [@spec.name]
@@ -108,12 +145,14 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
108
145
  end
109
146
 
110
147
  def test_execute_removes_formatted_executable
148
+ installer = setup_base_installer
149
+
111
150
  FileUtils.rm_f @executable # Wish this didn't happen in #setup
112
151
 
113
152
  Gem::Installer.exec_format = 'foo-%s-bar'
114
153
 
115
- @installer.format_executable = true
116
- @installer.install
154
+ installer.format_executable = true
155
+ installer.install
117
156
 
118
157
  formatted_executable = File.join @gemhome, 'bin', 'foo-executable-bar'
119
158
  assert_equal true, File.exist?(formatted_executable)
@@ -132,11 +171,11 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
132
171
  @gem = File.join @tempdir, @spec.file_name
133
172
  FileUtils.touch @gem
134
173
 
135
- util_setup_gem
174
+ installer = util_setup_gem
136
175
 
137
176
  build_rake_in do
138
177
  use_ui @ui do
139
- @installer.install
178
+ installer.install
140
179
  end
141
180
  end
142
181
 
@@ -152,10 +191,11 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
152
191
  end
153
192
 
154
193
  def test_execute_with_version_leaves_non_matching_versions
194
+ initial_install
195
+
155
196
  ui = Gem::MockGemUi.new
156
197
 
157
198
  util_make_gems
158
- util_setup_gem ui
159
199
 
160
200
  assert_equal 3, Gem::Specification.find_all_by_name('a').length
161
201
 
@@ -173,10 +213,11 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
173
213
  end
174
214
 
175
215
  def test_execute_with_version_specified_as_colon
216
+ initial_install
217
+
176
218
  ui = Gem::MockGemUi.new "y\n"
177
219
 
178
220
  util_make_gems
179
- util_setup_gem ui
180
221
 
181
222
  assert_equal 3, Gem::Specification.find_all_by_name('a').length
182
223
 
@@ -249,6 +290,8 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
249
290
  end
250
291
 
251
292
  def test_execute_with_force_and_without_version_uninstalls_everything
293
+ initial_install
294
+
252
295
  ui = Gem::MockGemUi.new "y\n"
253
296
 
254
297
  a_1, = util_gem 'a', 1
@@ -257,8 +300,6 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
257
300
  a_3a, = util_gem 'a', '3.a'
258
301
  install_gem a_3a
259
302
 
260
- util_setup_gem ui
261
-
262
303
  assert_equal 3, Gem::Specification.find_all_by_name('a').length
263
304
 
264
305
  @cmd.options[:force] = true
@@ -274,10 +315,11 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
274
315
  end
275
316
 
276
317
  def test_execute_with_force_ignores_dependencies
318
+ initial_install
319
+
277
320
  ui = Gem::MockGemUi.new
278
321
 
279
322
  util_make_gems
280
- util_setup_gem ui
281
323
 
282
324
  assert Gem::Specification.find_all_by_name('dep_x').length > 0
283
325
  assert Gem::Specification.find_all_by_name('x').length > 0
@@ -318,6 +360,7 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
318
360
  end
319
361
 
320
362
  assert_equal %w[default-1], Gem::Specification.all_names.sort
363
+ assert_equal "INFO: Uninstalled all gems in #{@gemhome}", @ui.output.split("\n").last
321
364
  end
322
365
 
323
366
  def test_execute_outside_gem_home
@@ -354,20 +397,22 @@ class TestGemCommandsUninstallCommand < Gem::InstallerTestCase
354
397
  end
355
398
 
356
399
  def test_handle_options_vendor
357
- use_ui @ui do
358
- @cmd.handle_options %w[--vendor]
359
- end
400
+ vendordir(File.join(@tempdir, 'vendor')) do
401
+ use_ui @ui do
402
+ @cmd.handle_options %w[--vendor]
403
+ end
360
404
 
361
- assert @cmd.options[:vendor]
362
- assert_equal Gem.vendor_dir, @cmd.options[:install_dir]
405
+ assert @cmd.options[:vendor]
406
+ assert_equal Gem.vendor_dir, @cmd.options[:install_dir]
363
407
 
364
- assert_empty @ui.output
408
+ assert_empty @ui.output
365
409
 
366
- expected = <<-EXPECTED
410
+ expected = <<-EXPECTED
367
411
  WARNING: Use your OS package manager to uninstall vendor gems
368
- EXPECTED
412
+ EXPECTED
369
413
 
370
- assert_match expected, @ui.error
414
+ assert_match expected, @ui.error
415
+ end
371
416
  end
372
417
 
373
418
  def test_execute_two_version
@@ -390,21 +435,17 @@ WARNING: Use your OS package manager to uninstall vendor gems
390
435
  end
391
436
 
392
437
  def test_handle_options_vendor_missing
393
- orig_vendordir = RbConfig::CONFIG['vendordir']
394
- RbConfig::CONFIG.delete 'vendordir'
395
-
396
- e = assert_raises OptionParser::InvalidOption do
397
- @cmd.handle_options %w[--vendor]
398
- end
399
-
400
- assert_equal 'invalid option: --vendor your platform is not supported',
401
- e.message
438
+ vendordir(nil) do
439
+ e = assert_raises OptionParser::InvalidOption do
440
+ @cmd.handle_options %w[--vendor]
441
+ end
402
442
 
403
- refute @cmd.options[:vendor]
404
- refute @cmd.options[:install_dir]
443
+ assert_equal 'invalid option: --vendor your platform is not supported',
444
+ e.message
405
445
 
406
- ensure
407
- RbConfig::CONFIG['vendordir'] = orig_vendordir
446
+ refute @cmd.options[:vendor]
447
+ refute @cmd.options[:install_dir]
448
+ end
408
449
  end
409
450
 
410
451
  def test_execute_with_gem_not_installed
@@ -420,6 +461,8 @@ WARNING: Use your OS package manager to uninstall vendor gems
420
461
  end
421
462
 
422
463
  def test_execute_with_gem_uninstall_error
464
+ initial_install
465
+
423
466
  util_make_gems
424
467
 
425
468
  @cmd.options[:args] = %w[a]
@@ -443,6 +486,19 @@ WARNING: Use your OS package manager to uninstall vendor gems
443
486
  end
444
487
 
445
488
  assert_empty @ui.output
446
- assert_match %r!Error: unable to successfully uninstall '#{@spec.name}'!, @ui.error
489
+ assert_match %r{Error: unable to successfully uninstall '#{@spec.name}'}, @ui.error
490
+ end
491
+
492
+ private
493
+
494
+ def initial_install
495
+ installer = setup_base_installer
496
+ common_installer_setup
497
+
498
+ build_rake_in do
499
+ use_ui @ui do
500
+ installer.install
501
+ end
502
+ end
447
503
  end
448
504
  end
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/commands/unpack_command'
4
4
 
5
5
  class TestGemCommandsUnpackCommand < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
9
8
 
@@ -221,5 +220,4 @@ class TestGemCommandsUnpackCommand < Gem::TestCase
221
220
 
222
221
  assert @cmd.options[:spec]
223
222
  end
224
-
225
223
  end
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/commands/update_command'
4
4
 
5
5
  class TestGemCommandsUpdateCommand < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
9
8
  common_installer_setup
@@ -66,7 +65,9 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
66
65
 
67
66
  def test_execute_system
68
67
  spec_fetcher do |fetcher|
69
- fetcher.download 'rubygems-update', 9 do |s| s.files = %w[setup.rb] end
68
+ fetcher.download 'rubygems-update', 9 do |s|
69
+ s.files = %w[setup.rb]
70
+ end
70
71
  end
71
72
 
72
73
  @cmd.options[:args] = []
@@ -107,8 +108,13 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
107
108
 
108
109
  def test_execute_system_multiple
109
110
  spec_fetcher do |fetcher|
110
- fetcher.download 'rubygems-update', 8 do |s| s.files = %w[setup.rb] end
111
- fetcher.download 'rubygems-update', 9 do |s| s.files = %w[setup.rb] end
111
+ fetcher.download 'rubygems-update', 8 do |s|
112
+ s.files = %w[setup.rb]
113
+ end
114
+
115
+ fetcher.download 'rubygems-update', 9 do |s|
116
+ s.files = %w[setup.rb]
117
+ end
112
118
  end
113
119
 
114
120
  @cmd.options[:args] = []
@@ -128,8 +134,13 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
128
134
 
129
135
  def test_execute_system_specific
130
136
  spec_fetcher do |fetcher|
131
- fetcher.download 'rubygems-update', 8 do |s| s.files = %w[setup.rb] end
132
- fetcher.download 'rubygems-update', 9 do |s| s.files = %w[setup.rb] end
137
+ fetcher.download 'rubygems-update', 8 do |s|
138
+ s.files = %w[setup.rb]
139
+ end
140
+
141
+ fetcher.download 'rubygems-update', 9 do |s|
142
+ s.files = %w[setup.rb]
143
+ end
133
144
  end
134
145
 
135
146
  @cmd.options[:args] = []
@@ -147,10 +158,73 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
147
158
  assert_empty out
148
159
  end
149
160
 
161
+ def test_execute_system_specific_older_than_minimum_supported_rubygems
162
+ spec_fetcher do |fetcher|
163
+ fetcher.download 'rubygems-update', "2.5.1" do |s|
164
+ s.files = %w[setup.rb]
165
+ end
166
+ end
167
+
168
+ @cmd.options[:args] = []
169
+ @cmd.options[:system] = "2.5.1"
170
+
171
+ assert_raises Gem::MockGemUi::TermError do
172
+ use_ui @ui do
173
+ @cmd.execute
174
+ end
175
+ end
176
+
177
+ assert_empty @ui.output
178
+ assert_equal "ERROR: rubygems 2.5.1 is not supported. The oldest supported version is 2.5.2\n", @ui.error
179
+ end
180
+
181
+ def test_execute_system_specific_older_than_3_2_removes_plugins_dir
182
+ spec_fetcher do |fetcher|
183
+ fetcher.download 'rubygems-update', 3.1 do |s|
184
+ s.files = %w[setup.rb]
185
+ end
186
+ end
187
+
188
+ @cmd.options[:args] = []
189
+ @cmd.options[:system] = "3.1"
190
+
191
+ FileUtils.mkdir_p Gem.plugindir
192
+ write_file File.join(Gem.plugindir, 'a_plugin.rb')
193
+
194
+ @cmd.execute
195
+
196
+ refute_path_exists Gem.plugindir, "Plugins folder not removed when updating rubygems to pre-3.2"
197
+ end
198
+
199
+ def test_execute_system_specific_newer_than_or_equal_to_3_2_leaves_plugins_dir_alone
200
+ spec_fetcher do |fetcher|
201
+ fetcher.download 'rubygems-update', "3.2.a" do |s|
202
+ s.files = %w[setup.rb]
203
+ end
204
+ end
205
+
206
+ @cmd.options[:args] = []
207
+ @cmd.options[:system] = "3.2.a"
208
+
209
+ FileUtils.mkdir_p Gem.plugindir
210
+ plugin_file = File.join(Gem.plugindir, 'a_plugin.rb')
211
+ write_file plugin_file
212
+
213
+ @cmd.execute
214
+
215
+ assert_path_exists Gem.plugindir, "Plugin folder removed when updating rubygems to post-3.2"
216
+ assert_path_exists plugin_file, "Plugin removed when updating rubygems to post-3.2"
217
+ end
218
+
150
219
  def test_execute_system_specifically_to_latest_version
151
220
  spec_fetcher do |fetcher|
152
- fetcher.download 'rubygems-update', 8 do |s| s.files = %w[setup.rb] end
153
- fetcher.download 'rubygems-update', 9 do |s| s.files = %w[setup.rb] end
221
+ fetcher.download 'rubygems-update', 8 do |s|
222
+ s.files = %w[setup.rb]
223
+ end
224
+
225
+ fetcher.download 'rubygems-update', 9 do |s|
226
+ s.files = %w[setup.rb]
227
+ end
154
228
  end
155
229
 
156
230
  @cmd.options[:args] = []
@@ -183,6 +257,53 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
183
257
  @ui.error
184
258
  end
185
259
 
260
+ def test_execute_system_with_disabled_update
261
+ old_disable_system_update_message = Gem.disable_system_update_message
262
+ Gem.disable_system_update_message = "Please use package manager instead."
263
+
264
+ @cmd.options[:args] = []
265
+ @cmd.options[:system] = true
266
+
267
+ assert_raises Gem::MockGemUi::TermError do
268
+ use_ui @ui do
269
+ @cmd.execute
270
+ end
271
+ end
272
+
273
+ assert_empty @ui.output
274
+ assert_equal "ERROR: Please use package manager instead.\n", @ui.error
275
+ ensure
276
+ Gem.disable_system_update_message = old_disable_system_update_message
277
+ end
278
+
279
+ # The other style of `gem update --system` tests don't actually run
280
+ # setup.rb, so we just check that setup.rb gets the `--silent` flag.
281
+ def test_execute_system_silent_passed_to_setuprb
282
+ @cmd.options[:args] = []
283
+ @cmd.options[:system] = true
284
+ @cmd.options[:silent] = true
285
+
286
+ assert_equal true, @cmd.update_rubygems_arguments.include?('--silent')
287
+ end
288
+
289
+ def test_execute_system_silent
290
+ spec_fetcher do |fetcher|
291
+ fetcher.download 'rubygems-update', 9 do |s|
292
+ s.files = %w[setup.rb]
293
+ end
294
+ end
295
+
296
+ @cmd.options[:args] = []
297
+ @cmd.options[:system] = true
298
+ @cmd.options[:silent] = true
299
+
300
+ use_ui @ui do
301
+ @cmd.execute
302
+ end
303
+
304
+ assert_empty @ui.output
305
+ end
306
+
186
307
  # before:
187
308
  # a1 -> c1.2
188
309
  # after:
@@ -342,10 +463,10 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
342
463
  end
343
464
 
344
465
  def test_execute_user_install
345
- spec_fetcher do |fetcher|
346
- fetcher.download 'a', 2
347
- fetcher.spec 'a', 1
348
- end
466
+ a = util_spec "a", 1
467
+ b = util_spec "b", 1
468
+ install_gem_user(a)
469
+ install_gem(b)
349
470
 
350
471
  @cmd.handle_options %w[--user-install]
351
472
 
@@ -356,7 +477,13 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
356
477
  installer = @cmd.installer
357
478
  user_install = installer.instance_variable_get :@user_install
358
479
 
359
- assert user_install, 'user_install must be set on the installer'
480
+ assert user_install, "user_install must be set on the installer"
481
+
482
+ out = @ui.output.split "\n"
483
+ assert_equal "Updating installed gems", out.shift
484
+ assert_equal "Updating a", out.shift
485
+ assert_equal "Gems updated: a", out.shift
486
+ assert_empty out
360
487
  end
361
488
 
362
489
  def test_fetch_remote_gems
@@ -367,7 +494,7 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
367
494
 
368
495
  expected = [
369
496
  [Gem::NameTuple.new('a', v(2), Gem::Platform::RUBY),
370
- Gem::Source.new(@gem_repo)],
497
+ Gem::Source.new(@gem_repo)],
371
498
  ]
372
499
 
373
500
  assert_equal expected, @cmd.fetch_remote_gems(specs['a-1'])
@@ -387,12 +514,15 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
387
514
  specs = spec_fetcher do |fetcher|
388
515
  fetcher.spec 'a', 1
389
516
  fetcher.spec 'a', 2
390
- fetcher.spec 'a', 2 do |s| s.platform = platform end
517
+
518
+ fetcher.spec 'a', 2 do |s|
519
+ s.platform = platform
520
+ end
391
521
  end
392
522
 
393
523
  expected = [
394
524
  [Gem::NameTuple.new('a', v(2), Gem::Platform::RUBY),
395
- Gem::Source.new(@gem_repo)],
525
+ Gem::Source.new(@gem_repo)],
396
526
  ]
397
527
 
398
528
  assert_equal expected, @cmd.fetch_remote_gems(specs['a-1'])
@@ -409,9 +539,9 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
409
539
 
410
540
  expected = [
411
541
  [Gem::NameTuple.new('a', v(2), Gem::Platform::RUBY),
412
- Gem::Source.new(@gem_repo)],
542
+ Gem::Source.new(@gem_repo)],
413
543
  [Gem::NameTuple.new('a', v('3.a'), Gem::Platform::RUBY),
414
- Gem::Source.new(@gem_repo)],
544
+ Gem::Source.new(@gem_repo)],
415
545
  ]
416
546
 
417
547
  assert_equal expected, @cmd.fetch_remote_gems(specs['a-1'])
@@ -484,31 +614,73 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
484
614
 
485
615
  assert_equal '--prefix', arguments.shift
486
616
  assert_equal Gem.prefix, arguments.shift
487
- assert_equal '--no-rdoc', arguments.shift
488
- assert_equal '--no-ri', arguments.shift
617
+ assert_equal '--no-document', arguments.shift
489
618
  assert_equal '--previous-version', arguments.shift
490
619
  assert_equal Gem::VERSION, arguments.shift
491
620
  assert_empty arguments
492
621
  end
493
622
 
494
- def test_update_rubygems_arguments_1_8_x
495
- @cmd.options[:system] = '1.8.26'
623
+ def test_explain
624
+ spec_fetcher do |fetcher|
625
+ fetcher.download 'a', 2
626
+ fetcher.spec 'a', 1
627
+ end
496
628
 
497
- arguments = @cmd.update_rubygems_arguments
629
+ @cmd.options[:explain] = true
630
+ @cmd.options[:args] = %w[a]
498
631
 
499
- assert_equal '--prefix', arguments.shift
500
- assert_equal Gem.prefix, arguments.shift
501
- assert_equal '--no-rdoc', arguments.shift
502
- assert_equal '--no-ri', arguments.shift
503
- assert_empty arguments
632
+ use_ui @ui do
633
+ @cmd.execute
634
+ end
635
+
636
+ out = @ui.output.split "\n"
637
+
638
+ assert_equal "Gems to update:", out.shift
639
+ assert_equal " a-2", out.shift
640
+ assert_empty out
504
641
  end
505
642
 
506
- def test_explain
643
+ def test_explain_platform_local
644
+ local = Gem::Platform.local
645
+ spec_fetcher do |fetcher|
646
+ fetcher.download 'a', 2
647
+
648
+ fetcher.download 'a', 2 do |s|
649
+ s.platform = local
650
+ end
651
+
652
+ fetcher.spec 'a', 1
653
+ end
654
+
655
+ @cmd.options[:explain] = true
656
+ @cmd.options[:args] = %w[a]
657
+
658
+ use_ui @ui do
659
+ @cmd.execute
660
+ end
661
+
662
+ out = @ui.output.split "\n"
663
+
664
+ assert_equal "Gems to update:", out.shift
665
+ assert_equal " a-2-#{local}", out.shift
666
+ assert_empty out
667
+ end
668
+
669
+ def test_explain_platform_ruby
670
+ local = Gem::Platform.local
507
671
  spec_fetcher do |fetcher|
508
672
  fetcher.download 'a', 2
673
+
674
+ fetcher.download 'a', 2 do |s|
675
+ s.platform = local
676
+ end
677
+
509
678
  fetcher.spec 'a', 1
510
679
  end
511
680
 
681
+ # equivalent to --platform=ruby
682
+ Gem.platforms = [Gem::Platform::RUBY]
683
+
512
684
  @cmd.options[:explain] = true
513
685
  @cmd.options[:args] = %w[a]
514
686