rubygems-update 3.0.3 → 3.4.7

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 (795) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5556 -0
  3. data/CODE_OF_CONDUCT.md +62 -24
  4. data/CONTRIBUTING.md +111 -21
  5. data/MAINTAINERS.txt +1 -6
  6. data/Manifest.txt +209 -101
  7. data/POLICIES.md +65 -22
  8. data/README.md +23 -15
  9. data/UPGRADING.md +5 -81
  10. data/bin/gem +2 -16
  11. data/bin/update_rubygems +5 -5
  12. data/bundler/CHANGELOG.md +2619 -1256
  13. data/bundler/LICENSE.md +18 -19
  14. data/bundler/README.md +11 -12
  15. data/bundler/UPGRADING.md +222 -0
  16. data/bundler/bundler.gemspec +13 -33
  17. data/bundler/exe/bundle +26 -11
  18. data/bundler/exe/bundler +1 -1
  19. data/bundler/lib/bundler/.document +1 -0
  20. data/bundler/lib/bundler/build_metadata.rb +5 -13
  21. data/bundler/lib/bundler/capistrano.rb +4 -4
  22. data/bundler/lib/bundler/cli/add.rb +28 -16
  23. data/bundler/lib/bundler/cli/binstubs.rb +11 -3
  24. data/bundler/lib/bundler/cli/cache.rb +24 -17
  25. data/bundler/lib/bundler/cli/check.rb +5 -3
  26. data/bundler/lib/bundler/cli/clean.rb +1 -1
  27. data/bundler/lib/bundler/cli/common.rb +41 -13
  28. data/bundler/lib/bundler/cli/config.rb +170 -86
  29. data/bundler/lib/bundler/cli/console.rb +3 -3
  30. data/bundler/lib/bundler/cli/doctor.rb +27 -10
  31. data/bundler/lib/bundler/cli/exec.rb +8 -25
  32. data/bundler/lib/bundler/cli/fund.rb +36 -0
  33. data/bundler/lib/bundler/cli/gem.rb +261 -48
  34. data/bundler/lib/bundler/cli/info.rb +52 -8
  35. data/bundler/lib/bundler/cli/init.rb +7 -3
  36. data/bundler/lib/bundler/cli/inject.rb +1 -1
  37. data/bundler/lib/bundler/cli/install.rb +38 -66
  38. data/bundler/lib/bundler/cli/issue.rb +8 -7
  39. data/bundler/lib/bundler/cli/list.rb +19 -11
  40. data/bundler/lib/bundler/cli/lock.rb +11 -4
  41. data/bundler/lib/bundler/cli/open.rb +14 -9
  42. data/bundler/lib/bundler/cli/outdated.rb +152 -121
  43. data/bundler/lib/bundler/cli/platform.rb +2 -2
  44. data/bundler/lib/bundler/cli/plugin.rb +19 -2
  45. data/bundler/lib/bundler/cli/pristine.rb +6 -1
  46. data/bundler/lib/bundler/cli/remove.rb +1 -2
  47. data/bundler/lib/bundler/cli/show.rb +3 -3
  48. data/bundler/lib/bundler/cli/update.rb +49 -18
  49. data/bundler/lib/bundler/cli/viz.rb +1 -1
  50. data/bundler/lib/bundler/cli.rb +269 -165
  51. data/bundler/lib/bundler/compact_index_client/cache.rb +7 -24
  52. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
  53. data/bundler/lib/bundler/compact_index_client/updater.rb +58 -57
  54. data/bundler/lib/bundler/compact_index_client.rb +28 -18
  55. data/bundler/lib/bundler/constants.rb +1 -1
  56. data/bundler/lib/bundler/current_ruby.rb +26 -11
  57. data/bundler/lib/bundler/definition.rb +359 -441
  58. data/bundler/lib/bundler/dependency.rb +29 -71
  59. data/bundler/lib/bundler/deployment.rb +1 -1
  60. data/bundler/lib/bundler/digest.rb +71 -0
  61. data/bundler/lib/bundler/dsl.rb +84 -116
  62. data/bundler/lib/bundler/endpoint_specification.rb +20 -14
  63. data/bundler/lib/bundler/env.rb +10 -15
  64. data/bundler/lib/bundler/environment_preserver.rb +30 -3
  65. data/bundler/lib/bundler/errors.rb +31 -14
  66. data/bundler/lib/bundler/feature_flag.rb +13 -33
  67. data/bundler/lib/bundler/fetcher/base.rb +7 -9
  68. data/bundler/lib/bundler/fetcher/compact_index.rb +46 -39
  69. data/bundler/lib/bundler/fetcher/dependency.rb +2 -2
  70. data/bundler/lib/bundler/fetcher/downloader.rb +15 -12
  71. data/bundler/lib/bundler/fetcher/index.rb +4 -30
  72. data/bundler/lib/bundler/fetcher.rb +39 -41
  73. data/bundler/lib/bundler/force_platform.rb +18 -0
  74. data/bundler/lib/bundler/friendly_errors.rb +49 -54
  75. data/bundler/lib/bundler/gem_helper.rb +79 -43
  76. data/bundler/lib/bundler/gem_helpers.rb +44 -28
  77. data/bundler/lib/bundler/gem_tasks.rb +1 -1
  78. data/bundler/lib/bundler/gem_version_promoter.rb +54 -99
  79. data/bundler/lib/bundler/graph.rb +5 -5
  80. data/bundler/lib/bundler/index.rb +14 -52
  81. data/bundler/lib/bundler/injector.rb +50 -16
  82. data/bundler/lib/bundler/inline.rb +28 -29
  83. data/bundler/lib/bundler/installer/gem_installer.rb +22 -23
  84. data/bundler/lib/bundler/installer/parallel_installer.rb +51 -51
  85. data/bundler/lib/bundler/installer/standalone.rb +62 -12
  86. data/bundler/lib/bundler/installer.rb +46 -97
  87. data/bundler/lib/bundler/lazy_specification.rb +88 -48
  88. data/bundler/lib/bundler/lockfile_generator.rb +3 -3
  89. data/bundler/lib/bundler/lockfile_parser.rb +30 -62
  90. data/bundler/{man → lib/bundler/man}/bundle-add.1 +29 -5
  91. data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +22 -4
  92. data/bundler/{man → lib/bundler/man}/bundle-binstubs.1 +6 -4
  93. data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +3 -5
  94. data/bundler/lib/bundler/man/bundle-cache.1 +61 -0
  95. data/bundler/{man/bundle-package.ronn → lib/bundler/man/bundle-cache.1.ronn} +22 -15
  96. data/bundler/{man → lib/bundler/man}/bundle-check.1 +1 -1
  97. data/bundler/{man → lib/bundler/man}/bundle-clean.1 +2 -2
  98. data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +1 -1
  99. data/bundler/{man → lib/bundler/man}/bundle-config.1 +78 -60
  100. data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +96 -85
  101. data/bundler/lib/bundler/man/bundle-console.1 +53 -0
  102. data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
  103. data/bundler/{man → lib/bundler/man}/bundle-doctor.1 +1 -1
  104. data/bundler/{man → lib/bundler/man}/bundle-exec.1 +6 -6
  105. data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +6 -6
  106. data/bundler/lib/bundler/man/bundle-gem.1 +105 -0
  107. data/bundler/lib/bundler/man/bundle-gem.1.ronn +117 -0
  108. data/bundler/lib/bundler/man/bundle-help.1 +13 -0
  109. data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
  110. data/bundler/{man → lib/bundler/man}/bundle-info.1 +1 -1
  111. data/bundler/{man → lib/bundler/man}/bundle-init.1 +6 -2
  112. data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +3 -1
  113. data/bundler/{man → lib/bundler/man}/bundle-inject.1 +5 -2
  114. data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +3 -1
  115. data/bundler/{man → lib/bundler/man}/bundle-install.1 +42 -37
  116. data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +42 -38
  117. data/bundler/{man → lib/bundler/man}/bundle-list.1 +7 -7
  118. data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
  119. data/bundler/{man → lib/bundler/man}/bundle-lock.1 +1 -1
  120. data/bundler/{man → lib/bundler/man}/bundle-open.1 +22 -2
  121. data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +9 -1
  122. data/bundler/{man → lib/bundler/man}/bundle-outdated.1 +3 -10
  123. data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +1 -10
  124. data/bundler/{man → lib/bundler/man}/bundle-platform.1 +16 -6
  125. data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +14 -7
  126. data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
  127. data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
  128. data/bundler/{man → lib/bundler/man}/bundle-pristine.1 +1 -1
  129. data/bundler/{man → lib/bundler/man}/bundle-remove.1 +1 -1
  130. data/bundler/{man → lib/bundler/man}/bundle-show.1 +1 -1
  131. data/bundler/{man → lib/bundler/man}/bundle-update.1 +8 -8
  132. data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +8 -7
  133. data/bundler/lib/bundler/man/bundle-version.1 +35 -0
  134. data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
  135. data/bundler/{man → lib/bundler/man}/bundle-viz.1 +4 -1
  136. data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +2 -0
  137. data/bundler/{man → lib/bundler/man}/bundle.1 +17 -12
  138. data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +14 -9
  139. data/bundler/lib/bundler/man/gemfile.5 +723 -0
  140. data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +112 -95
  141. data/bundler/lib/bundler/man/index.txt +29 -0
  142. data/bundler/lib/bundler/match_metadata.rb +13 -0
  143. data/bundler/lib/bundler/match_platform.rb +1 -2
  144. data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
  145. data/bundler/lib/bundler/mirror.rb +10 -12
  146. data/bundler/lib/bundler/plugin/api/source.rb +29 -15
  147. data/bundler/lib/bundler/plugin/api.rb +1 -1
  148. data/bundler/lib/bundler/plugin/dsl.rb +1 -1
  149. data/bundler/lib/bundler/plugin/index.rb +31 -8
  150. data/bundler/lib/bundler/plugin/installer/git.rb +0 -4
  151. data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -9
  152. data/bundler/lib/bundler/plugin/installer.rb +35 -22
  153. data/bundler/lib/bundler/plugin/source_list.rb +5 -1
  154. data/bundler/lib/bundler/plugin.rb +102 -42
  155. data/bundler/lib/bundler/process_lock.rb +1 -1
  156. data/bundler/lib/bundler/remote_specification.rb +15 -8
  157. data/bundler/lib/bundler/resolver/base.rb +77 -0
  158. data/bundler/lib/bundler/resolver/candidate.rb +94 -0
  159. data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
  160. data/bundler/lib/bundler/resolver/package.rb +72 -0
  161. data/bundler/lib/bundler/resolver/root.rb +25 -0
  162. data/bundler/lib/bundler/resolver/spec_group.rb +49 -73
  163. data/bundler/lib/bundler/resolver.rb +343 -300
  164. data/bundler/lib/bundler/retry.rb +4 -4
  165. data/bundler/lib/bundler/ruby_dsl.rb +1 -1
  166. data/bundler/lib/bundler/ruby_version.rb +9 -37
  167. data/bundler/lib/bundler/rubygems_ext.rb +235 -92
  168. data/bundler/lib/bundler/rubygems_gem_installer.rb +87 -21
  169. data/bundler/lib/bundler/rubygems_integration.rb +179 -515
  170. data/bundler/lib/bundler/runtime.rb +25 -40
  171. data/bundler/lib/bundler/self_manager.rb +168 -0
  172. data/bundler/lib/bundler/settings.rb +162 -118
  173. data/bundler/lib/bundler/setup.rb +11 -12
  174. data/bundler/lib/bundler/shared_helpers.rb +61 -102
  175. data/bundler/lib/bundler/similarity_detector.rb +3 -3
  176. data/bundler/lib/bundler/source/git/git_proxy.rb +257 -128
  177. data/bundler/lib/bundler/source/git.rb +84 -61
  178. data/bundler/lib/bundler/source/metadata.rb +9 -9
  179. data/bundler/lib/bundler/source/path/installer.rb +11 -32
  180. data/bundler/lib/bundler/source/path.rb +28 -17
  181. data/bundler/lib/bundler/source/rubygems/remote.rb +3 -4
  182. data/bundler/lib/bundler/source/rubygems.rb +171 -197
  183. data/bundler/lib/bundler/source/rubygems_aggregate.rb +68 -0
  184. data/bundler/lib/bundler/source.rb +30 -10
  185. data/bundler/lib/bundler/source_list.rb +112 -67
  186. data/bundler/lib/bundler/source_map.rb +71 -0
  187. data/bundler/lib/bundler/spec_set.rb +86 -72
  188. data/bundler/lib/bundler/stub_specification.rb +45 -37
  189. data/bundler/lib/bundler/templates/Executable +3 -5
  190. data/bundler/lib/bundler/templates/Executable.bundler +21 -17
  191. data/bundler/lib/bundler/templates/Executable.standalone +4 -4
  192. data/bundler/lib/bundler/templates/Gemfile +0 -2
  193. data/bundler/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
  194. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  195. data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
  196. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +22 -2
  197. data/bundler/lib/bundler/templates/newgem/README.md.tt +13 -15
  198. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +33 -5
  199. data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
  200. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +25 -0
  201. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
  202. data/bundler/lib/bundler/templates/newgem/ext/newgem/{extconf.rb.tt → extconf-c.rb.tt} +2 -0
  203. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
  204. data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
  205. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +37 -0
  206. data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
  207. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +18 -0
  208. data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  209. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
  210. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +36 -41
  211. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
  212. data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
  213. data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
  214. data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
  215. data/bundler/lib/bundler/templates/newgem/standard.yml.tt +3 -0
  216. data/bundler/lib/bundler/templates/newgem/test/minitest/test_helper.rb.tt +6 -0
  217. data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/test_newgem.rb.tt} +3 -1
  218. data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  219. data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  220. data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
  221. data/bundler/lib/bundler/ui/shell.rb +39 -20
  222. data/bundler/lib/bundler/ui/silent.rb +21 -5
  223. data/bundler/lib/bundler/ui.rb +3 -3
  224. data/bundler/lib/bundler/uri_credentials_filter.rb +10 -4
  225. data/bundler/lib/bundler/vendor/.document +1 -0
  226. data/bundler/lib/bundler/vendor/connection_pool/LICENSE +20 -0
  227. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +174 -0
  228. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
  229. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +56 -0
  230. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +128 -0
  231. data/bundler/lib/bundler/vendor/fileutils/LICENSE.txt +22 -0
  232. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1493 -425
  233. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
  234. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +40 -0
  235. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +53 -0
  236. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
  237. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +302 -462
  238. data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
  239. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
  240. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
  241. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
  242. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +155 -0
  243. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
  244. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
  245. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
  246. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
  247. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
  248. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
  249. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
  250. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
  251. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
  252. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +243 -0
  253. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
  254. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
  255. data/bundler/lib/bundler/vendor/thor/LICENSE.md +20 -0
  256. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +1 -1
  257. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +3 -2
  258. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +7 -17
  259. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +25 -14
  260. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +20 -10
  261. data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +34 -15
  262. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +63 -43
  263. data/bundler/lib/bundler/vendor/thor/lib/thor/command.rb +21 -14
  264. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +6 -0
  265. data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +83 -0
  266. data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +3 -3
  267. data/bundler/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -0
  268. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +1 -1
  269. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +6 -6
  270. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor.rb +2 -2
  271. data/bundler/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
  272. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +7 -3
  273. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +20 -7
  274. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +40 -6
  275. data/bundler/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
  276. data/bundler/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +1 -0
  277. data/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +15 -14
  278. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +88 -13
  279. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +10 -2
  280. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +3 -3
  281. data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +5 -5
  282. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +18 -2
  283. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  284. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +16 -9
  285. data/bundler/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
  286. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +452 -0
  287. data/bundler/lib/bundler/vendor/uri/LICENSE.txt +22 -0
  288. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +729 -0
  289. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +100 -0
  290. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
  291. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1587 -0
  292. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +125 -0
  293. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +23 -0
  294. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +261 -0
  295. data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +22 -0
  296. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +293 -0
  297. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +539 -0
  298. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +119 -0
  299. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
  300. data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +83 -0
  301. data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +23 -0
  302. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +104 -0
  303. data/bundler/lib/bundler/vendored_fileutils.rb +1 -6
  304. data/bundler/lib/bundler/vendored_persistent.rb +2 -39
  305. data/bundler/lib/bundler/{vendored_molinillo.rb → vendored_pub_grub.rb} +1 -1
  306. data/bundler/lib/bundler/vendored_thor.rb +2 -2
  307. data/bundler/lib/bundler/vendored_tsort.rb +4 -0
  308. data/bundler/lib/bundler/vendored_uri.rb +4 -0
  309. data/bundler/lib/bundler/version.rb +5 -20
  310. data/bundler/lib/bundler/vlad.rb +2 -2
  311. data/bundler/lib/bundler/worker.rb +26 -15
  312. data/bundler/lib/bundler/yaml_serializer.rb +3 -4
  313. data/bundler/lib/bundler.rb +285 -183
  314. data/hide_lib_for_update/note.txt +0 -4
  315. data/lib/rubygems/available_set.rb +7 -8
  316. data/lib/rubygems/basic_specification.rb +44 -31
  317. data/lib/rubygems/bundler_version_finder.rb +28 -50
  318. data/lib/rubygems/command.rb +104 -46
  319. data/lib/rubygems/command_manager.rb +35 -16
  320. data/lib/rubygems/commands/build_command.rb +77 -26
  321. data/lib/rubygems/commands/cert_command.rb +78 -76
  322. data/lib/rubygems/commands/check_command.rb +20 -22
  323. data/lib/rubygems/commands/cleanup_command.rb +36 -32
  324. data/lib/rubygems/commands/contents_command.rb +16 -18
  325. data/lib/rubygems/commands/dependency_command.rb +39 -50
  326. data/lib/rubygems/commands/environment_command.rb +11 -13
  327. data/lib/rubygems/commands/fetch_command.rb +33 -16
  328. data/lib/rubygems/commands/generate_index_command.rb +18 -17
  329. data/lib/rubygems/commands/help_command.rb +7 -7
  330. data/lib/rubygems/commands/info_command.rb +11 -6
  331. data/lib/rubygems/commands/install_command.rb +45 -79
  332. data/lib/rubygems/commands/list_command.rb +9 -8
  333. data/lib/rubygems/commands/lock_command.rb +7 -9
  334. data/lib/rubygems/commands/mirror_command.rb +3 -4
  335. data/lib/rubygems/commands/open_command.rb +11 -14
  336. data/lib/rubygems/commands/outdated_command.rb +5 -6
  337. data/lib/rubygems/commands/owner_command.rb +29 -22
  338. data/lib/rubygems/commands/pristine_command.rb +61 -51
  339. data/lib/rubygems/commands/push_command.rb +26 -63
  340. data/lib/rubygems/commands/query_command.rb +21 -337
  341. data/lib/rubygems/commands/rdoc_command.rb +26 -26
  342. data/lib/rubygems/commands/search_command.rb +8 -8
  343. data/lib/rubygems/commands/server_command.rb +16 -77
  344. data/lib/rubygems/commands/setup_command.rb +282 -241
  345. data/lib/rubygems/commands/signin_command.rb +9 -10
  346. data/lib/rubygems/commands/signout_command.rb +7 -9
  347. data/lib/rubygems/commands/sources_command.rb +42 -26
  348. data/lib/rubygems/commands/specification_command.rb +25 -20
  349. data/lib/rubygems/commands/stale_command.rb +3 -3
  350. data/lib/rubygems/commands/uninstall_command.rb +58 -49
  351. data/lib/rubygems/commands/unpack_command.rb +15 -44
  352. data/lib/rubygems/commands/update_command.rb +133 -81
  353. data/lib/rubygems/commands/which_command.rb +8 -11
  354. data/lib/rubygems/commands/yank_command.rb +22 -19
  355. data/lib/rubygems/compatibility.rb +7 -5
  356. data/lib/rubygems/config_file.rb +101 -47
  357. data/lib/rubygems/core_ext/kernel_gem.rb +8 -12
  358. data/lib/rubygems/core_ext/kernel_require.rb +124 -83
  359. data/lib/rubygems/core_ext/kernel_warn.rb +35 -30
  360. data/lib/rubygems/core_ext/tcpsocket_init.rb +52 -0
  361. data/lib/rubygems/defaults.rb +131 -55
  362. data/lib/rubygems/dependency.rb +44 -27
  363. data/lib/rubygems/dependency_installer.rb +49 -205
  364. data/lib/rubygems/dependency_list.rb +24 -25
  365. data/lib/rubygems/deprecate.rb +106 -12
  366. data/lib/rubygems/doctor.rb +22 -22
  367. data/lib/rubygems/errors.rb +8 -14
  368. data/lib/rubygems/exceptions.rb +35 -33
  369. data/lib/rubygems/ext/build_error.rb +2 -0
  370. data/lib/rubygems/ext/builder.rb +71 -95
  371. data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +27 -0
  372. data/lib/rubygems/ext/cargo_builder.rb +360 -0
  373. data/lib/rubygems/ext/cmake_builder.rb +6 -7
  374. data/lib/rubygems/ext/configure_builder.rb +5 -8
  375. data/lib/rubygems/ext/ext_conf_builder.rb +45 -65
  376. data/lib/rubygems/ext/rake_builder.rb +7 -10
  377. data/lib/rubygems/ext.rb +7 -6
  378. data/lib/rubygems/gem_runner.rb +15 -26
  379. data/lib/rubygems/gemcutter_utilities.rb +179 -54
  380. data/lib/rubygems/indexer.rb +38 -53
  381. data/lib/rubygems/install_default_message.rb +2 -2
  382. data/lib/rubygems/install_message.rb +2 -2
  383. data/lib/rubygems/install_update_options.rb +73 -64
  384. data/lib/rubygems/installer.rb +230 -173
  385. data/lib/rubygems/installer_uninstaller_utils.rb +29 -0
  386. data/lib/rubygems/local_remote_options.rb +22 -24
  387. data/lib/rubygems/mock_gem_ui.rb +2 -5
  388. data/lib/rubygems/name_tuple.rb +10 -14
  389. data/lib/rubygems/openssl.rb +7 -0
  390. data/lib/rubygems/optparse/.document +1 -0
  391. data/lib/rubygems/optparse/COPYING +56 -0
  392. data/lib/rubygems/optparse/lib/optionparser.rb +2 -0
  393. data/lib/rubygems/optparse/lib/optparse/ac.rb +54 -0
  394. data/lib/rubygems/optparse/lib/optparse/date.rb +18 -0
  395. data/lib/rubygems/optparse/lib/optparse/kwargs.rb +22 -0
  396. data/lib/rubygems/optparse/lib/optparse/shellwords.rb +7 -0
  397. data/lib/rubygems/optparse/lib/optparse/time.rb +11 -0
  398. data/lib/rubygems/optparse/lib/optparse/uri.rb +7 -0
  399. data/lib/rubygems/optparse/lib/optparse/version.rb +71 -0
  400. data/lib/rubygems/optparse/lib/optparse.rb +2308 -0
  401. data/lib/rubygems/optparse.rb +3 -0
  402. data/lib/rubygems/package/digest_io.rb +0 -2
  403. data/lib/rubygems/package/file_source.rb +2 -4
  404. data/lib/rubygems/package/io_source.rb +4 -2
  405. data/lib/rubygems/package/old.rb +9 -11
  406. data/lib/rubygems/package/tar_header.rb +73 -66
  407. data/lib/rubygems/package/tar_reader/entry.rb +8 -9
  408. data/lib/rubygems/package/tar_reader.rb +16 -13
  409. data/lib/rubygems/package/tar_writer.rb +12 -22
  410. data/lib/rubygems/package.rb +142 -125
  411. data/lib/rubygems/package_task.rb +5 -11
  412. data/lib/rubygems/path_support.rb +3 -8
  413. data/lib/rubygems/platform.rb +113 -73
  414. data/lib/rubygems/psych_tree.rb +1 -1
  415. data/lib/rubygems/query_utils.rb +351 -0
  416. data/lib/rubygems/rdoc.rb +4 -16
  417. data/lib/rubygems/remote_fetcher.rb +64 -136
  418. data/lib/rubygems/request/connection_pools.rb +7 -11
  419. data/lib/rubygems/request/http_pool.rb +2 -3
  420. data/lib/rubygems/request.rb +31 -32
  421. data/lib/rubygems/request_set/gem_dependency_api.rb +135 -136
  422. data/lib/rubygems/request_set/lockfile/parser.rb +28 -28
  423. data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -5
  424. data/lib/rubygems/request_set/lockfile.rb +21 -20
  425. data/lib/rubygems/request_set.rb +30 -43
  426. data/lib/rubygems/requirement.rb +42 -64
  427. data/lib/rubygems/resolver/activation_request.rb +29 -53
  428. data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
  429. data/lib/rubygems/resolver/api_set.rb +33 -26
  430. data/lib/rubygems/resolver/api_specification.rb +30 -16
  431. data/lib/rubygems/resolver/best_set.rb +9 -11
  432. data/lib/rubygems/resolver/composed_set.rb +3 -5
  433. data/lib/rubygems/resolver/conflict.rb +12 -19
  434. data/lib/rubygems/resolver/current_set.rb +0 -2
  435. data/lib/rubygems/resolver/dependency_request.rb +3 -5
  436. data/lib/rubygems/resolver/git_set.rb +2 -4
  437. data/lib/rubygems/resolver/git_specification.rb +6 -8
  438. data/lib/rubygems/resolver/index_set.rb +4 -6
  439. data/lib/rubygems/resolver/index_specification.rb +38 -7
  440. data/lib/rubygems/resolver/installed_specification.rb +4 -6
  441. data/lib/rubygems/resolver/installer_set.rb +69 -27
  442. data/lib/rubygems/resolver/local_specification.rb +2 -4
  443. data/lib/rubygems/resolver/lock_set.rb +7 -9
  444. data/lib/rubygems/resolver/lock_specification.rb +6 -8
  445. data/lib/rubygems/resolver/molinillo/LICENSE +9 -0
  446. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
  447. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +8 -0
  448. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
  449. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
  450. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
  451. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
  452. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
  453. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
  454. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
  455. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
  456. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +51 -12
  457. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +42 -9
  458. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +82 -8
  459. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
  460. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +13 -1
  461. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
  462. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +510 -165
  463. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
  464. data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
  465. data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
  466. data/lib/rubygems/resolver/molinillo.rb +1 -1
  467. data/lib/rubygems/resolver/requirement_list.rb +0 -1
  468. data/lib/rubygems/resolver/set.rb +0 -3
  469. data/lib/rubygems/resolver/source_set.rb +0 -2
  470. data/lib/rubygems/resolver/spec_specification.rb +14 -2
  471. data/lib/rubygems/resolver/specification.rb +14 -3
  472. data/lib/rubygems/resolver/vendor_set.rb +1 -3
  473. data/lib/rubygems/resolver/vendor_specification.rb +3 -5
  474. data/lib/rubygems/resolver.rb +58 -54
  475. data/lib/rubygems/s3_uri_signer.rb +175 -0
  476. data/lib/rubygems/safe_yaml.rb +14 -16
  477. data/lib/rubygems/security/policies.rb +47 -47
  478. data/lib/rubygems/security/policy.rb +25 -29
  479. data/lib/rubygems/security/signer.rb +16 -18
  480. data/lib/rubygems/security/trust_dir.rb +5 -6
  481. data/lib/rubygems/security.rb +90 -69
  482. data/lib/rubygems/security_option.rb +7 -8
  483. data/lib/rubygems/source/git.rb +30 -30
  484. data/lib/rubygems/source/installed.rb +1 -3
  485. data/lib/rubygems/source/local.rb +4 -6
  486. data/lib/rubygems/source/lock.rb +0 -2
  487. data/lib/rubygems/source/specific_file.rb +1 -3
  488. data/lib/rubygems/source/vendor.rb +0 -2
  489. data/lib/rubygems/source.rb +50 -38
  490. data/lib/rubygems/source_list.rb +9 -13
  491. data/lib/rubygems/spec_fetcher.rb +52 -64
  492. data/lib/rubygems/specification.rb +432 -463
  493. data/lib/rubygems/specification_policy.rb +185 -87
  494. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
  495. data/lib/rubygems/stub_specification.rb +24 -29
  496. data/lib/rubygems/text.rb +21 -21
  497. data/lib/rubygems/tsort/.document +1 -0
  498. data/lib/rubygems/tsort/LICENSE.txt +22 -0
  499. data/lib/rubygems/tsort/lib/tsort.rb +452 -0
  500. data/lib/rubygems/tsort.rb +3 -0
  501. data/lib/rubygems/uninstaller.rb +110 -57
  502. data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
  503. data/lib/rubygems/update_suggestion.rb +69 -0
  504. data/lib/rubygems/uri.rb +126 -0
  505. data/lib/rubygems/uri_formatter.rb +2 -4
  506. data/lib/rubygems/user_interaction.rb +46 -49
  507. data/lib/rubygems/util/licenses.rb +511 -404
  508. data/lib/rubygems/util.rb +40 -56
  509. data/lib/rubygems/validator.rb +15 -37
  510. data/lib/rubygems/version.rb +48 -29
  511. data/lib/rubygems/version_option.rb +11 -5
  512. data/lib/rubygems.rb +305 -332
  513. data/rubygems-update.gemspec +6 -13
  514. data/setup.rb +11 -22
  515. data/test/rubygems/alternate_cert.pem +14 -14
  516. data/test/rubygems/alternate_cert_32.pem +15 -15
  517. data/test/rubygems/alternate_key.pem +25 -25
  518. data/test/rubygems/bundler_test_gem.rb +419 -0
  519. data/test/rubygems/ca_cert.pem +74 -65
  520. data/test/rubygems/child_cert.pem +15 -16
  521. data/test/rubygems/child_cert_32.pem +15 -16
  522. data/test/rubygems/child_key.pem +25 -25
  523. data/test/rubygems/client.pem +103 -45
  524. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  525. data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
  526. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  527. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  528. data/test/rubygems/encrypted_private_key.pem +26 -26
  529. data/test/rubygems/expired_cert.pem +15 -15
  530. data/test/rubygems/future_cert.pem +15 -15
  531. data/test/rubygems/future_cert_32.pem +15 -15
  532. data/test/rubygems/grandchild_cert.pem +15 -16
  533. data/test/rubygems/grandchild_cert_32.pem +15 -16
  534. data/test/rubygems/grandchild_key.pem +25 -25
  535. data/{lib/rubygems/test_case.rb → test/rubygems/helper.rb} +505 -507
  536. data/{lib → test}/rubygems/installer_test_case.rb +115 -53
  537. data/test/rubygems/invalid_issuer_cert.pem +16 -16
  538. data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
  539. data/test/rubygems/invalid_key.pem +25 -25
  540. data/test/rubygems/invalid_signer_cert.pem +15 -15
  541. data/test/rubygems/invalid_signer_cert_32.pem +15 -15
  542. data/test/rubygems/invalidchild_cert.pem +15 -16
  543. data/test/rubygems/invalidchild_cert_32.pem +15 -16
  544. data/test/rubygems/invalidchild_key.pem +25 -25
  545. data/{lib → test}/rubygems/package/tar_test_case.rb +4 -6
  546. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  547. data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
  548. data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
  549. data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
  550. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
  551. data/test/rubygems/private_ec_key.pem +9 -0
  552. data/test/rubygems/private_key.pem +25 -25
  553. data/test/rubygems/public_cert.pem +16 -16
  554. data/test/rubygems/public_cert_32.pem +15 -15
  555. data/test/rubygems/public_key.pem +7 -7
  556. data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
  557. data/test/rubygems/rubygems_plugin.rb +2 -4
  558. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
  559. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
  560. data/test/rubygems/ssl_cert.pem +78 -17
  561. data/test/rubygems/ssl_key.pem +25 -13
  562. data/test/rubygems/test_bundled_ca.rb +44 -47
  563. data/test/rubygems/test_config.rb +5 -7
  564. data/test/rubygems/test_deprecate.rb +90 -10
  565. data/test/rubygems/test_exit.rb +17 -0
  566. data/test/rubygems/test_gem.rb +679 -885
  567. data/test/rubygems/test_gem_available_set.rb +24 -25
  568. data/test/rubygems/test_gem_bundler_version_finder.rb +42 -42
  569. data/test/rubygems/test_gem_command.rb +186 -39
  570. data/test/rubygems/test_gem_command_manager.rb +166 -36
  571. data/test/rubygems/test_gem_commands_build_command.rb +436 -52
  572. data/test/rubygems/test_gem_commands_cert_command.rb +193 -124
  573. data/test/rubygems/test_gem_commands_check_command.rb +9 -11
  574. data/test/rubygems/test_gem_commands_cleanup_command.rb +87 -62
  575. data/test/rubygems/test_gem_commands_contents_command.rb +73 -42
  576. data/test/rubygems/test_gem_commands_dependency_command.rb +39 -41
  577. data/test/rubygems/test_gem_commands_environment_command.rb +60 -48
  578. data/test/rubygems/test_gem_commands_fetch_command.rb +163 -32
  579. data/test/rubygems/test_gem_commands_generate_index_command.rb +39 -9
  580. data/test/rubygems/test_gem_commands_help_command.rb +34 -19
  581. data/test/rubygems/test_gem_commands_info_command.rb +34 -9
  582. data/test/rubygems/test_gem_commands_install_command.rb +600 -173
  583. data/test/rubygems/test_gem_commands_list_command.rb +5 -7
  584. data/test/rubygems/test_gem_commands_lock_command.rb +11 -13
  585. data/test/rubygems/test_gem_commands_mirror.rb +3 -4
  586. data/test/rubygems/test_gem_commands_open_command.rb +16 -19
  587. data/test/rubygems/test_gem_commands_outdated_command.rb +24 -7
  588. data/test/rubygems/test_gem_commands_owner_command.rb +183 -49
  589. data/test/rubygems/test_gem_commands_pristine_command.rb +222 -89
  590. data/test/rubygems/test_gem_commands_push_command.rb +178 -69
  591. data/test/rubygems/test_gem_commands_query_command.rb +114 -89
  592. data/test/rubygems/test_gem_commands_search_command.rb +2 -4
  593. data/test/rubygems/test_gem_commands_server_command.rb +6 -46
  594. data/test/rubygems/test_gem_commands_setup_command.rb +334 -157
  595. data/test/rubygems/test_gem_commands_signin_command.rb +187 -27
  596. data/test/rubygems/test_gem_commands_signout_command.rb +3 -10
  597. data/test/rubygems/test_gem_commands_sources_command.rb +266 -33
  598. data/test/rubygems/test_gem_commands_specification_command.rb +81 -55
  599. data/test/rubygems/test_gem_commands_stale_command.rb +4 -6
  600. data/test/rubygems/test_gem_commands_uninstall_command.rb +230 -95
  601. data/test/rubygems/test_gem_commands_unpack_command.rb +32 -34
  602. data/test/rubygems/test_gem_commands_update_command.rb +412 -102
  603. data/test/rubygems/test_gem_commands_which_command.rb +12 -14
  604. data/test/rubygems/test_gem_commands_yank_command.rb +107 -26
  605. data/test/rubygems/test_gem_config_file.rb +120 -96
  606. data/test/rubygems/test_gem_dependency.rb +94 -86
  607. data/test/rubygems/test_gem_dependency_installer.rb +305 -388
  608. data/test/rubygems/test_gem_dependency_list.rb +66 -61
  609. data/test/rubygems/test_gem_dependency_resolution_error.rb +5 -7
  610. data/test/rubygems/test_gem_doctor.rb +73 -47
  611. data/test/rubygems/test_gem_ext_builder.rb +116 -106
  612. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +1 -0
  613. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +8 -0
  614. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +233 -0
  615. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +10 -0
  616. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +27 -0
  617. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +1 -0
  618. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +1 -0
  619. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +233 -0
  620. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +10 -0
  621. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +8 -0
  622. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +51 -0
  623. data/test/rubygems/test_gem_ext_cargo_builder.rb +166 -0
  624. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +33 -0
  625. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +60 -0
  626. data/test/rubygems/test_gem_ext_cmake_builder.rb +32 -37
  627. data/test/rubygems/test_gem_ext_configure_builder.rb +23 -31
  628. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +75 -79
  629. data/test/rubygems/test_gem_ext_rake_builder.rb +49 -30
  630. data/test/rubygems/test_gem_gem_runner.rb +52 -7
  631. data/test/rubygems/test_gem_gemcutter_utilities.rb +91 -76
  632. data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -6
  633. data/test/rubygems/test_gem_indexer.rb +120 -105
  634. data/test/rubygems/test_gem_install_update_options.rb +57 -33
  635. data/test/rubygems/test_gem_installer.rb +1230 -644
  636. data/test/rubygems/test_gem_local_remote_options.rb +11 -13
  637. data/test/rubygems/test_gem_name_tuple.rb +4 -6
  638. data/test/rubygems/test_gem_package.rb +396 -266
  639. data/test/rubygems/test_gem_package_old.rb +57 -56
  640. data/test/rubygems/test_gem_package_tar_header.rb +108 -50
  641. data/test/rubygems/test_gem_package_tar_reader.rb +8 -10
  642. data/test/rubygems/test_gem_package_tar_reader_entry.rb +77 -20
  643. data/test/rubygems/test_gem_package_tar_writer.rb +107 -101
  644. data/test/rubygems/test_gem_package_task.rb +58 -25
  645. data/test/rubygems/test_gem_path_support.rb +29 -29
  646. data/test/rubygems/test_gem_platform.rb +388 -199
  647. data/test/rubygems/test_gem_rdoc.rb +20 -155
  648. data/test/rubygems/test_gem_remote_fetcher.rb +474 -303
  649. data/test/rubygems/test_gem_request.rb +128 -85
  650. data/test/rubygems/test_gem_request_connection_pools.rb +32 -32
  651. data/test/rubygems/test_gem_request_set.rb +186 -110
  652. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +280 -261
  653. data/test/rubygems/test_gem_request_set_lockfile.rb +93 -94
  654. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +68 -69
  655. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +136 -136
  656. data/test/rubygems/test_gem_requirement.rb +140 -55
  657. data/test/rubygems/test_gem_resolver.rb +224 -115
  658. data/test/rubygems/test_gem_resolver_activation_request.rb +9 -40
  659. data/test/rubygems/test_gem_resolver_api_set.rb +79 -78
  660. data/test/rubygems/test_gem_resolver_api_specification.rb +47 -49
  661. data/test/rubygems/test_gem_resolver_best_set.rb +43 -22
  662. data/test/rubygems/test_gem_resolver_composed_set.rb +1 -3
  663. data/test/rubygems/test_gem_resolver_conflict.rb +12 -18
  664. data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -17
  665. data/test/rubygems/test_gem_resolver_git_set.rb +22 -24
  666. data/test/rubygems/test_gem_resolver_git_specification.rb +22 -22
  667. data/test/rubygems/test_gem_resolver_index_set.rb +14 -16
  668. data/test/rubygems/test_gem_resolver_index_specification.rb +21 -18
  669. data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -8
  670. data/test/rubygems/test_gem_resolver_installer_set.rb +106 -44
  671. data/test/rubygems/test_gem_resolver_local_specification.rb +7 -9
  672. data/test/rubygems/test_gem_resolver_lock_set.rb +15 -17
  673. data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -19
  674. data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -3
  675. data/test/rubygems/test_gem_resolver_specification.rb +8 -10
  676. data/test/rubygems/test_gem_resolver_vendor_set.rb +9 -11
  677. data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -12
  678. data/test/rubygems/test_gem_security.rb +109 -79
  679. data/test/rubygems/test_gem_security_policy.rb +102 -107
  680. data/test/rubygems/test_gem_security_signer.rb +51 -52
  681. data/test/rubygems/test_gem_security_trust_dir.rb +14 -16
  682. data/test/rubygems/test_gem_silent_ui.rb +47 -42
  683. data/test/rubygems/test_gem_source.rb +66 -51
  684. data/test/rubygems/test_gem_source_fetch_problem.rb +17 -8
  685. data/test/rubygems/test_gem_source_git.rb +74 -74
  686. data/test/rubygems/test_gem_source_installed.rb +16 -18
  687. data/test/rubygems/test_gem_source_list.rb +5 -5
  688. data/test/rubygems/test_gem_source_local.rb +15 -16
  689. data/test/rubygems/test_gem_source_lock.rb +31 -33
  690. data/test/rubygems/test_gem_source_specific_file.rb +18 -19
  691. data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
  692. data/test/rubygems/test_gem_source_vendor.rb +13 -15
  693. data/test/rubygems/test_gem_spec_fetcher.rb +74 -67
  694. data/test/rubygems/test_gem_specification.rb +1051 -1071
  695. data/test/rubygems/test_gem_stream_ui.rb +25 -23
  696. data/test/rubygems/test_gem_stub_specification.rb +39 -56
  697. data/test/rubygems/test_gem_text.rb +8 -3
  698. data/test/rubygems/test_gem_uninstaller.rb +269 -100
  699. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -5
  700. data/test/rubygems/test_gem_update_suggestion.rb +208 -0
  701. data/test/rubygems/test_gem_uri.rb +39 -0
  702. data/test/rubygems/test_gem_uri_formatter.rb +14 -16
  703. data/test/rubygems/test_gem_util.rb +46 -34
  704. data/test/rubygems/test_gem_validator.rb +12 -15
  705. data/test/rubygems/test_gem_version.rb +49 -34
  706. data/test/rubygems/test_gem_version_option.rb +16 -18
  707. data/test/rubygems/test_kernel.rb +61 -53
  708. data/test/rubygems/test_project_sanity.rb +20 -0
  709. data/test/rubygems/test_remote_fetch_error.rb +7 -8
  710. data/test/rubygems/test_require.rb +415 -121
  711. data/test/rubygems/test_rubygems.rb +74 -0
  712. data/{lib/rubygems/test_utilities.rb → test/rubygems/utilities.rb} +74 -50
  713. data/test/rubygems/wrong_key_cert.pem +15 -15
  714. data/test/rubygems/wrong_key_cert_32.pem +15 -15
  715. data/test/test_changelog_generator.rb +17 -0
  716. metadata +218 -244
  717. data/.rubocop.yml +0 -66
  718. data/.travis.yml +0 -38
  719. data/History.txt +0 -3965
  720. data/Rakefile +0 -372
  721. data/appveyor.yml +0 -43
  722. data/bundler/CODE_OF_CONDUCT.md +0 -42
  723. data/bundler/CONTRIBUTING.md +0 -17
  724. data/bundler/exe/bundle_ruby +0 -60
  725. data/bundler/lib/bundler/cli/package.rb +0 -49
  726. data/bundler/lib/bundler/compatibility_guard.rb +0 -14
  727. data/bundler/lib/bundler/dep_proxy.rb +0 -48
  728. data/bundler/lib/bundler/gem_remote_fetcher.rb +0 -43
  729. data/bundler/lib/bundler/gemdeps.rb +0 -29
  730. data/bundler/lib/bundler/psyched_yaml.rb +0 -37
  731. data/bundler/lib/bundler/ssl_certs/certificate_manager.rb +0 -66
  732. data/bundler/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  733. data/bundler/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
  734. data/bundler/lib/bundler/templates/gems.rb +0 -8
  735. data/bundler/lib/bundler/templates/newgem/test/test_helper.rb.tt +0 -4
  736. data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -7
  737. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
  738. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
  739. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -81
  740. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
  741. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
  742. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
  743. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
  744. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
  745. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
  746. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
  747. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
  748. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -136
  749. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -223
  750. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -143
  751. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
  752. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -101
  753. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
  754. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -837
  755. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
  756. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
  757. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -12
  758. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb +0 -27
  759. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb +0 -129
  760. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb +0 -12
  761. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb +0 -129
  762. data/bundler/lib/bundler/version_ranges.rb +0 -76
  763. data/bundler/man/bundle-gem.1 +0 -80
  764. data/bundler/man/bundle-gem.ronn +0 -78
  765. data/bundler/man/bundle-package.1 +0 -55
  766. data/lib/rubygems/psych_additions.rb +0 -10
  767. data/lib/rubygems/server.rb +0 -878
  768. data/lib/rubygems/source_local.rb +0 -7
  769. data/lib/rubygems/source_specific_file.rb +0 -6
  770. data/lib/rubygems/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +0 -21
  771. data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  772. data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
  773. data/lib/rubygems/syck_hack.rb +0 -77
  774. data/lib/ubygems.rb +0 -14
  775. data/test/rubygems/bogussources.rb +0 -9
  776. data/test/rubygems/data/null-type.gemspec.rz +0 -0
  777. data/test/rubygems/test_gem_server.rb +0 -607
  778. data/util/CL2notes +0 -55
  779. data/util/ci +0 -77
  780. data/util/create_certs.rb +0 -171
  781. data/util/create_encrypted_key.rb +0 -16
  782. data/util/generate_spdx_license_list.rb +0 -61
  783. data/util/patch_with_prs.rb +0 -77
  784. data/util/rubocop +0 -8
  785. data/util/update_bundled_ca_certificates.rb +0 -139
  786. data/util/update_changelog.rb +0 -67
  787. /data/bundler/lib/bundler/{ssl_certs → man}/.document +0 -0
  788. /data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
  789. /data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
  790. /data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
  791. /data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
  792. /data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
  793. /data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
  794. /data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
  795. /data/{bundler/lib/bundler/ssl_certs/index.rubygems.org → lib/rubygems/ssl_certs/rubygems.org}/GlobalSignRootCA.pem +0 -0
@@ -1,11 +1,12 @@
1
1
  # frozen_string_literal: true
2
- require 'rubygems/installer_test_case'
3
- require 'rubygems/uninstaller'
2
+ require_relative "installer_test_case"
3
+ require "rubygems/uninstaller"
4
4
 
5
5
  class TestGemUninstaller < Gem::InstallerTestCase
6
-
7
6
  def setup
8
7
  super
8
+ @installer = setup_base_installer
9
+ @user_installer = setup_base_user_installer
9
10
  common_installer_setup
10
11
 
11
12
  build_rake_in do
@@ -22,13 +23,14 @@ class TestGemUninstaller < Gem::InstallerTestCase
22
23
  end
23
24
 
24
25
  def test_initialize_expand_path
25
- uninstaller = Gem::Uninstaller.new nil, :install_dir => '/foo//bar'
26
+ FileUtils.mkdir_p "foo/bar"
27
+ uninstaller = Gem::Uninstaller.new nil, :install_dir => "foo//bar"
26
28
 
27
- assert_match %r|/foo/bar$|, uninstaller.instance_variable_get(:@gem_home)
29
+ assert_match %r{foo/bar$}, uninstaller.instance_variable_get(:@gem_home)
28
30
  end
29
31
 
30
32
  def test_ask_if_ok
31
- c = util_spec 'c'
33
+ c = util_spec "c"
32
34
 
33
35
  uninstaller = Gem::Uninstaller.new nil
34
36
 
@@ -52,14 +54,14 @@ class TestGemUninstaller < Gem::InstallerTestCase
52
54
  uninstaller.remove_all [@spec]
53
55
  end
54
56
 
55
- refute_path_exists @spec.gem_dir
57
+ assert_path_not_exist @spec.gem_dir
56
58
  end
57
59
 
58
60
  def test_remove_executables_force_keep
59
61
  uninstaller = Gem::Uninstaller.new nil, :executables => false
60
62
 
61
- executable = File.join Gem.bindir(@user_spec.base_dir), 'executable'
62
- assert File.exist?(executable), 'executable not written'
63
+ executable = File.join Gem.bindir(@user_spec.base_dir), "executable"
64
+ assert File.exist?(executable), "executable not written"
63
65
 
64
66
  use_ui @ui do
65
67
  uninstaller.remove_executables @user_spec
@@ -73,8 +75,8 @@ class TestGemUninstaller < Gem::InstallerTestCase
73
75
  def test_remove_executables_force_remove
74
76
  uninstaller = Gem::Uninstaller.new nil, :executables => true
75
77
 
76
- executable = File.join Gem.bindir(@user_spec.base_dir), 'executable'
77
- assert File.exist?(executable), 'executable not written'
78
+ executable = File.join Gem.bindir(@user_spec.base_dir), "executable"
79
+ assert File.exist?(executable), "executable not written"
78
80
 
79
81
  use_ui @ui do
80
82
  uninstaller.remove_executables @user_spec
@@ -92,14 +94,14 @@ class TestGemUninstaller < Gem::InstallerTestCase
92
94
  uninstaller.remove_executables @user_spec
93
95
  end
94
96
 
95
- exec_path = File.join Gem.user_dir, 'bin', 'executable'
96
- refute File.exist?(exec_path), 'exec still exists in user bin dir'
97
+ exec_path = File.join Gem.user_dir, "bin", "executable"
98
+ refute File.exist?(exec_path), "exec still exists in user bin dir"
97
99
 
98
100
  assert_equal "Removing executable\n", @ui.output
99
101
  end
100
102
 
101
103
  def test_remove_executables_user_format
102
- Gem::Installer.exec_format = 'foo-%s-bar'
104
+ Gem::Installer.exec_format = "foo-%s-bar"
103
105
 
104
106
  uninstaller = Gem::Uninstaller.new nil, :executables => true, :format_executable => true
105
107
 
@@ -107,8 +109,8 @@ class TestGemUninstaller < Gem::InstallerTestCase
107
109
  uninstaller.remove_executables @user_spec
108
110
  end
109
111
 
110
- exec_path = File.join Gem.user_dir, 'bin', 'foo-executable-bar'
111
- assert_equal false, File.exist?(exec_path), 'removed exec from bin dir'
112
+ exec_path = File.join Gem.user_dir, "bin", "foo-executable-bar"
113
+ assert_equal false, File.exist?(exec_path), "removed exec from bin dir"
112
114
 
113
115
  assert_equal "Removing foo-executable-bar\n", @ui.output
114
116
  ensure
@@ -116,7 +118,7 @@ class TestGemUninstaller < Gem::InstallerTestCase
116
118
  end
117
119
 
118
120
  def test_remove_executables_user_format_disabled
119
- Gem::Installer.exec_format = 'foo-%s-bar'
121
+ Gem::Installer.exec_format = "foo-%s-bar"
120
122
 
121
123
  uninstaller = Gem::Uninstaller.new nil, :executables => true
122
124
 
@@ -124,8 +126,8 @@ class TestGemUninstaller < Gem::InstallerTestCase
124
126
  uninstaller.remove_executables @user_spec
125
127
  end
126
128
 
127
- exec_path = File.join Gem.user_dir, 'bin', 'executable'
128
- refute File.exist?(exec_path), 'removed exec from bin dir'
129
+ exec_path = File.join Gem.user_dir, "bin", "executable"
130
+ refute File.exist?(exec_path), "removed exec from bin dir"
129
131
 
130
132
  assert_equal "Removing executable\n", @ui.output
131
133
  ensure
@@ -133,9 +135,10 @@ class TestGemUninstaller < Gem::InstallerTestCase
133
135
  end
134
136
 
135
137
  def test_remove_not_in_home
138
+ Dir.mkdir "#{@gemhome}2"
136
139
  uninstaller = Gem::Uninstaller.new nil, :install_dir => "#{@gemhome}2"
137
140
 
138
- e = assert_raises Gem::GemNotInHomeException do
141
+ e = assert_raise Gem::GemNotInHomeException do
139
142
  use_ui ui do
140
143
  uninstaller.remove @spec
141
144
  end
@@ -146,7 +149,78 @@ class TestGemUninstaller < Gem::InstallerTestCase
146
149
 
147
150
  assert_equal expected, e.message
148
151
 
149
- assert_path_exists @spec.gem_dir
152
+ assert_path_exist @spec.gem_dir
153
+ end
154
+
155
+ def test_remove_symlinked_gem_home
156
+ pend "Symlinks not supported or not enabled" unless symlink_supported?
157
+
158
+ Dir.mktmpdir("gem_home") do |dir|
159
+ symlinked_gem_home = "#{dir}/#{File.basename(@gemhome)}"
160
+
161
+ FileUtils.ln_s(@gemhome, dir)
162
+
163
+ uninstaller = Gem::Uninstaller.new nil, :install_dir => symlinked_gem_home
164
+
165
+ use_ui ui do
166
+ uninstaller.remove @spec
167
+ end
168
+
169
+ assert_path_not_exist @spec.gem_dir
170
+ end
171
+ end
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"
150
224
  end
151
225
 
152
226
  def test_path_ok_eh
@@ -160,7 +234,7 @@ class TestGemUninstaller < Gem::InstallerTestCase
160
234
 
161
235
  @spec.loaded_from = @spec.loaded_from.gsub @spec.full_name, '\&-legacy'
162
236
  @spec.internal_init # blow out cache. but why did ^^ depend on cache?
163
- @spec.platform = 'legacy'
237
+ @spec.platform = "legacy"
164
238
 
165
239
  assert_equal true, uninstaller.path_ok?(@gemhome, @spec)
166
240
  end
@@ -174,16 +248,16 @@ class TestGemUninstaller < Gem::InstallerTestCase
174
248
  def test_uninstall
175
249
  uninstaller = Gem::Uninstaller.new @spec.name, :executables => true
176
250
 
177
- gem_dir = File.join @gemhome, 'gems', @spec.full_name
251
+ gem_dir = File.join @gemhome, "gems", @spec.full_name
178
252
 
179
253
  Gem.pre_uninstall do
180
254
  sleep(0.1) if win_platform?
181
- assert File.exist?(gem_dir), 'gem_dir should exist'
255
+ assert File.exist?(gem_dir), "gem_dir should exist"
182
256
  end
183
257
 
184
258
  Gem.post_uninstall do
185
259
  sleep(0.1) if win_platform?
186
- refute File.exist?(gem_dir), 'gem_dir should not exist'
260
+ refute File.exist?(gem_dir), "gem_dir should not exist"
187
261
  end
188
262
 
189
263
  uninstaller.uninstall
@@ -195,40 +269,47 @@ class TestGemUninstaller < Gem::InstallerTestCase
195
269
  end
196
270
 
197
271
  def test_uninstall_default_gem
198
- spec = new_default_spec 'default', '2'
272
+ spec = new_default_spec "default", "2"
199
273
 
200
274
  install_default_gems spec
201
275
 
202
276
  uninstaller = Gem::Uninstaller.new spec.name, :executables => true
203
277
 
204
- e = assert_raises Gem::InstallError do
278
+ use_ui @ui do
205
279
  uninstaller.uninstall
206
280
  end
207
281
 
208
- assert_equal 'gem "default" cannot be uninstalled ' +
209
- 'because it is a default gem',
210
- e.message
282
+ lines = @ui.output.split("\n")
283
+
284
+ assert_equal "Gem default-2 cannot be uninstalled because it is a default gem", lines.shift
211
285
  end
212
286
 
213
287
  def test_uninstall_default_gem_with_same_version
214
- default_spec = new_default_spec 'default', '2'
288
+ default_spec = new_default_spec "default", "2"
215
289
  install_default_gems default_spec
216
290
 
217
- spec = util_spec 'default', '2'
291
+ spec = util_spec "default", "2"
218
292
  install_gem spec
219
293
 
220
294
  Gem::Specification.reset
221
295
 
222
296
  uninstaller = Gem::Uninstaller.new spec.name, :executables => true
223
297
 
224
- uninstaller.uninstall
225
-
226
- refute_path_exists spec.gem_dir
298
+ ui = Gem::MockGemUi.new "1\ny\n"
299
+ use_ui ui do
300
+ uninstaller.uninstall
301
+ end
302
+ expected = "Successfully uninstalled default-2\n" \
303
+ "There was both a regular copy and a default copy of default-2. The " \
304
+ "regular copy was successfully uninstalled, but the default copy " \
305
+ "was left around because default gems can't be removed.\n"
306
+ assert_equal expected, ui.output
307
+ assert_path_not_exist spec.gem_dir
227
308
  end
228
309
 
229
310
  def test_uninstall_extension
230
- @spec.extensions << 'extconf.rb'
231
- write_file File.join(@tempdir, 'extconf.rb') do |io|
311
+ @spec.extensions << "extconf.rb"
312
+ write_file File.join(@tempdir, "extconf.rb") do |io|
232
313
  io.write <<-RUBY
233
314
  require 'mkmf'
234
315
  create_makefile '#{@spec.name}'
@@ -240,22 +321,22 @@ create_makefile '#{@spec.name}'
240
321
  use_ui @ui do
241
322
  path = Gem::Package.build @spec
242
323
 
243
- installer = Gem::Installer.at path
324
+ installer = Gem::Installer.at path, :force => true
244
325
  installer.install
245
326
  end
246
327
 
247
- assert_path_exists @spec.extension_dir, 'sanity check'
328
+ assert_path_exist @spec.extension_dir, "sanity check"
248
329
 
249
330
  uninstaller = Gem::Uninstaller.new @spec.name, :executables => true
250
331
  uninstaller.uninstall
251
332
 
252
- refute_path_exists @spec.extension_dir
333
+ assert_path_not_exist @spec.extension_dir
253
334
  end
254
335
 
255
336
  def test_uninstall_nonexistent
256
- uninstaller = Gem::Uninstaller.new 'bogus', :executables => true
337
+ uninstaller = Gem::Uninstaller.new "bogus", :executables => true
257
338
 
258
- e = assert_raises Gem::InstallError do
339
+ e = assert_raise Gem::InstallError do
259
340
  uninstaller.uninstall
260
341
  end
261
342
 
@@ -263,61 +344,62 @@ create_makefile '#{@spec.name}'
263
344
  end
264
345
 
265
346
  def test_uninstall_not_ok
266
- quick_gem 'z' do |s|
347
+ quick_gem "z" do |s|
267
348
  s.add_runtime_dependency @spec.name
268
349
  end
269
350
 
270
351
  uninstaller = Gem::Uninstaller.new @spec.name
271
352
 
272
- gem_dir = File.join @gemhome, 'gems', @spec.full_name
273
- executable = File.join @gemhome, 'bin', 'executable'
353
+ gem_dir = File.join @gemhome, "gems", @spec.full_name
354
+ executable = File.join @gemhome, "bin", "executable"
274
355
 
275
- assert File.exist?(gem_dir), 'gem_dir must exist'
276
- assert File.exist?(executable), 'executable must exist'
356
+ assert File.exist?(gem_dir), "gem_dir must exist"
357
+ assert File.exist?(executable), "executable must exist"
277
358
 
278
359
  ui = Gem::MockGemUi.new "n\n"
279
360
 
280
- assert_raises Gem::DependencyRemovalException do
361
+ assert_raise Gem::DependencyRemovalException do
281
362
  use_ui ui do
282
363
  uninstaller.uninstall
283
364
  end
284
365
  end
285
366
 
286
- assert File.exist?(gem_dir), 'gem_dir must still exist'
287
- assert File.exist?(executable), 'executable must still exist'
367
+ assert File.exist?(gem_dir), "gem_dir must still exist"
368
+ assert File.exist?(executable), "executable must still exist"
288
369
  end
289
370
 
290
371
  def test_uninstall_user_install
291
- @user_spec = Gem::Specification.find_by_name 'b'
372
+ @user_spec = Gem::Specification.find_by_name "b"
292
373
 
293
374
  uninstaller = Gem::Uninstaller.new(@user_spec.name,
294
- :executables => true,
375
+ :executables => true,
295
376
  :user_install => true)
296
377
 
297
378
  gem_dir = File.join @user_spec.gem_dir
298
379
 
299
380
  Gem.pre_uninstall do
300
- assert_path_exists gem_dir
381
+ assert_path_exist gem_dir
301
382
  end
302
383
 
303
384
  Gem.post_uninstall do
304
- refute_path_exists gem_dir
385
+ assert_path_not_exist gem_dir
305
386
  end
306
387
 
307
388
  uninstaller.uninstall
308
389
 
309
- refute_path_exists gem_dir
390
+ assert_path_not_exist gem_dir
310
391
 
311
392
  assert_same uninstaller, @pre_uninstall_hook_arg
312
393
  assert_same uninstaller, @post_uninstall_hook_arg
313
394
  end
314
395
 
315
396
  def test_uninstall_wrong_repo
397
+ Dir.mkdir "#{@gemhome}2"
316
398
  Gem.use_paths "#{@gemhome}2", [@gemhome]
317
399
 
318
400
  uninstaller = Gem::Uninstaller.new @spec.name, :executables => true
319
401
 
320
- e = assert_raises Gem::InstallError do
402
+ e = assert_raise Gem::InstallError do
321
403
  uninstaller.uninstall
322
404
  end
323
405
 
@@ -332,9 +414,9 @@ create_makefile '#{@spec.name}'
332
414
  def test_uninstall_selection
333
415
  util_make_gems
334
416
 
335
- list = Gem::Specification.find_all_by_name 'a'
417
+ list = Gem::Specification.find_all_by_name "a"
336
418
 
337
- uninstaller = Gem::Uninstaller.new 'a'
419
+ uninstaller = Gem::Uninstaller.new "a"
338
420
 
339
421
  ui = Gem::MockGemUi.new "1\ny\n"
340
422
 
@@ -342,36 +424,39 @@ create_makefile '#{@spec.name}'
342
424
  uninstaller.uninstall
343
425
  end
344
426
 
345
- updated_list = Gem::Specification.find_all_by_name('a')
427
+ updated_list = Gem::Specification.find_all_by_name("a")
346
428
  assert_equal list.length - 1, updated_list.length
347
429
 
348
- assert_match ' 1. a-1', ui.output
349
- assert_match ' 2. a-2', ui.output
350
- assert_match ' 3. a-3.a', ui.output
351
- assert_match ' 4. All versions', ui.output
352
- assert_match 'uninstalled a-1', ui.output
430
+ assert_match " 1. a-1", ui.output
431
+ assert_match " 2. a-2", ui.output
432
+ assert_match " 3. a-3.a", ui.output
433
+ assert_match " 4. All versions", ui.output
434
+ assert_match "uninstalled a-1", ui.output
353
435
  end
354
436
 
355
437
  def test_uninstall_selection_greater_than_one
356
438
  util_make_gems
357
439
 
358
- list = Gem::Specification.find_all_by_name('a')
440
+ list = Gem::Specification.find_all_by_name("a")
359
441
 
360
- uninstaller = Gem::Uninstaller.new('a')
442
+ uninstaller = Gem::Uninstaller.new("a")
361
443
 
362
444
  use_ui Gem::MockGemUi.new("2\ny\n") do
363
445
  uninstaller.uninstall
364
446
  end
365
447
 
366
- updated_list = Gem::Specification.find_all_by_name('a')
448
+ updated_list = Gem::Specification.find_all_by_name("a")
367
449
  assert_equal list.length - 1, updated_list.length
368
450
  end
369
451
 
370
452
  def test_uninstall_prompts_about_broken_deps
371
- quick_gem 'r', '1' do |s| s.add_dependency 'q', '= 1' end
372
- quick_gem 'q', '1'
453
+ quick_gem "r", "1" do |s|
454
+ s.add_dependency "q", "= 1"
455
+ end
456
+
457
+ quick_gem "q", "1"
373
458
 
374
- un = Gem::Uninstaller.new('q')
459
+ un = Gem::Uninstaller.new("q")
375
460
  ui = Gem::MockGemUi.new("y\n")
376
461
 
377
462
  use_ui ui do
@@ -381,21 +466,27 @@ create_makefile '#{@spec.name}'
381
466
  lines = ui.output.split("\n")
382
467
  lines.shift
383
468
 
384
- assert_match %r!You have requested to uninstall the gem:!, lines.shift
469
+ assert_match %r{You have requested to uninstall the gem:}, lines.shift
385
470
  lines.shift
386
471
  lines.shift
387
472
 
388
- assert_match %r!r-1 depends on q \(= 1\)!, lines.shift
389
- assert_match %r!Successfully uninstalled q-1!, lines.last
473
+ assert_match %r{r-1 depends on q \(= 1\)}, lines.shift
474
+ assert_match %r{Successfully uninstalled q-1}, lines.last
390
475
  end
391
476
 
392
477
  def test_uninstall_only_lists_unsatisfied_deps
393
- quick_gem 'r', '1' do |s| s.add_dependency 'q', '~> 1.0' end
394
- quick_gem 'x', '1' do |s| s.add_dependency 'q', '= 1.0' end
395
- quick_gem 'q', '1.0'
396
- quick_gem 'q', '1.1'
478
+ quick_gem "r", "1" do |s|
479
+ s.add_dependency "q", "~> 1.0"
480
+ end
481
+
482
+ quick_gem "x", "1" do |s|
483
+ s.add_dependency "q", "= 1.0"
484
+ end
397
485
 
398
- un = Gem::Uninstaller.new('q', :version => "1.0")
486
+ quick_gem "q", "1.0"
487
+ quick_gem "q", "1.1"
488
+
489
+ un = Gem::Uninstaller.new("q", :version => "1.0")
399
490
  ui = Gem::MockGemUi.new("y\n")
400
491
 
401
492
  use_ui ui do
@@ -405,20 +496,23 @@ create_makefile '#{@spec.name}'
405
496
  lines = ui.output.split("\n")
406
497
  lines.shift
407
498
 
408
- assert_match %r!You have requested to uninstall the gem:!, lines.shift
499
+ assert_match %r{You have requested to uninstall the gem:}, lines.shift
409
500
  lines.shift
410
501
  lines.shift
411
502
 
412
- assert_match %r!x-1 depends on q \(= 1.0\)!, lines.shift
413
- assert_match %r!Successfully uninstalled q-1.0!, lines.last
503
+ assert_match %r{x-1 depends on q \(= 1.0\)}, lines.shift
504
+ assert_match %r{Successfully uninstalled q-1.0}, lines.last
414
505
  end
415
506
 
416
507
  def test_uninstall_doesnt_prompt_when_other_gem_satisfies_requirement
417
- quick_gem 'r', '1' do |s| s.add_dependency 'q', '~> 1.0' end
418
- quick_gem 'q', '1.0'
419
- quick_gem 'q', '1.1'
508
+ quick_gem "r", "1" do |s|
509
+ s.add_dependency "q", "~> 1.0"
510
+ end
511
+
512
+ quick_gem "q", "1.0"
513
+ quick_gem "q", "1.1"
420
514
 
421
- un = Gem::Uninstaller.new('q', :version => "1.0")
515
+ un = Gem::Uninstaller.new("q", :version => "1.0")
422
516
  ui = Gem::MockGemUi.new("y\n")
423
517
 
424
518
  use_ui ui do
@@ -431,10 +525,13 @@ create_makefile '#{@spec.name}'
431
525
  end
432
526
 
433
527
  def test_uninstall_doesnt_prompt_when_removing_a_dev_dep
434
- quick_gem 'r', '1' do |s| s.add_development_dependency 'q', '= 1.0' end
435
- quick_gem 'q', '1.0'
528
+ quick_gem "r", "1" do |s|
529
+ s.add_development_dependency "q", "= 1.0"
530
+ end
531
+
532
+ quick_gem "q", "1.0"
436
533
 
437
- un = Gem::Uninstaller.new('q', :version => "1.0")
534
+ un = Gem::Uninstaller.new("q", :version => "1.0")
438
535
  ui = Gem::MockGemUi.new("y\n")
439
536
 
440
537
  use_ui ui do
@@ -447,13 +544,16 @@ create_makefile '#{@spec.name}'
447
544
  end
448
545
 
449
546
  def test_uninstall_doesnt_prompt_and_raises_when_abort_on_dependent_set
450
- quick_gem 'r', '1' do |s| s.add_dependency 'q', '= 1' end
451
- quick_gem 'q', '1'
547
+ quick_gem "r", "1" do |s|
548
+ s.add_dependency "q", "= 1"
549
+ end
452
550
 
453
- un = Gem::Uninstaller.new('q', :abort_on_dependent => true)
551
+ quick_gem "q", "1"
552
+
553
+ un = Gem::Uninstaller.new("q", :abort_on_dependent => true)
454
554
  ui = Gem::MockGemUi.new("y\n")
455
555
 
456
- assert_raises Gem::DependencyRemovalException do
556
+ assert_raise Gem::DependencyRemovalException do
457
557
  use_ui ui do
458
558
  un.uninstall
459
559
  end
@@ -461,13 +561,13 @@ create_makefile '#{@spec.name}'
461
561
  end
462
562
 
463
563
  def test_uninstall_prompt_includes_dep_type
464
- quick_gem 'r', '1' do |s|
465
- s.add_development_dependency 'q', '= 1'
564
+ quick_gem "r", "1" do |s|
565
+ s.add_development_dependency "q", "= 1"
466
566
  end
467
567
 
468
- quick_gem 'q', '1'
568
+ quick_gem "q", "1"
469
569
 
470
- un = Gem::Uninstaller.new('q', :check_dev => true)
570
+ un = Gem::Uninstaller.new("q", :check_dev => true)
471
571
  ui = Gem::MockGemUi.new("y\n")
472
572
 
473
573
  use_ui ui do
@@ -477,12 +577,41 @@ create_makefile '#{@spec.name}'
477
577
  lines = ui.output.split("\n")
478
578
  lines.shift
479
579
 
480
- assert_match %r!You have requested to uninstall the gem:!, lines.shift
580
+ assert_match %r{You have requested to uninstall the gem:}, lines.shift
481
581
  lines.shift
482
582
  lines.shift
483
583
 
484
- assert_match %r!r-1 depends on q \(= 1, development\)!, lines.shift
485
- assert_match %r!Successfully uninstalled q-1!, lines.last
584
+ assert_match %r{r-1 depends on q \(= 1, development\)}, lines.shift
585
+ assert_match %r{Successfully uninstalled q-1}, lines.last
586
+ end
587
+
588
+ def test_uninstall_prompt_only_lists_the_dependents_that_prevented_uninstallation
589
+ quick_gem "r", "1" do |s|
590
+ s.add_development_dependency "q", "= 1"
591
+ end
592
+
593
+ quick_gem "s", "1" do |s|
594
+ s.add_dependency "q", "= 1"
595
+ end
596
+
597
+ quick_gem "q", "1"
598
+
599
+ un = Gem::Uninstaller.new("q", :check_dev => false)
600
+ ui = Gem::MockGemUi.new("y\n")
601
+
602
+ use_ui ui do
603
+ un.uninstall
604
+ end
605
+
606
+ lines = ui.output.split("\n")
607
+ lines.shift
608
+
609
+ assert_match %r{You have requested to uninstall the gem:}, lines.shift
610
+ lines.shift
611
+ lines.shift
612
+
613
+ assert_match %r{s-1 depends on q \(= 1\)}, lines.shift
614
+ assert_match %r{Successfully uninstalled q-1}, lines.last
486
615
  end
487
616
 
488
617
  def test_uninstall_no_permission
@@ -497,9 +626,49 @@ create_makefile '#{@spec.name}'
497
626
  end
498
627
 
499
628
  FileUtils.stub :rm_r, stub_rm_r do
500
- assert_raises Gem::UninstallError do
629
+ assert_raise Gem::UninstallError do
501
630
  uninstaller.uninstall
502
631
  end
503
632
  end
504
633
  end
634
+
635
+ def test_uninstall_keeps_plugins_up_to_date
636
+ write_file File.join(@tempdir, "lib", "rubygems_plugin.rb") do |io|
637
+ io.write "puts __FILE__"
638
+ end
639
+
640
+ plugin_path = File.join Gem.plugindir, "a_plugin.rb"
641
+
642
+ @spec.version = "1"
643
+ Gem::Installer.at(Gem::Package.build(@spec), :force => true).install
644
+
645
+ refute File.exist?(plugin_path), "version without plugin installed, but plugin written"
646
+
647
+ @spec.files += %w[lib/rubygems_plugin.rb]
648
+ @spec.version = "2"
649
+ Gem::Installer.at(Gem::Package.build(@spec), :force => true).install
650
+
651
+ assert File.exist?(plugin_path), "version with plugin installed, but plugin not written"
652
+ assert_match %r{\Arequire.*a-2/lib/rubygems_plugin\.rb}, File.read(plugin_path), "written plugin has incorrect content"
653
+
654
+ @spec.version = "3"
655
+ Gem::Installer.at(Gem::Package.build(@spec), :force => true).install
656
+
657
+ assert File.exist?(plugin_path), "version with plugin installed, but plugin removed"
658
+ assert_match %r{\Arequire.*a-3/lib/rubygems_plugin\.rb}, File.read(plugin_path), "old version installed, but plugin updated"
659
+
660
+ Gem::Uninstaller.new("a", :version => "1", :executables => true).uninstall
661
+
662
+ assert File.exist?(plugin_path), "plugin removed when old version uninstalled"
663
+ assert_match %r{\Arequire.*a-3/lib/rubygems_plugin\.rb}, File.read(plugin_path), "old version uninstalled, but plugin updated"
664
+
665
+ Gem::Uninstaller.new("a", version: "3", :executables => true).uninstall
666
+
667
+ assert File.exist?(plugin_path), "plugin removed when old version uninstalled and another version with plugin still present"
668
+ assert_match %r{\Arequire.*a-2/lib/rubygems_plugin\.rb}, File.read(plugin_path), "latest version uninstalled, but plugin not updated to previous version"
669
+
670
+ Gem::Uninstaller.new("a", version: "2", :executables => true).uninstall
671
+
672
+ refute File.exist?(plugin_path), "last version uninstalled, but plugin still present"
673
+ end
505
674
  end