rubygems-update 3.1.1 → 3.2.0.rc.2

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 (518) hide show
  1. checksums.yaml +4 -4
  2. data/CODE_OF_CONDUCT.md +55 -19
  3. data/CONTRIBUTING.md +25 -11
  4. data/History.txt +389 -144
  5. data/Manifest.txt +37 -73
  6. data/POLICIES.md +2 -9
  7. data/README.md +5 -5
  8. data/Rakefile +47 -82
  9. data/bin/update_rubygems +2 -2
  10. data/bundler/CHANGELOG.md +1546 -1414
  11. data/bundler/README.md +6 -8
  12. data/bundler/UPGRADING.md +18 -32
  13. data/bundler/bundler.gemspec +3 -3
  14. data/bundler/exe/bundle +3 -0
  15. data/bundler/lib/bundler.rb +21 -7
  16. data/bundler/lib/bundler/build_metadata.rb +4 -12
  17. data/bundler/lib/bundler/cli.rb +54 -20
  18. data/bundler/lib/bundler/cli/add.rb +1 -1
  19. data/bundler/lib/bundler/cli/cache.rb +1 -7
  20. data/bundler/lib/bundler/cli/clean.rb +1 -1
  21. data/bundler/lib/bundler/cli/common.rb +14 -0
  22. data/bundler/lib/bundler/cli/console.rb +1 -1
  23. data/bundler/lib/bundler/cli/doctor.rb +1 -1
  24. data/bundler/lib/bundler/cli/exec.rb +4 -13
  25. data/bundler/lib/bundler/cli/fund.rb +36 -0
  26. data/bundler/lib/bundler/cli/gem.rb +84 -11
  27. data/bundler/lib/bundler/cli/info.rb +15 -4
  28. data/bundler/lib/bundler/cli/init.rb +2 -2
  29. data/bundler/lib/bundler/cli/inject.rb +1 -1
  30. data/bundler/lib/bundler/cli/install.rb +12 -18
  31. data/bundler/lib/bundler/cli/issue.rb +2 -2
  32. data/bundler/lib/bundler/cli/list.rb +12 -10
  33. data/bundler/lib/bundler/cli/outdated.rb +89 -66
  34. data/bundler/lib/bundler/cli/plugin.rb +10 -0
  35. data/bundler/lib/bundler/cli/pristine.rb +5 -0
  36. data/bundler/lib/bundler/cli/show.rb +1 -1
  37. data/bundler/lib/bundler/cli/update.rb +2 -0
  38. data/bundler/lib/bundler/compact_index_client.rb +1 -1
  39. data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
  40. data/bundler/lib/bundler/definition.rb +51 -60
  41. data/bundler/lib/bundler/dep_proxy.rb +1 -1
  42. data/bundler/lib/bundler/dependency.rb +0 -9
  43. data/bundler/lib/bundler/dsl.rb +5 -9
  44. data/bundler/lib/bundler/endpoint_specification.rb +1 -1
  45. data/bundler/lib/bundler/environment_preserver.rb +26 -2
  46. data/bundler/lib/bundler/errors.rb +1 -0
  47. data/bundler/lib/bundler/feature_flag.rb +0 -2
  48. data/bundler/lib/bundler/fetcher.rb +4 -3
  49. data/bundler/lib/bundler/fetcher/base.rb +1 -1
  50. data/bundler/lib/bundler/fetcher/compact_index.rb +1 -1
  51. data/bundler/lib/bundler/fetcher/downloader.rb +1 -1
  52. data/bundler/lib/bundler/fetcher/index.rb +1 -1
  53. data/bundler/lib/bundler/friendly_errors.rb +7 -13
  54. data/bundler/lib/bundler/gem_helper.rb +33 -19
  55. data/bundler/lib/bundler/gem_helpers.rb +6 -1
  56. data/bundler/lib/bundler/gem_version_promoter.rb +2 -2
  57. data/bundler/lib/bundler/graph.rb +1 -1
  58. data/bundler/lib/bundler/index.rb +1 -1
  59. data/bundler/lib/bundler/injector.rb +15 -4
  60. data/bundler/lib/bundler/inline.rb +2 -2
  61. data/bundler/lib/bundler/installer.rb +30 -29
  62. data/bundler/lib/bundler/installer/gem_installer.rb +3 -3
  63. data/bundler/lib/bundler/installer/parallel_installer.rb +10 -10
  64. data/bundler/lib/bundler/installer/standalone.rb +2 -2
  65. data/bundler/lib/bundler/lazy_specification.rb +19 -6
  66. data/bundler/lib/bundler/lockfile_generator.rb +1 -1
  67. data/bundler/lib/bundler/lockfile_parser.rb +1 -1
  68. data/bundler/lib/bundler/mirror.rb +2 -2
  69. data/bundler/lib/bundler/plugin.rb +30 -5
  70. data/bundler/lib/bundler/plugin/index.rb +10 -1
  71. data/bundler/lib/bundler/plugin/installer.rb +1 -1
  72. data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
  73. data/bundler/lib/bundler/plugin/source_list.rb +1 -1
  74. data/bundler/lib/bundler/psyched_yaml.rb +0 -15
  75. data/bundler/lib/bundler/remote_specification.rb +5 -2
  76. data/bundler/lib/bundler/resolver.rb +32 -9
  77. data/bundler/lib/bundler/resolver/spec_group.rb +27 -6
  78. data/bundler/lib/bundler/retry.rb +1 -1
  79. data/bundler/lib/bundler/ruby_version.rb +1 -1
  80. data/bundler/lib/bundler/rubygems_ext.rb +53 -9
  81. data/bundler/lib/bundler/rubygems_gem_installer.rb +3 -9
  82. data/bundler/lib/bundler/rubygems_integration.rb +31 -54
  83. data/bundler/lib/bundler/runtime.rb +4 -14
  84. data/bundler/lib/bundler/settings.rb +49 -45
  85. data/bundler/lib/bundler/setup.rb +5 -0
  86. data/bundler/lib/bundler/shared_helpers.rb +2 -2
  87. data/bundler/lib/bundler/similarity_detector.rb +1 -1
  88. data/bundler/lib/bundler/source.rb +1 -1
  89. data/bundler/lib/bundler/source/git.rb +5 -5
  90. data/bundler/lib/bundler/source/git/git_proxy.rb +56 -59
  91. data/bundler/lib/bundler/source/path.rb +7 -3
  92. data/bundler/lib/bundler/source/path/installer.rb +8 -10
  93. data/bundler/lib/bundler/source/rubygems.rb +13 -16
  94. data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
  95. data/bundler/lib/bundler/source_list.rb +2 -2
  96. data/bundler/lib/bundler/spec_set.rb +1 -1
  97. data/bundler/lib/bundler/stub_specification.rb +17 -5
  98. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  99. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +9 -1
  100. data/bundler/lib/bundler/templates/newgem/README.md.tt +1 -1
  101. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +19 -5
  102. data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
  103. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
  104. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
  105. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
  106. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
  107. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +2 -0
  108. data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  109. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +8 -6
  110. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +10 -0
  111. data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
  112. data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
  113. data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
  114. data/bundler/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
  115. data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  116. data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  117. data/bundler/lib/bundler/ui/shell.rb +5 -5
  118. data/bundler/lib/bundler/uri_credentials_filter.rb +1 -1
  119. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +79 -212
  120. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +0 -7
  121. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
  122. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
  123. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  124. data/bundler/lib/bundler/vendored_persistent.rb +0 -7
  125. data/bundler/lib/bundler/version.rb +1 -1
  126. data/bundler/lib/bundler/worker.rb +1 -1
  127. data/bundler/lib/bundler/yaml_serializer.rb +1 -1
  128. data/bundler/man/bundle-add.1 +1 -1
  129. data/bundler/man/{bundle-add.ronn → bundle-add.1.ronn} +0 -0
  130. data/bundler/man/bundle-binstubs.1 +5 -3
  131. data/bundler/man/{bundle-binstubs.ronn → bundle-binstubs.1.ronn} +2 -4
  132. data/bundler/man/bundle-cache.1 +1 -1
  133. data/bundler/man/{bundle-cache.ronn → bundle-cache.1.ronn} +0 -0
  134. data/bundler/man/bundle-check.1 +1 -1
  135. data/bundler/man/{bundle-check.ronn → bundle-check.1.ronn} +0 -0
  136. data/bundler/man/bundle-clean.1 +1 -1
  137. data/bundler/man/{bundle-clean.ronn → bundle-clean.1.ronn} +0 -0
  138. data/bundler/man/bundle-config.1 +16 -22
  139. data/bundler/man/{bundle-config.ronn → bundle-config.1.ronn} +19 -22
  140. data/bundler/man/bundle-doctor.1 +1 -1
  141. data/bundler/man/{bundle-doctor.ronn → bundle-doctor.1.ronn} +0 -0
  142. data/bundler/man/bundle-exec.1 +1 -1
  143. data/bundler/man/{bundle-exec.ronn → bundle-exec.1.ronn} +0 -0
  144. data/bundler/man/bundle-gem.1 +25 -3
  145. data/bundler/man/{bundle-gem.ronn → bundle-gem.1.ronn} +30 -7
  146. data/bundler/man/bundle-info.1 +1 -1
  147. data/bundler/man/{bundle-info.ronn → bundle-info.1.ronn} +0 -0
  148. data/bundler/man/bundle-init.1 +1 -1
  149. data/bundler/man/{bundle-init.ronn → bundle-init.1.ronn} +0 -0
  150. data/bundler/man/bundle-inject.1 +1 -1
  151. data/bundler/man/{bundle-inject.ronn → bundle-inject.1.ronn} +0 -0
  152. data/bundler/man/bundle-install.1 +29 -2
  153. data/bundler/man/{bundle-install.ronn → bundle-install.1.ronn} +24 -2
  154. data/bundler/man/bundle-list.1 +7 -7
  155. data/bundler/man/{bundle-list.ronn → bundle-list.1.ronn} +6 -6
  156. data/bundler/man/bundle-lock.1 +1 -1
  157. data/bundler/man/{bundle-lock.ronn → bundle-lock.1.ronn} +0 -0
  158. data/bundler/man/bundle-open.1 +1 -1
  159. data/bundler/man/{bundle-open.ronn → bundle-open.1.ronn} +0 -0
  160. data/bundler/man/bundle-outdated.1 +1 -1
  161. data/bundler/man/{bundle-outdated.ronn → bundle-outdated.1.ronn} +0 -0
  162. data/bundler/man/bundle-platform.1 +1 -1
  163. data/bundler/man/{bundle-platform.ronn → bundle-platform.1.ronn} +0 -0
  164. data/bundler/man/bundle-pristine.1 +1 -1
  165. data/bundler/man/{bundle-pristine.ronn → bundle-pristine.1.ronn} +0 -0
  166. data/bundler/man/bundle-remove.1 +1 -1
  167. data/bundler/man/{bundle-remove.ronn → bundle-remove.1.ronn} +0 -0
  168. data/bundler/man/bundle-show.1 +1 -1
  169. data/bundler/man/{bundle-show.ronn → bundle-show.1.ronn} +0 -0
  170. data/bundler/man/bundle-update.1 +1 -1
  171. data/bundler/man/{bundle-update.ronn → bundle-update.1.ronn} +0 -0
  172. data/bundler/man/bundle-viz.1 +1 -1
  173. data/bundler/man/{bundle-viz.ronn → bundle-viz.1.ronn} +0 -0
  174. data/bundler/man/bundle.1 +1 -1
  175. data/bundler/man/{bundle.ronn → bundle.1.ronn} +0 -0
  176. data/bundler/man/gemfile.5 +4 -4
  177. data/bundler/man/gemfile.5.ronn +4 -4
  178. data/lib/rubygems.rb +133 -186
  179. data/lib/rubygems/available_set.rb +4 -6
  180. data/lib/rubygems/basic_specification.rb +12 -10
  181. data/lib/rubygems/bundler_version_finder.rb +14 -9
  182. data/lib/rubygems/command.rb +17 -17
  183. data/lib/rubygems/command_manager.rb +4 -5
  184. data/lib/rubygems/commands/build_command.rb +4 -1
  185. data/lib/rubygems/commands/cert_command.rb +1 -9
  186. data/lib/rubygems/commands/check_command.rb +0 -2
  187. data/lib/rubygems/commands/cleanup_command.rb +11 -7
  188. data/lib/rubygems/commands/contents_command.rb +4 -6
  189. data/lib/rubygems/commands/dependency_command.rb +6 -8
  190. data/lib/rubygems/commands/environment_command.rb +1 -3
  191. data/lib/rubygems/commands/fetch_command.rb +2 -4
  192. data/lib/rubygems/commands/generate_index_command.rb +0 -2
  193. data/lib/rubygems/commands/help_command.rb +2 -4
  194. data/lib/rubygems/commands/info_command.rb +8 -5
  195. data/lib/rubygems/commands/install_command.rb +3 -5
  196. data/lib/rubygems/commands/list_command.rb +8 -7
  197. data/lib/rubygems/commands/lock_command.rb +1 -3
  198. data/lib/rubygems/commands/mirror_command.rb +0 -2
  199. data/lib/rubygems/commands/open_command.rb +0 -4
  200. data/lib/rubygems/commands/outdated_command.rb +0 -2
  201. data/lib/rubygems/commands/owner_command.rb +0 -2
  202. data/lib/rubygems/commands/pristine_command.rb +10 -4
  203. data/lib/rubygems/commands/push_command.rb +4 -44
  204. data/lib/rubygems/commands/query_command.rb +6 -353
  205. data/lib/rubygems/commands/rdoc_command.rb +0 -2
  206. data/lib/rubygems/commands/search_command.rb +7 -7
  207. data/lib/rubygems/commands/server_command.rb +0 -2
  208. data/lib/rubygems/commands/setup_command.rb +156 -48
  209. data/lib/rubygems/commands/signin_command.rb +0 -2
  210. data/lib/rubygems/commands/signout_command.rb +0 -2
  211. data/lib/rubygems/commands/sources_command.rb +3 -5
  212. data/lib/rubygems/commands/specification_command.rb +2 -4
  213. data/lib/rubygems/commands/stale_command.rb +1 -3
  214. data/lib/rubygems/commands/uninstall_command.rb +2 -4
  215. data/lib/rubygems/commands/unpack_command.rb +1 -3
  216. data/lib/rubygems/commands/update_command.rb +59 -14
  217. data/lib/rubygems/commands/which_command.rb +0 -2
  218. data/lib/rubygems/commands/yank_command.rb +0 -2
  219. data/lib/rubygems/config_file.rb +11 -4
  220. data/lib/rubygems/core_ext/kernel_require.rb +26 -36
  221. data/lib/rubygems/core_ext/kernel_warn.rb +6 -6
  222. data/lib/rubygems/defaults.rb +99 -5
  223. data/lib/rubygems/dependency.rb +2 -7
  224. data/lib/rubygems/dependency_installer.rb +1 -75
  225. data/lib/rubygems/dependency_list.rb +7 -9
  226. data/lib/rubygems/deprecate.rb +46 -1
  227. data/lib/rubygems/doctor.rb +4 -4
  228. data/lib/rubygems/errors.rb +3 -14
  229. data/lib/rubygems/exceptions.rb +2 -33
  230. data/lib/rubygems/ext.rb +6 -6
  231. data/lib/rubygems/ext/build_error.rb +2 -0
  232. data/lib/rubygems/ext/builder.rb +4 -4
  233. data/lib/rubygems/ext/cmake_builder.rb +1 -3
  234. data/lib/rubygems/ext/configure_builder.rb +0 -2
  235. data/lib/rubygems/ext/ext_conf_builder.rb +6 -9
  236. data/lib/rubygems/ext/rake_builder.rb +0 -2
  237. data/lib/rubygems/gem_runner.rb +3 -10
  238. data/lib/rubygems/gemcutter_utilities.rb +1 -1
  239. data/lib/rubygems/indexer.rb +1 -21
  240. data/lib/rubygems/install_update_options.rb +5 -5
  241. data/lib/rubygems/installer.rb +47 -48
  242. data/lib/rubygems/installer_test_case.rb +18 -5
  243. data/lib/rubygems/installer_uninstaller_utils.rb +24 -0
  244. data/lib/rubygems/local_remote_options.rb +1 -1
  245. data/lib/rubygems/mock_gem_ui.rb +0 -6
  246. data/lib/rubygems/name_tuple.rb +2 -6
  247. data/lib/rubygems/openssl.rb +7 -0
  248. data/lib/rubygems/package.rb +11 -23
  249. data/lib/rubygems/package/digest_io.rb +0 -2
  250. data/lib/rubygems/package/file_source.rb +0 -2
  251. data/lib/rubygems/package/io_source.rb +0 -2
  252. data/lib/rubygems/package/old.rb +1 -3
  253. data/lib/rubygems/package/tar_header.rb +3 -5
  254. data/lib/rubygems/package/tar_reader.rb +0 -3
  255. data/lib/rubygems/package/tar_reader/entry.rb +0 -3
  256. data/lib/rubygems/package/tar_test_case.rb +1 -3
  257. data/lib/rubygems/package/tar_writer.rb +2 -12
  258. data/lib/rubygems/package_task.rb +1 -7
  259. data/lib/rubygems/path_support.rb +1 -3
  260. data/lib/rubygems/platform.rb +3 -5
  261. data/lib/rubygems/psych_tree.rb +0 -2
  262. data/lib/rubygems/query_utils.rb +362 -0
  263. data/lib/rubygems/rdoc.rb +0 -12
  264. data/lib/rubygems/remote_fetcher.rb +9 -25
  265. data/lib/rubygems/request.rb +1 -9
  266. data/lib/rubygems/request/connection_pools.rb +1 -5
  267. data/lib/rubygems/request/http_pool.rb +0 -2
  268. data/lib/rubygems/request/https_pool.rb +0 -2
  269. data/lib/rubygems/request_set.rb +5 -7
  270. data/lib/rubygems/request_set/gem_dependency_api.rb +2 -4
  271. data/lib/rubygems/request_set/lockfile.rb +8 -12
  272. data/lib/rubygems/request_set/lockfile/parser.rb +0 -2
  273. data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -3
  274. data/lib/rubygems/requirement.rb +20 -21
  275. data/lib/rubygems/resolver.rb +7 -10
  276. data/lib/rubygems/resolver/activation_request.rb +0 -2
  277. data/lib/rubygems/resolver/api_set.rb +4 -6
  278. data/lib/rubygems/resolver/api_specification.rb +16 -7
  279. data/lib/rubygems/resolver/best_set.rb +0 -2
  280. data/lib/rubygems/resolver/composed_set.rb +3 -5
  281. data/lib/rubygems/resolver/conflict.rb +1 -3
  282. data/lib/rubygems/resolver/current_set.rb +0 -2
  283. data/lib/rubygems/resolver/dependency_request.rb +0 -2
  284. data/lib/rubygems/resolver/git_set.rb +0 -2
  285. data/lib/rubygems/resolver/git_specification.rb +0 -2
  286. data/lib/rubygems/resolver/index_set.rb +1 -3
  287. data/lib/rubygems/resolver/index_specification.rb +0 -2
  288. data/lib/rubygems/resolver/installed_specification.rb +0 -2
  289. data/lib/rubygems/resolver/installer_set.rb +3 -5
  290. data/lib/rubygems/resolver/local_specification.rb +0 -2
  291. data/lib/rubygems/resolver/lock_set.rb +1 -3
  292. data/lib/rubygems/resolver/lock_specification.rb +0 -2
  293. data/lib/rubygems/resolver/requirement_list.rb +0 -2
  294. data/lib/rubygems/resolver/set.rb +0 -2
  295. data/lib/rubygems/resolver/source_set.rb +0 -2
  296. data/lib/rubygems/resolver/spec_specification.rb +0 -2
  297. data/lib/rubygems/resolver/specification.rb +0 -2
  298. data/lib/rubygems/resolver/stats.rb +0 -2
  299. data/lib/rubygems/resolver/vendor_set.rb +0 -2
  300. data/lib/rubygems/resolver/vendor_specification.rb +0 -2
  301. data/lib/rubygems/s3_uri_signer.rb +1 -7
  302. data/lib/rubygems/safe_yaml.rb +4 -4
  303. data/lib/rubygems/security.rb +26 -32
  304. data/lib/rubygems/security/policy.rb +3 -7
  305. data/lib/rubygems/security/signer.rb +4 -6
  306. data/lib/rubygems/security/trust_dir.rb +1 -3
  307. data/lib/rubygems/server.rb +9 -11
  308. data/lib/rubygems/source.rb +4 -4
  309. data/lib/rubygems/source/git.rb +7 -8
  310. data/lib/rubygems/source/installed.rb +0 -2
  311. data/lib/rubygems/source/local.rb +2 -4
  312. data/lib/rubygems/source/lock.rb +0 -2
  313. data/lib/rubygems/source/specific_file.rb +0 -2
  314. data/lib/rubygems/source/vendor.rb +0 -2
  315. data/lib/rubygems/source_list.rb +6 -7
  316. data/lib/rubygems/spec_fetcher.rb +18 -17
  317. data/lib/rubygems/specification.rb +107 -120
  318. data/lib/rubygems/specification_policy.rb +88 -30
  319. data/lib/rubygems/stub_specification.rb +0 -4
  320. data/lib/rubygems/syck_hack.rb +0 -2
  321. data/lib/rubygems/test_case.rb +122 -92
  322. data/lib/rubygems/test_utilities.rb +6 -14
  323. data/lib/rubygems/uninstaller.rb +35 -16
  324. data/lib/rubygems/uri_formatter.rb +0 -2
  325. data/lib/rubygems/uri_parser.rb +0 -2
  326. data/lib/rubygems/user_interaction.rb +1 -26
  327. data/lib/rubygems/util.rb +15 -3
  328. data/lib/rubygems/util/licenses.rb +4 -6
  329. data/lib/rubygems/util/list.rb +0 -2
  330. data/lib/rubygems/validator.rb +1 -3
  331. data/lib/rubygems/version.rb +5 -7
  332. data/rubygems-update.gemspec +2 -2
  333. data/setup.rb +2 -7
  334. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
  335. data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
  336. data/test/rubygems/rubygems_plugin.rb +0 -2
  337. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
  338. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
  339. data/test/rubygems/test_bundled_ca.rb +38 -45
  340. data/test/rubygems/test_config.rb +0 -2
  341. data/test/rubygems/test_deprecate.rb +40 -7
  342. data/test/rubygems/test_gem.rb +150 -103
  343. data/test/rubygems/test_gem_available_set.rb +3 -5
  344. data/test/rubygems/test_gem_bundler_version_finder.rb +19 -3
  345. data/test/rubygems/test_gem_command.rb +24 -7
  346. data/test/rubygems/test_gem_command_manager.rb +36 -5
  347. data/test/rubygems/test_gem_commands_build_command.rb +53 -10
  348. data/test/rubygems/test_gem_commands_cert_command.rb +2 -4
  349. data/test/rubygems/test_gem_commands_check_command.rb +0 -2
  350. data/test/rubygems/test_gem_commands_cleanup_command.rb +13 -4
  351. data/test/rubygems/test_gem_commands_contents_command.rb +48 -17
  352. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -2
  353. data/test/rubygems/test_gem_commands_environment_command.rb +21 -23
  354. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -2
  355. data/test/rubygems/test_gem_commands_generate_index_command.rb +1 -7
  356. data/test/rubygems/test_gem_commands_help_command.rb +0 -2
  357. data/test/rubygems/test_gem_commands_info_command.rb +6 -8
  358. data/test/rubygems/test_gem_commands_install_command.rb +31 -33
  359. data/test/rubygems/test_gem_commands_list_command.rb +0 -2
  360. data/test/rubygems/test_gem_commands_lock_command.rb +0 -2
  361. data/test/rubygems/test_gem_commands_mirror.rb +1 -3
  362. data/test/rubygems/test_gem_commands_open_command.rb +4 -6
  363. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -2
  364. data/test/rubygems/test_gem_commands_owner_command.rb +11 -5
  365. data/test/rubygems/test_gem_commands_pristine_command.rb +41 -10
  366. data/test/rubygems/test_gem_commands_push_command.rb +7 -4
  367. data/test/rubygems/test_gem_commands_query_command.rb +9 -9
  368. data/test/rubygems/test_gem_commands_search_command.rb +0 -2
  369. data/test/rubygems/test_gem_commands_server_command.rb +0 -2
  370. data/test/rubygems/test_gem_commands_setup_command.rb +210 -118
  371. data/test/rubygems/test_gem_commands_signin_command.rb +6 -6
  372. data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
  373. data/test/rubygems/test_gem_commands_sources_command.rb +39 -3
  374. data/test/rubygems/test_gem_commands_specification_command.rb +18 -20
  375. data/test/rubygems/test_gem_commands_stale_command.rb +0 -2
  376. data/test/rubygems/test_gem_commands_uninstall_command.rb +2 -3
  377. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -2
  378. data/test/rubygems/test_gem_commands_update_command.rb +116 -7
  379. data/test/rubygems/test_gem_commands_which_command.rb +3 -5
  380. data/test/rubygems/test_gem_commands_yank_command.rb +14 -8
  381. data/test/rubygems/test_gem_config_file.rb +7 -12
  382. data/test/rubygems/test_gem_dependency.rb +0 -2
  383. data/test/rubygems/test_gem_dependency_installer.rb +54 -191
  384. data/test/rubygems/test_gem_dependency_list.rb +8 -10
  385. data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -3
  386. data/test/rubygems/test_gem_doctor.rb +28 -2
  387. data/test/rubygems/test_gem_ext_builder.rb +16 -33
  388. data/test/rubygems/test_gem_ext_cmake_builder.rb +13 -14
  389. data/test/rubygems/test_gem_ext_configure_builder.rb +1 -11
  390. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -3
  391. data/test/rubygems/test_gem_ext_rake_builder.rb +9 -11
  392. data/test/rubygems/test_gem_gem_runner.rb +43 -1
  393. data/test/rubygems/test_gem_gemcutter_utilities.rb +5 -2
  394. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -2
  395. data/test/rubygems/test_gem_indexer.rb +9 -15
  396. data/test/rubygems/test_gem_install_update_options.rb +0 -2
  397. data/test/rubygems/test_gem_installer.rb +192 -71
  398. data/test/rubygems/test_gem_local_remote_options.rb +0 -2
  399. data/test/rubygems/test_gem_name_tuple.rb +0 -2
  400. data/test/rubygems/test_gem_package.rb +33 -31
  401. data/test/rubygems/test_gem_package_old.rb +0 -2
  402. data/test/rubygems/test_gem_package_tar_header.rb +18 -1
  403. data/test/rubygems/test_gem_package_tar_reader.rb +0 -2
  404. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -2
  405. data/test/rubygems/test_gem_package_tar_writer.rb +8 -5
  406. data/test/rubygems/test_gem_package_task.rb +46 -13
  407. data/test/rubygems/test_gem_path_support.rb +0 -2
  408. data/test/rubygems/test_gem_platform.rb +0 -2
  409. data/test/rubygems/test_gem_rdoc.rb +0 -2
  410. data/test/rubygems/test_gem_remote_fetcher.rb +156 -195
  411. data/test/rubygems/test_gem_request.rb +11 -15
  412. data/test/rubygems/test_gem_request_connection_pools.rb +0 -4
  413. data/test/rubygems/test_gem_request_set.rb +72 -22
  414. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +3 -5
  415. data/test/rubygems/test_gem_request_set_lockfile.rb +0 -2
  416. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -11
  417. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -120
  418. data/test/rubygems/test_gem_requirement.rb +10 -4
  419. data/test/rubygems/test_gem_resolver.rb +6 -8
  420. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -2
  421. data/test/rubygems/test_gem_resolver_api_set.rb +3 -5
  422. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -2
  423. data/test/rubygems/test_gem_resolver_best_set.rb +2 -4
  424. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -2
  425. data/test/rubygems/test_gem_resolver_conflict.rb +0 -2
  426. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -2
  427. data/test/rubygems/test_gem_resolver_git_set.rb +0 -2
  428. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -2
  429. data/test/rubygems/test_gem_resolver_index_set.rb +2 -4
  430. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -2
  431. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -2
  432. data/test/rubygems/test_gem_resolver_installer_set.rb +7 -9
  433. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -2
  434. data/test/rubygems/test_gem_resolver_lock_set.rb +3 -5
  435. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -2
  436. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -2
  437. data/test/rubygems/test_gem_resolver_specification.rb +0 -4
  438. data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -2
  439. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -2
  440. data/test/rubygems/test_gem_security.rb +20 -22
  441. data/test/rubygems/test_gem_security_policy.rb +5 -10
  442. data/test/rubygems/test_gem_security_signer.rb +8 -10
  443. data/test/rubygems/test_gem_security_trust_dir.rb +2 -4
  444. data/test/rubygems/test_gem_server.rb +10 -14
  445. data/test/rubygems/test_gem_silent_ui.rb +0 -2
  446. data/test/rubygems/test_gem_source.rb +12 -16
  447. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -2
  448. data/test/rubygems/test_gem_source_git.rb +12 -13
  449. data/test/rubygems/test_gem_source_installed.rb +7 -9
  450. data/test/rubygems/test_gem_source_list.rb +1 -2
  451. data/test/rubygems/test_gem_source_local.rb +8 -10
  452. data/test/rubygems/test_gem_source_lock.rb +10 -12
  453. data/test/rubygems/test_gem_source_specific_file.rb +7 -9
  454. data/test/rubygems/test_gem_source_vendor.rb +7 -9
  455. data/test/rubygems/test_gem_spec_fetcher.rb +11 -4
  456. data/test/rubygems/test_gem_specification.rb +179 -129
  457. data/test/rubygems/test_gem_stream_ui.rb +3 -3
  458. data/test/rubygems/test_gem_stub_specification.rb +4 -7
  459. data/test/rubygems/test_gem_text.rb +1 -3
  460. data/test/rubygems/test_gem_uninstaller.rb +133 -11
  461. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -2
  462. data/test/rubygems/test_gem_uri_formatter.rb +0 -2
  463. data/test/rubygems/test_gem_util.rb +7 -7
  464. data/test/rubygems/test_gem_validator.rb +0 -2
  465. data/test/rubygems/test_gem_version.rb +1 -3
  466. data/test/rubygems/test_gem_version_option.rb +0 -2
  467. data/test/rubygems/test_kernel.rb +25 -10
  468. data/test/rubygems/test_project_sanity.rb +7 -2
  469. data/test/rubygems/test_remote_fetch_error.rb +0 -2
  470. data/test/rubygems/test_require.rb +241 -47
  471. metadata +59 -96
  472. data/.bundle/config +0 -2
  473. data/.rubocop.yml +0 -91
  474. data/Gemfile +0 -8
  475. data/Gemfile.lock +0 -43
  476. data/bundler/CODE_OF_CONDUCT.md +0 -136
  477. data/bundler/man/bundle-add.1.txt +0 -58
  478. data/bundler/man/bundle-binstubs.1.txt +0 -48
  479. data/bundler/man/bundle-cache.1.txt +0 -78
  480. data/bundler/man/bundle-check.1.txt +0 -33
  481. data/bundler/man/bundle-clean.1.txt +0 -26
  482. data/bundler/man/bundle-config.1.txt +0 -528
  483. data/bundler/man/bundle-doctor.1.txt +0 -44
  484. data/bundler/man/bundle-exec.1.txt +0 -178
  485. data/bundler/man/bundle-gem.1.txt +0 -91
  486. data/bundler/man/bundle-info.1.txt +0 -21
  487. data/bundler/man/bundle-init.1.txt +0 -34
  488. data/bundler/man/bundle-inject.1.txt +0 -32
  489. data/bundler/man/bundle-install.1.txt +0 -401
  490. data/bundler/man/bundle-list.1.txt +0 -43
  491. data/bundler/man/bundle-lock.1.txt +0 -93
  492. data/bundler/man/bundle-open.1.txt +0 -29
  493. data/bundler/man/bundle-outdated.1.txt +0 -131
  494. data/bundler/man/bundle-platform.1.txt +0 -57
  495. data/bundler/man/bundle-pristine.1.txt +0 -44
  496. data/bundler/man/bundle-remove.1.txt +0 -34
  497. data/bundler/man/bundle-show.1.txt +0 -27
  498. data/bundler/man/bundle-update.1.txt +0 -390
  499. data/bundler/man/bundle-viz.1.txt +0 -39
  500. data/bundler/man/bundle.1.txt +0 -116
  501. data/bundler/man/gemfile.5.txt +0 -649
  502. data/bundler/man/index.txt +0 -25
  503. data/lib/rubygems/source_local.rb +0 -7
  504. data/lib/rubygems/source_specific_file.rb +0 -6
  505. data/lib/ubygems.rb +0 -14
  506. data/tmp/.keep +0 -0
  507. data/util/CL2notes +0 -55
  508. data/util/bisect +0 -10
  509. data/util/ci.sh +0 -62
  510. data/util/cops/deprecations.rb +0 -52
  511. data/util/create_certs.rb +0 -171
  512. data/util/create_certs.sh +0 -27
  513. data/util/create_encrypted_key.rb +0 -16
  514. data/util/generate_spdx_license_list.rb +0 -63
  515. data/util/patch_with_prs.rb +0 -77
  516. data/util/rubocop +0 -8
  517. data/util/update_bundled_ca_certificates.rb +0 -139
  518. data/util/update_changelog.rb +0 -67
@@ -4,16 +4,14 @@
4
4
  if RUBY_VERSION >= "2.5"
5
5
 
6
6
  module Kernel
7
- path = "#{__dir__}/" # Frames to be skipped start with this path.
7
+ rubygems_path = "#{__dir__}/" # Frames to be skipped start with this path.
8
8
 
9
9
  original_warn = method(:warn)
10
10
 
11
11
  remove_method :warn
12
12
 
13
13
  class << self
14
-
15
14
  remove_method :warn
16
-
17
15
  end
18
16
 
19
17
  module_function define_method(:warn) {|*messages, **kw|
@@ -40,9 +38,11 @@ if RUBY_VERSION >= "2.5"
40
38
 
41
39
  start += 1
42
40
 
43
- unless loc.path.start_with?(path)
44
- # Non-rubygems frames
45
- uplevel -= 1
41
+ if path = loc.path
42
+ unless path.start_with?(rubygems_path) or path.start_with?('<internal:')
43
+ # Non-rubygems frames
44
+ uplevel -= 1
45
+ end
46
46
  end
47
47
  end
48
48
  uplevel = start
@@ -20,7 +20,13 @@ module Gem
20
20
  # specified in the environment
21
21
 
22
22
  def self.default_spec_cache_dir
23
- File.join Gem.user_home, '.gem', 'specs'
23
+ default_spec_cache_dir = File.join Gem.user_home, '.gem', 'specs'
24
+
25
+ unless File.exist?(default_spec_cache_dir)
26
+ default_spec_cache_dir = File.join Gem.data_home, 'gem', 'specs'
27
+ end
28
+
29
+ default_spec_cache_dir
24
30
  end
25
31
 
26
32
  ##
@@ -70,15 +76,91 @@ module Gem
70
76
  File.join(Gem.default_dir, "specifications", "default")
71
77
  end
72
78
 
79
+ ##
80
+ # Finds the user's home directory.
81
+ #--
82
+ # Some comments from the ruby-talk list regarding finding the home
83
+ # directory:
84
+ #
85
+ # I have HOME, USERPROFILE and HOMEDRIVE + HOMEPATH. Ruby seems
86
+ # to be depending on HOME in those code samples. I propose that
87
+ # it should fallback to USERPROFILE and HOMEDRIVE + HOMEPATH (at
88
+ # least on Win32).
89
+ #++
90
+ #--
91
+ #
92
+ #++
93
+
94
+ def self.find_home
95
+ Dir.home.dup
96
+ rescue
97
+ if Gem.win_platform?
98
+ File.expand_path File.join(ENV['HOMEDRIVE'] || ENV['SystemDrive'], '/')
99
+ else
100
+ File.expand_path "/"
101
+ end
102
+ end
103
+
104
+ private_class_method :find_home
105
+
106
+ ##
107
+ # The home directory for the user.
108
+
109
+ def self.user_home
110
+ @user_home ||= find_home.tap(&Gem::UNTAINT)
111
+ end
112
+
73
113
  ##
74
114
  # Path for gems in the user's home directory
75
115
 
76
116
  def self.user_dir
77
- parts = [Gem.user_home, '.gem', ruby_engine]
117
+ gem_dir = File.join(Gem.user_home, ".gem")
118
+ gem_dir = File.join(Gem.data_home, "gem") unless File.exist?(gem_dir)
119
+ parts = [gem_dir, ruby_engine]
78
120
  parts << RbConfig::CONFIG['ruby_version'] unless RbConfig::CONFIG['ruby_version'].empty?
79
121
  File.join parts
80
122
  end
81
123
 
124
+ ##
125
+ # The path to standard location of the user's configuration directory.
126
+
127
+ def self.config_home
128
+ @config_home ||= (ENV["XDG_CONFIG_HOME"] || File.join(Gem.user_home, '.config'))
129
+ end
130
+
131
+ ##
132
+ # Finds the user's config file
133
+
134
+ def self.find_config_file
135
+ gemrc = File.join Gem.user_home, '.gemrc'
136
+ if File.exist? gemrc
137
+ gemrc
138
+ else
139
+ File.join Gem.config_home, "gem", "gemrc"
140
+ end
141
+ end
142
+
143
+ ##
144
+ # The path to standard location of the user's .gemrc file.
145
+
146
+ def self.config_file
147
+ @config_file ||= find_config_file.tap(&Gem::UNTAINT)
148
+ end
149
+
150
+ ##
151
+ # The path to standard location of the user's cache directory.
152
+
153
+ def self.cache_home
154
+ @cache_home ||= (ENV["XDG_CACHE_HOME"] || File.join(Gem.user_home, '.cache'))
155
+ end
156
+
157
+ ##
158
+ # The path to standard location of the user's data directory.
159
+
160
+ def self.data_home
161
+ @data_home ||= (ENV["XDG_DATA_HOME"] || File.join(Gem.user_home, '.local', 'share'))
162
+ end
163
+
82
164
  ##
83
165
  # How String Gem paths should be split. Overridable for esoteric platforms.
84
166
 
@@ -115,7 +197,7 @@ module Gem
115
197
  # The default directory for binaries
116
198
 
117
199
  def self.default_bindir
118
- if defined? RUBY_FRAMEWORK_VERSION # mac framework support
200
+ if defined? RUBY_FRAMEWORK_VERSION # mac framework support
119
201
  '/usr/bin'
120
202
  else # generic install
121
203
  RbConfig::CONFIG['bindir']
@@ -130,14 +212,26 @@ module Gem
130
212
  # The default signing key path
131
213
 
132
214
  def self.default_key_path
133
- File.join Gem.user_home, ".gem", "gem-private_key.pem"
215
+ default_key_path = File.join Gem.user_home, ".gem", "gem-private_key.pem"
216
+
217
+ unless File.exist?(default_key_path)
218
+ default_key_path = File.join Gem.data_home, "gem", "gem-private_key.pem"
219
+ end
220
+
221
+ default_key_path
134
222
  end
135
223
 
136
224
  ##
137
225
  # The default signing certificate chain path
138
226
 
139
227
  def self.default_cert_path
140
- File.join Gem.user_home, ".gem", "gem-public_cert.pem"
228
+ default_cert_path = File.join Gem.user_home, ".gem", "gem-public_cert.pem"
229
+
230
+ unless File.exist?(default_cert_path)
231
+ default_cert_path = File.join Gem.data_home, "gem", "gem-public_cert.pem"
232
+ end
233
+
234
+ default_cert_path
141
235
  end
142
236
 
143
237
  ##
@@ -2,11 +2,7 @@
2
2
  ##
3
3
  # The Dependency class holds a Gem name and a Gem::Requirement.
4
4
 
5
- require "rubygems/bundler_version_finder"
6
- require "rubygems/requirement"
7
-
8
5
  class Gem::Dependency
9
-
10
6
  ##
11
7
  # Valid dependency types.
12
8
  #--
@@ -322,13 +318,13 @@ class Gem::Dependency
322
318
  def to_spec
323
319
  matches = self.to_specs.compact
324
320
 
325
- active = matches.find { |spec| spec.activated? }
321
+ active = matches.find {|spec| spec.activated? }
326
322
  return active if active
327
323
 
328
324
  return matches.first if prerelease?
329
325
 
330
326
  # Move prereleases to the end of the list for >= 0 requirements
331
- pre, matches = matches.partition { |spec| spec.version.prerelease? }
327
+ pre, matches = matches.partition {|spec| spec.version.prerelease? }
332
328
  matches += pre if requirement == Gem::Requirement.default
333
329
 
334
330
  matches.first
@@ -347,5 +343,4 @@ class Gem::Dependency
347
343
  :released
348
344
  end
349
345
  end
350
-
351
346
  end
@@ -5,7 +5,6 @@ require 'rubygems/package'
5
5
  require 'rubygems/installer'
6
6
  require 'rubygems/spec_fetcher'
7
7
  require 'rubygems/user_interaction'
8
- require 'rubygems/source'
9
8
  require 'rubygems/available_set'
10
9
  require 'rubygems/deprecate'
11
10
 
@@ -13,7 +12,6 @@ require 'rubygems/deprecate'
13
12
  # Installs a gem along with all its dependencies from local and remote gems.
14
13
 
15
14
  class Gem::DependencyInstaller
16
-
17
15
  include Gem::UserInteraction
18
16
  extend Gem::Deprecate
19
17
 
@@ -106,27 +104,6 @@ class Gem::DependencyInstaller
106
104
  @errors = []
107
105
  end
108
106
 
109
- ##
110
- # Creates an AvailableSet to install from based on +dep_or_name+ and
111
- # +version+
112
-
113
- def available_set_for(dep_or_name, version) # :nodoc:
114
- if String === dep_or_name
115
- Gem::Deprecate.skip_during do
116
- find_spec_by_name_and_version dep_or_name, version, @prerelease
117
- end
118
- else
119
- dep = dep_or_name.dup
120
- dep.prerelease = @prerelease
121
- @available = Gem::Deprecate.skip_during do
122
- find_gems_with_sources dep
123
- end
124
- end
125
-
126
- @available.pick_best!
127
- end
128
- deprecate :available_set_for, :none, 2019, 12
129
-
130
107
  ##
131
108
  # Indicated, based on the requested domain, if local
132
109
  # gems should be considered.
@@ -216,57 +193,7 @@ class Gem::DependencyInstaller
216
193
 
217
194
  set
218
195
  end
219
- deprecate :find_gems_with_sources, :none, 2019, 12
220
-
221
- ##
222
- # Finds a spec and the source_uri it came from for gem +gem_name+ and
223
- # +version+. Returns an Array of specs and sources required for
224
- # installation of the gem.
225
-
226
- def find_spec_by_name_and_version(gem_name,
227
- version = Gem::Requirement.default,
228
- prerelease = false)
229
- set = Gem::AvailableSet.new
230
-
231
- if consider_local?
232
- if gem_name =~ /\.gem$/ and File.file? gem_name
233
- src = Gem::Source::SpecificFile.new(gem_name)
234
- set.add src.spec, src
235
- elsif gem_name =~ /\.gem$/
236
- Dir[gem_name].each do |name|
237
- begin
238
- src = Gem::Source::SpecificFile.new name
239
- set.add src.spec, src
240
- rescue Gem::Package::FormatError
241
- end
242
- end
243
- else
244
- local = Gem::Source::Local.new
245
-
246
- if s = local.find_gem(gem_name, version)
247
- set.add s, local
248
- end
249
- end
250
- end
251
-
252
- if set.empty?
253
- dep = Gem::Dependency.new gem_name, version
254
- dep.prerelease = true if prerelease
255
-
256
- set = Gem::Deprecate.skip_during do
257
- find_gems_with_sources(dep, true)
258
- end
259
-
260
- set.match_platform!
261
- end
262
-
263
- if set.empty?
264
- raise Gem::SpecificGemNotFoundException.new(gem_name, version, @errors)
265
- end
266
-
267
- @available = set
268
- end
269
- deprecate :find_spec_by_name_and_version, :none, 2019, 12
196
+ rubygems_deprecate :find_gems_with_sources
270
197
 
271
198
  def in_background(what) # :nodoc:
272
199
  fork_happened = false
@@ -407,5 +334,4 @@ class Gem::DependencyInstaller
407
334
 
408
335
  request_set
409
336
  end
410
-
411
337
  end
@@ -17,7 +17,6 @@ require 'rubygems/deprecate'
17
17
  # this class necessary anymore? Especially #ok?, #why_not_ok?
18
18
 
19
19
  class Gem::DependencyList
20
-
21
20
  attr_reader :specs
22
21
 
23
22
  include Enumerable
@@ -101,11 +100,11 @@ class Gem::DependencyList
101
100
  end
102
101
 
103
102
  def find_name(full_name)
104
- @specs.find { |spec| spec.full_name == full_name }
103
+ @specs.find {|spec| spec.full_name == full_name }
105
104
  end
106
105
 
107
106
  def inspect # :nodoc:
108
- "%s %p>" % [super[0..-2], map { |s| s.full_name }]
107
+ "%s %p>" % [super[0..-2], map {|s| s.full_name }]
109
108
  end
110
109
 
111
110
  ##
@@ -116,7 +115,7 @@ class Gem::DependencyList
116
115
  end
117
116
 
118
117
  def why_not_ok?(quick = false)
119
- unsatisfied = Hash.new { |h,k| h[k] = [] }
118
+ unsatisfied = Hash.new {|h,k| h[k] = [] }
120
119
  each do |spec|
121
120
  spec.runtime_dependencies.each do |dep|
122
121
  inst = Gem::Specification.any? do |installed_spec|
@@ -124,7 +123,7 @@ class Gem::DependencyList
124
123
  dep.requirement.satisfied_by? installed_spec.version
125
124
  end
126
125
 
127
- unless inst or @specs.find { |s| s.satisfies_requirement? dep }
126
+ unless inst or @specs.find {|s| s.satisfies_requirement? dep }
128
127
  unsatisfied[spec.name] << dep
129
128
  return unsatisfied if quick
130
129
  end
@@ -184,7 +183,7 @@ class Gem::DependencyList
184
183
  # Removes the gemspec matching +full_name+ from the dependency list
185
184
 
186
185
  def remove_by_name(full_name)
187
- @specs.delete_if { |spec| spec.full_name == full_name }
186
+ @specs.delete_if {|spec| spec.full_name == full_name }
188
187
  end
189
188
 
190
189
  ##
@@ -192,7 +191,7 @@ class Gem::DependencyList
192
191
  # gemspecs that have a dependency satisfied by the named gemspec.
193
192
 
194
193
  def spec_predecessors
195
- result = Hash.new { |h,k| h[k] = [] }
194
+ result = Hash.new {|h,k| h[k] = [] }
196
195
 
197
196
  specs = @specs.sort.reverse
198
197
 
@@ -238,7 +237,6 @@ class Gem::DependencyList
238
237
  # +ignored+.
239
238
 
240
239
  def active_count(specs, ignored)
241
- specs.count { |spec| ignored[spec.full_name].nil? }
240
+ specs.count {|spec| ignored[spec.full_name].nil? }
242
241
  end
243
-
244
242
  end
@@ -41,6 +41,10 @@ module Gem::Deprecate
41
41
  Gem::Deprecate.skip = original
42
42
  end
43
43
 
44
+ def self.next_rubygems_major_version # :nodoc:
45
+ Gem::Version.new(Gem.rubygems_version.segments.first).bump
46
+ end
47
+
44
48
  ##
45
49
  # Simple deprecation method that deprecates +name+ by wrapping it up
46
50
  # in a dummy method. It warns on each call to the dummy method
@@ -65,6 +69,47 @@ module Gem::Deprecate
65
69
  end
66
70
  end
67
71
 
68
- module_function :deprecate, :skip_during
72
+ ##
73
+ # Simple deprecation method that deprecates +name+ by wrapping it up
74
+ # in a dummy method. It warns on each call to the dummy method
75
+ # telling the user of +repl+ (unless +repl+ is :none) and the
76
+ # Rubygems version that it is planned to go away.
77
+
78
+ def rubygems_deprecate(name, replacement=:none)
79
+ class_eval do
80
+ old = "_deprecated_#{name}"
81
+ alias_method old, name
82
+ define_method name do |*args, &block|
83
+ klass = self.kind_of? Module
84
+ target = klass ? "#{self}." : "#{self.class}#"
85
+ msg = [ "NOTE: #{target}#{name} is deprecated",
86
+ replacement == :none ? " with no replacement" : "; use #{replacement} instead",
87
+ ". It will be removed in Rubygems #{Gem::Deprecate.next_rubygems_major_version}",
88
+ "\n#{target}#{name} called from #{Gem.location_of_caller.join(":")}",
89
+ ]
90
+ warn "#{msg.join}." unless Gem::Deprecate.skip
91
+ send old, *args, &block
92
+ end
93
+ end
94
+ end
95
+
96
+ # Deprecation method to deprecate Rubygems commands
97
+ def rubygems_deprecate_command
98
+ class_eval do
99
+ define_method "deprecated?" do
100
+ true
101
+ end
102
+
103
+ define_method "deprecation_warning" do
104
+ msg = [ "#{self.command} command is deprecated",
105
+ ". It will be removed in Rubygems #{Gem::Deprecate.next_rubygems_major_version}.\n",
106
+ ]
107
+
108
+ alert_warning "#{msg.join}" unless Gem::Deprecate.skip
109
+ end
110
+ end
111
+ end
112
+
113
+ module_function :rubygems_deprecate, :rubygems_deprecate_command, :skip_during
69
114
 
70
115
  end
@@ -12,7 +12,6 @@ require 'rubygems/user_interaction'
12
12
  # removing the bogus specification.
13
13
 
14
14
  class Gem::Doctor
15
-
16
15
  include Gem::UserInteraction
17
16
 
18
17
  ##
@@ -26,11 +25,12 @@ class Gem::Doctor
26
25
  ['doc', ''],
27
26
  ['extensions', ''],
28
27
  ['gems', ''],
28
+ ['plugins', ''],
29
29
  ].freeze
30
30
 
31
31
  missing =
32
32
  Gem::REPOSITORY_SUBDIRECTORIES.sort -
33
- REPOSITORY_EXTENSION_MAP.map { |(k,_)| k }.sort
33
+ REPOSITORY_EXTENSION_MAP.map {|(k,_)| k }.sort
34
34
 
35
35
  raise "Update REPOSITORY_EXTENSION_MAP, missing: #{missing.join ', '}" unless
36
36
  missing.empty?
@@ -52,7 +52,7 @@ class Gem::Doctor
52
52
  # Specs installed in this gem repository
53
53
 
54
54
  def installed_specs # :nodoc:
55
- @installed_specs ||= Gem::Specification.map { |s| s.full_name }
55
+ @installed_specs ||= Gem::Specification.map {|s| s.full_name }
56
56
  end
57
57
 
58
58
  ##
@@ -112,6 +112,7 @@ class Gem::Doctor
112
112
  next if installed_specs.include? basename
113
113
  next if /^rubygems-\d/ =~ basename
114
114
  next if 'specifications' == sub_directory and 'default' == basename
115
+ next if 'plugins' == sub_directory and Gem.plugin_suffix_regexp =~ basename
115
116
 
116
117
  type = File.directory?(child) ? 'directory' : 'file'
117
118
 
@@ -127,5 +128,4 @@ class Gem::Doctor
127
128
  rescue Errno::ENOENT
128
129
  # ignore
129
130
  end
130
-
131
131
  end