rubygems-update 3.1.0 → 3.2.0

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 (558) 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 +435 -179
  5. data/Manifest.txt +44 -77
  6. data/POLICIES.md +2 -9
  7. data/README.md +5 -5
  8. data/Rakefile +50 -83
  9. data/bin/update_rubygems +2 -2
  10. data/bundler/CHANGELOG.md +1590 -1400
  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 +25 -7
  16. data/bundler/lib/bundler/build_metadata.rb +4 -12
  17. data/bundler/lib/bundler/cli.rb +56 -20
  18. data/bundler/lib/bundler/cli/add.rb +1 -1
  19. data/bundler/lib/bundler/cli/binstubs.rb +6 -2
  20. data/bundler/lib/bundler/cli/cache.rb +1 -7
  21. data/bundler/lib/bundler/cli/clean.rb +1 -1
  22. data/bundler/lib/bundler/cli/common.rb +14 -0
  23. data/bundler/lib/bundler/cli/console.rb +1 -1
  24. data/bundler/lib/bundler/cli/doctor.rb +1 -1
  25. data/bundler/lib/bundler/cli/exec.rb +7 -16
  26. data/bundler/lib/bundler/cli/fund.rb +36 -0
  27. data/bundler/lib/bundler/cli/gem.rb +75 -11
  28. data/bundler/lib/bundler/cli/info.rb +8 -4
  29. data/bundler/lib/bundler/cli/init.rb +2 -2
  30. data/bundler/lib/bundler/cli/inject.rb +1 -1
  31. data/bundler/lib/bundler/cli/install.rb +12 -18
  32. data/bundler/lib/bundler/cli/issue.rb +2 -2
  33. data/bundler/lib/bundler/cli/list.rb +1 -1
  34. data/bundler/lib/bundler/cli/outdated.rb +2 -4
  35. data/bundler/lib/bundler/cli/plugin.rb +10 -0
  36. data/bundler/lib/bundler/cli/pristine.rb +1 -1
  37. data/bundler/lib/bundler/cli/show.rb +1 -1
  38. data/bundler/lib/bundler/cli/update.rb +2 -0
  39. data/bundler/lib/bundler/compact_index_client.rb +1 -1
  40. data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
  41. data/bundler/lib/bundler/compact_index_client/updater.rb +5 -5
  42. data/bundler/lib/bundler/definition.rb +47 -61
  43. data/bundler/lib/bundler/dep_proxy.rb +1 -1
  44. data/bundler/lib/bundler/dependency.rb +0 -9
  45. data/bundler/lib/bundler/dsl.rb +5 -9
  46. data/bundler/lib/bundler/endpoint_specification.rb +1 -1
  47. data/bundler/lib/bundler/env.rb +1 -1
  48. data/bundler/lib/bundler/environment_preserver.rb +26 -2
  49. data/bundler/lib/bundler/errors.rb +1 -0
  50. data/bundler/lib/bundler/feature_flag.rb +0 -3
  51. data/bundler/lib/bundler/fetcher.rb +4 -3
  52. data/bundler/lib/bundler/fetcher/base.rb +1 -1
  53. data/bundler/lib/bundler/fetcher/compact_index.rb +1 -1
  54. data/bundler/lib/bundler/fetcher/downloader.rb +1 -1
  55. data/bundler/lib/bundler/fetcher/index.rb +3 -4
  56. data/bundler/lib/bundler/friendly_errors.rb +22 -13
  57. data/bundler/lib/bundler/gem_helper.rb +33 -19
  58. data/bundler/lib/bundler/gem_helpers.rb +6 -1
  59. data/bundler/lib/bundler/gem_version_promoter.rb +2 -2
  60. data/bundler/lib/bundler/graph.rb +1 -1
  61. data/bundler/lib/bundler/index.rb +6 -2
  62. data/bundler/lib/bundler/injector.rb +22 -4
  63. data/bundler/lib/bundler/inline.rb +2 -2
  64. data/bundler/lib/bundler/installer.rb +35 -32
  65. data/bundler/lib/bundler/installer/gem_installer.rb +3 -3
  66. data/bundler/lib/bundler/installer/parallel_installer.rb +10 -10
  67. data/bundler/lib/bundler/installer/standalone.rb +2 -2
  68. data/bundler/lib/bundler/lazy_specification.rb +20 -9
  69. data/bundler/lib/bundler/lockfile_generator.rb +1 -1
  70. data/bundler/lib/bundler/lockfile_parser.rb +1 -1
  71. data/bundler/lib/bundler/man/.document +1 -0
  72. data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +0 -0
  73. data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +2 -4
  74. data/bundler/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +0 -0
  75. data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
  76. data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
  77. data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +19 -30
  78. data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
  79. data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +0 -0
  80. data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
  81. data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
  82. data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +0 -0
  83. data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
  84. data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +25 -3
  85. data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +0 -0
  86. data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
  87. data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
  88. data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
  89. data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
  90. data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
  91. data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
  92. data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
  93. data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +0 -0
  94. data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
  95. data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +0 -0
  96. data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +4 -4
  97. data/bundler/lib/bundler/mirror.rb +2 -2
  98. data/bundler/lib/bundler/plugin.rb +30 -5
  99. data/bundler/lib/bundler/plugin/api/source.rb +1 -1
  100. data/bundler/lib/bundler/plugin/dsl.rb +1 -1
  101. data/bundler/lib/bundler/plugin/index.rb +10 -1
  102. data/bundler/lib/bundler/plugin/installer.rb +1 -1
  103. data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
  104. data/bundler/lib/bundler/plugin/source_list.rb +1 -1
  105. data/bundler/lib/bundler/psyched_yaml.rb +0 -15
  106. data/bundler/lib/bundler/remote_specification.rb +5 -2
  107. data/bundler/lib/bundler/resolver.rb +32 -10
  108. data/bundler/lib/bundler/resolver/spec_group.rb +27 -6
  109. data/bundler/lib/bundler/retry.rb +1 -1
  110. data/bundler/lib/bundler/ruby_version.rb +1 -1
  111. data/bundler/lib/bundler/rubygems_ext.rb +53 -9
  112. data/bundler/lib/bundler/rubygems_gem_installer.rb +3 -9
  113. data/bundler/lib/bundler/rubygems_integration.rb +35 -25
  114. data/bundler/lib/bundler/runtime.rb +4 -14
  115. data/bundler/lib/bundler/settings.rb +49 -46
  116. data/bundler/lib/bundler/setup.rb +5 -0
  117. data/bundler/lib/bundler/shared_helpers.rb +2 -2
  118. data/bundler/lib/bundler/similarity_detector.rb +1 -1
  119. data/bundler/lib/bundler/source.rb +1 -1
  120. data/bundler/lib/bundler/source/git.rb +1 -1
  121. data/bundler/lib/bundler/source/git/git_proxy.rb +57 -60
  122. data/bundler/lib/bundler/source/path.rb +7 -3
  123. data/bundler/lib/bundler/source/path/installer.rb +8 -10
  124. data/bundler/lib/bundler/source/rubygems.rb +13 -16
  125. data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
  126. data/bundler/lib/bundler/source_list.rb +2 -2
  127. data/bundler/lib/bundler/spec_set.rb +2 -1
  128. data/bundler/lib/bundler/stub_specification.rb +17 -5
  129. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  130. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +7 -2
  131. data/bundler/lib/bundler/templates/newgem/README.md.tt +1 -2
  132. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +12 -5
  133. data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
  134. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
  135. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
  136. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
  137. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
  138. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
  139. data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  140. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +13 -5
  141. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +10 -0
  142. data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
  143. data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
  144. data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
  145. data/bundler/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
  146. data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  147. data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  148. data/bundler/lib/bundler/ui/shell.rb +5 -5
  149. data/bundler/lib/bundler/uri_credentials_filter.rb +3 -1
  150. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -1
  151. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +34 -1
  152. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
  153. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
  154. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  155. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +38 -40
  156. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +72 -208
  157. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +0 -7
  158. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
  159. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
  160. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  161. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
  162. data/bundler/lib/bundler/vendored_persistent.rb +0 -7
  163. data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
  164. data/bundler/lib/bundler/version.rb +1 -1
  165. data/bundler/lib/bundler/worker.rb +1 -1
  166. data/bundler/lib/bundler/yaml_serializer.rb +1 -1
  167. data/bundler/man/bundle-add.1 +1 -1
  168. data/bundler/man/bundle-binstubs.1 +5 -3
  169. data/bundler/man/bundle-cache.1 +1 -1
  170. data/bundler/man/bundle-check.1 +1 -1
  171. data/bundler/man/bundle-clean.1 +1 -1
  172. data/bundler/man/bundle-config.1 +16 -25
  173. data/bundler/man/bundle-doctor.1 +1 -1
  174. data/bundler/man/bundle-exec.1 +1 -1
  175. data/bundler/man/bundle-gem.1 +25 -3
  176. data/bundler/man/bundle-info.1 +1 -1
  177. data/bundler/man/bundle-init.1 +1 -1
  178. data/bundler/man/bundle-inject.1 +1 -1
  179. data/bundler/man/bundle-install.1 +30 -3
  180. data/bundler/man/bundle-list.1 +1 -1
  181. data/bundler/man/bundle-lock.1 +1 -1
  182. data/bundler/man/bundle-open.1 +1 -1
  183. data/bundler/man/bundle-outdated.1 +1 -1
  184. data/bundler/man/bundle-platform.1 +1 -1
  185. data/bundler/man/bundle-pristine.1 +1 -1
  186. data/bundler/man/bundle-remove.1 +1 -1
  187. data/bundler/man/bundle-show.1 +1 -1
  188. data/bundler/man/bundle-update.1 +1 -1
  189. data/bundler/man/bundle-viz.1 +1 -1
  190. data/bundler/man/bundle.1 +1 -1
  191. data/bundler/man/gemfile.5 +4 -4
  192. data/lib/rubygems.rb +138 -187
  193. data/lib/rubygems/available_set.rb +4 -6
  194. data/lib/rubygems/basic_specification.rb +12 -10
  195. data/lib/rubygems/bundler_version_finder.rb +14 -9
  196. data/lib/rubygems/command.rb +17 -17
  197. data/lib/rubygems/command_manager.rb +5 -6
  198. data/lib/rubygems/commands/build_command.rb +40 -20
  199. data/lib/rubygems/commands/cert_command.rb +2 -10
  200. data/lib/rubygems/commands/check_command.rb +0 -2
  201. data/lib/rubygems/commands/cleanup_command.rb +11 -7
  202. data/lib/rubygems/commands/contents_command.rb +4 -6
  203. data/lib/rubygems/commands/dependency_command.rb +6 -8
  204. data/lib/rubygems/commands/environment_command.rb +1 -3
  205. data/lib/rubygems/commands/fetch_command.rb +2 -4
  206. data/lib/rubygems/commands/generate_index_command.rb +0 -2
  207. data/lib/rubygems/commands/help_command.rb +4 -4
  208. data/lib/rubygems/commands/info_command.rb +8 -5
  209. data/lib/rubygems/commands/install_command.rb +3 -5
  210. data/lib/rubygems/commands/list_command.rb +8 -7
  211. data/lib/rubygems/commands/lock_command.rb +1 -3
  212. data/lib/rubygems/commands/mirror_command.rb +0 -2
  213. data/lib/rubygems/commands/open_command.rb +0 -4
  214. data/lib/rubygems/commands/outdated_command.rb +0 -2
  215. data/lib/rubygems/commands/owner_command.rb +9 -3
  216. data/lib/rubygems/commands/pristine_command.rb +11 -5
  217. data/lib/rubygems/commands/push_command.rb +10 -46
  218. data/lib/rubygems/commands/query_command.rb +14 -344
  219. data/lib/rubygems/commands/rdoc_command.rb +0 -2
  220. data/lib/rubygems/commands/search_command.rb +7 -7
  221. data/lib/rubygems/commands/server_command.rb +3 -1
  222. data/lib/rubygems/commands/setup_command.rb +158 -70
  223. data/lib/rubygems/commands/signin_command.rb +0 -2
  224. data/lib/rubygems/commands/signout_command.rb +0 -2
  225. data/lib/rubygems/commands/sources_command.rb +9 -7
  226. data/lib/rubygems/commands/specification_command.rb +8 -4
  227. data/lib/rubygems/commands/stale_command.rb +1 -3
  228. data/lib/rubygems/commands/uninstall_command.rb +2 -4
  229. data/lib/rubygems/commands/unpack_command.rb +1 -3
  230. data/lib/rubygems/commands/update_command.rb +59 -14
  231. data/lib/rubygems/commands/which_command.rb +0 -2
  232. data/lib/rubygems/commands/yank_command.rb +4 -6
  233. data/lib/rubygems/config_file.rb +11 -4
  234. data/lib/rubygems/core_ext/kernel_require.rb +29 -36
  235. data/lib/rubygems/core_ext/kernel_warn.rb +12 -13
  236. data/lib/rubygems/defaults.rb +101 -7
  237. data/lib/rubygems/dependency.rb +3 -8
  238. data/lib/rubygems/dependency_installer.rb +5 -78
  239. data/lib/rubygems/dependency_list.rb +7 -9
  240. data/lib/rubygems/deprecate.rb +46 -1
  241. data/lib/rubygems/doctor.rb +4 -4
  242. data/lib/rubygems/errors.rb +3 -14
  243. data/lib/rubygems/exceptions.rb +2 -33
  244. data/lib/rubygems/ext.rb +6 -6
  245. data/lib/rubygems/ext/build_error.rb +2 -0
  246. data/lib/rubygems/ext/builder.rb +16 -35
  247. data/lib/rubygems/ext/cmake_builder.rb +5 -7
  248. data/lib/rubygems/ext/configure_builder.rb +4 -6
  249. data/lib/rubygems/ext/ext_conf_builder.rb +21 -19
  250. data/lib/rubygems/ext/rake_builder.rb +3 -5
  251. data/lib/rubygems/gem_runner.rb +3 -10
  252. data/lib/rubygems/gemcutter_utilities.rb +91 -15
  253. data/lib/rubygems/indexer.rb +1 -22
  254. data/lib/rubygems/install_update_options.rb +7 -7
  255. data/lib/rubygems/installer.rb +59 -57
  256. data/lib/rubygems/installer_test_case.rb +25 -11
  257. data/lib/rubygems/installer_uninstaller_utils.rb +24 -0
  258. data/lib/rubygems/local_remote_options.rb +1 -1
  259. data/lib/rubygems/mock_gem_ui.rb +0 -6
  260. data/lib/rubygems/name_tuple.rb +3 -7
  261. data/lib/rubygems/openssl.rb +7 -0
  262. data/lib/rubygems/package.rb +14 -25
  263. data/lib/rubygems/package/digest_io.rb +0 -2
  264. data/lib/rubygems/package/file_source.rb +0 -2
  265. data/lib/rubygems/package/io_source.rb +0 -2
  266. data/lib/rubygems/package/old.rb +1 -3
  267. data/lib/rubygems/package/tar_header.rb +4 -6
  268. data/lib/rubygems/package/tar_reader.rb +0 -3
  269. data/lib/rubygems/package/tar_reader/entry.rb +0 -3
  270. data/lib/rubygems/package/tar_test_case.rb +2 -4
  271. data/lib/rubygems/package/tar_writer.rb +2 -12
  272. data/lib/rubygems/package_task.rb +1 -7
  273. data/lib/rubygems/path_support.rb +1 -3
  274. data/lib/rubygems/platform.rb +21 -12
  275. data/lib/rubygems/psych_tree.rb +0 -2
  276. data/lib/rubygems/query_utils.rb +353 -0
  277. data/lib/rubygems/rdoc.rb +0 -12
  278. data/lib/rubygems/remote_fetcher.rb +10 -27
  279. data/lib/rubygems/request.rb +4 -11
  280. data/lib/rubygems/request/connection_pools.rb +1 -5
  281. data/lib/rubygems/request/http_pool.rb +0 -2
  282. data/lib/rubygems/request/https_pool.rb +0 -2
  283. data/lib/rubygems/request_set.rb +5 -7
  284. data/lib/rubygems/request_set/gem_dependency_api.rb +6 -8
  285. data/lib/rubygems/request_set/lockfile.rb +8 -12
  286. data/lib/rubygems/request_set/lockfile/parser.rb +0 -2
  287. data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -3
  288. data/lib/rubygems/requirement.rb +20 -21
  289. data/lib/rubygems/resolver.rb +8 -11
  290. data/lib/rubygems/resolver/activation_request.rb +9 -3
  291. data/lib/rubygems/resolver/api_set.rb +4 -6
  292. data/lib/rubygems/resolver/api_specification.rb +21 -8
  293. data/lib/rubygems/resolver/best_set.rb +0 -2
  294. data/lib/rubygems/resolver/composed_set.rb +3 -5
  295. data/lib/rubygems/resolver/conflict.rb +2 -4
  296. data/lib/rubygems/resolver/current_set.rb +0 -2
  297. data/lib/rubygems/resolver/dependency_request.rb +1 -3
  298. data/lib/rubygems/resolver/git_set.rb +0 -2
  299. data/lib/rubygems/resolver/git_specification.rb +0 -2
  300. data/lib/rubygems/resolver/index_set.rb +1 -3
  301. data/lib/rubygems/resolver/index_specification.rb +11 -2
  302. data/lib/rubygems/resolver/installed_specification.rb +0 -2
  303. data/lib/rubygems/resolver/installer_set.rb +4 -7
  304. data/lib/rubygems/resolver/local_specification.rb +0 -2
  305. data/lib/rubygems/resolver/lock_set.rb +2 -4
  306. data/lib/rubygems/resolver/lock_specification.rb +0 -2
  307. data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
  308. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
  309. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +1 -0
  310. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +39 -5
  311. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
  312. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
  313. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
  314. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
  315. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
  316. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
  317. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
  318. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
  319. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +43 -10
  320. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +75 -7
  321. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
  322. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +1 -0
  323. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
  324. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +506 -165
  325. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
  326. data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
  327. data/lib/rubygems/resolver/requirement_list.rb +0 -2
  328. data/lib/rubygems/resolver/set.rb +0 -2
  329. data/lib/rubygems/resolver/source_set.rb +0 -2
  330. data/lib/rubygems/resolver/spec_specification.rb +0 -2
  331. data/lib/rubygems/resolver/specification.rb +1 -3
  332. data/lib/rubygems/resolver/stats.rb +0 -2
  333. data/lib/rubygems/resolver/vendor_set.rb +0 -2
  334. data/lib/rubygems/resolver/vendor_specification.rb +0 -2
  335. data/lib/rubygems/s3_uri_signer.rb +2 -8
  336. data/lib/rubygems/safe_yaml.rb +4 -4
  337. data/lib/rubygems/security.rb +27 -34
  338. data/lib/rubygems/security/policy.rb +4 -8
  339. data/lib/rubygems/security/signer.rb +5 -7
  340. data/lib/rubygems/security/trust_dir.rb +1 -3
  341. data/lib/rubygems/server.rb +10 -12
  342. data/lib/rubygems/source.rb +13 -7
  343. data/lib/rubygems/source/git.rb +7 -8
  344. data/lib/rubygems/source/installed.rb +0 -2
  345. data/lib/rubygems/source/local.rb +2 -4
  346. data/lib/rubygems/source/lock.rb +0 -2
  347. data/lib/rubygems/source/specific_file.rb +0 -2
  348. data/lib/rubygems/source/vendor.rb +0 -2
  349. data/lib/rubygems/source_list.rb +6 -7
  350. data/lib/rubygems/spec_fetcher.rb +19 -18
  351. data/lib/rubygems/specification.rb +113 -126
  352. data/lib/rubygems/specification_policy.rb +88 -30
  353. data/lib/rubygems/ssl_certs/{index.rubygems.org → rubygems.org}/GlobalSignRootCA.pem +0 -0
  354. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
  355. data/lib/rubygems/stub_specification.rb +1 -5
  356. data/lib/rubygems/syck_hack.rb +0 -2
  357. data/lib/rubygems/test_case.rb +135 -118
  358. data/lib/rubygems/test_utilities.rb +6 -14
  359. data/lib/rubygems/uninstaller.rb +35 -16
  360. data/lib/rubygems/uri_formatter.rb +2 -3
  361. data/lib/rubygems/uri_parser.rb +0 -2
  362. data/lib/rubygems/user_interaction.rb +1 -26
  363. data/lib/rubygems/util.rb +15 -3
  364. data/lib/rubygems/util/licenses.rb +4 -6
  365. data/lib/rubygems/util/list.rb +0 -2
  366. data/lib/rubygems/validator.rb +1 -3
  367. data/lib/rubygems/version.rb +5 -7
  368. data/lib/rubygems/version_option.rb +6 -0
  369. data/rubygems-update.gemspec +2 -2
  370. data/setup.rb +2 -7
  371. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
  372. data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
  373. data/test/rubygems/rubygems_plugin.rb +0 -2
  374. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
  375. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
  376. data/test/rubygems/test_bundled_ca.rb +42 -45
  377. data/test/rubygems/test_config.rb +0 -2
  378. data/test/rubygems/test_deprecate.rb +40 -7
  379. data/test/rubygems/test_gem.rb +153 -106
  380. data/test/rubygems/test_gem_available_set.rb +3 -5
  381. data/test/rubygems/test_gem_bundler_version_finder.rb +19 -3
  382. data/test/rubygems/test_gem_command.rb +24 -7
  383. data/test/rubygems/test_gem_command_manager.rb +36 -5
  384. data/test/rubygems/test_gem_commands_build_command.rb +250 -15
  385. data/test/rubygems/test_gem_commands_cert_command.rb +4 -6
  386. data/test/rubygems/test_gem_commands_check_command.rb +0 -2
  387. data/test/rubygems/test_gem_commands_cleanup_command.rb +14 -5
  388. data/test/rubygems/test_gem_commands_contents_command.rb +50 -19
  389. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -2
  390. data/test/rubygems/test_gem_commands_environment_command.rb +21 -23
  391. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -2
  392. data/test/rubygems/test_gem_commands_generate_index_command.rb +1 -7
  393. data/test/rubygems/test_gem_commands_help_command.rb +15 -4
  394. data/test/rubygems/test_gem_commands_info_command.rb +6 -8
  395. data/test/rubygems/test_gem_commands_install_command.rb +32 -34
  396. data/test/rubygems/test_gem_commands_list_command.rb +0 -2
  397. data/test/rubygems/test_gem_commands_lock_command.rb +0 -2
  398. data/test/rubygems/test_gem_commands_mirror.rb +1 -3
  399. data/test/rubygems/test_gem_commands_open_command.rb +4 -6
  400. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -2
  401. data/test/rubygems/test_gem_commands_owner_command.rb +59 -5
  402. data/test/rubygems/test_gem_commands_pristine_command.rb +43 -12
  403. data/test/rubygems/test_gem_commands_push_command.rb +38 -9
  404. data/test/rubygems/test_gem_commands_query_command.rb +12 -12
  405. data/test/rubygems/test_gem_commands_search_command.rb +0 -2
  406. data/test/rubygems/test_gem_commands_server_command.rb +0 -2
  407. data/test/rubygems/test_gem_commands_setup_command.rb +211 -124
  408. data/test/rubygems/test_gem_commands_signin_command.rb +33 -9
  409. data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
  410. data/test/rubygems/test_gem_commands_sources_command.rb +99 -3
  411. data/test/rubygems/test_gem_commands_specification_command.rb +46 -20
  412. data/test/rubygems/test_gem_commands_stale_command.rb +0 -2
  413. data/test/rubygems/test_gem_commands_uninstall_command.rb +2 -3
  414. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -2
  415. data/test/rubygems/test_gem_commands_update_command.rb +116 -7
  416. data/test/rubygems/test_gem_commands_which_command.rb +3 -5
  417. data/test/rubygems/test_gem_commands_yank_command.rb +44 -8
  418. data/test/rubygems/test_gem_config_file.rb +7 -12
  419. data/test/rubygems/test_gem_dependency.rb +0 -2
  420. data/test/rubygems/test_gem_dependency_installer.rb +90 -193
  421. data/test/rubygems/test_gem_dependency_list.rb +10 -12
  422. data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -3
  423. data/test/rubygems/test_gem_doctor.rb +28 -2
  424. data/test/rubygems/test_gem_ext_builder.rb +26 -47
  425. data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -23
  426. data/test/rubygems/test_gem_ext_configure_builder.rb +4 -20
  427. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +9 -29
  428. data/test/rubygems/test_gem_ext_rake_builder.rb +14 -24
  429. data/test/rubygems/test_gem_gem_runner.rb +44 -1
  430. data/test/rubygems/test_gem_gemcutter_utilities.rb +8 -5
  431. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -2
  432. data/test/rubygems/test_gem_indexer.rb +9 -15
  433. data/test/rubygems/test_gem_install_update_options.rb +14 -4
  434. data/test/rubygems/test_gem_installer.rb +265 -81
  435. data/test/rubygems/test_gem_local_remote_options.rb +0 -2
  436. data/test/rubygems/test_gem_name_tuple.rb +0 -2
  437. data/test/rubygems/test_gem_package.rb +41 -39
  438. data/test/rubygems/test_gem_package_old.rb +4 -6
  439. data/test/rubygems/test_gem_package_tar_header.rb +18 -1
  440. data/test/rubygems/test_gem_package_tar_reader.rb +0 -2
  441. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -2
  442. data/test/rubygems/test_gem_package_tar_writer.rb +9 -6
  443. data/test/rubygems/test_gem_package_task.rb +46 -13
  444. data/test/rubygems/test_gem_path_support.rb +0 -2
  445. data/test/rubygems/test_gem_platform.rb +63 -6
  446. data/test/rubygems/test_gem_rdoc.rb +0 -2
  447. data/test/rubygems/test_gem_remote_fetcher.rb +168 -211
  448. data/test/rubygems/test_gem_request.rb +13 -17
  449. data/test/rubygems/test_gem_request_connection_pools.rb +0 -4
  450. data/test/rubygems/test_gem_request_set.rb +72 -22
  451. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +3 -5
  452. data/test/rubygems/test_gem_request_set_lockfile.rb +4 -6
  453. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -11
  454. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -120
  455. data/test/rubygems/test_gem_requirement.rb +10 -4
  456. data/test/rubygems/test_gem_resolver.rb +6 -8
  457. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -2
  458. data/test/rubygems/test_gem_resolver_api_set.rb +11 -13
  459. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -2
  460. data/test/rubygems/test_gem_resolver_best_set.rb +2 -4
  461. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -2
  462. data/test/rubygems/test_gem_resolver_conflict.rb +1 -3
  463. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -2
  464. data/test/rubygems/test_gem_resolver_git_set.rb +0 -2
  465. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -2
  466. data/test/rubygems/test_gem_resolver_index_set.rb +2 -4
  467. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -2
  468. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -2
  469. data/test/rubygems/test_gem_resolver_installer_set.rb +7 -9
  470. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -2
  471. data/test/rubygems/test_gem_resolver_lock_set.rb +3 -5
  472. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -2
  473. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -2
  474. data/test/rubygems/test_gem_resolver_specification.rb +0 -4
  475. data/test/rubygems/test_gem_resolver_vendor_set.rb +1 -3
  476. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -2
  477. data/test/rubygems/test_gem_security.rb +22 -24
  478. data/test/rubygems/test_gem_security_policy.rb +7 -12
  479. data/test/rubygems/test_gem_security_signer.rb +10 -12
  480. data/test/rubygems/test_gem_security_trust_dir.rb +4 -6
  481. data/test/rubygems/test_gem_server.rb +10 -14
  482. data/test/rubygems/test_gem_silent_ui.rb +0 -2
  483. data/test/rubygems/test_gem_source.rb +17 -16
  484. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -2
  485. data/test/rubygems/test_gem_source_git.rb +12 -13
  486. data/test/rubygems/test_gem_source_installed.rb +7 -9
  487. data/test/rubygems/test_gem_source_list.rb +1 -2
  488. data/test/rubygems/test_gem_source_local.rb +8 -10
  489. data/test/rubygems/test_gem_source_lock.rb +10 -12
  490. data/test/rubygems/test_gem_source_specific_file.rb +7 -9
  491. data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
  492. data/test/rubygems/test_gem_source_vendor.rb +7 -9
  493. data/test/rubygems/test_gem_spec_fetcher.rb +11 -4
  494. data/test/rubygems/test_gem_specification.rb +182 -131
  495. data/test/rubygems/test_gem_stream_ui.rb +3 -3
  496. data/test/rubygems/test_gem_stub_specification.rb +4 -7
  497. data/test/rubygems/test_gem_text.rb +1 -3
  498. data/test/rubygems/test_gem_uninstaller.rb +134 -12
  499. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -2
  500. data/test/rubygems/test_gem_uri_formatter.rb +0 -2
  501. data/test/rubygems/test_gem_util.rb +7 -7
  502. data/test/rubygems/test_gem_validator.rb +1 -3
  503. data/test/rubygems/test_gem_version.rb +1 -3
  504. data/test/rubygems/test_gem_version_option.rb +1 -3
  505. data/test/rubygems/test_kernel.rb +25 -10
  506. data/test/rubygems/test_project_sanity.rb +7 -2
  507. data/test/rubygems/test_remote_fetch_error.rb +0 -2
  508. data/test/rubygems/test_require.rb +291 -56
  509. metadata +66 -100
  510. data/.bundle/config +0 -2
  511. data/.rubocop.yml +0 -91
  512. data/Gemfile +0 -8
  513. data/Gemfile.lock +0 -43
  514. data/bundler/CODE_OF_CONDUCT.md +0 -136
  515. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
  516. data/bundler/man/bundle-add.1.txt +0 -58
  517. data/bundler/man/bundle-binstubs.1.txt +0 -48
  518. data/bundler/man/bundle-cache.1.txt +0 -78
  519. data/bundler/man/bundle-check.1.txt +0 -33
  520. data/bundler/man/bundle-clean.1.txt +0 -26
  521. data/bundler/man/bundle-config.1.txt +0 -528
  522. data/bundler/man/bundle-doctor.1.txt +0 -44
  523. data/bundler/man/bundle-exec.1.txt +0 -178
  524. data/bundler/man/bundle-gem.1.txt +0 -91
  525. data/bundler/man/bundle-info.1.txt +0 -21
  526. data/bundler/man/bundle-init.1.txt +0 -34
  527. data/bundler/man/bundle-inject.1.txt +0 -32
  528. data/bundler/man/bundle-install.1.txt +0 -401
  529. data/bundler/man/bundle-list.1.txt +0 -44
  530. data/bundler/man/bundle-lock.1.txt +0 -93
  531. data/bundler/man/bundle-open.1.txt +0 -29
  532. data/bundler/man/bundle-outdated.1.txt +0 -131
  533. data/bundler/man/bundle-platform.1.txt +0 -57
  534. data/bundler/man/bundle-pristine.1.txt +0 -44
  535. data/bundler/man/bundle-remove.1.txt +0 -34
  536. data/bundler/man/bundle-show.1.txt +0 -27
  537. data/bundler/man/bundle-update.1.txt +0 -390
  538. data/bundler/man/bundle-viz.1.txt +0 -39
  539. data/bundler/man/bundle.1.txt +0 -116
  540. data/bundler/man/gemfile.5.txt +0 -649
  541. data/lib/rubygems/source_local.rb +0 -7
  542. data/lib/rubygems/source_specific_file.rb +0 -6
  543. data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  544. data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
  545. data/lib/ubygems.rb +0 -14
  546. data/tmp/.keep +0 -0
  547. data/util/CL2notes +0 -55
  548. data/util/bisect +0 -10
  549. data/util/ci.sh +0 -62
  550. data/util/cops/deprecations.rb +0 -52
  551. data/util/create_certs.rb +0 -171
  552. data/util/create_certs.sh +0 -27
  553. data/util/create_encrypted_key.rb +0 -16
  554. data/util/generate_spdx_license_list.rb +0 -63
  555. data/util/patch_with_prs.rb +0 -77
  556. data/util/rubocop +0 -8
  557. data/util/update_bundled_ca_certificates.rb +0 -139
  558. data/util/update_changelog.rb +0 -67
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/commands/list_command'
4
4
 
5
5
  class TestGemCommandsListCommand < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
9
8
 
@@ -30,5 +29,4 @@ class TestGemCommandsListCommand < Gem::TestCase
30
29
  assert_equal "true\n", @ui.output
31
30
  assert_equal '', @ui.error
32
31
  end
33
-
34
32
  end
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/commands/lock_command'
4
4
 
5
5
  class TestGemCommandsLockCommand < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
9
8
 
@@ -64,5 +63,4 @@ gem 'd', '= 1'
64
63
 
65
64
  assert_equal 'Could not find gem c-1, try using the full name', e.message
66
65
  end
67
-
68
66
  end
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/commands/mirror_command'
4
4
 
5
5
  class TestGemCommandsMirrorCommand < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
9
8
 
@@ -15,7 +14,6 @@ class TestGemCommandsMirrorCommand < Gem::TestCase
15
14
  @cmd.execute
16
15
  end
17
16
 
18
- assert_match %r%Install the rubygems-mirror%i, @ui.error
17
+ assert_match %r{Install the rubygems-mirror}i, @ui.error
19
18
  end
20
-
21
19
  end
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/commands/open_command'
4
4
 
5
5
  class TestGemCommandsOpenCommand < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
9
8
 
@@ -26,7 +25,7 @@ class TestGemCommandsOpenCommand < Gem::TestCase
26
25
 
27
26
  gem 'foo', '1.0.0'
28
27
  spec = gem 'foo', '1.0.1'
29
- mock = MiniTest::Mock.new
28
+ mock = Minitest::Mock.new
30
29
  mock.expect(:call, true, [spec.full_gem_path])
31
30
 
32
31
  Dir.stub(:chdir, mock) do
@@ -51,7 +50,7 @@ class TestGemCommandsOpenCommand < Gem::TestCase
51
50
  end
52
51
  end
53
52
 
54
- assert_match %r|Unable to find gem 'foo'|, @ui.output
53
+ assert_match %r{Unable to find gem 'foo'}, @ui.output
55
54
  assert_equal "", @ui.error
56
55
  end
57
56
 
@@ -64,7 +63,7 @@ class TestGemCommandsOpenCommand < Gem::TestCase
64
63
  end
65
64
  end
66
65
 
67
- assert_match %r|Unable to find gem 'foo'|, @ui.output
66
+ assert_match %r{Unable to find gem 'foo'}, @ui.output
68
67
  assert_equal "", @ui.error
69
68
  end
70
69
 
@@ -93,8 +92,7 @@ class TestGemCommandsOpenCommand < Gem::TestCase
93
92
  end
94
93
  end
95
94
 
96
- assert_match %r|'foo' is a default gem and can't be opened\.| , @ui.output
95
+ assert_match %r{'foo' is a default gem and can't be opened\.} , @ui.output
97
96
  assert_equal "", @ui.error
98
97
  end
99
-
100
98
  end
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/commands/outdated_command'
4
4
 
5
5
  class TestGemCommandsOutdatedCommand < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
9
8
 
@@ -29,5 +28,4 @@ class TestGemCommandsOutdatedCommand < Gem::TestCase
29
28
  assert_equal "foo (0.2 < 2.0)\n", @ui.output
30
29
  assert_equal "", @ui.error
31
30
  end
32
-
33
31
  end
@@ -3,10 +3,11 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/commands/owner_command'
4
4
 
5
5
  class TestGemCommandsOwnerCommand < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
9
8
 
9
+ credential_setup
10
+
10
11
  ENV["RUBYGEMS_HOST"] = nil
11
12
  @stub_ui = Gem::MockGemUi.new
12
13
  @stub_fetcher = Gem::FakeFetcher.new
@@ -17,6 +18,12 @@ class TestGemCommandsOwnerCommand < Gem::TestCase
17
18
  @cmd = Gem::Commands::OwnerCommand.new
18
19
  end
19
20
 
21
+ def teardown
22
+ credential_teardown
23
+
24
+ super
25
+ end
26
+
20
27
  def test_show_owners
21
28
  response = <<EOF
22
29
  ---
@@ -119,7 +126,7 @@ EOF
119
126
  end
120
127
  Gem.configuration.load_api_keys
121
128
 
122
- @cmd.handle_options %w(-k other)
129
+ @cmd.handle_options %w[-k other]
123
130
  @cmd.show_owners('freewill')
124
131
 
125
132
  assert_equal '701229f217cdf23b1344c7b4b54ca97', @stub_fetcher.last_request['Authorization']
@@ -177,7 +184,7 @@ EOF
177
184
  end
178
185
  Gem.configuration.load_api_keys
179
186
 
180
- @cmd.handle_options %w(-k other)
187
+ @cmd.handle_options %w[-k other]
181
188
  @cmd.add_owners('freewill', ['user-new1@example.com'])
182
189
 
183
190
  assert_equal '701229f217cdf23b1344c7b4b54ca97', @stub_fetcher.last_request['Authorization']
@@ -217,7 +224,7 @@ EOF
217
224
  end
218
225
  Gem.configuration.load_api_keys
219
226
 
220
- @cmd.handle_options %w(-k other)
227
+ @cmd.handle_options %w[-k other]
221
228
  @cmd.remove_owners('freewill', ['user-remove1@example.com'])
222
229
 
223
230
  assert_equal '701229f217cdf23b1344c7b4b54ca97', @stub_fetcher.last_request['Authorization']
@@ -240,7 +247,7 @@ EOF
240
247
 
241
248
  @stub_fetcher.data["#{Gem.host}/api/v1/gems/freewill/owners"] = [
242
249
  [response_fail, 401, 'Unauthorized'],
243
- [response_success, 200, 'OK']
250
+ [response_success, 200, 'OK'],
244
251
  ]
245
252
 
246
253
  @otp_ui = Gem::MockGemUi.new "111111\n"
@@ -269,4 +276,51 @@ EOF
269
276
  assert_equal '111111', @stub_fetcher.last_request['OTP']
270
277
  end
271
278
 
279
+ def test_remove_owners_unathorized_api_key
280
+ response_forbidden = "The API key doesn't have access"
281
+ response_success = "Owner removed successfully."
282
+
283
+ @stub_fetcher.data["#{Gem.host}/api/v1/gems/freewill/owners"] = [
284
+ [response_forbidden, 403, 'Forbidden'],
285
+ [response_success, 200, "OK"],
286
+ ]
287
+ @stub_fetcher.data["#{Gem.host}/api/v1/api_key"] = ["", 200, "OK"]
288
+ @cmd.instance_variable_set :@scope, :remove_owner
289
+
290
+ @stub_ui = Gem::MockGemUi.new "some@mail.com\npass\n"
291
+ use_ui @stub_ui do
292
+ @cmd.remove_owners("freewill", ["some@example"])
293
+ end
294
+
295
+ access_notice = "The existing key doesn't have access of remove_owner on RubyGems.org. Please sign in to update access."
296
+ assert_match access_notice, @stub_ui.output
297
+ assert_match "Email:", @stub_ui.output
298
+ assert_match "Password:", @stub_ui.output
299
+ assert_match "Added remove_owner scope to the existing API key", @stub_ui.output
300
+ assert_match response_success, @stub_ui.output
301
+ end
302
+
303
+ def test_add_owners_unathorized_api_key
304
+ response_forbidden = "The API key doesn't have access"
305
+ response_success = "Owner added successfully."
306
+
307
+ @stub_fetcher.data["#{Gem.host}/api/v1/gems/freewill/owners"] = [
308
+ [response_forbidden, 403, 'Forbidden'],
309
+ [response_success, 200, "OK"],
310
+ ]
311
+ @stub_fetcher.data["#{Gem.host}/api/v1/api_key"] = ["", 200, "OK"]
312
+ @cmd.instance_variable_set :@scope, :add_owner
313
+
314
+ @stub_ui = Gem::MockGemUi.new "some@mail.com\npass\n"
315
+ use_ui @stub_ui do
316
+ @cmd.add_owners("freewill", ["some@example"])
317
+ end
318
+
319
+ access_notice = "The existing key doesn't have access of add_owner on RubyGems.org. Please sign in to update access."
320
+ assert_match access_notice, @stub_ui.output
321
+ assert_match "Email:", @stub_ui.output
322
+ assert_match "Password:", @stub_ui.output
323
+ assert_match "Added add_owner scope to the existing API key", @stub_ui.output
324
+ assert_match response_success, @stub_ui.output
325
+ end
272
326
  end
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/commands/pristine_command'
4
4
 
5
5
  class TestGemCommandsPristineCommand < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
9
8
  common_installer_setup
@@ -160,11 +159,9 @@ class TestGemCommandsPristineCommand < Gem::TestCase
160
159
 
161
160
  ruby_exec = sprintf Gem.default_exec_format, 'ruby'
162
161
 
163
- if win_platform?
164
- assert_match %r%\A#!\s*#{ruby_exec}%, File.read(gem_exec)
165
- else
166
- assert_match %r%\A#!\s*/usr/bin/env #{ruby_exec}%, File.read(gem_exec)
167
- end
162
+ bin_env = win_platform? ? "" : %w[/usr/bin/env /bin/env].find {|f| File.executable?(f) } + " "
163
+
164
+ assert_match %r{\A#!\s*#{bin_env}#{ruby_exec}}, File.read(gem_exec)
168
165
  end
169
166
 
170
167
  def test_execute_extensions_explicit
@@ -215,7 +212,6 @@ class TestGemCommandsPristineCommand < Gem::TestCase
215
212
  io.write "# extconf.rb\nrequire 'mkmf'; create_makefile 'a'"
216
213
  end
217
214
 
218
- util_build_gem a
219
215
  install_gem a
220
216
 
221
217
  @cmd.options[:args] = %w[a]
@@ -249,7 +245,7 @@ class TestGemCommandsPristineCommand < Gem::TestCase
249
245
  RUBY
250
246
  end
251
247
 
252
- build_args = %w!--with-awesome=true --sweet!
248
+ build_args = %w[--with-awesome=true --sweet]
253
249
 
254
250
  install_gem a, :build_args => build_args
255
251
 
@@ -458,7 +454,7 @@ class TestGemCommandsPristineCommand < Gem::TestCase
458
454
  end
459
455
  end
460
456
 
461
- assert_match %r|at least one gem name|, e.message
457
+ assert_match %r{at least one gem name}, e.message
462
458
  end
463
459
 
464
460
  def test_execute_only_executables
@@ -491,6 +487,42 @@ class TestGemCommandsPristineCommand < Gem::TestCase
491
487
  refute File.exist? gem_lib
492
488
  end
493
489
 
490
+ def test_execute_only_plugins
491
+ a = util_spec 'a' do |s|
492
+ s.executables = %w[foo]
493
+ s.files = %w[bin/foo lib/a.rb lib/rubygems_plugin.rb]
494
+ end
495
+ write_file File.join(@tempdir, 'lib', 'a.rb') do |fp|
496
+ fp.puts "puts __FILE__"
497
+ end
498
+ write_file File.join(@tempdir, 'lib', 'rubygems_plugin.rb') do |fp|
499
+ fp.puts "puts __FILE__"
500
+ end
501
+ write_file File.join(@tempdir, 'bin', 'foo') do |fp|
502
+ fp.puts "#!/usr/bin/ruby"
503
+ end
504
+
505
+ install_gem a
506
+
507
+ gem_lib = File.join @gemhome, 'gems', a.full_name, 'lib', 'a.rb'
508
+ gem_plugin = File.join @gemhome, 'plugins', 'a_plugin.rb'
509
+ gem_exec = File.join @gemhome, 'bin', 'foo'
510
+
511
+ FileUtils.rm gem_exec
512
+ FileUtils.rm gem_plugin
513
+ FileUtils.rm gem_lib
514
+
515
+ @cmd.handle_options %w[--all --only-plugins]
516
+
517
+ use_ui @ui do
518
+ @cmd.execute
519
+ end
520
+
521
+ refute File.exist? gem_exec
522
+ assert File.exist? gem_plugin
523
+ refute File.exist? gem_lib
524
+ end
525
+
494
526
  def test_execute_bindir
495
527
  a = util_spec 'a' do |s|
496
528
  s.name = "test_gem"
@@ -536,7 +568,7 @@ class TestGemCommandsPristineCommand < Gem::TestCase
536
568
  assert_equal([
537
569
  "Restoring gems to pristine condition...",
538
570
  "Cached gem for a-2 not found, attempting to fetch...",
539
- "Skipped a-2, it was not found from cache and remote sources"
571
+ "Skipped a-2, it was not found from cache and remote sources",
540
572
  ], @ui.output.split("\n"))
541
573
 
542
574
  assert_empty @ui.error
@@ -545,7 +577,7 @@ class TestGemCommandsPristineCommand < Gem::TestCase
545
577
  def test_execute_default_gem
546
578
  default_gem_spec = new_default_spec("default", "2.0.0.0",
547
579
  nil, "default/gem.rb")
548
- install_default_specs(default_gem_spec)
580
+ install_default_gems(default_gem_spec)
549
581
 
550
582
  @cmd.options[:args] = %w[default]
551
583
 
@@ -623,5 +655,4 @@ class TestGemCommandsPristineCommand < Gem::TestCase
623
655
  assert @cmd.options[:extensions]
624
656
  assert @cmd.options[:extensions_set]
625
657
  end
626
-
627
658
  end
@@ -3,9 +3,11 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/commands/push_command'
4
4
 
5
5
  class TestGemCommandsPushCommand < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
8
+
9
+ credential_setup
10
+
9
11
  ENV["RUBYGEMS_HOST"] = nil
10
12
  Gem.host = Gem::DEFAULT_HOST
11
13
  Gem.configuration.disable_default_gem_server = false
@@ -37,6 +39,8 @@ class TestGemCommandsPushCommand < Gem::TestCase
37
39
  end
38
40
 
39
41
  def teardown
42
+ credential_teardown
43
+
40
44
  super
41
45
 
42
46
  singleton_gem_class.class_eval do
@@ -148,7 +152,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
148
152
 
149
153
  keys = {
150
154
  :rubygems_api_key => 'KEY',
151
- @host => @api_key
155
+ @host => @api_key,
152
156
  }
153
157
 
154
158
  FileUtils.mkdir_p File.dirname Gem.configuration.credentials_path
@@ -183,7 +187,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
183
187
 
184
188
  keys = {
185
189
  :rubygems_api_key => 'KEY',
186
- @host => @api_key
190
+ @host => @api_key,
187
191
  }
188
192
 
189
193
  FileUtils.mkdir_p File.dirname Gem.configuration.credentials_path
@@ -246,7 +250,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
246
250
  spec.metadata['allowed_push_host'] = "https://privategemserver.example"
247
251
  end
248
252
 
249
- response = %{ERROR: "#{@host}" is not allowed by the gemspec, which only allows "https://privategemserver.example"}
253
+ response = %(ERROR: "#{@host}" is not allowed by the gemspec, which only allows "https://privategemserver.example")
250
254
 
251
255
  assert_raises Gem::MockGemUi::TermError do
252
256
  send_battery
@@ -267,7 +271,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
267
271
 
268
272
  keys = {
269
273
  :rubygems_api_key => 'KEY',
270
- @host => @api_key
274
+ @host => @api_key,
271
275
  }
272
276
 
273
277
  FileUtils.mkdir_p File.dirname Gem.configuration.credentials_path
@@ -298,7 +302,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
298
302
  api_key = "PRIVKEY"
299
303
 
300
304
  keys = {
301
- host => api_key
305
+ host => api_key,
302
306
  }
303
307
 
304
308
  FileUtils.mkdir_p File.dirname Gem.configuration.credentials_path
@@ -355,7 +359,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
355
359
  end
356
360
  Gem.configuration.load_api_keys
357
361
 
358
- @cmd.handle_options %w(-k other)
362
+ @cmd.handle_options %w[-k other]
359
363
  @cmd.instance_variable_set :@host, @host
360
364
  @cmd.send_gem(@path)
361
365
 
@@ -369,7 +373,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
369
373
 
370
374
  @fetcher.data["#{Gem.host}/api/v1/gems"] = [
371
375
  [response_fail, 401, 'Unauthorized'],
372
- [response_success, 200, 'OK']
376
+ [response_success, 200, 'OK'],
373
377
  ]
374
378
 
375
379
  @otp_ui = Gem::MockGemUi.new "111111\n"
@@ -400,10 +404,35 @@ class TestGemCommandsPushCommand < Gem::TestCase
400
404
  assert_equal '111111', @fetcher.last_request['OTP']
401
405
  end
402
406
 
407
+ def test_sending_gem_unathorized_api_key
408
+ response_forbidden = "The API key doesn't have access"
409
+ response_success = 'Successfully registered gem: freewill (1.0.0)'
410
+
411
+ @fetcher.data["#{@host}/api/v1/gems"] = [
412
+ [response_forbidden, 403, 'Forbidden'],
413
+ [response_success, 200, "OK"],
414
+ ]
415
+
416
+ @fetcher.data["#{@host}/api/v1/api_key"] = ["", 200, "OK"]
417
+ @cmd.instance_variable_set :@host, @host
418
+ @cmd.instance_variable_set :@scope, :push_rubygem
419
+
420
+ @ui = Gem::MockGemUi.new "some@mail.com\npass\n"
421
+ use_ui @ui do
422
+ @cmd.send_gem(@path)
423
+ end
424
+
425
+ access_notice = "The existing key doesn't have access of push_rubygem on https://rubygems.example. Please sign in to update access."
426
+ assert_match access_notice, @ui.output
427
+ assert_match "Email:", @ui.output
428
+ assert_match "Password:", @ui.output
429
+ assert_match "Added push_rubygem scope to the existing API key", @ui.output
430
+ assert_match response_success, @ui.output
431
+ end
432
+
403
433
  private
404
434
 
405
435
  def singleton_gem_class
406
436
  class << Gem; self; end
407
437
  end
408
-
409
438
  end
@@ -19,7 +19,6 @@ module TestGemCommandsQueryCommandSetup
19
19
  end
20
20
 
21
21
  class TestGemCommandsQueryCommandWithInstalledGems < Gem::TestCase
22
-
23
22
  include TestGemCommandsQueryCommandSetup
24
23
 
25
24
  def test_execute
@@ -580,8 +579,8 @@ pl (1 i386-linux)
580
579
  @cmd.execute
581
580
  end
582
581
 
583
- assert_match %r%^a %, @stub_ui.output
584
- assert_match %r%^pl %, @stub_ui.output
582
+ assert_match %r{^a }, @stub_ui.output
583
+ assert_match %r{^pl }, @stub_ui.output
585
584
  assert_equal '', @stub_ui.error
586
585
  end
587
586
 
@@ -593,8 +592,8 @@ pl (1 i386-linux)
593
592
  @cmd.send :show_gems, /a/i
594
593
  end
595
594
 
596
- assert_match %r%^a %, @stub_ui.output
597
- refute_match %r%^pl %, @stub_ui.output
595
+ assert_match %r{^a }, @stub_ui.output
596
+ refute_match %r{^pl }, @stub_ui.output
598
597
  assert_empty @stub_ui.error
599
598
  end
600
599
 
@@ -607,11 +606,9 @@ pl (1 i386-linux)
607
606
  fetcher.spec 'a', '3.a'
608
607
  end
609
608
  end
610
-
611
609
  end
612
610
 
613
611
  class TestGemCommandsQueryCommandWithoutInstalledGems < Gem::TestCase
614
-
615
612
  include TestGemCommandsQueryCommandSetup
616
613
 
617
614
  def test_execute_platform
@@ -644,10 +641,10 @@ a (2 universal-darwin, 1 ruby x86-linux)
644
641
  end
645
642
 
646
643
  def test_execute_show_default_gems
647
- spec_fetcher { |fetcher| fetcher.spec 'a', 2 }
644
+ spec_fetcher {|fetcher| fetcher.spec 'a', 2 }
648
645
 
649
646
  a1 = new_default_spec 'a', 1
650
- install_default_specs a1
647
+ install_default_gems a1
651
648
 
652
649
  use_ui @stub_ui do
653
650
  @cmd.execute
@@ -666,7 +663,7 @@ EOF
666
663
  def test_execute_show_default_gems_with_platform
667
664
  a1 = new_default_spec 'a', 1
668
665
  a1.platform = 'java'
669
- install_default_specs a1
666
+ install_default_gems a1
670
667
 
671
668
  use_ui @stub_ui do
672
669
  @cmd.execute
@@ -688,7 +685,7 @@ EOF
688
685
  end
689
686
 
690
687
  a1 = new_default_spec 'a', 1
691
- install_default_specs a1
688
+ install_default_gems a1
692
689
 
693
690
  @cmd.handle_options %w[-l -d]
694
691
 
@@ -844,6 +841,10 @@ othergem (1.2.3)
844
841
  assert_equal expected, @stub_ui.output
845
842
  end
846
843
 
844
+ def test_depprecated
845
+ assert @cmd.deprecated?
846
+ end
847
+
847
848
  private
848
849
 
849
850
  def add_gems_to_fetcher
@@ -853,5 +854,4 @@ othergem (1.2.3)
853
854
  fetcher.download 'a', '3.a'
854
855
  end
855
856
  end
856
-
857
857
  end