rubygems-update 3.1.2 → 3.2.6

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 (562) hide show
  1. checksums.yaml +4 -4
  2. data/{History.txt → CHANGELOG.md} +756 -489
  3. data/CODE_OF_CONDUCT.md +55 -19
  4. data/CONTRIBUTING.md +25 -11
  5. data/Manifest.txt +75 -104
  6. data/POLICIES.md +6 -12
  7. data/README.md +5 -5
  8. data/Rakefile +64 -92
  9. data/bin/update_rubygems +1 -1
  10. data/bundler/CHANGELOG.md +1636 -1422
  11. data/bundler/README.md +6 -8
  12. data/bundler/UPGRADING.md +18 -32
  13. data/bundler/bundler.gemspec +4 -4
  14. data/bundler/exe/bundle +3 -0
  15. data/bundler/lib/bundler.rb +32 -8
  16. data/bundler/lib/bundler/build_metadata.rb +4 -12
  17. data/bundler/lib/bundler/cli.rb +55 -21
  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 +4 -4
  26. data/bundler/lib/bundler/cli/fund.rb +36 -0
  27. data/bundler/lib/bundler/cli/gem.rb +86 -11
  28. data/bundler/lib/bundler/cli/info.rb +15 -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 +16 -13
  32. data/bundler/lib/bundler/cli/issue.rb +2 -2
  33. data/bundler/lib/bundler/cli/list.rb +12 -10
  34. data/bundler/lib/bundler/cli/outdated.rb +87 -66
  35. data/bundler/lib/bundler/cli/plugin.rb +10 -0
  36. data/bundler/lib/bundler/cli/pristine.rb +5 -0
  37. data/bundler/lib/bundler/cli/show.rb +1 -1
  38. data/bundler/lib/bundler/cli/update.rb +3 -1
  39. data/bundler/lib/bundler/compact_index_client.rb +1 -1
  40. data/bundler/lib/bundler/compact_index_client/cache.rb +6 -14
  41. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
  42. data/bundler/lib/bundler/compact_index_client/updater.rb +5 -13
  43. data/bundler/lib/bundler/definition.rb +66 -82
  44. data/bundler/lib/bundler/dep_proxy.rb +16 -9
  45. data/bundler/lib/bundler/dependency.rb +3 -10
  46. data/bundler/lib/bundler/dsl.rb +5 -9
  47. data/bundler/lib/bundler/endpoint_specification.rb +1 -1
  48. data/bundler/lib/bundler/env.rb +1 -1
  49. data/bundler/lib/bundler/environment_preserver.rb +26 -2
  50. data/bundler/lib/bundler/errors.rb +1 -0
  51. data/bundler/lib/bundler/feature_flag.rb +0 -3
  52. data/bundler/lib/bundler/fetcher.rb +4 -3
  53. data/bundler/lib/bundler/fetcher/base.rb +1 -1
  54. data/bundler/lib/bundler/fetcher/compact_index.rb +1 -1
  55. data/bundler/lib/bundler/fetcher/downloader.rb +1 -1
  56. data/bundler/lib/bundler/fetcher/index.rb +3 -4
  57. data/bundler/lib/bundler/friendly_errors.rb +22 -13
  58. data/bundler/lib/bundler/gem_helper.rb +33 -19
  59. data/bundler/lib/bundler/gem_helpers.rb +36 -25
  60. data/bundler/lib/bundler/gem_version_promoter.rb +4 -4
  61. data/bundler/lib/bundler/graph.rb +1 -1
  62. data/bundler/lib/bundler/index.rb +6 -2
  63. data/bundler/lib/bundler/injector.rb +22 -4
  64. data/bundler/lib/bundler/inline.rb +2 -2
  65. data/bundler/lib/bundler/installer.rb +35 -32
  66. data/bundler/lib/bundler/installer/gem_installer.rb +3 -3
  67. data/bundler/lib/bundler/installer/parallel_installer.rb +10 -10
  68. data/bundler/lib/bundler/installer/standalone.rb +2 -2
  69. data/bundler/lib/bundler/lazy_specification.rb +35 -11
  70. data/bundler/lib/bundler/lockfile_generator.rb +1 -1
  71. data/bundler/lib/bundler/lockfile_parser.rb +1 -1
  72. data/bundler/lib/bundler/man/.document +1 -0
  73. data/bundler/{man → lib/bundler/man}/bundle-add.1 +1 -1
  74. data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +0 -0
  75. data/bundler/{man → lib/bundler/man}/bundle-binstubs.1 +5 -3
  76. data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +2 -4
  77. data/bundler/{man → lib/bundler/man}/bundle-cache.1 +1 -1
  78. data/bundler/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +0 -0
  79. data/bundler/{man → lib/bundler/man}/bundle-check.1 +1 -1
  80. data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
  81. data/bundler/{man → lib/bundler/man}/bundle-clean.1 +1 -1
  82. data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
  83. data/bundler/{man → lib/bundler/man}/bundle-config.1 +16 -25
  84. data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +19 -30
  85. data/bundler/{man → lib/bundler/man}/bundle-doctor.1 +1 -1
  86. data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
  87. data/bundler/{man → lib/bundler/man}/bundle-exec.1 +1 -1
  88. data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +0 -0
  89. data/bundler/{man → lib/bundler/man}/bundle-gem.1 +25 -3
  90. data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
  91. data/bundler/{man → lib/bundler/man}/bundle-info.1 +1 -1
  92. data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
  93. data/bundler/{man → lib/bundler/man}/bundle-init.1 +1 -1
  94. data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +0 -0
  95. data/bundler/{man → lib/bundler/man}/bundle-inject.1 +1 -1
  96. data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
  97. data/bundler/{man → lib/bundler/man}/bundle-install.1 +30 -3
  98. data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +25 -3
  99. data/bundler/{man → lib/bundler/man}/bundle-list.1 +7 -7
  100. data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
  101. data/bundler/{man → lib/bundler/man}/bundle-lock.1 +1 -1
  102. data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
  103. data/bundler/{man → lib/bundler/man}/bundle-open.1 +1 -1
  104. data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
  105. data/bundler/{man → lib/bundler/man}/bundle-outdated.1 +1 -1
  106. data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
  107. data/bundler/{man → lib/bundler/man}/bundle-platform.1 +1 -1
  108. data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
  109. data/bundler/{man → lib/bundler/man}/bundle-pristine.1 +1 -1
  110. data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
  111. data/bundler/{man → lib/bundler/man}/bundle-remove.1 +1 -1
  112. data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
  113. data/bundler/{man → lib/bundler/man}/bundle-show.1 +1 -1
  114. data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
  115. data/bundler/{man → lib/bundler/man}/bundle-update.1 +1 -1
  116. data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +0 -0
  117. data/bundler/{man → lib/bundler/man}/bundle-viz.1 +1 -1
  118. data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
  119. data/bundler/{man → lib/bundler/man}/bundle.1 +1 -1
  120. data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +0 -0
  121. data/bundler/{man → lib/bundler/man}/gemfile.5 +4 -4
  122. data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +4 -4
  123. data/bundler/{man → lib/bundler/man}/index.txt +0 -0
  124. data/bundler/lib/bundler/mirror.rb +2 -2
  125. data/bundler/lib/bundler/plugin.rb +30 -5
  126. data/bundler/lib/bundler/plugin/api/source.rb +1 -1
  127. data/bundler/lib/bundler/plugin/dsl.rb +1 -1
  128. data/bundler/lib/bundler/plugin/index.rb +10 -1
  129. data/bundler/lib/bundler/plugin/installer.rb +1 -1
  130. data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
  131. data/bundler/lib/bundler/plugin/source_list.rb +1 -1
  132. data/bundler/lib/bundler/psyched_yaml.rb +0 -15
  133. data/bundler/lib/bundler/remote_specification.rb +5 -2
  134. data/bundler/lib/bundler/resolver.rb +43 -19
  135. data/bundler/lib/bundler/resolver/spec_group.rb +39 -24
  136. data/bundler/lib/bundler/retry.rb +1 -1
  137. data/bundler/lib/bundler/ruby_version.rb +1 -1
  138. data/bundler/lib/bundler/rubygems_ext.rb +69 -9
  139. data/bundler/lib/bundler/rubygems_gem_installer.rb +3 -9
  140. data/bundler/lib/bundler/rubygems_integration.rb +26 -61
  141. data/bundler/lib/bundler/runtime.rb +4 -14
  142. data/bundler/lib/bundler/settings.rb +49 -46
  143. data/bundler/lib/bundler/shared_helpers.rb +2 -2
  144. data/bundler/lib/bundler/similarity_detector.rb +1 -1
  145. data/bundler/lib/bundler/source.rb +1 -1
  146. data/bundler/lib/bundler/source/git.rb +23 -21
  147. data/bundler/lib/bundler/source/git/git_proxy.rb +82 -80
  148. data/bundler/lib/bundler/source/path.rb +7 -3
  149. data/bundler/lib/bundler/source/path/installer.rb +10 -10
  150. data/bundler/lib/bundler/source/rubygems.rb +23 -17
  151. data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
  152. data/bundler/lib/bundler/source_list.rb +2 -2
  153. data/bundler/lib/bundler/spec_set.rb +8 -10
  154. data/bundler/lib/bundler/stub_specification.rb +17 -7
  155. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  156. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +9 -1
  157. data/bundler/lib/bundler/templates/newgem/README.md.tt +1 -2
  158. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +19 -5
  159. data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
  160. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
  161. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
  162. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
  163. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
  164. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
  165. data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  166. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +15 -7
  167. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
  168. data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
  169. data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
  170. data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
  171. data/bundler/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
  172. data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  173. data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  174. data/bundler/lib/bundler/ui/shell.rb +5 -5
  175. data/bundler/lib/bundler/uri_credentials_filter.rb +3 -1
  176. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -1
  177. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +34 -1
  178. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
  179. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
  180. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  181. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +48 -46
  182. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +79 -208
  183. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +0 -7
  184. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
  185. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
  186. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  187. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
  188. data/bundler/lib/bundler/vendored_persistent.rb +0 -7
  189. data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
  190. data/bundler/lib/bundler/version.rb +1 -1
  191. data/bundler/lib/bundler/worker.rb +1 -1
  192. data/bundler/lib/bundler/yaml_serializer.rb +1 -1
  193. data/lib/rubygems.rb +138 -187
  194. data/lib/rubygems/available_set.rb +4 -6
  195. data/lib/rubygems/basic_specification.rb +12 -10
  196. data/lib/rubygems/bundler_version_finder.rb +14 -9
  197. data/lib/rubygems/command.rb +17 -17
  198. data/lib/rubygems/command_manager.rb +5 -6
  199. data/lib/rubygems/commands/build_command.rb +40 -20
  200. data/lib/rubygems/commands/cert_command.rb +2 -10
  201. data/lib/rubygems/commands/check_command.rb +0 -2
  202. data/lib/rubygems/commands/cleanup_command.rb +11 -7
  203. data/lib/rubygems/commands/contents_command.rb +4 -6
  204. data/lib/rubygems/commands/dependency_command.rb +6 -8
  205. data/lib/rubygems/commands/environment_command.rb +1 -3
  206. data/lib/rubygems/commands/fetch_command.rb +2 -4
  207. data/lib/rubygems/commands/generate_index_command.rb +0 -2
  208. data/lib/rubygems/commands/help_command.rb +4 -4
  209. data/lib/rubygems/commands/info_command.rb +8 -5
  210. data/lib/rubygems/commands/install_command.rb +3 -5
  211. data/lib/rubygems/commands/list_command.rb +8 -7
  212. data/lib/rubygems/commands/lock_command.rb +1 -3
  213. data/lib/rubygems/commands/mirror_command.rb +0 -2
  214. data/lib/rubygems/commands/open_command.rb +0 -4
  215. data/lib/rubygems/commands/outdated_command.rb +0 -2
  216. data/lib/rubygems/commands/owner_command.rb +9 -4
  217. data/lib/rubygems/commands/pristine_command.rb +11 -5
  218. data/lib/rubygems/commands/push_command.rb +10 -47
  219. data/lib/rubygems/commands/query_command.rb +14 -344
  220. data/lib/rubygems/commands/rdoc_command.rb +0 -2
  221. data/lib/rubygems/commands/search_command.rb +7 -7
  222. data/lib/rubygems/commands/server_command.rb +3 -1
  223. data/lib/rubygems/commands/setup_command.rb +101 -74
  224. data/lib/rubygems/commands/signin_command.rb +0 -2
  225. data/lib/rubygems/commands/signout_command.rb +0 -2
  226. data/lib/rubygems/commands/sources_command.rb +9 -7
  227. data/lib/rubygems/commands/specification_command.rb +8 -4
  228. data/lib/rubygems/commands/stale_command.rb +1 -3
  229. data/lib/rubygems/commands/uninstall_command.rb +2 -4
  230. data/lib/rubygems/commands/unpack_command.rb +1 -3
  231. data/lib/rubygems/commands/update_command.rb +59 -14
  232. data/lib/rubygems/commands/which_command.rb +0 -2
  233. data/lib/rubygems/commands/yank_command.rb +4 -7
  234. data/lib/rubygems/config_file.rb +11 -4
  235. data/lib/rubygems/core_ext/kernel_require.rb +29 -36
  236. data/lib/rubygems/core_ext/kernel_warn.rb +12 -13
  237. data/lib/rubygems/defaults.rb +101 -7
  238. data/lib/rubygems/dependency.rb +3 -8
  239. data/lib/rubygems/dependency_installer.rb +6 -78
  240. data/lib/rubygems/dependency_list.rb +7 -9
  241. data/lib/rubygems/deprecate.rb +46 -1
  242. data/lib/rubygems/doctor.rb +4 -4
  243. data/lib/rubygems/errors.rb +3 -14
  244. data/lib/rubygems/exceptions.rb +2 -33
  245. data/lib/rubygems/ext.rb +6 -6
  246. data/lib/rubygems/ext/build_error.rb +2 -0
  247. data/lib/rubygems/ext/builder.rb +21 -39
  248. data/lib/rubygems/ext/cmake_builder.rb +6 -9
  249. data/lib/rubygems/ext/configure_builder.rb +5 -8
  250. data/lib/rubygems/ext/ext_conf_builder.rb +21 -19
  251. data/lib/rubygems/ext/rake_builder.rb +4 -6
  252. data/lib/rubygems/gem_runner.rb +3 -10
  253. data/lib/rubygems/gemcutter_utilities.rb +102 -21
  254. data/lib/rubygems/indexer.rb +1 -22
  255. data/lib/rubygems/install_update_options.rb +7 -7
  256. data/lib/rubygems/installer.rb +59 -80
  257. data/lib/rubygems/installer_test_case.rb +25 -11
  258. data/lib/rubygems/installer_uninstaller_utils.rb +24 -0
  259. data/lib/rubygems/local_remote_options.rb +1 -1
  260. data/lib/rubygems/mock_gem_ui.rb +0 -6
  261. data/lib/rubygems/name_tuple.rb +3 -7
  262. data/lib/rubygems/openssl.rb +7 -0
  263. data/lib/rubygems/package.rb +14 -25
  264. data/lib/rubygems/package/digest_io.rb +0 -2
  265. data/lib/rubygems/package/file_source.rb +0 -2
  266. data/lib/rubygems/package/io_source.rb +0 -2
  267. data/lib/rubygems/package/old.rb +1 -3
  268. data/lib/rubygems/package/tar_header.rb +4 -6
  269. data/lib/rubygems/package/tar_reader.rb +0 -3
  270. data/lib/rubygems/package/tar_reader/entry.rb +0 -3
  271. data/lib/rubygems/package/tar_test_case.rb +2 -4
  272. data/lib/rubygems/package/tar_writer.rb +2 -12
  273. data/lib/rubygems/package_task.rb +1 -7
  274. data/lib/rubygems/path_support.rb +1 -3
  275. data/lib/rubygems/platform.rb +21 -16
  276. data/lib/rubygems/psych_tree.rb +0 -2
  277. data/lib/rubygems/query_utils.rb +353 -0
  278. data/lib/rubygems/rdoc.rb +0 -12
  279. data/lib/rubygems/remote_fetcher.rb +14 -29
  280. data/lib/rubygems/request.rb +4 -11
  281. data/lib/rubygems/request/connection_pools.rb +1 -5
  282. data/lib/rubygems/request/http_pool.rb +0 -2
  283. data/lib/rubygems/request/https_pool.rb +0 -2
  284. data/lib/rubygems/request_set.rb +7 -20
  285. data/lib/rubygems/request_set/gem_dependency_api.rb +6 -8
  286. data/lib/rubygems/request_set/lockfile.rb +8 -12
  287. data/lib/rubygems/request_set/lockfile/parser.rb +0 -2
  288. data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -3
  289. data/lib/rubygems/requirement.rb +21 -22
  290. data/lib/rubygems/resolver.rb +14 -12
  291. data/lib/rubygems/resolver/activation_request.rb +9 -3
  292. data/lib/rubygems/resolver/api_set.rb +31 -24
  293. data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
  294. data/lib/rubygems/resolver/api_specification.rb +24 -10
  295. data/lib/rubygems/resolver/best_set.rb +2 -4
  296. data/lib/rubygems/resolver/composed_set.rb +3 -5
  297. data/lib/rubygems/resolver/conflict.rb +2 -4
  298. data/lib/rubygems/resolver/current_set.rb +0 -2
  299. data/lib/rubygems/resolver/dependency_request.rb +1 -3
  300. data/lib/rubygems/resolver/git_set.rb +0 -2
  301. data/lib/rubygems/resolver/git_specification.rb +0 -2
  302. data/lib/rubygems/resolver/index_set.rb +1 -3
  303. data/lib/rubygems/resolver/index_specification.rb +29 -2
  304. data/lib/rubygems/resolver/installed_specification.rb +0 -2
  305. data/lib/rubygems/resolver/installer_set.rb +60 -13
  306. data/lib/rubygems/resolver/local_specification.rb +0 -2
  307. data/lib/rubygems/resolver/lock_set.rb +2 -4
  308. data/lib/rubygems/resolver/lock_specification.rb +0 -2
  309. data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
  310. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
  311. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +1 -0
  312. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +39 -5
  313. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
  314. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
  315. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
  316. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
  317. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
  318. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
  319. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
  320. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
  321. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +43 -10
  322. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +75 -7
  323. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
  324. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +1 -0
  325. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
  326. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +506 -165
  327. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
  328. data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
  329. data/lib/rubygems/resolver/requirement_list.rb +0 -2
  330. data/lib/rubygems/resolver/set.rb +0 -2
  331. data/lib/rubygems/resolver/source_set.rb +0 -2
  332. data/lib/rubygems/resolver/spec_specification.rb +14 -2
  333. data/lib/rubygems/resolver/specification.rb +13 -3
  334. data/lib/rubygems/resolver/stats.rb +0 -2
  335. data/lib/rubygems/resolver/vendor_set.rb +0 -2
  336. data/lib/rubygems/resolver/vendor_specification.rb +0 -2
  337. data/lib/rubygems/s3_uri_signer.rb +2 -8
  338. data/lib/rubygems/safe_yaml.rb +4 -4
  339. data/lib/rubygems/security.rb +27 -34
  340. data/lib/rubygems/security/policy.rb +4 -8
  341. data/lib/rubygems/security/signer.rb +5 -7
  342. data/lib/rubygems/security/trust_dir.rb +1 -3
  343. data/lib/rubygems/server.rb +16 -13
  344. data/lib/rubygems/source.rb +23 -12
  345. data/lib/rubygems/source/git.rb +7 -8
  346. data/lib/rubygems/source/installed.rb +0 -2
  347. data/lib/rubygems/source/local.rb +2 -4
  348. data/lib/rubygems/source/lock.rb +0 -2
  349. data/lib/rubygems/source/specific_file.rb +0 -2
  350. data/lib/rubygems/source/vendor.rb +0 -2
  351. data/lib/rubygems/source_list.rb +4 -7
  352. data/lib/rubygems/spec_fetcher.rb +19 -18
  353. data/lib/rubygems/specification.rb +122 -131
  354. data/lib/rubygems/specification_policy.rb +88 -30
  355. data/lib/rubygems/ssl_certs/{index.rubygems.org → rubygems.org}/GlobalSignRootCA.pem +0 -0
  356. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
  357. data/lib/rubygems/stub_specification.rb +1 -5
  358. data/lib/rubygems/syck_hack.rb +0 -2
  359. data/lib/rubygems/test_case.rb +120 -134
  360. data/lib/rubygems/test_utilities.rb +12 -19
  361. data/lib/rubygems/uninstaller.rb +35 -16
  362. data/lib/rubygems/uri_formatter.rb +2 -3
  363. data/lib/rubygems/uri_parser.rb +0 -2
  364. data/lib/rubygems/user_interaction.rb +1 -26
  365. data/lib/rubygems/util.rb +15 -3
  366. data/lib/rubygems/util/licenses.rb +4 -6
  367. data/lib/rubygems/util/list.rb +0 -2
  368. data/lib/rubygems/validator.rb +1 -3
  369. data/lib/rubygems/version.rb +5 -7
  370. data/lib/rubygems/version_option.rb +6 -0
  371. data/rubygems-update.gemspec +3 -3
  372. data/setup.rb +2 -7
  373. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  374. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
  375. data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
  376. data/test/rubygems/rubygems_plugin.rb +0 -2
  377. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
  378. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
  379. data/test/rubygems/test_bundled_ca.rb +42 -45
  380. data/test/rubygems/test_config.rb +0 -2
  381. data/test/rubygems/test_deprecate.rb +40 -7
  382. data/test/rubygems/test_gem.rb +156 -99
  383. data/test/rubygems/test_gem_available_set.rb +3 -5
  384. data/test/rubygems/test_gem_bundler_version_finder.rb +19 -3
  385. data/test/rubygems/test_gem_command.rb +24 -7
  386. data/test/rubygems/test_gem_command_manager.rb +36 -5
  387. data/test/rubygems/test_gem_commands_build_command.rb +250 -15
  388. data/test/rubygems/test_gem_commands_cert_command.rb +4 -6
  389. data/test/rubygems/test_gem_commands_check_command.rb +0 -2
  390. data/test/rubygems/test_gem_commands_cleanup_command.rb +14 -5
  391. data/test/rubygems/test_gem_commands_contents_command.rb +50 -19
  392. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -2
  393. data/test/rubygems/test_gem_commands_environment_command.rb +21 -23
  394. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -2
  395. data/test/rubygems/test_gem_commands_generate_index_command.rb +1 -7
  396. data/test/rubygems/test_gem_commands_help_command.rb +15 -4
  397. data/test/rubygems/test_gem_commands_info_command.rb +6 -8
  398. data/test/rubygems/test_gem_commands_install_command.rb +163 -34
  399. data/test/rubygems/test_gem_commands_list_command.rb +0 -2
  400. data/test/rubygems/test_gem_commands_lock_command.rb +0 -2
  401. data/test/rubygems/test_gem_commands_mirror.rb +1 -3
  402. data/test/rubygems/test_gem_commands_open_command.rb +4 -6
  403. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -2
  404. data/test/rubygems/test_gem_commands_owner_command.rb +59 -5
  405. data/test/rubygems/test_gem_commands_pristine_command.rb +43 -12
  406. data/test/rubygems/test_gem_commands_push_command.rb +77 -9
  407. data/test/rubygems/test_gem_commands_query_command.rb +12 -12
  408. data/test/rubygems/test_gem_commands_search_command.rb +0 -2
  409. data/test/rubygems/test_gem_commands_server_command.rb +0 -2
  410. data/test/rubygems/test_gem_commands_setup_command.rb +160 -135
  411. data/test/rubygems/test_gem_commands_signin_command.rb +33 -9
  412. data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
  413. data/test/rubygems/test_gem_commands_sources_command.rb +99 -3
  414. data/test/rubygems/test_gem_commands_specification_command.rb +46 -20
  415. data/test/rubygems/test_gem_commands_stale_command.rb +0 -2
  416. data/test/rubygems/test_gem_commands_uninstall_command.rb +2 -3
  417. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -2
  418. data/test/rubygems/test_gem_commands_update_command.rb +116 -7
  419. data/test/rubygems/test_gem_commands_which_command.rb +3 -5
  420. data/test/rubygems/test_gem_commands_yank_command.rb +44 -8
  421. data/test/rubygems/test_gem_config_file.rb +7 -12
  422. data/test/rubygems/test_gem_dependency.rb +0 -2
  423. data/test/rubygems/test_gem_dependency_installer.rb +116 -239
  424. data/test/rubygems/test_gem_dependency_list.rb +10 -12
  425. data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -3
  426. data/test/rubygems/test_gem_doctor.rb +28 -2
  427. data/test/rubygems/test_gem_ext_builder.rb +50 -47
  428. data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -25
  429. data/test/rubygems/test_gem_ext_configure_builder.rb +6 -22
  430. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +9 -29
  431. data/test/rubygems/test_gem_ext_rake_builder.rb +39 -24
  432. data/test/rubygems/test_gem_gem_runner.rb +44 -1
  433. data/test/rubygems/test_gem_gemcutter_utilities.rb +8 -5
  434. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -2
  435. data/test/rubygems/test_gem_indexer.rb +9 -15
  436. data/test/rubygems/test_gem_install_update_options.rb +14 -4
  437. data/test/rubygems/test_gem_installer.rb +258 -115
  438. data/test/rubygems/test_gem_local_remote_options.rb +0 -2
  439. data/test/rubygems/test_gem_name_tuple.rb +0 -2
  440. data/test/rubygems/test_gem_package.rb +41 -39
  441. data/test/rubygems/test_gem_package_old.rb +4 -6
  442. data/test/rubygems/test_gem_package_tar_header.rb +18 -1
  443. data/test/rubygems/test_gem_package_tar_reader.rb +0 -2
  444. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -2
  445. data/test/rubygems/test_gem_package_tar_writer.rb +9 -6
  446. data/test/rubygems/test_gem_package_task.rb +46 -13
  447. data/test/rubygems/test_gem_path_support.rb +0 -2
  448. data/test/rubygems/test_gem_platform.rb +71 -6
  449. data/test/rubygems/test_gem_rdoc.rb +0 -2
  450. data/test/rubygems/test_gem_remote_fetcher.rb +169 -212
  451. data/test/rubygems/test_gem_request.rb +13 -17
  452. data/test/rubygems/test_gem_request_connection_pools.rb +0 -4
  453. data/test/rubygems/test_gem_request_set.rb +72 -22
  454. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +3 -5
  455. data/test/rubygems/test_gem_request_set_lockfile.rb +4 -6
  456. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -11
  457. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -120
  458. data/test/rubygems/test_gem_requirement.rb +43 -3
  459. data/test/rubygems/test_gem_resolver.rb +6 -8
  460. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -2
  461. data/test/rubygems/test_gem_resolver_api_set.rb +60 -59
  462. data/test/rubygems/test_gem_resolver_api_specification.rb +3 -5
  463. data/test/rubygems/test_gem_resolver_best_set.rb +27 -6
  464. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -2
  465. data/test/rubygems/test_gem_resolver_conflict.rb +1 -3
  466. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -2
  467. data/test/rubygems/test_gem_resolver_git_set.rb +0 -2
  468. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -2
  469. data/test/rubygems/test_gem_resolver_index_set.rb +2 -4
  470. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -2
  471. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -2
  472. data/test/rubygems/test_gem_resolver_installer_set.rb +7 -9
  473. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -2
  474. data/test/rubygems/test_gem_resolver_lock_set.rb +3 -5
  475. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -2
  476. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -2
  477. data/test/rubygems/test_gem_resolver_specification.rb +0 -4
  478. data/test/rubygems/test_gem_resolver_vendor_set.rb +1 -3
  479. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -2
  480. data/test/rubygems/test_gem_security.rb +22 -24
  481. data/test/rubygems/test_gem_security_policy.rb +7 -12
  482. data/test/rubygems/test_gem_security_signer.rb +10 -12
  483. data/test/rubygems/test_gem_security_trust_dir.rb +4 -6
  484. data/test/rubygems/test_gem_server.rb +10 -14
  485. data/test/rubygems/test_gem_silent_ui.rb +0 -2
  486. data/test/rubygems/test_gem_source.rb +19 -18
  487. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -2
  488. data/test/rubygems/test_gem_source_git.rb +12 -13
  489. data/test/rubygems/test_gem_source_installed.rb +7 -9
  490. data/test/rubygems/test_gem_source_list.rb +1 -2
  491. data/test/rubygems/test_gem_source_local.rb +8 -10
  492. data/test/rubygems/test_gem_source_lock.rb +10 -12
  493. data/test/rubygems/test_gem_source_specific_file.rb +7 -9
  494. data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
  495. data/test/rubygems/test_gem_source_vendor.rb +7 -9
  496. data/test/rubygems/test_gem_spec_fetcher.rb +11 -4
  497. data/test/rubygems/test_gem_specification.rb +188 -131
  498. data/test/rubygems/test_gem_stream_ui.rb +3 -3
  499. data/test/rubygems/test_gem_stub_specification.rb +4 -7
  500. data/test/rubygems/test_gem_text.rb +1 -3
  501. data/test/rubygems/test_gem_uninstaller.rb +134 -12
  502. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -2
  503. data/test/rubygems/test_gem_uri_formatter.rb +0 -2
  504. data/test/rubygems/test_gem_util.rb +7 -7
  505. data/test/rubygems/test_gem_validator.rb +1 -3
  506. data/test/rubygems/test_gem_version.rb +1 -3
  507. data/test/rubygems/test_gem_version_option.rb +1 -3
  508. data/test/rubygems/test_kernel.rb +25 -10
  509. data/test/rubygems/test_project_sanity.rb +7 -2
  510. data/test/rubygems/test_remote_fetch_error.rb +0 -2
  511. data/test/rubygems/test_require.rb +291 -56
  512. data/test/test_changelog_generator.rb +17 -0
  513. metadata +79 -133
  514. data/.bundle/config +0 -2
  515. data/.rubocop.yml +0 -91
  516. data/Gemfile +0 -8
  517. data/Gemfile.lock +0 -43
  518. data/bundler/CODE_OF_CONDUCT.md +0 -136
  519. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
  520. data/bundler/man/bundle-add.1.txt +0 -58
  521. data/bundler/man/bundle-binstubs.1.txt +0 -48
  522. data/bundler/man/bundle-cache.1.txt +0 -78
  523. data/bundler/man/bundle-check.1.txt +0 -33
  524. data/bundler/man/bundle-clean.1.txt +0 -26
  525. data/bundler/man/bundle-config.1.txt +0 -528
  526. data/bundler/man/bundle-doctor.1.txt +0 -44
  527. data/bundler/man/bundle-exec.1.txt +0 -178
  528. data/bundler/man/bundle-gem.1.txt +0 -91
  529. data/bundler/man/bundle-info.1.txt +0 -21
  530. data/bundler/man/bundle-init.1.txt +0 -34
  531. data/bundler/man/bundle-inject.1.txt +0 -32
  532. data/bundler/man/bundle-install.1.txt +0 -401
  533. data/bundler/man/bundle-list.1.txt +0 -43
  534. data/bundler/man/bundle-lock.1.txt +0 -93
  535. data/bundler/man/bundle-open.1.txt +0 -29
  536. data/bundler/man/bundle-outdated.1.txt +0 -131
  537. data/bundler/man/bundle-platform.1.txt +0 -57
  538. data/bundler/man/bundle-pristine.1.txt +0 -44
  539. data/bundler/man/bundle-remove.1.txt +0 -34
  540. data/bundler/man/bundle-show.1.txt +0 -27
  541. data/bundler/man/bundle-update.1.txt +0 -390
  542. data/bundler/man/bundle-viz.1.txt +0 -39
  543. data/bundler/man/bundle.1.txt +0 -116
  544. data/bundler/man/gemfile.5.txt +0 -649
  545. data/lib/rubygems/source_local.rb +0 -7
  546. data/lib/rubygems/source_specific_file.rb +0 -6
  547. data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  548. data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
  549. data/lib/ubygems.rb +0 -14
  550. data/tmp/.keep +0 -0
  551. data/util/CL2notes +0 -55
  552. data/util/bisect +0 -10
  553. data/util/ci.sh +0 -62
  554. data/util/cops/deprecations.rb +0 -52
  555. data/util/create_certs.rb +0 -171
  556. data/util/create_certs.sh +0 -27
  557. data/util/create_encrypted_key.rb +0 -16
  558. data/util/generate_spdx_license_list.rb +0 -63
  559. data/util/patch_with_prs.rb +0 -77
  560. data/util/rubocop +0 -8
  561. data/util/update_bundled_ca_certificates.rb +0 -139
  562. data/util/update_changelog.rb +0 -67
@@ -4,8 +4,9 @@ require 'rubygems/user_interaction'
4
4
  require 'timeout'
5
5
 
6
6
  class TestGemStreamUI < Gem::TestCase
7
-
8
- SHORT_TIMEOUT = (defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled?) ? 1.0 : 0.1 # increase timeout with MJIT for --jit-wait testing
7
+ # increase timeout with MJIT for --jit-wait testing
8
+ mjit_enabled = defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled?
9
+ SHORT_TIMEOUT = (RUBY_ENGINE == "ruby" && !mjit_enabled) ? 0.1 : 1.0
9
10
 
10
11
  module IsTty
11
12
  attr_accessor :tty
@@ -220,5 +221,4 @@ class TestGemStreamUI < Gem::TestCase
220
221
  reporter.fetch 'a.gem', 1024
221
222
  assert_equal "", @out.string
222
223
  end
223
-
224
224
  end
@@ -3,16 +3,14 @@ require "rubygems/test_case"
3
3
  require "rubygems/stub_specification"
4
4
 
5
5
  class TestStubSpecification < Gem::TestCase
6
-
7
- SPECIFICATIONS = File.expand_path(File.join("..", "specifications"), __FILE__)
8
- FOO = File.join SPECIFICATIONS, "foo-0.0.1-x86-mswin32.gemspec"
9
- BAR = File.join SPECIFICATIONS, "bar-0.0.2.gemspec"
6
+ FOO = File.expand_path File.join("specifications", "foo-0.0.1-x86-mswin32.gemspec"), __dir__
7
+ BAR = File.expand_path File.join("specifications", "bar-0.0.2.gemspec"), __dir__
10
8
 
11
9
  def setup
12
10
  super
13
11
 
14
- @base_dir = File.dirname(SPECIFICATIONS)
15
- @gems_dir = File.join File.dirname(SPECIFICATIONS), 'gem'
12
+ @base_dir = __dir__
13
+ @gems_dir = File.join __dir__, 'gem'
16
14
  @foo = Gem::StubSpecification.gemspec_stub FOO, @base_dir, @gems_dir
17
15
  end
18
16
 
@@ -292,5 +290,4 @@ end
292
290
  return stub
293
291
  end
294
292
  end
295
-
296
293
  end
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require "rubygems/text"
4
4
 
5
5
  class TestGemText < Gem::TestCase
6
-
7
6
  include Gem::Text
8
7
 
9
8
  def test_format_text
@@ -23,7 +22,7 @@ class TestGemText < Gem::TestCase
23
22
  end
24
23
 
25
24
  def test_format_text_no_space
26
- assert_equal "texttowr\nap", format_text("texttowrap", 8)
25
+ assert_equal "texttowr\nap", format_text("texttowrap", 8)
27
26
  end
28
27
 
29
28
  def test_format_text_trailing # for two spaces after .
@@ -94,5 +93,4 @@ Without the wrapping, the text might not look good in the RSS feed.
94
93
  def test_clean_text
95
94
  assert_equal ".]2;nyan.", clean_text("\e]2;nyan\a")
96
95
  end
97
-
98
96
  end
@@ -3,7 +3,6 @@ require 'rubygems/installer_test_case'
3
3
  require 'rubygems/uninstaller'
4
4
 
5
5
  class TestGemUninstaller < Gem::InstallerTestCase
6
-
7
6
  def setup
8
7
  super
9
8
  @installer = setup_base_installer
@@ -27,7 +26,7 @@ class TestGemUninstaller < Gem::InstallerTestCase
27
26
  FileUtils.mkdir_p 'foo/bar'
28
27
  uninstaller = Gem::Uninstaller.new nil, :install_dir => 'foo//bar'
29
28
 
30
- assert_match %r|foo/bar$|, uninstaller.instance_variable_get(:@gem_home)
29
+ assert_match %r{foo/bar$}, uninstaller.instance_variable_get(:@gem_home)
31
30
  end
32
31
 
33
32
  def test_ask_if_ok
@@ -154,6 +153,8 @@ class TestGemUninstaller < Gem::InstallerTestCase
154
153
  end
155
154
 
156
155
  def test_remove_symlinked_gem_home
156
+ skip "Symlinks not supported or not enabled" unless symlink_supported?
157
+
157
158
  Dir.mktmpdir("gem_home") do |dir|
158
159
  symlinked_gem_home = "#{dir}/#{File.basename(@gemhome)}"
159
160
 
@@ -169,6 +170,59 @@ class TestGemUninstaller < Gem::InstallerTestCase
169
170
  end
170
171
  end
171
172
 
173
+ def test_remove_plugins
174
+ write_file File.join(@tempdir, 'lib', 'rubygems_plugin.rb') do |io|
175
+ io.write "puts __FILE__"
176
+ end
177
+
178
+ @spec.files += %w[lib/rubygems_plugin.rb]
179
+
180
+ Gem::Installer.at(Gem::Package.build(@spec), :force => true).install
181
+
182
+ plugin_path = File.join Gem.plugindir, 'a_plugin.rb'
183
+ assert File.exist?(plugin_path), 'plugin not written'
184
+
185
+ Gem::Uninstaller.new(nil).remove_plugins @spec
186
+
187
+ refute File.exist?(plugin_path), 'plugin not removed'
188
+ end
189
+
190
+ def test_remove_plugins_with_install_dir
191
+ write_file File.join(@tempdir, 'lib', 'rubygems_plugin.rb') do |io|
192
+ io.write "puts __FILE__"
193
+ end
194
+
195
+ @spec.files += %w[lib/rubygems_plugin.rb]
196
+
197
+ Gem::Installer.at(Gem::Package.build(@spec), :force => true).install
198
+
199
+ plugin_path = File.join Gem.plugindir, 'a_plugin.rb'
200
+ assert File.exist?(plugin_path), 'plugin not written'
201
+
202
+ Dir.mkdir "#{@gemhome}2"
203
+ Gem::Uninstaller.new(nil, :install_dir => "#{@gemhome}2").remove_plugins @spec
204
+
205
+ assert File.exist?(plugin_path), 'plugin unintentionally removed'
206
+ end
207
+
208
+ def test_regenerate_plugins_for
209
+ write_file File.join(@tempdir, 'lib', 'rubygems_plugin.rb') do |io|
210
+ io.write "puts __FILE__"
211
+ end
212
+
213
+ @spec.files += %w[lib/rubygems_plugin.rb]
214
+
215
+ Gem::Installer.at(Gem::Package.build(@spec), :force => true).install
216
+
217
+ plugin_path = File.join Gem.plugindir, 'a_plugin.rb'
218
+ assert File.exist?(plugin_path), 'plugin not written'
219
+
220
+ FileUtils.rm plugin_path
221
+ Gem::Uninstaller.new(nil).regenerate_plugins_for @spec, Gem.plugindir
222
+
223
+ assert File.exist?(plugin_path), 'plugin not regenerated'
224
+ end
225
+
172
226
  def test_path_ok_eh
173
227
  uninstaller = Gem::Uninstaller.new nil
174
228
 
@@ -260,7 +314,7 @@ create_makefile '#{@spec.name}'
260
314
  use_ui @ui do
261
315
  path = Gem::Package.build @spec
262
316
 
263
- installer = Gem::Installer.at path
317
+ installer = Gem::Installer.at path, :force => true
264
318
  installer.install
265
319
  end
266
320
 
@@ -405,12 +459,12 @@ create_makefile '#{@spec.name}'
405
459
  lines = ui.output.split("\n")
406
460
  lines.shift
407
461
 
408
- assert_match %r!You have requested to uninstall the gem:!, lines.shift
462
+ assert_match %r{You have requested to uninstall the gem:}, lines.shift
409
463
  lines.shift
410
464
  lines.shift
411
465
 
412
- assert_match %r!r-1 depends on q \(= 1\)!, lines.shift
413
- assert_match %r!Successfully uninstalled q-1!, lines.last
466
+ assert_match %r{r-1 depends on q \(= 1\)}, lines.shift
467
+ assert_match %r{Successfully uninstalled q-1}, lines.last
414
468
  end
415
469
 
416
470
  def test_uninstall_only_lists_unsatisfied_deps
@@ -435,12 +489,12 @@ create_makefile '#{@spec.name}'
435
489
  lines = ui.output.split("\n")
436
490
  lines.shift
437
491
 
438
- assert_match %r!You have requested to uninstall the gem:!, lines.shift
492
+ assert_match %r{You have requested to uninstall the gem:}, lines.shift
439
493
  lines.shift
440
494
  lines.shift
441
495
 
442
- assert_match %r!x-1 depends on q \(= 1.0\)!, lines.shift
443
- assert_match %r!Successfully uninstalled q-1.0!, lines.last
496
+ assert_match %r{x-1 depends on q \(= 1.0\)}, lines.shift
497
+ assert_match %r{Successfully uninstalled q-1.0}, lines.last
444
498
  end
445
499
 
446
500
  def test_uninstall_doesnt_prompt_when_other_gem_satisfies_requirement
@@ -516,12 +570,41 @@ create_makefile '#{@spec.name}'
516
570
  lines = ui.output.split("\n")
517
571
  lines.shift
518
572
 
519
- assert_match %r!You have requested to uninstall the gem:!, lines.shift
573
+ assert_match %r{You have requested to uninstall the gem:}, lines.shift
520
574
  lines.shift
521
575
  lines.shift
522
576
 
523
- assert_match %r!r-1 depends on q \(= 1, development\)!, lines.shift
524
- assert_match %r!Successfully uninstalled q-1!, lines.last
577
+ assert_match %r{r-1 depends on q \(= 1, development\)}, lines.shift
578
+ assert_match %r{Successfully uninstalled q-1}, lines.last
579
+ end
580
+
581
+ def test_uninstall_prompt_only_lists_the_dependents_that_prevented_uninstallation
582
+ quick_gem 'r', '1' do |s|
583
+ s.add_development_dependency 'q', '= 1'
584
+ end
585
+
586
+ quick_gem 's', '1' do |s|
587
+ s.add_dependency 'q', '= 1'
588
+ end
589
+
590
+ quick_gem 'q', '1'
591
+
592
+ un = Gem::Uninstaller.new('q', :check_dev => false)
593
+ ui = Gem::MockGemUi.new("y\n")
594
+
595
+ use_ui ui do
596
+ un.uninstall
597
+ end
598
+
599
+ lines = ui.output.split("\n")
600
+ lines.shift
601
+
602
+ assert_match %r{You have requested to uninstall the gem:}, lines.shift
603
+ lines.shift
604
+ lines.shift
605
+
606
+ assert_match %r{s-1 depends on q \(= 1\)}, lines.shift
607
+ assert_match %r{Successfully uninstalled q-1}, lines.last
525
608
  end
526
609
 
527
610
  def test_uninstall_no_permission
@@ -542,4 +625,43 @@ create_makefile '#{@spec.name}'
542
625
  end
543
626
  end
544
627
 
628
+ def test_uninstall_keeps_plugins_up_to_date
629
+ write_file File.join(@tempdir, 'lib', 'rubygems_plugin.rb') do |io|
630
+ io.write "puts __FILE__"
631
+ end
632
+
633
+ plugin_path = File.join Gem.plugindir, 'a_plugin.rb'
634
+
635
+ @spec.version = '1'
636
+ Gem::Installer.at(Gem::Package.build(@spec), :force => true).install
637
+
638
+ refute File.exist?(plugin_path), 'version without plugin installed, but plugin written'
639
+
640
+ @spec.files += %w[lib/rubygems_plugin.rb]
641
+ @spec.version = '2'
642
+ Gem::Installer.at(Gem::Package.build(@spec), :force => true).install
643
+
644
+ assert File.exist?(plugin_path), 'version with plugin installed, but plugin not written'
645
+ assert_match %r{\Arequire.*a-2/lib/rubygems_plugin\.rb}, File.read(plugin_path), 'written plugin has incorrect content'
646
+
647
+ @spec.version = '3'
648
+ Gem::Installer.at(Gem::Package.build(@spec), :force => true).install
649
+
650
+ assert File.exist?(plugin_path), 'version with plugin installed, but plugin removed'
651
+ assert_match %r{\Arequire.*a-3/lib/rubygems_plugin\.rb}, File.read(plugin_path), 'old version installed, but plugin updated'
652
+
653
+ Gem::Uninstaller.new('a', :version => '1', :executables => true).uninstall
654
+
655
+ assert File.exist?(plugin_path), 'plugin removed when old version uninstalled'
656
+ assert_match %r{\Arequire.*a-3/lib/rubygems_plugin\.rb}, File.read(plugin_path), 'old version uninstalled, but plugin updated'
657
+
658
+ Gem::Uninstaller.new('a', version: '3', :executables => true).uninstall
659
+
660
+ assert File.exist?(plugin_path), 'plugin removed when old version uninstalled and another version with plugin still present'
661
+ assert_match %r{\Arequire.*a-2/lib/rubygems_plugin\.rb}, File.read(plugin_path), 'latest version uninstalled, but plugin not updated to previous version'
662
+
663
+ Gem::Uninstaller.new('a', version: '2', :executables => true).uninstall
664
+
665
+ refute File.exist?(plugin_path), 'last version uninstalled, but plugin still present'
666
+ end
545
667
  end
@@ -2,7 +2,6 @@
2
2
  require 'rubygems/test_case'
3
3
 
4
4
  class TestGemUnsatisfiableDependencyError < Gem::TestCase
5
-
6
5
  def setup
7
6
  super
8
7
 
@@ -28,5 +27,4 @@ class TestGemUnsatisfiableDependencyError < Gem::TestCase
28
27
  def test_version
29
28
  assert_equal @a_dep.requirement, @e.version
30
29
  end
31
-
32
30
  end
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/uri_formatter'
4
4
 
5
5
  class TestGemUriFormatter < Gem::TestCase
6
-
7
6
  def test_normalize_uri
8
7
  assert_equal 'FILE://example/',
9
8
  Gem::UriFormatter.new('FILE://example/').normalize
@@ -24,5 +23,4 @@ class TestGemUriFormatter < Gem::TestCase
24
23
  def test_unescape
25
24
  assert_equal 'a@b\c', Gem::UriFormatter.new('a%40b%5Cc').unescape
26
25
  end
27
-
28
26
  end
@@ -3,10 +3,9 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/util'
4
4
 
5
5
  class TestGemUtil < Gem::TestCase
6
-
7
6
  def test_class_popen
8
7
  skip "popen with a block does not behave well on jruby" if Gem.java_platform?
9
- assert_equal "0\n", Gem::Util.popen(Gem.ruby, '-I', File.expand_path('../../../lib', __FILE__), '-e', 'p 0')
8
+ assert_equal "0\n", Gem::Util.popen(*ruby_with_rubygems_in_load_path, '-e', 'p 0')
10
9
 
11
10
  assert_raises Errno::ECHILD do
12
11
  Process.wait(-1)
@@ -15,8 +14,10 @@ class TestGemUtil < Gem::TestCase
15
14
 
16
15
  def test_silent_system
17
16
  skip if Gem.java_platform?
18
- assert_silent do
19
- Gem::Util.silent_system Gem.ruby, '-I', File.expand_path('../../../lib', __FILE__), '-e', 'puts "hello"; warn "hello"'
17
+ Gem::Deprecate.skip_during do
18
+ assert_silent do
19
+ Gem::Util.silent_system(*ruby_with_rubygems_in_load_path, '-e', 'puts "hello"; warn "hello"')
20
+ end
20
21
  end
21
22
  end
22
23
 
@@ -56,8 +57,8 @@ class TestGemUtil < Gem::TestCase
56
57
  list = [1,2,3,4,5].inject(Gem::List.new(0)) do |m,o|
57
58
  Gem::List.new o, m
58
59
  end
59
- assert_equal 5, list.find { |x| x == 5 }
60
- assert_equal 4, list.find { |x| x == 4 }
60
+ assert_equal 5, list.find {|x| x == 5 }
61
+ assert_equal 4, list.find {|x| x == 4 }
61
62
  end
62
63
 
63
64
  def test_glob_files_in_dir
@@ -84,5 +85,4 @@ class TestGemUtil < Gem::TestCase
84
85
  path = "/home/skillet"
85
86
  assert_equal "/home/skillet", Gem::Util.correct_for_windows_path(path)
86
87
  end
87
-
88
88
  end
@@ -4,7 +4,6 @@ require "rubygems/test_case"
4
4
  require "rubygems/validator"
5
5
 
6
6
  class TestGemValidator < Gem::TestCase
7
-
8
7
  def setup
9
8
  super
10
9
 
@@ -27,7 +26,7 @@ class TestGemValidator < Gem::TestCase
27
26
  @spec.file_name => [
28
27
  Gem::Validator::ErrorData.new('lib/b.rb', 'Missing file'),
29
28
  Gem::Validator::ErrorData.new('lib/c.rb', 'Extra file'),
30
- ]
29
+ ],
31
30
  }
32
31
 
33
32
  assert_equal expected, alien
@@ -40,5 +39,4 @@ class TestGemValidator < Gem::TestCase
40
39
 
41
40
  assert_empty alien
42
41
  end
43
-
44
42
  end
@@ -5,7 +5,6 @@ require "rubygems/version"
5
5
  require "minitest/benchmark"
6
6
 
7
7
  class TestGemVersion < Gem::TestCase
8
-
9
8
  class V < ::Gem::Version
10
9
  end
11
10
 
@@ -236,7 +235,7 @@ class TestGemVersion < Gem::TestCase
236
235
  assert_equal expected, v(version).approximate_recommendation
237
236
  end
238
237
 
239
- # Assert that the "approximate" recommendation for +version+ satifies +version+.
238
+ # Assert that the "approximate" recommendation for +version+ satisfies +version+.
240
239
 
241
240
  def assert_approximate_satisfies_itself(version)
242
241
  gem_version = v(version)
@@ -298,5 +297,4 @@ class TestGemVersion < Gem::TestCase
298
297
  def refute_version_equal(unexpected, actual)
299
298
  refute_equal v(unexpected), v(actual)
300
299
  end
301
-
302
300
  end
@@ -4,7 +4,6 @@ require 'rubygems/command'
4
4
  require 'rubygems/version_option'
5
5
 
6
6
  class TestGemVersionOption < Gem::TestCase
7
-
8
7
  def setup
9
8
  super
10
9
 
@@ -57,7 +56,7 @@ class TestGemVersionOption < Gem::TestCase
57
56
  @cmd.handle_options %w[--platform ruby]
58
57
 
59
58
  expected = [
60
- Gem::Platform::RUBY
59
+ Gem::Platform::RUBY,
61
60
  ]
62
61
 
63
62
  assert_equal expected, Gem.platforms
@@ -162,5 +161,4 @@ class TestGemVersionOption < Gem::TestCase
162
161
 
163
162
  assert_equal expected, @cmd.options
164
163
  end
165
-
166
164
  end
@@ -2,7 +2,6 @@
2
2
  require 'rubygems/test_case'
3
3
 
4
4
  class TestKernel < Gem::TestCase
5
-
6
5
  def setup
7
6
  super
8
7
 
@@ -19,7 +18,7 @@ class TestKernel < Gem::TestCase
19
18
 
20
19
  def test_gem
21
20
  assert gem('a', '= 1'), "Should load"
22
- assert $:.any? { |p| %r{a-1/lib} =~ p }
21
+ assert $:.any? {|p| %r{a-1/lib} =~ p }
23
22
  end
24
23
 
25
24
  def test_gem_default
@@ -49,13 +48,13 @@ class TestKernel < Gem::TestCase
49
48
  def test_gem_redundant
50
49
  assert gem('a', '= 1'), "Should load"
51
50
  refute gem('a', '= 1'), "Should not load"
52
- assert_equal 1, $:.select { |p| %r{a-1/lib} =~ p }.size
51
+ assert_equal 1, $:.select {|p| %r{a-1/lib} =~ p }.size
53
52
  end
54
53
 
55
54
  def test_gem_overlapping
56
55
  assert gem('a', '= 1'), "Should load"
57
56
  refute gem('a', '>= 1'), "Should not load"
58
- assert_equal 1, $:.select { |p| %r{a-1/lib} =~ p }.size
57
+ assert_equal 1, $:.select {|p| %r{a-1/lib} =~ p }.size
59
58
  end
60
59
 
61
60
  def test_gem_prerelease
@@ -82,13 +81,30 @@ class TestKernel < Gem::TestCase
82
81
  assert_match(/activated a-1/, ex.message)
83
82
  assert_equal 'a', ex.name
84
83
 
85
- assert $:.any? { |p| %r{a-1/lib} =~ p }
86
- refute $:.any? { |p| %r{a-2/lib} =~ p }
84
+ assert $:.any? {|p| %r{a-1/lib} =~ p }
85
+ refute $:.any? {|p| %r{a-2/lib} =~ p }
87
86
  end
88
87
 
89
88
  def test_gem_not_adding_bin
90
89
  assert gem('a', '= 1'), "Should load"
91
- refute $:.any? { |p| %r{a-1/bin} =~ p }
90
+ refute $:.any? {|p| %r{a-1/bin} =~ p }
91
+ end
92
+
93
+ def test_gem_failing_inside_require_doesnt_cause_double_exceptions
94
+ File.write("activate.rb", "gem('a', '= 999')\n")
95
+
96
+ require "open3"
97
+
98
+ output, _ = Open3.capture2e(
99
+ { "GEM_HOME" => Gem.paths.home },
100
+ *ruby_with_rubygems_in_load_path,
101
+ "-r",
102
+ "./activate.rb"
103
+ )
104
+
105
+ load_errors = output.split("\n").select {|line| line.include?("Could not find") }
106
+
107
+ assert_equal 1, load_errors.size
92
108
  end
93
109
 
94
110
  def test_gem_bundler
@@ -96,7 +112,7 @@ class TestKernel < Gem::TestCase
96
112
  quick_gem 'bundler', '2.a'
97
113
 
98
114
  assert gem('bundler')
99
- assert $:.any? { |p| %r{bundler-1/lib} =~ p }
115
+ assert $:.any? {|p| %r{bundler-1/lib} =~ p }
100
116
  end
101
117
 
102
118
  def test_gem_bundler_missing_bundler_version
@@ -117,8 +133,7 @@ class TestKernel < Gem::TestCase
117
133
  quick_gem 'bundler', '2.a'
118
134
 
119
135
  assert gem('bundler', '>= 0.a')
120
- assert $:.any? { |p| %r{bundler-1/lib} =~ p }
136
+ assert $:.any? {|p| %r{bundler-1/lib} =~ p }
121
137
  end
122
138
  end
123
-
124
139
  end