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/dependency_command'
2
+ require_relative "helper"
3
+ require "rubygems/commands/dependency_command"
4
4
 
5
5
  class TestGemCommandsDependencyCommand < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
9
8
  @stub_ui = Gem::MockGemUi.new
@@ -12,9 +11,9 @@ class TestGemCommandsDependencyCommand < Gem::TestCase
12
11
  end
13
12
 
14
13
  def test_execute
15
- quick_gem 'foo' do |gem|
16
- gem.add_dependency 'bar', '> 1'
17
- gem.add_dependency 'baz', '> 1'
14
+ quick_gem "foo" do |gem|
15
+ gem.add_dependency "bar", "> 1"
16
+ gem.add_dependency "baz", "> 1"
18
17
  end
19
18
 
20
19
  @cmd.options[:args] = %w[foo]
@@ -25,16 +24,16 @@ class TestGemCommandsDependencyCommand < Gem::TestCase
25
24
 
26
25
  assert_equal "Gem foo-2\n bar (> 1)\n baz (> 1)\n\n",
27
26
  @stub_ui.output
28
- assert_equal '', @stub_ui.error
27
+ assert_equal "", @stub_ui.error
29
28
  end
30
29
 
31
30
  def test_execute_no_args
32
- install_specs util_spec 'x', '2'
31
+ install_specs util_spec "x", "2"
33
32
 
34
33
  spec_fetcher do |fetcher|
35
- fetcher.spec 'a', 1
36
- fetcher.spec 'a', '2.a'
37
- fetcher.spec 'dep_x', 1, 'x' => '>= 1'
34
+ fetcher.spec "a", 1
35
+ fetcher.spec "a", "2.a"
36
+ fetcher.spec "dep_x", 1, "x" => ">= 1"
38
37
  fetcher.legacy_platform
39
38
  end
40
39
 
@@ -59,27 +58,27 @@ Gem x-2
59
58
  EOF
60
59
 
61
60
  assert_equal expected, @stub_ui.output
62
- assert_equal '', @stub_ui.error
61
+ assert_equal "", @stub_ui.error
63
62
  end
64
63
 
65
64
  def test_execute_no_match
66
65
  @cmd.options[:args] = %w[foo]
67
66
 
68
- assert_raises Gem::MockGemUi::TermError do
67
+ assert_raise Gem::MockGemUi::TermError do
69
68
  use_ui @stub_ui do
70
69
  @cmd.execute
71
70
  end
72
71
  end
73
72
 
74
73
  assert_equal "No gems found matching foo (>= 0)\n", @stub_ui.output
75
- assert_equal '', @stub_ui.error
74
+ assert_equal "", @stub_ui.error
76
75
  end
77
76
 
78
77
  def test_execute_pipe_format
79
- spec = util_spec 'foo' do |gem|
80
- gem.add_dependency 'bar', '> 1'
78
+ spec = util_spec "foo" do |gem|
79
+ gem.add_dependency "bar", "> 1"
81
80
  end
82
- install_specs util_spec 'bar', 2
81
+ install_specs util_spec "bar", 2
83
82
  install_specs spec
84
83
 
85
84
  @cmd.options[:args] = %w[foo]
@@ -90,15 +89,15 @@ Gem x-2
90
89
  end
91
90
 
92
91
  assert_equal "bar --version '> 1'\n", @stub_ui.output
93
- assert_equal '', @stub_ui.error
92
+ assert_equal "", @stub_ui.error
94
93
  end
95
94
 
96
95
  def test_execute_regexp
97
96
  spec_fetcher do |fetcher|
98
- fetcher.spec 'a', 1
99
- fetcher.spec 'a', '2.a'
100
- fetcher.spec 'a_evil', 9
101
- fetcher.spec 'b', 2
97
+ fetcher.spec "a", 1
98
+ fetcher.spec "a", "2.a"
99
+ fetcher.spec "a_evil", 9
100
+ fetcher.spec "b", 2
102
101
  end
103
102
 
104
103
  @cmd.options[:args] = %w[[ab]]
@@ -119,17 +118,17 @@ Gem b-2
119
118
  EOF
120
119
 
121
120
  assert_equal expected, @stub_ui.output
122
- assert_equal '', @stub_ui.error
121
+ assert_equal "", @stub_ui.error
123
122
  end
124
123
 
125
124
  def test_execute_reverse
126
125
  # FIX: this shouldn't need to write out, but fails if you switch it
127
- quick_gem 'foo' do |gem|
128
- gem.add_dependency 'bar', '> 1'
126
+ quick_gem "foo" do |gem|
127
+ gem.add_dependency "bar", "> 1"
129
128
  end
130
129
 
131
- quick_gem 'baz' do |gem|
132
- gem.add_dependency 'foo'
130
+ quick_gem "baz" do |gem|
131
+ gem.add_dependency "foo"
133
132
  end
134
133
 
135
134
  @cmd.options[:args] = %w[foo]
@@ -148,7 +147,7 @@ Gem foo-2
148
147
  EOF
149
148
 
150
149
  assert_equal expected, @stub_ui.output
151
- assert_equal '', @stub_ui.error
150
+ assert_equal "", @stub_ui.error
152
151
  end
153
152
 
154
153
  def test_execute_reverse_remote
@@ -156,7 +155,7 @@ Gem foo-2
156
155
  @cmd.options[:reverse_dependencies] = true
157
156
  @cmd.options[:domain] = :remote
158
157
 
159
- assert_raises Gem::MockGemUi::TermError do
158
+ assert_raise Gem::MockGemUi::TermError do
160
159
  use_ui @stub_ui do
161
160
  @cmd.execute
162
161
  end
@@ -166,15 +165,15 @@ Gem foo-2
166
165
  ERROR: Only reverse dependencies for local gems are supported.
167
166
  EOF
168
167
 
169
- assert_equal '', @stub_ui.output
168
+ assert_equal "", @stub_ui.output
170
169
  assert_equal expected, @stub_ui.error
171
170
  end
172
171
 
173
172
  def test_execute_remote
174
- install_specs util_spec 'bar', '2'
173
+ install_specs util_spec "bar", "2"
175
174
 
176
175
  spec_fetcher do |fetcher|
177
- fetcher.spec 'foo', 2, 'bar' => '> 1'
176
+ fetcher.spec "foo", 2, "bar" => "> 1"
178
177
  end
179
178
 
180
179
  @cmd.options[:args] = %w[foo]
@@ -185,7 +184,7 @@ ERROR: Only reverse dependencies for local gems are supported.
185
184
  end
186
185
 
187
186
  assert_equal "Gem foo-2\n bar (> 1)\n\n", @stub_ui.output
188
- assert_equal '', @stub_ui.error
187
+ assert_equal "", @stub_ui.error
189
188
  end
190
189
 
191
190
  def test_execute_remote_version
@@ -193,25 +192,25 @@ ERROR: Only reverse dependencies for local gems are supported.
193
192
  Gem::RemoteFetcher.fetcher = @fetcher
194
193
 
195
194
  spec_fetcher do |fetcher|
196
- fetcher.spec 'a', 1
197
- fetcher.spec 'a', 2
195
+ fetcher.spec "a", 1
196
+ fetcher.spec "a", 2
198
197
  end
199
198
 
200
199
  @cmd.options[:args] = %w[a]
201
200
  @cmd.options[:domain] = :remote
202
- @cmd.options[:version] = req '= 1'
201
+ @cmd.options[:version] = req "= 1"
203
202
 
204
203
  use_ui @stub_ui do
205
204
  @cmd.execute
206
205
  end
207
206
 
208
207
  assert_equal "Gem a-1\n\n", @stub_ui.output
209
- assert_equal '', @stub_ui.error
208
+ assert_equal "", @stub_ui.error
210
209
  end
211
210
 
212
211
  def test_execute_prerelease
213
212
  spec_fetcher do |fetcher|
214
- fetcher.spec 'a', '2.a'
213
+ fetcher.spec "a", "2.a"
215
214
  end
216
215
 
217
216
  @cmd.options[:args] = %w[a]
@@ -223,7 +222,6 @@ ERROR: Only reverse dependencies for local gems are supported.
223
222
  end
224
223
 
225
224
  assert_equal "Gem a-2.a\n\n", @stub_ui.output
226
- assert_equal '', @stub_ui.error
225
+ assert_equal "", @stub_ui.error
227
226
  end
228
-
229
227
  end
@@ -1,9 +1,8 @@
1
1
  # frozen_string_literal: true
2
- require 'rubygems/test_case'
3
- require 'rubygems/commands/environment_command'
2
+ require_relative "helper"
3
+ require "rubygems/commands/environment_command"
4
4
 
5
5
  class TestGemCommandsEnvironmentCommand < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
9
8
 
@@ -12,9 +11,9 @@ class TestGemCommandsEnvironmentCommand < Gem::TestCase
12
11
 
13
12
  def test_execute
14
13
  orig_sources = Gem.sources.dup
15
- orig_path, ENV['PATH'] = ENV['PATH'], %w[/usr/local/bin /usr/bin /bin].join(File::PATH_SEPARATOR)
14
+ orig_path, ENV["PATH"] = ENV["PATH"], %w[/usr/local/bin /usr/bin /bin].join(File::PATH_SEPARATOR)
16
15
  Gem.sources.replace %w[http://gems.example.com]
17
- Gem.configuration['gemcutter_key'] = 'blah'
16
+ Gem.configuration["gemcutter_key"] = "blah"
18
17
 
19
18
  @cmd.send :handle_options, %w[]
20
19
 
@@ -22,35 +21,37 @@ class TestGemCommandsEnvironmentCommand < Gem::TestCase
22
21
  @cmd.execute
23
22
  end
24
23
 
25
- assert_match %r|RUBYGEMS VERSION: (\d\.)+\d|, @ui.output
26
- assert_match %r|RUBY VERSION: \d+\.\d+\.\d+ \(.*\) \[.*\]|, @ui.output
27
- assert_match %r|INSTALLATION DIRECTORY: #{Regexp.escape @gemhome}|,
24
+ assert_match %r{RUBYGEMS VERSION: (\d\.)+\d}, @ui.output
25
+ assert_match %r{RUBY VERSION: \d+\.\d+\.\d+ \(.*\) \[.*\]}, @ui.output
26
+ assert_match %r{INSTALLATION DIRECTORY: #{Regexp.escape @gemhome}},
27
+ @ui.output
28
+ assert_match %r{USER INSTALLATION DIRECTORY: #{Regexp.escape Gem.user_dir}},
28
29
  @ui.output
29
- assert_match %r|RUBYGEMS PREFIX: |, @ui.output
30
- assert_match %r|RUBY EXECUTABLE:.*#{RbConfig::CONFIG['ruby_install_name']}|,
30
+ assert_match %r{RUBYGEMS PREFIX: }, @ui.output
31
+ assert_match %r{RUBY EXECUTABLE:.*#{RbConfig::CONFIG['ruby_install_name']}},
31
32
  @ui.output
32
- assert_match %r|GIT EXECUTABLE: #{@cmd.send(:git_path)}|, @ui.output
33
- assert_match %r|SYSTEM CONFIGURATION DIRECTORY:|, @ui.output
34
- assert_match %r|EXECUTABLE DIRECTORY:|, @ui.output
35
- assert_match %r|RUBYGEMS PLATFORMS:|, @ui.output
36
- assert_match %r|- #{Gem::Platform.local}|, @ui.output
37
- assert_match %r|GEM PATHS:|, @ui.output
38
- assert_match %r|- #{Regexp.escape @gemhome}|, @ui.output
39
- assert_match %r|GEM CONFIGURATION:|, @ui.output
40
- assert_match %r|"gemcutter_key" => "\*\*\*\*"|, @ui.output
41
- assert_match %r|:verbose => |, @ui.output
42
- assert_match %r|REMOTE SOURCES:|, @ui.output
43
-
44
- assert_match %r|- SHELL PATH:|, @ui.output
45
- assert_match %r|- /usr/local/bin$|, @ui.output
46
- assert_match %r|- /usr/bin$|, @ui.output
47
- assert_match %r|- /bin$|, @ui.output
33
+ assert_match %r{GIT EXECUTABLE: #{@cmd.send(:git_path)}}, @ui.output
34
+ assert_match %r{SYSTEM CONFIGURATION DIRECTORY:}, @ui.output
35
+ assert_match %r{EXECUTABLE DIRECTORY:}, @ui.output
36
+ assert_match %r{RUBYGEMS PLATFORMS:}, @ui.output
37
+ assert_match %r{- #{Gem::Platform.local}}, @ui.output
38
+ assert_match %r{GEM PATHS:}, @ui.output
39
+ assert_match %r{- #{Regexp.escape @gemhome}}, @ui.output
40
+ assert_match %r{GEM CONFIGURATION:}, @ui.output
41
+ assert_match %r{"gemcutter_key" => "\*\*\*\*"}, @ui.output
42
+ assert_match %r{:verbose => }, @ui.output
43
+ assert_match %r{REMOTE SOURCES:}, @ui.output
44
+
45
+ assert_match %r{- SHELL PATH:}, @ui.output
46
+ assert_match %r{- /usr/local/bin$}, @ui.output
47
+ assert_match %r{- /usr/bin$}, @ui.output
48
+ assert_match %r{- /bin$}, @ui.output
48
49
 
49
50
  assert_empty @ui.error
50
51
 
51
52
  ensure
52
53
  Gem.sources.replace orig_sources
53
- ENV['PATH'] = orig_path
54
+ ENV["PATH"] = orig_path
54
55
  end
55
56
 
56
57
  def test_execute_gemdir
@@ -61,7 +62,29 @@ class TestGemCommandsEnvironmentCommand < Gem::TestCase
61
62
  end
62
63
 
63
64
  assert_equal "#{@gemhome}\n", @ui.output
64
- assert_equal '', @ui.error
65
+ assert_equal "", @ui.error
66
+ end
67
+
68
+ def test_execute_user_gemdir
69
+ @cmd.send :handle_options, %w[user_gemdir]
70
+
71
+ use_ui @ui do
72
+ @cmd.execute
73
+ end
74
+
75
+ assert_equal "#{Gem.user_dir}\n", @ui.output
76
+ assert_equal "", @ui.error
77
+ end
78
+
79
+ def test_execute_user_gemhome
80
+ @cmd.send :handle_options, %w[user_gemhome]
81
+
82
+ use_ui @ui do
83
+ @cmd.execute
84
+ end
85
+
86
+ assert_equal "#{Gem.user_dir}\n", @ui.output
87
+ assert_equal "", @ui.error
65
88
  end
66
89
 
67
90
  def test_execute_gempath
@@ -72,13 +95,13 @@ class TestGemCommandsEnvironmentCommand < Gem::TestCase
72
95
  end
73
96
 
74
97
  assert_equal "#{@gemhome}\n", @ui.output
75
- assert_equal '', @ui.error
98
+ assert_equal "", @ui.error
76
99
  end
77
100
 
78
101
  def test_execute_gempath_multiple
79
102
  Gem.clear_paths
80
103
  path = [@gemhome, "#{@gemhome}2"].join File::PATH_SEPARATOR
81
- ENV['GEM_PATH'] = path
104
+ ENV["GEM_PATH"] = path
82
105
 
83
106
  @cmd.send :handle_options, %w[gempath]
84
107
 
@@ -87,7 +110,7 @@ class TestGemCommandsEnvironmentCommand < Gem::TestCase
87
110
  end
88
111
 
89
112
  assert_equal "#{Gem.path.join File::PATH_SEPARATOR}\n", @ui.output
90
- assert_equal '', @ui.error
113
+ assert_equal "", @ui.error
91
114
  end
92
115
 
93
116
  def test_execute_remotesources
@@ -101,7 +124,7 @@ class TestGemCommandsEnvironmentCommand < Gem::TestCase
101
124
  end
102
125
 
103
126
  assert_equal "http://gems.example.com\n", @ui.output
104
- assert_equal '', @ui.error
127
+ assert_equal "", @ui.error
105
128
 
106
129
  ensure
107
130
  Gem.sources.replace orig_sources
@@ -110,14 +133,14 @@ class TestGemCommandsEnvironmentCommand < Gem::TestCase
110
133
  def test_execute_unknown
111
134
  @cmd.send :handle_options, %w[unknown]
112
135
 
113
- assert_raises Gem::CommandLineError do
136
+ assert_raise Gem::CommandLineError do
114
137
  use_ui @ui do
115
138
  @cmd.execute
116
139
  end
117
140
  end
118
141
 
119
- assert_equal '', @ui.output
120
- assert_equal '', @ui.error
142
+ assert_equal "", @ui.output
143
+ assert_equal "", @ui.error
121
144
  end
122
145
 
123
146
  def test_execute_version
@@ -128,7 +151,7 @@ class TestGemCommandsEnvironmentCommand < Gem::TestCase
128
151
  end
129
152
 
130
153
  assert_equal "#{Gem::VERSION}\n", @ui.output
131
- assert_equal '', @ui.error
154
+ assert_equal "", @ui.error
132
155
  end
133
156
 
134
157
  def test_execute_platform
@@ -139,7 +162,6 @@ class TestGemCommandsEnvironmentCommand < Gem::TestCase
139
162
  end
140
163
 
141
164
  assert_equal "#{Gem.platforms.join File::PATH_SEPARATOR}\n", @ui.output
142
- assert_equal '', @ui.error
165
+ assert_equal "", @ui.error
143
166
  end
144
-
145
167
  end
@@ -1,11 +1,10 @@
1
1
  # frozen_string_literal: true
2
- require 'rubygems/test_case'
3
- require 'rubygems/package'
4
- require 'rubygems/security'
5
- require 'rubygems/commands/fetch_command'
2
+ require_relative "helper"
3
+ require "rubygems/package"
4
+ require "rubygems/security"
5
+ require "rubygems/commands/fetch_command"
6
6
 
7
7
  class TestGemCommandsFetchCommand < Gem::TestCase
8
-
9
8
  def setup
10
9
  super
11
10
 
@@ -14,10 +13,10 @@ class TestGemCommandsFetchCommand < Gem::TestCase
14
13
 
15
14
  def test_execute
16
15
  specs = spec_fetcher do |fetcher|
17
- fetcher.gem 'a', 2
16
+ fetcher.gem "a", 2
18
17
  end
19
18
 
20
- refute_path_exists File.join(@tempdir, 'cache'), 'sanity check'
19
+ assert_path_not_exist File.join(@tempdir, "cache"), "sanity check"
21
20
 
22
21
  @cmd.options[:args] = %w[a]
23
22
 
@@ -27,24 +26,24 @@ class TestGemCommandsFetchCommand < Gem::TestCase
27
26
  end
28
27
  end
29
28
 
30
- a2 = specs['a-2']
29
+ a2 = specs["a-2"]
31
30
 
32
- assert_path_exists(File.join(@tempdir, a2.file_name),
31
+ assert_path_exist(File.join(@tempdir, a2.file_name),
33
32
  "#{a2.full_name} not fetched")
34
- refute_path_exists File.join(@tempdir, 'cache'),
35
- 'gem repository directories must not be created'
33
+ assert_path_not_exist File.join(@tempdir, "cache"),
34
+ "gem repository directories must not be created"
36
35
  end
37
36
 
38
37
  def test_execute_latest
39
38
  specs = spec_fetcher do |fetcher|
40
- fetcher.gem 'a', 1
41
- fetcher.gem 'a', 2
39
+ fetcher.gem "a", 1
40
+ fetcher.gem "a", 2
42
41
  end
43
42
 
44
- refute_path_exists File.join(@tempdir, 'cache'), 'sanity check'
43
+ assert_path_not_exist File.join(@tempdir, "cache"), "sanity check"
45
44
 
46
45
  @cmd.options[:args] = %w[a]
47
- @cmd.options[:version] = req('>= 0.1')
46
+ @cmd.options[:version] = req(">= 0.1")
48
47
 
49
48
  use_ui @ui do
50
49
  Dir.chdir @tempdir do
@@ -52,17 +51,17 @@ class TestGemCommandsFetchCommand < Gem::TestCase
52
51
  end
53
52
  end
54
53
 
55
- a2 = specs['a-2']
56
- assert_path_exists(File.join(@tempdir, a2.file_name),
54
+ a2 = specs["a-2"]
55
+ assert_path_exist(File.join(@tempdir, a2.file_name),
57
56
  "#{a2.full_name} not fetched")
58
- refute_path_exists File.join(@tempdir, 'cache'),
59
- 'gem repository directories must not be created'
57
+ assert_path_not_exist File.join(@tempdir, "cache"),
58
+ "gem repository directories must not be created"
60
59
  end
61
60
 
62
61
  def test_execute_prerelease
63
62
  specs = spec_fetcher do |fetcher|
64
- fetcher.gem 'a', 2
65
- fetcher.gem 'a', '2.a'
63
+ fetcher.gem "a", 2
64
+ fetcher.gem "a", "2.a"
66
65
  end
67
66
 
68
67
  @cmd.options[:args] = %w[a]
@@ -74,16 +73,52 @@ class TestGemCommandsFetchCommand < Gem::TestCase
74
73
  end
75
74
  end
76
75
 
77
- a2 = specs['a-2']
76
+ a2 = specs["a-2"]
78
77
 
79
- assert_path_exists(File.join(@tempdir, a2.file_name),
78
+ assert_path_exist(File.join(@tempdir, a2.file_name),
80
79
  "#{a2.full_name} not fetched")
81
80
  end
82
81
 
82
+ def test_execute_platform
83
+ a2_spec, a2 = util_gem("a", "2")
84
+
85
+ a2_universal_darwin_spec, a2_universal_darwin = util_gem("a", "2") do |s|
86
+ s.platform = "universal-darwin"
87
+ end
88
+
89
+ Gem::RemoteFetcher.fetcher = @fetcher = Gem::FakeFetcher.new
90
+
91
+ write_marshalled_gemspecs(a2_spec, a2_universal_darwin_spec)
92
+
93
+ @cmd.options[:args] = %w[a]
94
+
95
+ @fetcher.data["#{@gem_repo}latest_specs.#{Gem.marshal_version}.gz"] = util_gzip(Marshal.dump([
96
+ Gem::NameTuple.new(a2_spec.name, a2_spec.version, a2_spec.platform),
97
+ Gem::NameTuple.new(a2_universal_darwin_spec.name, a2_universal_darwin_spec.version, a2_universal_darwin_spec.platform),
98
+ ]))
99
+
100
+ @fetcher.data["#{@gem_repo}gems/#{a2_spec.file_name}"] = Gem.read_binary(a2)
101
+ FileUtils.cp a2, a2_spec.cache_file
102
+
103
+ @fetcher.data["#{@gem_repo}gems/#{a2_universal_darwin_spec.file_name}"] = Gem.read_binary(a2_universal_darwin)
104
+ FileUtils.cp a2_universal_darwin, a2_universal_darwin_spec.cache_file
105
+
106
+ util_set_arch "arm64-darwin20" do
107
+ use_ui @ui do
108
+ Dir.chdir @tempdir do
109
+ @cmd.execute
110
+ end
111
+ end
112
+ end
113
+
114
+ assert_path_exist(File.join(@tempdir, a2_universal_darwin_spec.file_name),
115
+ "#{a2_universal_darwin_spec.full_name} not fetched")
116
+ end
117
+
83
118
  def test_execute_specific_prerelease
84
119
  specs = spec_fetcher do |fetcher|
85
- fetcher.gem 'a', 2
86
- fetcher.gem 'a', '2.a'
120
+ fetcher.gem "a", 2
121
+ fetcher.gem "a", "2.a"
87
122
  end
88
123
 
89
124
  @cmd.options[:args] = %w[a]
@@ -96,20 +131,76 @@ class TestGemCommandsFetchCommand < Gem::TestCase
96
131
  end
97
132
  end
98
133
 
99
- a2_pre = specs['a-2.a']
134
+ a2_pre = specs["a-2.a"]
100
135
 
101
- assert_path_exists(File.join(@tempdir, a2_pre.file_name),
136
+ assert_path_exist(File.join(@tempdir, a2_pre.file_name),
102
137
  "#{a2_pre.full_name} not fetched")
103
138
  end
104
139
 
105
140
  def test_execute_version
106
141
  specs = spec_fetcher do |fetcher|
107
- fetcher.gem 'a', 1
108
- fetcher.gem 'a', 2
142
+ fetcher.gem "a", 1
143
+ fetcher.gem "a", 2
109
144
  end
110
145
 
111
146
  @cmd.options[:args] = %w[a]
112
- @cmd.options[:version] = Gem::Requirement.new '1'
147
+ @cmd.options[:version] = Gem::Requirement.new "1"
148
+
149
+ use_ui @ui do
150
+ Dir.chdir @tempdir do
151
+ @cmd.execute
152
+ end
153
+ end
154
+
155
+ a1 = specs["a-1"]
156
+
157
+ assert_path_exist(File.join(@tempdir, a1.file_name),
158
+ "#{a1.full_name} not fetched")
159
+ end
160
+
161
+ def test_execute_version_specified_by_colon
162
+ specs = spec_fetcher do |fetcher|
163
+ fetcher.gem "a", 1
164
+ end
165
+
166
+ @cmd.options[:args] = %w[a:1]
167
+
168
+ use_ui @ui do
169
+ Dir.chdir @tempdir do
170
+ @cmd.execute
171
+ end
172
+ end
173
+
174
+ a1 = specs["a-1"]
175
+
176
+ assert_path_exist(File.join(@tempdir, a1.file_name),
177
+ "#{a1.full_name} not fetched")
178
+ end
179
+
180
+ def test_execute_two_version
181
+ @cmd.options[:args] = %w[a b]
182
+ @cmd.options[:version] = Gem::Requirement.new "1"
183
+
184
+ use_ui @ui do
185
+ assert_raise Gem::MockGemUi::TermError, @ui.error do
186
+ @cmd.execute
187
+ end
188
+ end
189
+
190
+ msg = "ERROR: Can't use --version with multiple gems. You can specify multiple gems with" \
191
+ " version requirements using `gem fetch 'my_gem:1.0.0' 'my_other_gem:~>2.0.0'`"
192
+
193
+ assert_empty @ui.output
194
+ assert_equal msg, @ui.error.chomp
195
+ end
196
+
197
+ def test_execute_two_version_specified_by_colon
198
+ specs = spec_fetcher do |fetcher|
199
+ fetcher.gem "a", 1
200
+ fetcher.gem "b", 1
201
+ end
202
+
203
+ @cmd.options[:args] = %w[a:1 b:1]
113
204
 
114
205
  use_ui @ui do
115
206
  Dir.chdir @tempdir do
@@ -117,10 +208,50 @@ class TestGemCommandsFetchCommand < Gem::TestCase
117
208
  end
118
209
  end
119
210
 
120
- a1 = specs['a-1']
211
+ a1 = specs["a-1"]
212
+ b1 = specs["b-1"]
121
213
 
122
- assert_path_exists(File.join(@tempdir, a1.file_name),
214
+ assert_path_exist(File.join(@tempdir, a1.file_name),
123
215
  "#{a1.full_name} not fetched")
216
+ assert_path_exist(File.join(@tempdir, b1.file_name),
217
+ "#{b1.full_name} not fetched")
124
218
  end
125
219
 
220
+ def test_execute_version_nonexistent
221
+ spec_fetcher do |fetcher|
222
+ fetcher.spec "foo", 1
223
+ end
224
+
225
+ @cmd.options[:args] = %w[foo:2]
226
+
227
+ use_ui @ui do
228
+ @cmd.execute
229
+ end
230
+
231
+ expected = <<-EXPECTED
232
+ ERROR: Could not find a valid gem 'foo' (2) in any repository
233
+ ERROR: Possible alternatives: foo
234
+ EXPECTED
235
+
236
+ assert_equal expected, @ui.error
237
+ end
238
+
239
+ def test_execute_nonexistent_hint_disabled
240
+ spec_fetcher do |fetcher|
241
+ fetcher.spec "foo", 1
242
+ end
243
+
244
+ @cmd.options[:args] = %w[foo:2]
245
+ @cmd.options[:suggest_alternate] = false
246
+
247
+ use_ui @ui do
248
+ @cmd.execute
249
+ end
250
+
251
+ expected = <<-EXPECTED
252
+ ERROR: Could not find a valid gem 'foo' (2) in any repository
253
+ EXPECTED
254
+
255
+ assert_equal expected, @ui.error
256
+ end
126
257
  end