rubygems-update 3.1.6 → 3.3.22

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 (703) hide show
  1. checksums.yaml +4 -4
  2. data/{History.txt → CHANGELOG.md} +1452 -514
  3. data/CODE_OF_CONDUCT.md +55 -19
  4. data/CONTRIBUTING.md +74 -27
  5. data/Manifest.txt +154 -117
  6. data/POLICIES.md +27 -19
  7. data/README.md +10 -8
  8. data/UPGRADING.md +5 -81
  9. data/bin/gem +3 -8
  10. data/bin/update_rubygems +5 -5
  11. data/bundler/CHANGELOG.md +2358 -1430
  12. data/bundler/README.md +7 -9
  13. data/bundler/UPGRADING.md +27 -34
  14. data/bundler/bundler.gemspec +8 -11
  15. data/bundler/exe/bundle +10 -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 +1 -1
  20. data/bundler/lib/bundler/cli/binstubs.rb +6 -2
  21. data/bundler/lib/bundler/cli/cache.rb +3 -8
  22. data/bundler/lib/bundler/cli/check.rb +4 -2
  23. data/bundler/lib/bundler/cli/clean.rb +1 -1
  24. data/bundler/lib/bundler/cli/common.rb +31 -3
  25. data/bundler/lib/bundler/cli/config.rb +10 -1
  26. data/bundler/lib/bundler/cli/console.rb +1 -1
  27. data/bundler/lib/bundler/cli/doctor.rb +25 -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 +219 -28
  31. data/bundler/lib/bundler/cli/info.rb +38 -6
  32. data/bundler/lib/bundler/cli/init.rb +3 -3
  33. data/bundler/lib/bundler/cli/inject.rb +1 -1
  34. data/bundler/lib/bundler/cli/install.rb +25 -54
  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 +5 -1
  38. data/bundler/lib/bundler/cli/open.rb +1 -2
  39. data/bundler/lib/bundler/cli/outdated.rb +105 -76
  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.rb +106 -83
  47. data/bundler/lib/bundler/compact_index_client/cache.rb +6 -23
  48. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
  49. data/bundler/lib/bundler/compact_index_client/updater.rb +29 -25
  50. data/bundler/lib/bundler/compact_index_client.rb +3 -9
  51. data/bundler/lib/bundler/current_ruby.rb +17 -6
  52. data/bundler/lib/bundler/definition.rb +297 -396
  53. data/bundler/lib/bundler/dep_proxy.rb +16 -9
  54. data/bundler/lib/bundler/dependency.rb +22 -77
  55. data/bundler/lib/bundler/digest.rb +71 -0
  56. data/bundler/lib/bundler/dsl.rb +76 -83
  57. data/bundler/lib/bundler/endpoint_specification.rb +16 -14
  58. data/bundler/lib/bundler/env.rb +2 -2
  59. data/bundler/lib/bundler/environment_preserver.rb +29 -2
  60. data/bundler/lib/bundler/errors.rb +30 -3
  61. data/bundler/lib/bundler/feature_flag.rb +0 -9
  62. data/bundler/lib/bundler/fetcher/base.rb +7 -9
  63. data/bundler/lib/bundler/fetcher/compact_index.rb +11 -16
  64. data/bundler/lib/bundler/fetcher/downloader.rb +10 -7
  65. data/bundler/lib/bundler/fetcher/index.rb +2 -30
  66. data/bundler/lib/bundler/fetcher.rb +24 -25
  67. data/bundler/lib/bundler/friendly_errors.rb +46 -47
  68. data/bundler/lib/bundler/gem_helper.rb +53 -31
  69. data/bundler/lib/bundler/gem_helpers.rb +43 -24
  70. data/bundler/lib/bundler/gem_version_promoter.rb +10 -20
  71. data/bundler/lib/bundler/graph.rb +1 -1
  72. data/bundler/lib/bundler/index.rb +19 -25
  73. data/bundler/lib/bundler/injector.rb +38 -6
  74. data/bundler/lib/bundler/inline.rb +4 -13
  75. data/bundler/lib/bundler/installer/gem_installer.rb +19 -24
  76. data/bundler/lib/bundler/installer/parallel_installer.rb +46 -25
  77. data/bundler/lib/bundler/installer/standalone.rb +58 -11
  78. data/bundler/lib/bundler/installer.rb +51 -81
  79. data/bundler/lib/bundler/lazy_specification.rb +79 -36
  80. data/bundler/lib/bundler/lockfile_generator.rb +3 -3
  81. data/bundler/lib/bundler/lockfile_parser.rb +19 -44
  82. data/bundler/lib/bundler/man/.document +1 -0
  83. data/bundler/{man → lib/bundler/man}/bundle-add.1 +21 -5
  84. data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +16 -4
  85. data/bundler/{man → lib/bundler/man}/bundle-binstubs.1 +5 -3
  86. data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +2 -4
  87. data/bundler/{man → lib/bundler/man}/bundle-cache.1 +7 -1
  88. data/bundler/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +7 -0
  89. data/bundler/{man → lib/bundler/man}/bundle-check.1 +1 -1
  90. data/bundler/{man → lib/bundler/man}/bundle-clean.1 +1 -1
  91. data/bundler/{man → lib/bundler/man}/bundle-config.1 +65 -47
  92. data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +74 -65
  93. data/bundler/lib/bundler/man/bundle-console.1 +53 -0
  94. data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
  95. data/bundler/{man → lib/bundler/man}/bundle-doctor.1 +1 -1
  96. data/bundler/{man → lib/bundler/man}/bundle-exec.1 +2 -2
  97. data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +1 -1
  98. data/bundler/{man → lib/bundler/man}/bundle-gem.1 +38 -3
  99. data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +46 -7
  100. data/bundler/lib/bundler/man/bundle-help.1 +13 -0
  101. data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
  102. data/bundler/{man → lib/bundler/man}/bundle-info.1 +1 -1
  103. data/bundler/{man → lib/bundler/man}/bundle-init.1 +1 -1
  104. data/bundler/{man → lib/bundler/man}/bundle-inject.1 +5 -2
  105. data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +3 -1
  106. data/bundler/{man → lib/bundler/man}/bundle-install.1 +35 -4
  107. data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +33 -5
  108. data/bundler/{man → lib/bundler/man}/bundle-list.1 +7 -7
  109. data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
  110. data/bundler/{man → lib/bundler/man}/bundle-lock.1 +1 -1
  111. data/bundler/{man → lib/bundler/man}/bundle-open.1 +1 -1
  112. data/bundler/{man → lib/bundler/man}/bundle-outdated.1 +3 -10
  113. data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +1 -10
  114. data/bundler/{man → lib/bundler/man}/bundle-platform.1 +16 -6
  115. data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +14 -7
  116. data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
  117. data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
  118. data/bundler/{man → lib/bundler/man}/bundle-pristine.1 +1 -1
  119. data/bundler/{man → lib/bundler/man}/bundle-remove.1 +1 -1
  120. data/bundler/{man → lib/bundler/man}/bundle-show.1 +1 -1
  121. data/bundler/{man → lib/bundler/man}/bundle-update.1 +5 -5
  122. data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +5 -4
  123. data/bundler/lib/bundler/man/bundle-version.1 +35 -0
  124. data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
  125. data/bundler/{man → lib/bundler/man}/bundle-viz.1 +4 -1
  126. data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +2 -0
  127. data/bundler/{man → lib/bundler/man}/bundle.1 +15 -10
  128. data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +12 -7
  129. data/bundler/{man → lib/bundler/man}/gemfile.5 +106 -80
  130. data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +94 -83
  131. data/bundler/{man → lib/bundler/man}/index.txt +4 -0
  132. data/bundler/lib/bundler/match_metadata.rb +13 -0
  133. data/bundler/lib/bundler/match_platform.rb +0 -1
  134. data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
  135. data/bundler/lib/bundler/mirror.rb +2 -2
  136. data/bundler/lib/bundler/plugin/api/source.rb +25 -9
  137. data/bundler/lib/bundler/plugin/dsl.rb +1 -1
  138. data/bundler/lib/bundler/plugin/index.rb +13 -1
  139. data/bundler/lib/bundler/plugin/installer/git.rb +0 -4
  140. data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -5
  141. data/bundler/lib/bundler/plugin/installer.rb +11 -11
  142. data/bundler/lib/bundler/plugin/source_list.rb +5 -1
  143. data/bundler/lib/bundler/plugin.rb +58 -11
  144. data/bundler/lib/bundler/process_lock.rb +1 -1
  145. data/bundler/lib/bundler/remote_specification.rb +11 -6
  146. data/bundler/lib/bundler/resolver/base.rb +50 -0
  147. data/bundler/lib/bundler/resolver/spec_group.rb +64 -57
  148. data/bundler/lib/bundler/resolver.rb +234 -230
  149. data/bundler/lib/bundler/retry.rb +2 -2
  150. data/bundler/lib/bundler/ruby_dsl.rb +1 -1
  151. data/bundler/lib/bundler/ruby_version.rb +6 -19
  152. data/bundler/lib/bundler/rubygems_ext.rb +194 -33
  153. data/bundler/lib/bundler/rubygems_gem_installer.rb +87 -16
  154. data/bundler/lib/bundler/rubygems_integration.rb +71 -153
  155. data/bundler/lib/bundler/runtime.rb +22 -26
  156. data/bundler/lib/bundler/self_manager.rb +168 -0
  157. data/bundler/lib/bundler/settings.rb +145 -66
  158. data/bundler/lib/bundler/setup.rb +2 -2
  159. data/bundler/lib/bundler/shared_helpers.rb +17 -32
  160. data/bundler/lib/bundler/similarity_detector.rb +1 -1
  161. data/bundler/lib/bundler/source/git/git_proxy.rb +88 -84
  162. data/bundler/lib/bundler/source/git.rb +50 -32
  163. data/bundler/lib/bundler/source/metadata.rb +3 -7
  164. data/bundler/lib/bundler/source/path/installer.rb +10 -10
  165. data/bundler/lib/bundler/source/path.rb +10 -4
  166. data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
  167. data/bundler/lib/bundler/source/rubygems.rb +201 -179
  168. data/bundler/lib/bundler/source/rubygems_aggregate.rb +68 -0
  169. data/bundler/lib/bundler/source.rb +25 -5
  170. data/bundler/lib/bundler/source_list.rb +105 -63
  171. data/bundler/lib/bundler/source_map.rb +71 -0
  172. data/bundler/lib/bundler/spec_set.rb +62 -57
  173. data/bundler/lib/bundler/stub_specification.rb +30 -10
  174. data/bundler/lib/bundler/templates/Executable +2 -4
  175. data/bundler/lib/bundler/templates/Executable.bundler +8 -8
  176. data/bundler/lib/bundler/templates/Executable.standalone +2 -4
  177. data/bundler/lib/bundler/templates/Gemfile +0 -2
  178. data/bundler/lib/bundler/templates/gems.rb +0 -3
  179. data/bundler/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
  180. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  181. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +12 -1
  182. data/bundler/lib/bundler/templates/newgem/README.md.tt +9 -14
  183. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +32 -5
  184. data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
  185. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
  186. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
  187. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +27 -0
  188. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
  189. data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  190. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
  191. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +27 -17
  192. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
  193. data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
  194. data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
  195. data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
  196. data/bundler/lib/bundler/templates/newgem/standard.yml.tt +3 -0
  197. data/bundler/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
  198. data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/test_newgem.rb.tt} +3 -1
  199. data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  200. data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  201. data/bundler/lib/bundler/ui/shell.rb +6 -6
  202. data/bundler/lib/bundler/uri_credentials_filter.rb +3 -1
  203. data/bundler/lib/bundler/vendor/.document +1 -0
  204. data/bundler/lib/bundler/vendor/connection_pool/LICENSE +20 -0
  205. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +19 -21
  206. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  207. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +57 -0
  208. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +39 -74
  209. data/bundler/lib/bundler/vendor/fileutils/LICENSE.txt +22 -0
  210. data/bundler/lib/bundler/vendor/molinillo/LICENSE +9 -0
  211. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +7 -0
  212. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
  213. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +11 -5
  214. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +37 -5
  215. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +34 -28
  216. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  217. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +12 -1
  218. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +49 -47
  219. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -1
  220. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
  221. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +82 -189
  222. data/bundler/lib/bundler/vendor/thor/LICENSE.md +20 -0
  223. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
  224. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +9 -7
  225. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -2
  226. data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +7 -3
  227. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
  228. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +6 -0
  229. data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +10 -5
  230. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +5 -1
  231. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +28 -9
  232. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +27 -6
  233. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +5 -1
  234. data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
  235. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
  236. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  237. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +5 -13
  238. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
  239. data/bundler/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
  240. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +452 -0
  241. data/bundler/lib/bundler/vendor/uri/LICENSE.txt +22 -0
  242. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +17 -80
  243. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +0 -1
  244. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +5 -6
  245. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +0 -1
  246. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +0 -1
  247. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
  248. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +0 -1
  249. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +1 -14
  250. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +1 -12
  251. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  252. data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +84 -0
  253. data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +22 -0
  254. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +0 -1
  255. data/bundler/lib/bundler/vendored_persistent.rb +0 -7
  256. data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
  257. data/bundler/lib/bundler/vendored_tsort.rb +4 -0
  258. data/bundler/lib/bundler/version.rb +1 -1
  259. data/bundler/lib/bundler/worker.rb +20 -5
  260. data/bundler/lib/bundler/yaml_serializer.rb +1 -1
  261. data/bundler/lib/bundler.rb +79 -47
  262. data/hide_lib_for_update/note.txt +0 -4
  263. data/lib/rubygems/available_set.rb +7 -9
  264. data/lib/rubygems/basic_specification.rb +23 -21
  265. data/lib/rubygems/bundler_version_finder.rb +26 -53
  266. data/lib/rubygems/command.rb +48 -45
  267. data/lib/rubygems/command_manager.rb +20 -14
  268. data/lib/rubygems/commands/build_command.rb +47 -27
  269. data/lib/rubygems/commands/cert_command.rb +78 -75
  270. data/lib/rubygems/commands/check_command.rb +20 -22
  271. data/lib/rubygems/commands/cleanup_command.rb +30 -26
  272. data/lib/rubygems/commands/contents_command.rb +16 -18
  273. data/lib/rubygems/commands/dependency_command.rb +39 -51
  274. data/lib/rubygems/commands/environment_command.rb +11 -10
  275. data/lib/rubygems/commands/fetch_command.rb +33 -16
  276. data/lib/rubygems/commands/generate_index_command.rb +17 -19
  277. data/lib/rubygems/commands/help_command.rb +6 -6
  278. data/lib/rubygems/commands/info_command.rb +10 -7
  279. data/lib/rubygems/commands/install_command.rb +29 -27
  280. data/lib/rubygems/commands/list_command.rb +9 -8
  281. data/lib/rubygems/commands/lock_command.rb +5 -7
  282. data/lib/rubygems/commands/mirror_command.rb +3 -5
  283. data/lib/rubygems/commands/open_command.rb +10 -14
  284. data/lib/rubygems/commands/outdated_command.rb +5 -7
  285. data/lib/rubygems/commands/owner_command.rb +26 -16
  286. data/lib/rubygems/commands/pristine_command.rb +61 -49
  287. data/lib/rubygems/commands/push_command.rb +22 -59
  288. data/lib/rubygems/commands/query_command.rb +21 -351
  289. data/lib/rubygems/commands/rdoc_command.rb +23 -25
  290. data/lib/rubygems/commands/search_command.rb +8 -8
  291. data/lib/rubygems/commands/server_command.rb +16 -77
  292. data/lib/rubygems/commands/setup_command.rb +255 -229
  293. data/lib/rubygems/commands/signin_command.rb +9 -11
  294. data/lib/rubygems/commands/signout_command.rb +7 -9
  295. data/lib/rubygems/commands/sources_command.rb +27 -25
  296. data/lib/rubygems/commands/specification_command.rb +25 -21
  297. data/lib/rubygems/commands/stale_command.rb +3 -5
  298. data/lib/rubygems/commands/uninstall_command.rb +41 -43
  299. data/lib/rubygems/commands/unpack_command.rb +13 -15
  300. data/lib/rubygems/commands/update_command.rb +132 -74
  301. data/lib/rubygems/commands/which_command.rb +7 -9
  302. data/lib/rubygems/commands/yank_command.rb +16 -19
  303. data/lib/rubygems/compatibility.rb +4 -2
  304. data/lib/rubygems/config_file.rb +42 -26
  305. data/lib/rubygems/core_ext/kernel_gem.rb +1 -1
  306. data/lib/rubygems/core_ext/kernel_require.rb +6 -3
  307. data/lib/rubygems/core_ext/kernel_warn.rb +12 -13
  308. data/lib/rubygems/core_ext/tcpsocket_init.rb +52 -0
  309. data/lib/rubygems/defaults.rb +108 -32
  310. data/lib/rubygems/dependency.rb +21 -22
  311. data/lib/rubygems/dependency_installer.rb +19 -91
  312. data/lib/rubygems/dependency_list.rb +13 -15
  313. data/lib/rubygems/deprecate.rb +102 -8
  314. data/lib/rubygems/doctor.rb +22 -22
  315. data/lib/rubygems/errors.rb +6 -21
  316. data/lib/rubygems/exceptions.rb +33 -34
  317. data/lib/rubygems/ext/build_error.rb +2 -0
  318. data/lib/rubygems/ext/builder.rb +48 -54
  319. data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +23 -0
  320. data/lib/rubygems/ext/cargo_builder.rb +321 -0
  321. data/lib/rubygems/ext/cmake_builder.rb +6 -9
  322. data/lib/rubygems/ext/configure_builder.rb +5 -8
  323. data/lib/rubygems/ext/ext_conf_builder.rb +42 -66
  324. data/lib/rubygems/ext/rake_builder.rb +7 -10
  325. data/lib/rubygems/ext.rb +7 -6
  326. data/lib/rubygems/gem_runner.rb +15 -26
  327. data/lib/rubygems/gemcutter_utilities.rb +153 -32
  328. data/lib/rubygems/indexer.rb +30 -49
  329. data/lib/rubygems/install_default_message.rb +2 -2
  330. data/lib/rubygems/install_message.rb +2 -2
  331. data/lib/rubygems/install_update_options.rb +73 -64
  332. data/lib/rubygems/installer.rb +194 -151
  333. data/lib/rubygems/installer_uninstaller_utils.rb +29 -0
  334. data/lib/rubygems/local_remote_options.rb +22 -24
  335. data/lib/rubygems/mock_gem_ui.rb +2 -8
  336. data/lib/rubygems/name_tuple.rb +9 -14
  337. data/lib/rubygems/openssl.rb +7 -0
  338. data/lib/rubygems/optparse/.document +1 -0
  339. data/lib/rubygems/optparse/COPYING +56 -0
  340. data/lib/rubygems/optparse/lib/optionparser.rb +2 -0
  341. data/lib/rubygems/optparse/lib/optparse/ac.rb +54 -0
  342. data/lib/rubygems/optparse/lib/optparse/date.rb +18 -0
  343. data/lib/rubygems/optparse/lib/optparse/kwargs.rb +22 -0
  344. data/lib/rubygems/optparse/lib/optparse/shellwords.rb +7 -0
  345. data/lib/rubygems/optparse/lib/optparse/time.rb +11 -0
  346. data/lib/rubygems/optparse/lib/optparse/uri.rb +7 -0
  347. data/lib/rubygems/optparse/lib/optparse/version.rb +71 -0
  348. data/lib/rubygems/optparse/lib/optparse.rb +2303 -0
  349. data/lib/rubygems/optparse.rb +3 -0
  350. data/lib/rubygems/package/digest_io.rb +0 -2
  351. data/lib/rubygems/package/file_source.rb +2 -4
  352. data/lib/rubygems/package/io_source.rb +4 -2
  353. data/lib/rubygems/package/old.rb +9 -11
  354. data/lib/rubygems/package/tar_header.rb +54 -56
  355. data/lib/rubygems/package/tar_reader/entry.rb +2 -5
  356. data/lib/rubygems/package/tar_reader.rb +1 -4
  357. data/lib/rubygems/package/tar_writer.rb +8 -18
  358. data/lib/rubygems/package.rb +101 -117
  359. data/lib/rubygems/package_task.rb +5 -11
  360. data/lib/rubygems/path_support.rb +2 -9
  361. data/lib/rubygems/platform.rb +101 -76
  362. data/lib/rubygems/psych_tree.rb +1 -3
  363. data/lib/rubygems/query_utils.rb +351 -0
  364. data/lib/rubygems/rdoc.rb +2 -14
  365. data/lib/rubygems/remote_fetcher.rb +48 -74
  366. data/lib/rubygems/request/connection_pools.rb +6 -10
  367. data/lib/rubygems/request/http_pool.rb +2 -4
  368. data/lib/rubygems/request/https_pool.rb +0 -2
  369. data/lib/rubygems/request.rb +26 -31
  370. data/lib/rubygems/request_set/gem_dependency_api.rb +23 -25
  371. data/lib/rubygems/request_set/lockfile/parser.rb +26 -28
  372. data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -7
  373. data/lib/rubygems/request_set/lockfile.rb +17 -21
  374. data/lib/rubygems/request_set.rb +27 -40
  375. data/lib/rubygems/requirement.rb +28 -48
  376. data/lib/rubygems/resolver/activation_request.rb +12 -6
  377. data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
  378. data/lib/rubygems/resolver/api_set.rb +32 -25
  379. data/lib/rubygems/resolver/api_specification.rb +29 -15
  380. data/lib/rubygems/resolver/best_set.rb +7 -9
  381. data/lib/rubygems/resolver/composed_set.rb +3 -5
  382. data/lib/rubygems/resolver/conflict.rb +12 -14
  383. data/lib/rubygems/resolver/current_set.rb +0 -2
  384. data/lib/rubygems/resolver/dependency_request.rb +3 -5
  385. data/lib/rubygems/resolver/git_set.rb +2 -4
  386. data/lib/rubygems/resolver/git_specification.rb +6 -8
  387. data/lib/rubygems/resolver/index_set.rb +4 -6
  388. data/lib/rubygems/resolver/index_specification.rb +38 -7
  389. data/lib/rubygems/resolver/installed_specification.rb +4 -6
  390. data/lib/rubygems/resolver/installer_set.rb +66 -24
  391. data/lib/rubygems/resolver/local_specification.rb +2 -4
  392. data/lib/rubygems/resolver/lock_set.rb +6 -8
  393. data/lib/rubygems/resolver/lock_specification.rb +4 -6
  394. data/lib/rubygems/resolver/molinillo/LICENSE +9 -0
  395. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
  396. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +8 -0
  397. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
  398. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
  399. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
  400. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
  401. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
  402. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
  403. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
  404. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
  405. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +51 -12
  406. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +41 -8
  407. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +76 -8
  408. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
  409. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +13 -1
  410. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
  411. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +510 -165
  412. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
  413. data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
  414. data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
  415. data/lib/rubygems/resolver/molinillo.rb +1 -1
  416. data/lib/rubygems/resolver/requirement_list.rb +0 -2
  417. data/lib/rubygems/resolver/set.rb +0 -3
  418. data/lib/rubygems/resolver/source_set.rb +0 -2
  419. data/lib/rubygems/resolver/spec_specification.rb +14 -2
  420. data/lib/rubygems/resolver/specification.rb +14 -4
  421. data/lib/rubygems/resolver/stats.rb +0 -2
  422. data/lib/rubygems/resolver/vendor_set.rb +1 -3
  423. data/lib/rubygems/resolver/vendor_specification.rb +3 -5
  424. data/lib/rubygems/resolver.rb +53 -51
  425. data/lib/rubygems/s3_uri_signer.rb +7 -15
  426. data/lib/rubygems/safe_yaml.rb +14 -16
  427. data/lib/rubygems/security/policies.rb +11 -11
  428. data/lib/rubygems/security/policy.rb +25 -29
  429. data/lib/rubygems/security/signer.rb +13 -16
  430. data/lib/rubygems/security/trust_dir.rb +4 -5
  431. data/lib/rubygems/security.rb +103 -69
  432. data/lib/rubygems/security_option.rb +7 -7
  433. data/lib/rubygems/source/git.rb +30 -30
  434. data/lib/rubygems/source/installed.rb +1 -3
  435. data/lib/rubygems/source/local.rb +4 -6
  436. data/lib/rubygems/source/lock.rb +0 -2
  437. data/lib/rubygems/source/specific_file.rb +1 -3
  438. data/lib/rubygems/source/vendor.rb +0 -2
  439. data/lib/rubygems/source.rb +44 -38
  440. data/lib/rubygems/source_list.rb +9 -16
  441. data/lib/rubygems/spec_fetcher.rb +49 -48
  442. data/lib/rubygems/specification.rb +338 -295
  443. data/lib/rubygems/specification_policy.rb +112 -61
  444. data/lib/rubygems/stub_specification.rb +21 -28
  445. data/lib/rubygems/text.rb +21 -20
  446. data/lib/rubygems/tsort/.document +1 -0
  447. data/lib/rubygems/tsort/LICENSE.txt +22 -0
  448. data/lib/rubygems/tsort/lib/tsort.rb +454 -0
  449. data/lib/rubygems/tsort.rb +3 -0
  450. data/lib/rubygems/uninstaller.rb +98 -45
  451. data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
  452. data/lib/rubygems/uri.rb +126 -0
  453. data/lib/rubygems/uri_formatter.rb +2 -3
  454. data/lib/rubygems/user_interaction.rb +43 -54
  455. data/lib/rubygems/util/licenses.rb +115 -10
  456. data/lib/rubygems/util/list.rb +0 -2
  457. data/lib/rubygems/util.rb +18 -12
  458. data/lib/rubygems/validator.rb +6 -8
  459. data/lib/rubygems/version.rb +29 -20
  460. data/lib/rubygems/version_option.rb +11 -5
  461. data/lib/rubygems.rb +192 -289
  462. data/rubygems-update.gemspec +4 -4
  463. data/setup.rb +11 -22
  464. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  465. data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
  466. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  467. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  468. data/test/rubygems/encrypted_private_key.pem +26 -26
  469. data/{lib/rubygems/test_case.rb → test/rubygems/helper.rb} +380 -314
  470. data/{lib → test}/rubygems/installer_test_case.rb +38 -24
  471. data/{lib → test}/rubygems/package/tar_test_case.rb +4 -6
  472. data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
  473. data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
  474. data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
  475. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
  476. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
  477. data/test/rubygems/private_ec_key.pem +9 -0
  478. data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
  479. data/test/rubygems/rubygems_plugin.rb +2 -4
  480. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
  481. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +4 -6
  482. data/test/rubygems/test_bundled_ca.rb +43 -50
  483. data/test/rubygems/test_config.rb +5 -7
  484. data/test/rubygems/test_deprecate.rb +87 -10
  485. data/test/rubygems/test_exit.rb +11 -0
  486. data/test/rubygems/test_gem.rb +719 -639
  487. data/test/rubygems/test_gem_available_set.rb +24 -26
  488. data/test/rubygems/test_gem_bundler_version_finder.rb +37 -44
  489. data/test/rubygems/test_gem_command.rb +78 -49
  490. data/test/rubygems/test_gem_command_manager.rb +98 -35
  491. data/test/rubygems/test_gem_commands_build_command.rb +275 -57
  492. data/test/rubygems/test_gem_commands_cert_command.rb +180 -125
  493. data/test/rubygems/test_gem_commands_check_command.rb +9 -11
  494. data/test/rubygems/test_gem_commands_cleanup_command.rb +78 -69
  495. data/test/rubygems/test_gem_commands_contents_command.rb +73 -42
  496. data/test/rubygems/test_gem_commands_dependency_command.rb +38 -40
  497. data/test/rubygems/test_gem_commands_environment_command.rb +60 -38
  498. data/test/rubygems/test_gem_commands_fetch_command.rb +163 -32
  499. data/test/rubygems/test_gem_commands_generate_index_command.rb +8 -14
  500. data/test/rubygems/test_gem_commands_help_command.rb +34 -16
  501. data/test/rubygems/test_gem_commands_info_command.rb +33 -9
  502. data/test/rubygems/test_gem_commands_install_command.rb +401 -198
  503. data/test/rubygems/test_gem_commands_list_command.rb +5 -7
  504. data/test/rubygems/test_gem_commands_lock_command.rb +11 -13
  505. data/test/rubygems/test_gem_commands_mirror.rb +3 -5
  506. data/test/rubygems/test_gem_commands_open_command.rb +16 -19
  507. data/test/rubygems/test_gem_commands_outdated_command.rb +23 -7
  508. data/test/rubygems/test_gem_commands_owner_command.rb +100 -46
  509. data/test/rubygems/test_gem_commands_pristine_command.rb +131 -99
  510. data/test/rubygems/test_gem_commands_push_command.rb +134 -66
  511. data/test/rubygems/test_gem_commands_query_command.rb +91 -91
  512. data/test/rubygems/test_gem_commands_search_command.rb +2 -4
  513. data/test/rubygems/test_gem_commands_server_command.rb +6 -50
  514. data/test/rubygems/test_gem_commands_setup_command.rb +288 -179
  515. data/test/rubygems/test_gem_commands_signin_command.rb +162 -28
  516. data/test/rubygems/test_gem_commands_signout_command.rb +3 -10
  517. data/test/rubygems/test_gem_commands_sources_command.rb +139 -32
  518. data/test/rubygems/test_gem_commands_specification_command.rb +81 -55
  519. data/test/rubygems/test_gem_commands_stale_command.rb +4 -6
  520. data/test/rubygems/test_gem_commands_uninstall_command.rb +80 -82
  521. data/test/rubygems/test_gem_commands_unpack_command.rb +32 -34
  522. data/test/rubygems/test_gem_commands_update_command.rb +335 -88
  523. data/test/rubygems/test_gem_commands_which_command.rb +12 -14
  524. data/test/rubygems/test_gem_commands_yank_command.rb +80 -44
  525. data/test/rubygems/test_gem_config_file.rb +114 -97
  526. data/test/rubygems/test_gem_dependency.rb +87 -87
  527. data/test/rubygems/test_gem_dependency_installer.rb +277 -391
  528. data/test/rubygems/test_gem_dependency_list.rb +57 -59
  529. data/test/rubygems/test_gem_dependency_resolution_error.rb +5 -7
  530. data/test/rubygems/test_gem_doctor.rb +73 -47
  531. data/test/rubygems/test_gem_ext_builder.rb +115 -109
  532. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +1 -0
  533. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.lock +243 -0
  534. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.toml +10 -0
  535. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb +21 -0
  536. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +10 -0
  537. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/src/lib.rs +27 -0
  538. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +1 -0
  539. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +243 -0
  540. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +10 -0
  541. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/build.rb +21 -0
  542. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +8 -0
  543. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +39 -0
  544. data/test/rubygems/test_gem_ext_cargo_builder.rb +178 -0
  545. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +33 -0
  546. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +75 -0
  547. data/test/rubygems/test_gem_ext_cmake_builder.rb +31 -38
  548. data/test/rubygems/test_gem_ext_configure_builder.rb +23 -39
  549. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +66 -82
  550. data/test/rubygems/test_gem_ext_rake_builder.rb +49 -32
  551. data/test/rubygems/test_gem_gem_runner.rb +51 -8
  552. data/test/rubygems/test_gem_gemcutter_utilities.rb +87 -76
  553. data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -6
  554. data/test/rubygems/test_gem_indexer.rb +62 -64
  555. data/test/rubygems/test_gem_install_update_options.rb +31 -21
  556. data/test/rubygems/test_gem_installer.rb +798 -491
  557. data/test/rubygems/test_gem_local_remote_options.rb +11 -13
  558. data/test/rubygems/test_gem_name_tuple.rb +4 -6
  559. data/test/rubygems/test_gem_package.rb +318 -283
  560. data/test/rubygems/test_gem_package_old.rb +18 -20
  561. data/test/rubygems/test_gem_package_tar_header.rb +64 -47
  562. data/test/rubygems/test_gem_package_tar_reader.rb +8 -10
  563. data/test/rubygems/test_gem_package_tar_reader_entry.rb +18 -20
  564. data/test/rubygems/test_gem_package_tar_writer.rb +96 -100
  565. data/test/rubygems/test_gem_package_task.rb +58 -25
  566. data/test/rubygems/test_gem_path_support.rb +15 -21
  567. data/test/rubygems/test_gem_platform.rb +354 -201
  568. data/test/rubygems/test_gem_rdoc.rb +19 -21
  569. data/test/rubygems/test_gem_remote_fetcher.rb +376 -337
  570. data/test/rubygems/test_gem_request.rb +114 -86
  571. data/test/rubygems/test_gem_request_connection_pools.rb +30 -34
  572. data/test/rubygems/test_gem_request_set.rb +123 -124
  573. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +222 -226
  574. data/test/rubygems/test_gem_request_set_lockfile.rb +93 -95
  575. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +68 -70
  576. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +136 -138
  577. data/test/rubygems/test_gem_requirement.rb +133 -54
  578. data/test/rubygems/test_gem_resolver.rb +149 -117
  579. data/test/rubygems/test_gem_resolver_activation_request.rb +6 -8
  580. data/test/rubygems/test_gem_resolver_api_set.rb +79 -78
  581. data/test/rubygems/test_gem_resolver_api_specification.rb +47 -49
  582. data/test/rubygems/test_gem_resolver_best_set.rb +43 -22
  583. data/test/rubygems/test_gem_resolver_composed_set.rb +1 -3
  584. data/test/rubygems/test_gem_resolver_conflict.rb +12 -14
  585. data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -17
  586. data/test/rubygems/test_gem_resolver_git_set.rb +22 -24
  587. data/test/rubygems/test_gem_resolver_git_specification.rb +22 -23
  588. data/test/rubygems/test_gem_resolver_index_set.rb +14 -16
  589. data/test/rubygems/test_gem_resolver_index_specification.rb +16 -18
  590. data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -7
  591. data/test/rubygems/test_gem_resolver_installer_set.rb +104 -44
  592. data/test/rubygems/test_gem_resolver_local_specification.rb +7 -9
  593. data/test/rubygems/test_gem_resolver_lock_set.rb +15 -17
  594. data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -19
  595. data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -3
  596. data/test/rubygems/test_gem_resolver_specification.rb +8 -12
  597. data/test/rubygems/test_gem_resolver_vendor_set.rb +9 -11
  598. data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -12
  599. data/test/rubygems/test_gem_security.rb +104 -78
  600. data/test/rubygems/test_gem_security_policy.rb +92 -97
  601. data/test/rubygems/test_gem_security_signer.rb +45 -47
  602. data/test/rubygems/test_gem_security_trust_dir.rb +12 -14
  603. data/test/rubygems/test_gem_silent_ui.rb +46 -42
  604. data/test/rubygems/test_gem_source.rb +53 -52
  605. data/test/rubygems/test_gem_source_fetch_problem.rb +16 -8
  606. data/test/rubygems/test_gem_source_git.rb +69 -69
  607. data/test/rubygems/test_gem_source_installed.rb +16 -18
  608. data/test/rubygems/test_gem_source_list.rb +5 -6
  609. data/test/rubygems/test_gem_source_local.rb +15 -17
  610. data/test/rubygems/test_gem_source_lock.rb +31 -33
  611. data/test/rubygems/test_gem_source_specific_file.rb +18 -20
  612. data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
  613. data/test/rubygems/test_gem_source_vendor.rb +13 -15
  614. data/test/rubygems/test_gem_spec_fetcher.rb +74 -67
  615. data/test/rubygems/test_gem_specification.rb +888 -1024
  616. data/test/rubygems/test_gem_stream_ui.rb +23 -23
  617. data/test/rubygems/test_gem_stub_specification.rb +39 -57
  618. data/test/rubygems/test_gem_text.rb +8 -4
  619. data/test/rubygems/test_gem_uninstaller.rb +233 -104
  620. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -5
  621. data/test/rubygems/test_gem_uri.rb +39 -0
  622. data/test/rubygems/test_gem_uri_formatter.rb +14 -16
  623. data/test/rubygems/test_gem_util.rb +37 -35
  624. data/test/rubygems/test_gem_validator.rb +10 -12
  625. data/test/rubygems/test_gem_version.rb +31 -31
  626. data/test/rubygems/test_gem_version_option.rb +16 -18
  627. data/test/rubygems/test_kernel.rb +46 -60
  628. data/test/rubygems/test_project_sanity.rb +8 -3
  629. data/test/rubygems/test_remote_fetch_error.rb +7 -9
  630. data/test/rubygems/test_require.rb +240 -167
  631. data/test/rubygems/test_rubygems.rb +74 -0
  632. data/{lib/rubygems/test_utilities.rb → test/rubygems/utilities.rb} +30 -39
  633. data/test/test_changelog_generator.rb +17 -0
  634. metadata +158 -146
  635. data/.bundle/config +0 -2
  636. data/.rubocop.yml +0 -91
  637. data/Gemfile +0 -8
  638. data/Gemfile.lock +0 -43
  639. data/Rakefile +0 -428
  640. data/bundler/CODE_OF_CONDUCT.md +0 -136
  641. data/bundler/lib/bundler/gemdeps.rb +0 -29
  642. data/bundler/lib/bundler/psyched_yaml.rb +0 -37
  643. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +0 -66
  644. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
  645. data/bundler/man/bundle-add.1.txt +0 -58
  646. data/bundler/man/bundle-binstubs.1.txt +0 -48
  647. data/bundler/man/bundle-cache.1.txt +0 -78
  648. data/bundler/man/bundle-check.1.txt +0 -33
  649. data/bundler/man/bundle-clean.1.txt +0 -26
  650. data/bundler/man/bundle-config.1.txt +0 -528
  651. data/bundler/man/bundle-doctor.1.txt +0 -44
  652. data/bundler/man/bundle-exec.1.txt +0 -178
  653. data/bundler/man/bundle-gem.1.txt +0 -91
  654. data/bundler/man/bundle-info.1.txt +0 -21
  655. data/bundler/man/bundle-init.1.txt +0 -34
  656. data/bundler/man/bundle-inject.1.txt +0 -32
  657. data/bundler/man/bundle-install.1.txt +0 -401
  658. data/bundler/man/bundle-list.1.txt +0 -43
  659. data/bundler/man/bundle-lock.1.txt +0 -93
  660. data/bundler/man/bundle-open.1.txt +0 -29
  661. data/bundler/man/bundle-outdated.1.txt +0 -131
  662. data/bundler/man/bundle-platform.1.txt +0 -57
  663. data/bundler/man/bundle-pristine.1.txt +0 -44
  664. data/bundler/man/bundle-remove.1.txt +0 -34
  665. data/bundler/man/bundle-show.1.txt +0 -27
  666. data/bundler/man/bundle-update.1.txt +0 -390
  667. data/bundler/man/bundle-viz.1.txt +0 -39
  668. data/bundler/man/bundle.1.txt +0 -116
  669. data/bundler/man/gemfile.5.txt +0 -649
  670. data/lib/rubygems/psych_additions.rb +0 -10
  671. data/lib/rubygems/server.rb +0 -879
  672. data/lib/rubygems/source_local.rb +0 -7
  673. data/lib/rubygems/source_specific_file.rb +0 -6
  674. data/lib/rubygems/syck_hack.rb +0 -79
  675. data/lib/rubygems/uri_parser.rb +0 -36
  676. data/lib/rubygems/uri_parsing.rb +0 -23
  677. data/lib/ubygems.rb +0 -14
  678. data/test/rubygems/bogussources.rb +0 -9
  679. data/test/rubygems/data/null-type.gemspec.rz +0 -0
  680. data/test/rubygems/test_gem_server.rb +0 -612
  681. data/tmp/.keep +0 -0
  682. data/util/CL2notes +0 -55
  683. data/util/bisect +0 -10
  684. data/util/ci.sh +0 -62
  685. data/util/cops/deprecations.rb +0 -52
  686. data/util/create_certs.rb +0 -171
  687. data/util/create_certs.sh +0 -27
  688. data/util/create_encrypted_key.rb +0 -16
  689. data/util/generate_spdx_license_list.rb +0 -63
  690. data/util/patch_with_prs.rb +0 -77
  691. data/util/rubocop +0 -8
  692. data/util/update_bundled_ca_certificates.rb +0 -137
  693. data/util/update_changelog.rb +0 -64
  694. /data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
  695. /data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
  696. /data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
  697. /data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
  698. /data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +0 -0
  699. /data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
  700. /data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
  701. /data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
  702. /data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
  703. /data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
@@ -1,9 +1,8 @@
1
1
  # frozen_string_literal: true
2
- require 'rubygems/test_case'
3
- require 'rubygems/commands/update_command'
2
+ require_relative "helper"
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
@@ -13,20 +12,20 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
13
12
  @cmd.options[:document] = []
14
13
 
15
14
  @specs = spec_fetcher do |fetcher|
16
- fetcher.download 'a', 1
17
- fetcher.download 'a', 2
18
- fetcher.download 'a', '3.a'
15
+ fetcher.download "a", 1
16
+ fetcher.download "a", 2
17
+ fetcher.download "a", "3.a"
19
18
  end
20
19
 
21
- @a1_path = @specs['a-1'].cache_file
22
- @a2_path = @specs['a-1'].cache_file
23
- @a3a_path = @specs['a-3.a'].cache_file
20
+ @a1_path = @specs["a-1"].cache_file
21
+ @a2_path = @specs["a-1"].cache_file
22
+ @a3a_path = @specs["a-3.a"].cache_file
24
23
  end
25
24
 
26
25
  def test_execute
27
26
  spec_fetcher do |fetcher|
28
- fetcher.download 'a', 2
29
- fetcher.spec 'a', 1
27
+ fetcher.download "a", 2
28
+ fetcher.spec "a", 1
30
29
  end
31
30
 
32
31
  @cmd.options[:args] = []
@@ -44,11 +43,11 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
44
43
 
45
44
  def test_execute_multiple
46
45
  spec_fetcher do |fetcher|
47
- fetcher.download 'a', 2
48
- fetcher.download 'ab', 2
46
+ fetcher.download "a", 2
47
+ fetcher.download "ab", 2
49
48
 
50
- fetcher.spec 'a', 1
51
- fetcher.spec 'ab', 1
49
+ fetcher.spec "a", 1
50
+ fetcher.spec "ab", 1
52
51
  end
53
52
 
54
53
  @cmd.options[:args] = %w[a]
@@ -66,7 +65,7 @@ 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|
68
+ fetcher.download "rubygems-update", 9 do |s|
70
69
  s.files = %w[setup.rb]
71
70
  end
72
71
  end
@@ -88,7 +87,7 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
88
87
 
89
88
  def test_execute_system_at_latest
90
89
  spec_fetcher do |fetcher|
91
- fetcher.download 'rubygems-update', Gem::VERSION do |s|
90
+ fetcher.download "rubygems-update", Gem::VERSION do |s|
92
91
  s.files = %w[setup.rb]
93
92
  end
94
93
  end
@@ -96,7 +95,7 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
96
95
  @cmd.options[:args] = []
97
96
  @cmd.options[:system] = true
98
97
 
99
- assert_raises Gem::MockGemUi::SystemExitException do
98
+ assert_raise Gem::MockGemUi::SystemExitException do
100
99
  use_ui @ui do
101
100
  @cmd.execute
102
101
  end
@@ -107,17 +106,76 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
107
106
  assert_empty out
108
107
  end
109
108
 
109
+ def test_execute_system_when_latest_does_not_support_your_ruby
110
+ spec_fetcher do |fetcher|
111
+ fetcher.download "rubygems-update", 9 do |s|
112
+ s.files = %w[setup.rb]
113
+ s.required_ruby_version = "> 9"
114
+ end
115
+ end
116
+
117
+ @cmd.options[:args] = []
118
+ @cmd.options[:system] = true
119
+
120
+ use_ui @ui do
121
+ @cmd.execute
122
+ end
123
+
124
+ out = @ui.output.split "\n"
125
+ assert_equal "Updating rubygems-update", out.shift
126
+ assert_empty out
127
+
128
+ err = @ui.error.split "\n"
129
+ assert_equal "ERROR: Error installing rubygems-update:", err.shift
130
+ assert_equal "\trubygems-update-9 requires Ruby version > 9. The current ruby version is #{Gem.ruby_version}.", err.shift
131
+ assert_empty err
132
+ end
133
+
110
134
  def test_execute_system_multiple
111
135
  spec_fetcher do |fetcher|
112
- fetcher.download 'rubygems-update', 8 do |s|
136
+ fetcher.download "rubygems-update", 8 do |s|
137
+ s.files = %w[setup.rb]
138
+ end
139
+
140
+ fetcher.download "rubygems-update", 9 do |s|
141
+ s.files = %w[setup.rb]
142
+ end
143
+ end
144
+
145
+ @cmd.options[:args] = []
146
+ @cmd.options[:system] = true
147
+
148
+ use_ui @ui do
149
+ @cmd.execute
150
+ end
151
+
152
+ out = @ui.output.split "\n"
153
+ assert_equal "Updating rubygems-update", out.shift
154
+ assert_equal "Installing RubyGems 9", out.shift
155
+ assert_equal "RubyGems system software updated", out.shift
156
+
157
+ assert_empty out
158
+ end
159
+
160
+ def test_execute_system_update_installed
161
+ spec_fetcher do |fetcher|
162
+ fetcher.download "rubygems-update", 8 do |s|
113
163
  s.files = %w[setup.rb]
114
164
  end
165
+ end
166
+
167
+ @cmd.options[:args] = []
168
+ @cmd.options[:system] = true
169
+
170
+ @cmd.execute
115
171
 
116
- fetcher.download 'rubygems-update', 9 do |s|
172
+ spec_fetcher do |fetcher|
173
+ fetcher.download "rubygems-update", 9 do |s|
117
174
  s.files = %w[setup.rb]
118
175
  end
119
176
  end
120
177
 
178
+ @cmd = Gem::Commands::UpdateCommand.new
121
179
  @cmd.options[:args] = []
122
180
  @cmd.options[:system] = true
123
181
 
@@ -133,13 +191,44 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
133
191
  assert_empty out
134
192
  end
135
193
 
194
+ def test_execute_system_update_installed_in_non_default_gem_path
195
+ rubygems_update_spec = quick_gem "rubygems-update", 9 do |s|
196
+ write_file File.join(@tempdir, "setup.rb")
197
+
198
+ s.files += %w[setup.rb]
199
+ end
200
+
201
+ util_setup_spec_fetcher rubygems_update_spec
202
+
203
+ rubygems_update_package = Gem::Package.build rubygems_update_spec
204
+
205
+ gemhome2 = "#{@gemhome}2"
206
+
207
+ Gem::Installer.at(rubygems_update_package, :install_dir => gemhome2).install
208
+
209
+ Gem.use_paths @gemhome, [gemhome2, @gemhome]
210
+
211
+ @cmd.options[:args] = []
212
+ @cmd.options[:system] = true
213
+
214
+ use_ui @ui do
215
+ @cmd.execute
216
+ end
217
+
218
+ out = @ui.output.split "\n"
219
+ assert_equal "Installing RubyGems 9", out.shift
220
+ assert_equal "RubyGems system software updated", out.shift
221
+
222
+ assert_empty out
223
+ end
224
+
136
225
  def test_execute_system_specific
137
226
  spec_fetcher do |fetcher|
138
- fetcher.download 'rubygems-update', 8 do |s|
227
+ fetcher.download "rubygems-update", 8 do |s|
139
228
  s.files = %w[setup.rb]
140
229
  end
141
230
 
142
- fetcher.download 'rubygems-update', 9 do |s|
231
+ fetcher.download "rubygems-update", 9 do |s|
143
232
  s.files = %w[setup.rb]
144
233
  end
145
234
  end
@@ -159,13 +248,98 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
159
248
  assert_empty out
160
249
  end
161
250
 
251
+ def test_execute_system_specific_older_than_minimum_supported_rubygems
252
+ spec_fetcher do |fetcher|
253
+ fetcher.download "rubygems-update", "2.5.1" do |s|
254
+ s.files = %w[setup.rb]
255
+ end
256
+ end
257
+
258
+ @cmd.options[:args] = []
259
+ @cmd.options[:system] = "2.5.1"
260
+
261
+ oldest_version_mod = Module.new do
262
+ def oldest_supported_version
263
+ Gem::Version.new("2.5.2")
264
+ end
265
+ private :oldest_supported_version
266
+ end
267
+
268
+ @cmd.extend(oldest_version_mod)
269
+
270
+ assert_raise Gem::MockGemUi::TermError do
271
+ use_ui @ui do
272
+ @cmd.execute
273
+ end
274
+ end
275
+
276
+ assert_empty @ui.output
277
+ assert_equal "ERROR: rubygems 2.5.1 is not supported on #{RUBY_VERSION}. The oldest version supported by this ruby is 2.5.2\n", @ui.error
278
+ end
279
+
280
+ def test_execute_system_specific_older_than_3_2_removes_plugins_dir
281
+ spec_fetcher do |fetcher|
282
+ fetcher.download "rubygems-update", 3.1 do |s|
283
+ s.files = %w[setup.rb]
284
+ end
285
+ end
286
+
287
+ oldest_version_mod = Module.new do
288
+ def oldest_supported_version
289
+ Gem::Version.new("2.5.2")
290
+ end
291
+ private :oldest_supported_version
292
+ end
293
+
294
+ @cmd.extend(oldest_version_mod)
295
+
296
+ @cmd.options[:args] = []
297
+ @cmd.options[:system] = "3.1"
298
+
299
+ FileUtils.mkdir_p Gem.plugindir
300
+ write_file File.join(Gem.plugindir, "a_plugin.rb")
301
+
302
+ @cmd.execute
303
+
304
+ assert_path_not_exist Gem.plugindir, "Plugins folder not removed when updating rubygems to pre-3.2"
305
+ end
306
+
307
+ def test_execute_system_specific_newer_than_or_equal_to_3_2_leaves_plugins_dir_alone
308
+ spec_fetcher do |fetcher|
309
+ fetcher.download "rubygems-update", "3.2.a" do |s|
310
+ s.files = %w[setup.rb]
311
+ end
312
+ end
313
+
314
+ oldest_version_mod = Module.new do
315
+ def oldest_supported_version
316
+ Gem::Version.new("2.5.2")
317
+ end
318
+ private :oldest_supported_version
319
+ end
320
+
321
+ @cmd.extend(oldest_version_mod)
322
+
323
+ @cmd.options[:args] = []
324
+ @cmd.options[:system] = "3.2.a"
325
+
326
+ FileUtils.mkdir_p Gem.plugindir
327
+ plugin_file = File.join(Gem.plugindir, "a_plugin.rb")
328
+ write_file plugin_file
329
+
330
+ @cmd.execute
331
+
332
+ assert_path_exist Gem.plugindir, "Plugin folder removed when updating rubygems to post-3.2"
333
+ assert_path_exist plugin_file, "Plugin removed when updating rubygems to post-3.2"
334
+ end
335
+
162
336
  def test_execute_system_specifically_to_latest_version
163
337
  spec_fetcher do |fetcher|
164
- fetcher.download 'rubygems-update', 8 do |s|
338
+ fetcher.download "rubygems-update", 8 do |s|
165
339
  s.files = %w[setup.rb]
166
340
  end
167
341
 
168
- fetcher.download 'rubygems-update', 9 do |s|
342
+ fetcher.download "rubygems-update", 9 do |s|
169
343
  s.files = %w[setup.rb]
170
344
  end
171
345
  end
@@ -189,7 +363,7 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
189
363
  @cmd.options[:args] = %w[gem]
190
364
  @cmd.options[:system] = true
191
365
 
192
- assert_raises Gem::MockGemUi::TermError do
366
+ assert_raise Gem::MockGemUi::TermError do
193
367
  use_ui @ui do
194
368
  @cmd.execute
195
369
  end
@@ -200,6 +374,53 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
200
374
  @ui.error
201
375
  end
202
376
 
377
+ def test_execute_system_with_disabled_update
378
+ old_disable_system_update_message = Gem.disable_system_update_message
379
+ Gem.disable_system_update_message = "Please use package manager instead."
380
+
381
+ @cmd.options[:args] = []
382
+ @cmd.options[:system] = true
383
+
384
+ assert_raise Gem::MockGemUi::TermError do
385
+ use_ui @ui do
386
+ @cmd.execute
387
+ end
388
+ end
389
+
390
+ assert_empty @ui.output
391
+ assert_equal "ERROR: Please use package manager instead.\n", @ui.error
392
+ ensure
393
+ Gem.disable_system_update_message = old_disable_system_update_message
394
+ end
395
+
396
+ # The other style of `gem update --system` tests don't actually run
397
+ # setup.rb, so we just check that setup.rb gets the `--silent` flag.
398
+ def test_execute_system_silent_passed_to_setuprb
399
+ @cmd.options[:args] = []
400
+ @cmd.options[:system] = true
401
+ @cmd.options[:silent] = true
402
+
403
+ assert_equal true, @cmd.update_rubygems_arguments.include?("--silent")
404
+ end
405
+
406
+ def test_execute_system_silent
407
+ spec_fetcher do |fetcher|
408
+ fetcher.download "rubygems-update", 9 do |s|
409
+ s.files = %w[setup.rb]
410
+ end
411
+ end
412
+
413
+ @cmd.options[:args] = []
414
+ @cmd.options[:system] = true
415
+ @cmd.options[:silent] = true
416
+
417
+ use_ui @ui do
418
+ @cmd.execute
419
+ end
420
+
421
+ assert_empty @ui.output
422
+ end
423
+
203
424
  # before:
204
425
  # a1 -> c1.2
205
426
  # after:
@@ -208,12 +429,12 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
208
429
 
209
430
  def test_execute_dependencies
210
431
  spec_fetcher do |fetcher|
211
- fetcher.download 'a', 2, 'b' => 2, 'c' => 2
212
- fetcher.download 'b', 2
213
- fetcher.download 'c', 2
432
+ fetcher.download "a", 2, "b" => 2, "c" => 2
433
+ fetcher.download "b", 2
434
+ fetcher.download "c", 2
214
435
 
215
- fetcher.spec 'a', 1, 'c' => '1.2'
216
- fetcher.spec 'c', '1.2'
436
+ fetcher.spec "a", 1, "c" => "1.2"
437
+ fetcher.spec "c", "1.2"
217
438
  end
218
439
 
219
440
  Gem::Specification.reset
@@ -235,8 +456,8 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
235
456
 
236
457
  def test_execute_rdoc
237
458
  spec_fetcher do |fetcher|
238
- fetcher.download 'a', 2
239
- fetcher.spec 'a', 1
459
+ fetcher.download "a", 2
460
+ fetcher.spec "a", 1
240
461
  end
241
462
 
242
463
  Gem.done_installing(&Gem::RDoc.method(:generation_hook))
@@ -251,16 +472,16 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
251
472
 
252
473
  wait_for_child_process_to_exit
253
474
 
254
- a2 = @specs['a-2']
475
+ a2 = @specs["a-2"]
255
476
 
256
- assert_path_exists File.join(a2.doc_dir, 'rdoc')
477
+ assert_path_exist File.join(a2.doc_dir, "rdoc")
257
478
  end
258
479
 
259
480
  def test_execute_named
260
481
  spec_fetcher do |fetcher|
261
- fetcher.download 'a', 2
482
+ fetcher.download "a", 2
262
483
 
263
- fetcher.spec 'a', 1
484
+ fetcher.spec "a", 1
264
485
  end
265
486
 
266
487
  @cmd.options[:args] = %w[a]
@@ -279,10 +500,10 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
279
500
 
280
501
  def test_execute_named_some_up_to_date
281
502
  spec_fetcher do |fetcher|
282
- fetcher.download 'a', 2
283
- fetcher.spec 'a', 1
503
+ fetcher.download "a", 2
504
+ fetcher.spec "a", 1
284
505
 
285
- fetcher.spec 'b', 2
506
+ fetcher.spec "b", 2
286
507
  end
287
508
 
288
509
  @cmd.options[:args] = %w[a b]
@@ -302,7 +523,7 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
302
523
 
303
524
  def test_execute_named_up_to_date
304
525
  spec_fetcher do |fetcher|
305
- fetcher.spec 'a', 2
526
+ fetcher.spec "a", 2
306
527
  end
307
528
 
308
529
  @cmd.options[:args] = %w[a]
@@ -314,15 +535,16 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
314
535
  out = @ui.output.split "\n"
315
536
  assert_equal "Updating installed gems", out.shift
316
537
  assert_equal "Nothing to update", out.shift
538
+ assert_equal "Gems already up-to-date: a", out.shift
317
539
 
318
540
  assert_empty out
319
541
  end
320
542
 
321
543
  def test_execute_named_up_to_date_prerelease
322
544
  spec_fetcher do |fetcher|
323
- fetcher.download 'a', '3.a'
545
+ fetcher.download "a", "3.a"
324
546
 
325
- fetcher.gem 'a', 2
547
+ fetcher.gem "a", 2
326
548
  end
327
549
 
328
550
  @cmd.options[:args] = %w[a]
@@ -342,7 +564,7 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
342
564
 
343
565
  def test_execute_up_to_date
344
566
  spec_fetcher do |fetcher|
345
- fetcher.gem 'a', 2
567
+ fetcher.gem "a", 2
346
568
  end
347
569
 
348
570
  @cmd.options[:args] = []
@@ -359,10 +581,10 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
359
581
  end
360
582
 
361
583
  def test_execute_user_install
362
- spec_fetcher do |fetcher|
363
- fetcher.download 'a', 2
364
- fetcher.spec 'a', 1
365
- end
584
+ a = util_spec "a", 1
585
+ b = util_spec "b", 1
586
+ install_gem_user(a)
587
+ install_gem(b)
366
588
 
367
589
  @cmd.handle_options %w[--user-install]
368
590
 
@@ -373,68 +595,74 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
373
595
  installer = @cmd.installer
374
596
  user_install = installer.instance_variable_get :@user_install
375
597
 
376
- assert user_install, 'user_install must be set on the installer'
598
+ assert user_install, "user_install must be set on the installer"
599
+
600
+ out = @ui.output.split "\n"
601
+ assert_equal "Updating installed gems", out.shift
602
+ assert_equal "Updating a", out.shift
603
+ assert_equal "Gems updated: a", out.shift
604
+ assert_empty out
377
605
  end
378
606
 
379
607
  def test_fetch_remote_gems
380
608
  specs = spec_fetcher do |fetcher|
381
- fetcher.gem 'a', 1
382
- fetcher.gem 'a', 2
609
+ fetcher.gem "a", 1
610
+ fetcher.gem "a", 2
383
611
  end
384
612
 
385
613
  expected = [
386
- [Gem::NameTuple.new('a', v(2), Gem::Platform::RUBY),
614
+ [Gem::NameTuple.new("a", v(2), Gem::Platform::RUBY),
387
615
  Gem::Source.new(@gem_repo)],
388
616
  ]
389
617
 
390
- assert_equal expected, @cmd.fetch_remote_gems(specs['a-1'])
618
+ assert_equal expected, @cmd.fetch_remote_gems(specs["a-1"])
391
619
  end
392
620
 
393
621
  def test_fetch_remote_gems_error
394
622
  Gem.sources.replace %w[http://nonexistent.example]
395
623
 
396
- assert_raises Gem::RemoteFetcher::FetchError do
397
- @cmd.fetch_remote_gems @specs['a-1']
624
+ assert_raise Gem::RemoteFetcher::FetchError do
625
+ @cmd.fetch_remote_gems @specs["a-1"]
398
626
  end
399
627
  end
400
628
 
401
629
  def test_fetch_remote_gems_mismatch
402
- platform = Gem::Platform.new 'x86-freebsd9'
630
+ platform = Gem::Platform.new "x86-freebsd9"
403
631
 
404
632
  specs = spec_fetcher do |fetcher|
405
- fetcher.spec 'a', 1
406
- fetcher.spec 'a', 2
633
+ fetcher.spec "a", 1
634
+ fetcher.spec "a", 2
407
635
 
408
- fetcher.spec 'a', 2 do |s|
636
+ fetcher.spec "a", 2 do |s|
409
637
  s.platform = platform
410
638
  end
411
639
  end
412
640
 
413
641
  expected = [
414
- [Gem::NameTuple.new('a', v(2), Gem::Platform::RUBY),
642
+ [Gem::NameTuple.new("a", v(2), Gem::Platform::RUBY),
415
643
  Gem::Source.new(@gem_repo)],
416
644
  ]
417
645
 
418
- assert_equal expected, @cmd.fetch_remote_gems(specs['a-1'])
646
+ assert_equal expected, @cmd.fetch_remote_gems(specs["a-1"])
419
647
  end
420
648
 
421
649
  def test_fetch_remote_gems_prerelease
422
650
  specs = spec_fetcher do |fetcher|
423
- fetcher.gem 'a', 1
424
- fetcher.gem 'a', 2
425
- fetcher.gem 'a', '3.a'
651
+ fetcher.gem "a", 1
652
+ fetcher.gem "a", 2
653
+ fetcher.gem "a", "3.a"
426
654
  end
427
655
 
428
656
  @cmd.options[:prerelease] = true
429
657
 
430
658
  expected = [
431
- [Gem::NameTuple.new('a', v(2), Gem::Platform::RUBY),
659
+ [Gem::NameTuple.new("a", v(2), Gem::Platform::RUBY),
432
660
  Gem::Source.new(@gem_repo)],
433
- [Gem::NameTuple.new('a', v('3.a'), Gem::Platform::RUBY),
661
+ [Gem::NameTuple.new("a", v("3.a"), Gem::Platform::RUBY),
434
662
  Gem::Source.new(@gem_repo)],
435
663
  ]
436
664
 
437
- assert_equal expected, @cmd.fetch_remote_gems(specs['a-1'])
665
+ assert_equal expected, @cmd.fetch_remote_gems(specs["a-1"])
438
666
  end
439
667
 
440
668
  def test_handle_options_system
@@ -442,7 +670,7 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
442
670
 
443
671
  expected = {
444
672
  :args => [],
445
- :document => %w[rdoc ri],
673
+ :document => %w[ri],
446
674
  :force => false,
447
675
  :system => true,
448
676
  }
@@ -451,7 +679,7 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
451
679
  end
452
680
 
453
681
  def test_handle_options_system_non_version
454
- assert_raises ArgumentError do
682
+ assert_raise ArgumentError do
455
683
  @cmd.handle_options %w[--system non-version]
456
684
  end
457
685
  end
@@ -461,7 +689,7 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
461
689
 
462
690
  expected = {
463
691
  :args => [],
464
- :document => %w[rdoc ri],
692
+ :document => %w[ri],
465
693
  :force => false,
466
694
  :system => "1.3.7",
467
695
  }
@@ -471,11 +699,11 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
471
699
 
472
700
  def test_update_gem_prerelease
473
701
  spec_fetcher do |fetcher|
474
- fetcher.spec 'a', '1.a'
475
- fetcher.gem 'a', '1.b'
702
+ fetcher.spec "a", "1.a"
703
+ fetcher.gem "a", "1.b"
476
704
  end
477
705
 
478
- @cmd.update_gem 'a', Gem::Requirement.new('= 1.b')
706
+ @cmd.update_gem "a", Gem::Requirement.new("= 1.b")
479
707
 
480
708
  refute_empty @cmd.updated
481
709
 
@@ -484,15 +712,15 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
484
712
 
485
713
  def test_update_gem_unresolved_dependency
486
714
  spec_fetcher do |fetcher|
487
- fetcher.spec 'a', 1
488
- fetcher.gem 'a', 2 do |s|
489
- s.add_dependency 'b', '>= 2'
715
+ fetcher.spec "a", 1
716
+ fetcher.gem "a", 2 do |s|
717
+ s.add_dependency "b", ">= 2"
490
718
  end
491
719
 
492
- fetcher.spec 'b', 1
720
+ fetcher.spec "b", 1
493
721
  end
494
722
 
495
- @cmd.update_gem 'a'
723
+ @cmd.update_gem "a"
496
724
 
497
725
  assert_empty @cmd.updated
498
726
  end
@@ -502,18 +730,18 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
502
730
 
503
731
  arguments = @cmd.update_rubygems_arguments
504
732
 
505
- assert_equal '--prefix', arguments.shift
733
+ assert_equal "--prefix", arguments.shift
506
734
  assert_equal Gem.prefix, arguments.shift
507
- assert_equal '--no-document', arguments.shift
508
- assert_equal '--previous-version', arguments.shift
735
+ assert_equal "--no-document", arguments.shift
736
+ assert_equal "--previous-version", arguments.shift
509
737
  assert_equal Gem::VERSION, arguments.shift
510
738
  assert_empty arguments
511
739
  end
512
740
 
513
741
  def test_explain
514
742
  spec_fetcher do |fetcher|
515
- fetcher.download 'a', 2
516
- fetcher.spec 'a', 1
743
+ fetcher.download "a", 2
744
+ fetcher.spec "a", 1
517
745
  end
518
746
 
519
747
  @cmd.options[:explain] = true
@@ -533,13 +761,13 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
533
761
  def test_explain_platform_local
534
762
  local = Gem::Platform.local
535
763
  spec_fetcher do |fetcher|
536
- fetcher.download 'a', 2
764
+ fetcher.download "a", 2
537
765
 
538
- fetcher.download 'a', 2 do |s|
766
+ fetcher.download "a", 2 do |s|
539
767
  s.platform = local
540
768
  end
541
769
 
542
- fetcher.spec 'a', 1
770
+ fetcher.spec "a", 1
543
771
  end
544
772
 
545
773
  @cmd.options[:explain] = true
@@ -559,13 +787,13 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
559
787
  def test_explain_platform_ruby
560
788
  local = Gem::Platform.local
561
789
  spec_fetcher do |fetcher|
562
- fetcher.download 'a', 2
790
+ fetcher.download "a", 2
563
791
 
564
- fetcher.download 'a', 2 do |s|
792
+ fetcher.download "a", 2 do |s|
565
793
  s.platform = local
566
794
  end
567
795
 
568
- fetcher.spec 'a', 1
796
+ fetcher.spec "a", 1
569
797
  end
570
798
 
571
799
  # equivalent to --platform=ruby
@@ -585,4 +813,23 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
585
813
  assert_empty out
586
814
  end
587
815
 
816
+ def test_execute_named_not_installed_and_no_update
817
+ spec_fetcher do |fetcher|
818
+ fetcher.spec "a", 2
819
+ end
820
+
821
+ @cmd.options[:args] = %w[a b]
822
+
823
+ use_ui @ui do
824
+ @cmd.execute
825
+ end
826
+
827
+ out = @ui.output.split "\n"
828
+ assert_equal "Updating installed gems", out.shift
829
+ assert_equal "Nothing to update", out.shift
830
+ assert_equal "Gems already up-to-date: a", out.shift
831
+ assert_equal "Gems not currently installed: b", out.shift
832
+
833
+ assert_empty out
834
+ end
588
835
  end