rubygems-update 3.4.22 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (528) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +99 -2
  3. data/Manifest.txt +34 -221
  4. data/README.md +1 -3
  5. data/bundler/CHANGELOG.md +53 -0
  6. data/bundler/bundler.gemspec +4 -2
  7. data/bundler/exe/bundle +1 -10
  8. data/bundler/lib/bundler/build_metadata.rb +3 -3
  9. data/bundler/lib/bundler/capistrano.rb +1 -1
  10. data/bundler/lib/bundler/checksum.rb +245 -0
  11. data/bundler/lib/bundler/ci_detector.rb +75 -0
  12. data/bundler/lib/bundler/cli/add.rb +3 -3
  13. data/bundler/lib/bundler/cli/binstubs.rb +4 -4
  14. data/bundler/lib/bundler/cli/cache.rb +1 -1
  15. data/bundler/lib/bundler/cli/check.rb +1 -1
  16. data/bundler/lib/bundler/cli/common.rb +9 -1
  17. data/bundler/lib/bundler/cli/config.rb +8 -7
  18. data/bundler/lib/bundler/cli/console.rb +3 -2
  19. data/bundler/lib/bundler/cli/doctor.rb +2 -2
  20. data/bundler/lib/bundler/cli/exec.rb +1 -1
  21. data/bundler/lib/bundler/cli/gem.rb +28 -23
  22. data/bundler/lib/bundler/cli/info.rb +2 -13
  23. data/bundler/lib/bundler/cli/install.rb +5 -4
  24. data/bundler/lib/bundler/cli/issue.rb +1 -1
  25. data/bundler/lib/bundler/cli/lock.rb +4 -4
  26. data/bundler/lib/bundler/cli/open.rb +1 -1
  27. data/bundler/lib/bundler/cli/outdated.rb +6 -6
  28. data/bundler/lib/bundler/cli/plugin.rb +7 -14
  29. data/bundler/lib/bundler/cli/pristine.rb +38 -30
  30. data/bundler/lib/bundler/cli/show.rb +2 -2
  31. data/bundler/lib/bundler/cli/update.rb +5 -5
  32. data/bundler/lib/bundler/cli.rb +215 -263
  33. data/bundler/lib/bundler/compact_index_client/cache.rb +29 -9
  34. data/bundler/lib/bundler/compact_index_client/cache_file.rb +153 -0
  35. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +7 -3
  36. data/bundler/lib/bundler/compact_index_client/updater.rb +79 -81
  37. data/bundler/lib/bundler/compact_index_client.rb +14 -7
  38. data/bundler/lib/bundler/constants.rb +1 -1
  39. data/bundler/lib/bundler/current_ruby.rb +5 -21
  40. data/bundler/lib/bundler/definition.rb +42 -15
  41. data/bundler/lib/bundler/dependency.rb +16 -12
  42. data/bundler/lib/bundler/digest.rb +2 -2
  43. data/bundler/lib/bundler/dsl.rb +43 -25
  44. data/bundler/lib/bundler/endpoint_specification.rb +5 -1
  45. data/bundler/lib/bundler/env.rb +1 -3
  46. data/bundler/lib/bundler/errors.rb +43 -0
  47. data/bundler/lib/bundler/fetcher/base.rb +3 -1
  48. data/bundler/lib/bundler/fetcher/compact_index.rb +4 -4
  49. data/bundler/lib/bundler/fetcher/downloader.rb +13 -11
  50. data/bundler/lib/bundler/fetcher/gem_remote_fetcher.rb +16 -0
  51. data/bundler/lib/bundler/fetcher/index.rb +1 -1
  52. data/bundler/lib/bundler/fetcher.rb +28 -25
  53. data/bundler/lib/bundler/friendly_errors.rb +5 -5
  54. data/bundler/lib/bundler/gem_helper.rb +1 -1
  55. data/bundler/lib/bundler/gem_helpers.rb +5 -2
  56. data/bundler/lib/bundler/graph.rb +9 -9
  57. data/bundler/lib/bundler/index.rb +1 -2
  58. data/bundler/lib/bundler/injector.rb +1 -1
  59. data/bundler/lib/bundler/inline.rb +3 -3
  60. data/bundler/lib/bundler/installer/gem_installer.rb +5 -5
  61. data/bundler/lib/bundler/installer/parallel_installer.rb +16 -8
  62. data/bundler/lib/bundler/installer/standalone.rb +2 -3
  63. data/bundler/lib/bundler/installer.rb +9 -9
  64. data/bundler/lib/bundler/lazy_specification.rb +24 -17
  65. data/bundler/lib/bundler/lockfile_generator.rb +9 -0
  66. data/bundler/lib/bundler/lockfile_parser.rb +81 -10
  67. data/bundler/lib/bundler/man/bundle-add.1 +3 -26
  68. data/bundler/lib/bundler/man/bundle-binstubs.1 +4 -16
  69. data/bundler/lib/bundler/man/bundle-cache.1 +3 -24
  70. data/bundler/lib/bundler/man/bundle-check.1 +3 -12
  71. data/bundler/lib/bundler/man/bundle-clean.1 +3 -10
  72. data/bundler/lib/bundler/man/bundle-config.1 +20 -211
  73. data/bundler/lib/bundler/man/bundle-config.1.ronn +6 -0
  74. data/bundler/lib/bundler/man/bundle-console.1 +4 -22
  75. data/bundler/lib/bundler/man/bundle-doctor.1 +4 -18
  76. data/bundler/lib/bundler/man/bundle-exec.1 +12 -73
  77. data/bundler/lib/bundler/man/bundle-gem.1 +13 -49
  78. data/bundler/lib/bundler/man/bundle-help.1 +3 -7
  79. data/bundler/lib/bundler/man/bundle-info.1 +3 -9
  80. data/bundler/lib/bundler/man/bundle-init.1 +3 -12
  81. data/bundler/lib/bundler/man/bundle-inject.1 +6 -19
  82. data/bundler/lib/bundler/man/bundle-install.1 +27 -125
  83. data/bundler/lib/bundler/man/bundle-install.1.ronn +1 -0
  84. data/bundler/lib/bundler/man/bundle-list.1 +4 -19
  85. data/bundler/lib/bundler/man/bundle-lock.1 +5 -29
  86. data/bundler/lib/bundler/man/bundle-open.1 +7 -27
  87. data/bundler/lib/bundler/man/bundle-outdated.1 +3 -55
  88. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +1 -0
  89. data/bundler/lib/bundler/man/bundle-platform.1 +5 -27
  90. data/bundler/lib/bundler/man/bundle-plugin.1 +3 -29
  91. data/bundler/lib/bundler/man/bundle-pristine.1 +5 -16
  92. data/bundler/lib/bundler/man/bundle-remove.1 +4 -14
  93. data/bundler/lib/bundler/man/bundle-show.1 +3 -10
  94. data/bundler/lib/bundler/man/bundle-update.1 +18 -137
  95. data/bundler/lib/bundler/man/bundle-version.1 +3 -16
  96. data/bundler/lib/bundler/man/bundle-viz.1 +4 -16
  97. data/bundler/lib/bundler/man/bundle.1 +5 -44
  98. data/bundler/lib/bundler/man/gemfile.5 +24 -301
  99. data/bundler/lib/bundler/man/gemfile.5.ronn +4 -0
  100. data/bundler/lib/bundler/match_metadata.rb +4 -0
  101. data/bundler/lib/bundler/match_platform.rb +1 -1
  102. data/bundler/lib/bundler/plugin/api/source.rb +3 -2
  103. data/bundler/lib/bundler/plugin/installer.rb +1 -1
  104. data/bundler/lib/bundler/plugin.rb +3 -3
  105. data/bundler/lib/bundler/resolver/base.rb +1 -1
  106. data/bundler/lib/bundler/resolver/incompatibility.rb +1 -1
  107. data/bundler/lib/bundler/resolver/spec_group.rb +1 -4
  108. data/bundler/lib/bundler/resolver.rb +16 -16
  109. data/bundler/lib/bundler/ruby_dsl.rb +20 -12
  110. data/bundler/lib/bundler/ruby_version.rb +1 -1
  111. data/bundler/lib/bundler/rubygems_ext.rb +24 -50
  112. data/bundler/lib/bundler/rubygems_gem_installer.rb +6 -56
  113. data/bundler/lib/bundler/rubygems_integration.rb +25 -94
  114. data/bundler/lib/bundler/runtime.rb +2 -2
  115. data/bundler/lib/bundler/self_manager.rb +23 -7
  116. data/bundler/lib/bundler/settings.rb +27 -7
  117. data/bundler/lib/bundler/setup.rb +4 -1
  118. data/bundler/lib/bundler/shared_helpers.rb +35 -13
  119. data/bundler/lib/bundler/source/git/git_proxy.rb +15 -15
  120. data/bundler/lib/bundler/source/git.rb +4 -3
  121. data/bundler/lib/bundler/source/metadata.rb +15 -15
  122. data/bundler/lib/bundler/source/path.rb +7 -6
  123. data/bundler/lib/bundler/source/rubygems.rb +21 -14
  124. data/bundler/lib/bundler/source.rb +2 -0
  125. data/bundler/lib/bundler/spec_set.rb +38 -10
  126. data/bundler/lib/bundler/stub_specification.rb +1 -0
  127. data/bundler/lib/bundler/templates/Executable.bundler +1 -1
  128. data/bundler/lib/bundler/templates/newgem/README.md.tt +3 -3
  129. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +2 -6
  130. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +1 -1
  131. data/bundler/lib/bundler/templates/newgem/standard.yml.tt +1 -1
  132. data/bundler/lib/bundler/ui/shell.rb +1 -1
  133. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  134. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +53 -6
  135. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +8 -20
  136. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +3 -3
  137. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +2 -2
  138. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +1 -1
  139. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +35 -35
  140. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +3 -0
  141. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +256 -132
  142. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1 -0
  143. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +95 -31
  144. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  145. data/bundler/lib/bundler/vendored_net_http.rb +8 -0
  146. data/bundler/lib/bundler/vendored_persistent.rb +0 -4
  147. data/bundler/lib/bundler/vendored_timeout.rb +8 -0
  148. data/bundler/lib/bundler/version.rb +1 -1
  149. data/bundler/lib/bundler/vlad.rb +1 -1
  150. data/bundler/lib/bundler/yaml_serializer.rb +3 -3
  151. data/bundler/lib/bundler.rb +38 -27
  152. data/lib/rubygems/available_set.rb +4 -4
  153. data/lib/rubygems/basic_specification.rb +35 -37
  154. data/lib/rubygems/bundler_version_finder.rb +4 -4
  155. data/lib/rubygems/ci_detector.rb +75 -0
  156. data/lib/rubygems/command.rb +13 -15
  157. data/lib/rubygems/command_manager.rb +5 -4
  158. data/lib/rubygems/commands/build_command.rb +2 -2
  159. data/lib/rubygems/commands/cert_command.rb +1 -2
  160. data/lib/rubygems/commands/check_command.rb +4 -4
  161. data/lib/rubygems/commands/cleanup_command.rb +12 -14
  162. data/lib/rubygems/commands/contents_command.rb +4 -4
  163. data/lib/rubygems/commands/dependency_command.rb +4 -5
  164. data/lib/rubygems/commands/environment_command.rb +1 -3
  165. data/lib/rubygems/commands/exec_command.rb +1 -1
  166. data/lib/rubygems/commands/fetch_command.rb +2 -2
  167. data/lib/rubygems/commands/generate_index_command.rb +39 -74
  168. data/lib/rubygems/commands/help_command.rb +3 -3
  169. data/lib/rubygems/commands/info_command.rb +2 -2
  170. data/lib/rubygems/commands/install_command.rb +8 -16
  171. data/lib/rubygems/commands/list_command.rb +2 -2
  172. data/lib/rubygems/commands/lock_command.rb +1 -1
  173. data/lib/rubygems/commands/open_command.rb +1 -1
  174. data/lib/rubygems/commands/owner_command.rb +1 -1
  175. data/lib/rubygems/commands/pristine_command.rb +13 -15
  176. data/lib/rubygems/commands/push_command.rb +2 -2
  177. data/lib/rubygems/commands/query_command.rb +4 -5
  178. data/lib/rubygems/commands/rdoc_command.rb +2 -2
  179. data/lib/rubygems/commands/search_command.rb +2 -2
  180. data/lib/rubygems/commands/setup_command.rb +31 -34
  181. data/lib/rubygems/commands/sources_command.rb +12 -12
  182. data/lib/rubygems/commands/specification_command.rb +10 -10
  183. data/lib/rubygems/commands/stale_command.rb +1 -1
  184. data/lib/rubygems/commands/uninstall_command.rb +9 -10
  185. data/lib/rubygems/commands/unpack_command.rb +4 -4
  186. data/lib/rubygems/commands/update_command.rb +10 -12
  187. data/lib/rubygems/commands/which_command.rb +1 -1
  188. data/lib/rubygems/commands/yank_command.rb +1 -1
  189. data/lib/rubygems/compatibility.rb +5 -6
  190. data/lib/rubygems/config_file.rb +4 -4
  191. data/lib/rubygems/core_ext/kernel_gem.rb +0 -2
  192. data/lib/rubygems/core_ext/kernel_require.rb +19 -48
  193. data/lib/rubygems/core_ext/kernel_warn.rb +1 -1
  194. data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
  195. data/lib/rubygems/defaults.rb +15 -3
  196. data/lib/rubygems/dependency.rb +12 -14
  197. data/lib/rubygems/dependency_installer.rb +29 -30
  198. data/lib/rubygems/dependency_list.rb +1 -1
  199. data/lib/rubygems/deprecate.rb +16 -15
  200. data/lib/rubygems/doctor.rb +5 -5
  201. data/lib/rubygems/errors.rb +2 -6
  202. data/lib/rubygems/exceptions.rb +2 -1
  203. data/lib/rubygems/ext/builder.rb +15 -10
  204. data/lib/rubygems/ext/cargo_builder.rb +5 -5
  205. data/lib/rubygems/ext/ext_conf_builder.rb +1 -3
  206. data/lib/rubygems/gem_runner.rb +4 -4
  207. data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +3 -3
  208. data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +3 -3
  209. data/lib/rubygems/gemcutter_utilities.rb +18 -19
  210. data/lib/rubygems/install_update_options.rb +18 -19
  211. data/lib/rubygems/installer.rb +59 -33
  212. data/lib/rubygems/installer_uninstaller_utils.rb +0 -2
  213. data/lib/rubygems/local_remote_options.rb +7 -10
  214. data/lib/rubygems/name_tuple.rb +7 -9
  215. data/lib/rubygems/net/http.rb +3 -0
  216. data/lib/rubygems/net-http/LICENSE.txt +22 -0
  217. data/lib/rubygems/net-http/lib/net/http/backward.rb +40 -0
  218. data/lib/rubygems/net-http/lib/net/http/exceptions.rb +34 -0
  219. data/lib/rubygems/net-http/lib/net/http/generic_request.rb +414 -0
  220. data/lib/rubygems/net-http/lib/net/http/header.rb +981 -0
  221. data/lib/rubygems/net-http/lib/net/http/proxy_delta.rb +17 -0
  222. data/lib/rubygems/net-http/lib/net/http/request.rb +88 -0
  223. data/lib/rubygems/net-http/lib/net/http/requests.rb +425 -0
  224. data/lib/rubygems/net-http/lib/net/http/response.rb +738 -0
  225. data/lib/rubygems/net-http/lib/net/http/responses.rb +1174 -0
  226. data/lib/rubygems/net-http/lib/net/http/status.rb +84 -0
  227. data/lib/rubygems/net-http/lib/net/http.rb +2496 -0
  228. data/lib/rubygems/net-http/lib/net/https.rb +23 -0
  229. data/lib/rubygems/net-protocol/LICENSE.txt +22 -0
  230. data/lib/rubygems/net-protocol/lib/net/protocol.rb +544 -0
  231. data/lib/rubygems/optparse/lib/optparse.rb +39 -17
  232. data/lib/rubygems/package/old.rb +2 -2
  233. data/lib/rubygems/package/tar_header.rb +45 -39
  234. data/lib/rubygems/package/tar_reader/entry.rb +5 -4
  235. data/lib/rubygems/package/tar_reader.rb +5 -3
  236. data/lib/rubygems/package/tar_writer.rb +19 -17
  237. data/lib/rubygems/package.rb +27 -26
  238. data/lib/rubygems/package_task.rb +2 -2
  239. data/lib/rubygems/path_support.rb +9 -10
  240. data/lib/rubygems/platform.rb +60 -45
  241. data/lib/rubygems/query_utils.rb +7 -9
  242. data/lib/rubygems/remote_fetcher.rb +15 -15
  243. data/lib/rubygems/request/connection_pools.rb +3 -3
  244. data/lib/rubygems/request.rb +20 -17
  245. data/lib/rubygems/request_set/gem_dependency_api.rb +119 -122
  246. data/lib/rubygems/request_set/lockfile/parser.rb +9 -9
  247. data/lib/rubygems/request_set/lockfile/tokenizer.rb +20 -12
  248. data/lib/rubygems/request_set/lockfile.rb +6 -11
  249. data/lib/rubygems/request_set.rb +5 -5
  250. data/lib/rubygems/requirement.rb +7 -7
  251. data/lib/rubygems/resolv/LICENSE.txt +22 -0
  252. data/lib/rubygems/resolv/lib/resolv.rb +3387 -0
  253. data/lib/rubygems/resolver/activation_request.rb +1 -3
  254. data/lib/rubygems/resolver/api_set/gem_parser.rb +7 -3
  255. data/lib/rubygems/resolver/best_set.rb +1 -1
  256. data/lib/rubygems/resolver/composed_set.rb +1 -1
  257. data/lib/rubygems/resolver/conflict.rb +4 -12
  258. data/lib/rubygems/resolver/index_set.rb +4 -4
  259. data/lib/rubygems/resolver/index_specification.rb +2 -2
  260. data/lib/rubygems/resolver/installer_set.rb +5 -6
  261. data/lib/rubygems/resolver/lock_set.rb +1 -1
  262. data/lib/rubygems/resolver.rb +3 -10
  263. data/lib/rubygems/s3_uri_signer.rb +6 -6
  264. data/lib/rubygems/safe_marshal/elements.rb +138 -0
  265. data/lib/rubygems/safe_marshal/reader.rb +306 -0
  266. data/lib/rubygems/safe_marshal/visitors/stream_printer.rb +31 -0
  267. data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +385 -0
  268. data/lib/rubygems/safe_marshal/visitors/visitor.rb +74 -0
  269. data/lib/rubygems/safe_marshal.rb +74 -0
  270. data/lib/rubygems/safe_yaml.rb +5 -28
  271. data/lib/rubygems/security/policies.rb +36 -38
  272. data/lib/rubygems/security/policy.rb +7 -11
  273. data/lib/rubygems/security/signer.rb +1 -1
  274. data/lib/rubygems/security/trust_dir.rb +3 -3
  275. data/lib/rubygems/security.rb +8 -22
  276. data/lib/rubygems/source/git.rb +1 -3
  277. data/lib/rubygems/source/installed.rb +0 -2
  278. data/lib/rubygems/source/local.rb +5 -8
  279. data/lib/rubygems/source/lock.rb +1 -3
  280. data/lib/rubygems/source/specific_file.rb +0 -1
  281. data/lib/rubygems/source/vendor.rb +0 -2
  282. data/lib/rubygems/source.rb +12 -12
  283. data/lib/rubygems/source_list.rb +4 -4
  284. data/lib/rubygems/spec_fetcher.rb +29 -29
  285. data/lib/rubygems/specification.rb +125 -138
  286. data/lib/rubygems/specification_policy.rb +55 -25
  287. data/lib/rubygems/stub_specification.rb +4 -5
  288. data/lib/rubygems/text.rb +1 -2
  289. data/lib/rubygems/timeout/LICENSE.txt +22 -0
  290. data/lib/rubygems/timeout/lib/timeout.rb +199 -0
  291. data/lib/rubygems/timeout.rb +3 -0
  292. data/lib/rubygems/tsort/lib/tsort.rb +3 -0
  293. data/lib/rubygems/uninstaller.rb +7 -9
  294. data/lib/rubygems/update_suggestion.rb +5 -18
  295. data/lib/rubygems/uri_formatter.rb +1 -1
  296. data/lib/rubygems/user_interaction.rb +15 -21
  297. data/lib/rubygems/util/licenses.rb +65 -35
  298. data/lib/rubygems/util/list.rb +3 -1
  299. data/lib/rubygems/util.rb +2 -4
  300. data/lib/rubygems/validator.rb +5 -3
  301. data/lib/rubygems/version.rb +34 -28
  302. data/lib/rubygems/version_option.rb +2 -5
  303. data/lib/rubygems/yaml_serializer.rb +3 -3
  304. data/lib/rubygems.rb +37 -37
  305. data/rubygems-update.gemspec +4 -4
  306. data/setup.rb +2 -2
  307. metadata +38 -225
  308. data/lib/rubygems/indexer.rb +0 -428
  309. data/lib/rubygems/mock_gem_ui.rb +0 -86
  310. data/test/rubygems/alternate_cert.pem +0 -19
  311. data/test/rubygems/alternate_cert_32.pem +0 -19
  312. data/test/rubygems/alternate_key.pem +0 -27
  313. data/test/rubygems/bad_rake.rb +0 -3
  314. data/test/rubygems/bundler_test_gem.rb +0 -424
  315. data/test/rubygems/ca_cert.pem +0 -77
  316. data/test/rubygems/child_cert.pem +0 -19
  317. data/test/rubygems/child_cert_32.pem +0 -19
  318. data/test/rubygems/child_key.pem +0 -27
  319. data/test/rubygems/client.pem +0 -107
  320. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  321. data/test/rubygems/data/gem-private_key.pem +0 -27
  322. data/test/rubygems/data/gem-public_cert.pem +0 -20
  323. data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
  324. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  325. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  326. data/test/rubygems/encrypted_private_key.pem +0 -30
  327. data/test/rubygems/expired_cert.pem +0 -19
  328. data/test/rubygems/fake_certlib/openssl.rb +0 -9
  329. data/test/rubygems/foo/discover.rb +0 -1
  330. data/test/rubygems/future_cert.pem +0 -19
  331. data/test/rubygems/future_cert_32.pem +0 -19
  332. data/test/rubygems/good_rake.rb +0 -3
  333. data/test/rubygems/grandchild_cert.pem +0 -19
  334. data/test/rubygems/grandchild_cert_32.pem +0 -19
  335. data/test/rubygems/grandchild_key.pem +0 -27
  336. data/test/rubygems/helper.rb +0 -1649
  337. data/test/rubygems/installer_test_case.rb +0 -248
  338. data/test/rubygems/invalid_client.pem +0 -49
  339. data/test/rubygems/invalid_issuer_cert.pem +0 -20
  340. data/test/rubygems/invalid_issuer_cert_32.pem +0 -20
  341. data/test/rubygems/invalid_key.pem +0 -27
  342. data/test/rubygems/invalid_signer_cert.pem +0 -19
  343. data/test/rubygems/invalid_signer_cert_32.pem +0 -19
  344. data/test/rubygems/invalidchild_cert.pem +0 -19
  345. data/test/rubygems/invalidchild_cert_32.pem +0 -19
  346. data/test/rubygems/invalidchild_key.pem +0 -27
  347. data/test/rubygems/multifactor_auth_utilities.rb +0 -111
  348. data/test/rubygems/package/tar_test_case.rb +0 -175
  349. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  350. data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
  351. data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
  352. data/test/rubygems/plugin/exception/rubygems_plugin.rb +0 -4
  353. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -5
  354. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +0 -4
  355. data/test/rubygems/private3072_key.pem +0 -40
  356. data/test/rubygems/private_ec_key.pem +0 -9
  357. data/test/rubygems/private_key.pem +0 -27
  358. data/test/rubygems/public3072_cert.pem +0 -25
  359. data/test/rubygems/public_cert.pem +0 -20
  360. data/test/rubygems/public_cert_32.pem +0 -19
  361. data/test/rubygems/public_key.pem +0 -9
  362. data/test/rubygems/rubygems/commands/crash_command.rb +0 -5
  363. data/test/rubygems/rubygems_plugin.rb +0 -24
  364. data/test/rubygems/sff/discover.rb +0 -1
  365. data/test/rubygems/simple_gem.rb +0 -68
  366. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -9
  367. data/test/rubygems/specifications/foo-0.0.1-x86-mswin32.gemspec +0 -0
  368. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +0 -14
  369. data/test/rubygems/ssl_cert.pem +0 -80
  370. data/test/rubygems/ssl_key.pem +0 -27
  371. data/test/rubygems/test_bundled_ca.rb +0 -61
  372. data/test/rubygems/test_config.rb +0 -28
  373. data/test/rubygems/test_deprecate.rb +0 -158
  374. data/test/rubygems/test_exit.rb +0 -17
  375. data/test/rubygems/test_gem.rb +0 -1799
  376. data/test/rubygems/test_gem_available_set.rb +0 -130
  377. data/test/rubygems/test_gem_bundler_version_finder.rb +0 -127
  378. data/test/rubygems/test_gem_command.rb +0 -403
  379. data/test/rubygems/test_gem_command_manager.rb +0 -400
  380. data/test/rubygems/test_gem_commands_build_command.rb +0 -739
  381. data/test/rubygems/test_gem_commands_cert_command.rb +0 -866
  382. data/test/rubygems/test_gem_commands_check_command.rb +0 -68
  383. data/test/rubygems/test_gem_commands_cleanup_command.rb +0 -292
  384. data/test/rubygems/test_gem_commands_contents_command.rb +0 -271
  385. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -228
  386. data/test/rubygems/test_gem_commands_environment_command.rb +0 -169
  387. data/test/rubygems/test_gem_commands_exec_command.rb +0 -857
  388. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -258
  389. data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -81
  390. data/test/rubygems/test_gem_commands_help_command.rb +0 -94
  391. data/test/rubygems/test_gem_commands_info_command.rb +0 -70
  392. data/test/rubygems/test_gem_commands_install_command.rb +0 -1573
  393. data/test/rubygems/test_gem_commands_list_command.rb +0 -33
  394. data/test/rubygems/test_gem_commands_lock_command.rb +0 -67
  395. data/test/rubygems/test_gem_commands_mirror.rb +0 -20
  396. data/test/rubygems/test_gem_commands_open_command.rb +0 -101
  397. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -50
  398. data/test/rubygems/test_gem_commands_owner_command.rb +0 -503
  399. data/test/rubygems/test_gem_commands_pristine_command.rb +0 -708
  400. data/test/rubygems/test_gem_commands_push_command.rb +0 -603
  401. data/test/rubygems/test_gem_commands_query_command.rb +0 -858
  402. data/test/rubygems/test_gem_commands_search_command.rb +0 -16
  403. data/test/rubygems/test_gem_commands_server_command.rb +0 -20
  404. data/test/rubygems/test_gem_commands_setup_command.rb +0 -474
  405. data/test/rubygems/test_gem_commands_signin_command.rb +0 -259
  406. data/test/rubygems/test_gem_commands_signout_command.rb +0 -30
  407. data/test/rubygems/test_gem_commands_sources_command.rb +0 -534
  408. data/test/rubygems/test_gem_commands_specification_command.rb +0 -277
  409. data/test/rubygems/test_gem_commands_stale_command.rb +0 -43
  410. data/test/rubygems/test_gem_commands_uninstall_command.rb +0 -542
  411. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -224
  412. data/test/rubygems/test_gem_commands_update_command.rb +0 -836
  413. data/test/rubygems/test_gem_commands_which_command.rb +0 -85
  414. data/test/rubygems/test_gem_commands_yank_command.rb +0 -299
  415. data/test/rubygems/test_gem_config_file.rb +0 -551
  416. data/test/rubygems/test_gem_dependency.rb +0 -398
  417. data/test/rubygems/test_gem_dependency_installer.rb +0 -1190
  418. data/test/rubygems/test_gem_dependency_list.rb +0 -265
  419. data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -27
  420. data/test/rubygems/test_gem_doctor.rb +0 -195
  421. data/test/rubygems/test_gem_ext_builder.rb +0 -337
  422. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +0 -1
  423. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +0 -10
  424. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +0 -249
  425. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +0 -10
  426. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +0 -27
  427. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +0 -3
  428. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +0 -1
  429. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +0 -249
  430. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +0 -10
  431. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +0 -10
  432. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +0 -51
  433. data/test/rubygems/test_gem_ext_cargo_builder.rb +0 -167
  434. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +0 -34
  435. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +0 -60
  436. data/test/rubygems/test_gem_ext_cmake_builder.rb +0 -84
  437. data/test/rubygems/test_gem_ext_configure_builder.rb +0 -80
  438. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -229
  439. data/test/rubygems/test_gem_ext_rake_builder.rb +0 -113
  440. data/test/rubygems/test_gem_gem_runner.rb +0 -119
  441. data/test/rubygems/test_gem_gemcutter_utilities.rb +0 -361
  442. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -60
  443. data/test/rubygems/test_gem_indexer.rb +0 -381
  444. data/test/rubygems/test_gem_install_update_options.rb +0 -208
  445. data/test/rubygems/test_gem_installer.rb +0 -2512
  446. data/test/rubygems/test_gem_local_remote_options.rb +0 -133
  447. data/test/rubygems/test_gem_name_tuple.rb +0 -43
  448. data/test/rubygems/test_gem_package.rb +0 -1306
  449. data/test/rubygems/test_gem_package_old.rb +0 -91
  450. data/test/rubygems/test_gem_package_tar_header.rb +0 -226
  451. data/test/rubygems/test_gem_package_tar_reader.rb +0 -150
  452. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -350
  453. data/test/rubygems/test_gem_package_tar_writer.rb +0 -331
  454. data/test/rubygems/test_gem_package_task.rb +0 -118
  455. data/test/rubygems/test_gem_path_support.rb +0 -139
  456. data/test/rubygems/test_gem_platform.rb +0 -497
  457. data/test/rubygems/test_gem_rdoc.rb +0 -137
  458. data/test/rubygems/test_gem_remote_fetcher.rb +0 -1227
  459. data/test/rubygems/test_gem_request.rb +0 -547
  460. data/test/rubygems/test_gem_request_connection_pools.rb +0 -152
  461. data/test/rubygems/test_gem_request_set.rb +0 -672
  462. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +0 -853
  463. data/test/rubygems/test_gem_request_set_lockfile.rb +0 -469
  464. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +0 -544
  465. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +0 -307
  466. data/test/rubygems/test_gem_requirement.rb +0 -505
  467. data/test/rubygems/test_gem_resolver.rb +0 -859
  468. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -43
  469. data/test/rubygems/test_gem_resolver_api_set.rb +0 -210
  470. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -167
  471. data/test/rubygems/test_gem_resolver_best_set.rb +0 -159
  472. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -44
  473. data/test/rubygems/test_gem_resolver_conflict.rb +0 -82
  474. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -83
  475. data/test/rubygems/test_gem_resolver_git_set.rb +0 -188
  476. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -114
  477. data/test/rubygems/test_gem_resolver_index_set.rb +0 -88
  478. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -93
  479. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -47
  480. data/test/rubygems/test_gem_resolver_installer_set.rb +0 -320
  481. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -44
  482. data/test/rubygems/test_gem_resolver_lock_set.rb +0 -62
  483. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -98
  484. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -19
  485. data/test/rubygems/test_gem_resolver_specification.rb +0 -63
  486. data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -82
  487. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -82
  488. data/test/rubygems/test_gem_security.rb +0 -341
  489. data/test/rubygems/test_gem_security_policy.rb +0 -535
  490. data/test/rubygems/test_gem_security_signer.rb +0 -218
  491. data/test/rubygems/test_gem_security_trust_dir.rb +0 -99
  492. data/test/rubygems/test_gem_silent_ui.rb +0 -123
  493. data/test/rubygems/test_gem_source.rb +0 -254
  494. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -37
  495. data/test/rubygems/test_gem_source_git.rb +0 -310
  496. data/test/rubygems/test_gem_source_installed.rb +0 -35
  497. data/test/rubygems/test_gem_source_list.rb +0 -119
  498. data/test/rubygems/test_gem_source_local.rb +0 -107
  499. data/test/rubygems/test_gem_source_lock.rb +0 -113
  500. data/test/rubygems/test_gem_source_specific_file.rb +0 -76
  501. data/test/rubygems/test_gem_source_subpath_problem.rb +0 -50
  502. data/test/rubygems/test_gem_source_vendor.rb +0 -30
  503. data/test/rubygems/test_gem_spec_fetcher.rb +0 -338
  504. data/test/rubygems/test_gem_specification.rb +0 -3856
  505. data/test/rubygems/test_gem_stream_ui.rb +0 -255
  506. data/test/rubygems/test_gem_stub_specification.rb +0 -278
  507. data/test/rubygems/test_gem_text.rb +0 -103
  508. data/test/rubygems/test_gem_uninstaller.rb +0 -675
  509. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -31
  510. data/test/rubygems/test_gem_update_suggestion.rb +0 -209
  511. data/test/rubygems/test_gem_uri.rb +0 -41
  512. data/test/rubygems/test_gem_uri_formatter.rb +0 -27
  513. data/test/rubygems/test_gem_util.rb +0 -91
  514. data/test/rubygems/test_gem_validator.rb +0 -42
  515. data/test/rubygems/test_gem_version.rb +0 -305
  516. data/test/rubygems/test_gem_version_option.rb +0 -165
  517. data/test/rubygems/test_kernel.rb +0 -124
  518. data/test/rubygems/test_project_sanity.rb +0 -49
  519. data/test/rubygems/test_remote_fetch_error.rb +0 -20
  520. data/test/rubygems/test_require.rb +0 -732
  521. data/test/rubygems/test_rubygems.rb +0 -76
  522. data/test/rubygems/test_webauthn_listener.rb +0 -143
  523. data/test/rubygems/test_webauthn_listener_response.rb +0 -93
  524. data/test/rubygems/test_webauthn_poller.rb +0 -124
  525. data/test/rubygems/utilities.rb +0 -436
  526. data/test/rubygems/wrong_key_cert.pem +0 -19
  527. data/test/rubygems/wrong_key_cert_32.pem +0 -19
  528. data/test/test_changelog_generator.rb +0 -17
@@ -1,675 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "installer_test_case"
4
- require "rubygems/uninstaller"
5
-
6
- class TestGemUninstaller < Gem::InstallerTestCase
7
- def setup
8
- super
9
- @installer = setup_base_installer
10
- @user_installer = setup_base_user_installer
11
- common_installer_setup
12
-
13
- build_rake_in do
14
- use_ui ui do
15
- @installer.install
16
- @spec = @installer.spec
17
-
18
- @user_installer.install
19
- @user_spec = @user_installer.spec
20
- end
21
- end
22
-
23
- Gem::Specification.reset
24
- end
25
-
26
- def test_initialize_expand_path
27
- FileUtils.mkdir_p "foo/bar"
28
- uninstaller = Gem::Uninstaller.new nil, :install_dir => "foo//bar"
29
-
30
- assert_match %r{foo/bar$}, uninstaller.instance_variable_get(:@gem_home)
31
- end
32
-
33
- def test_ask_if_ok
34
- c = util_spec "c"
35
-
36
- uninstaller = Gem::Uninstaller.new nil
37
-
38
- ok = :junk
39
-
40
- ui = Gem::MockGemUi.new "\n"
41
-
42
- use_ui ui do
43
- ok = uninstaller.ask_if_ok c
44
- end
45
-
46
- refute ok
47
- end
48
-
49
- def test_remove_all
50
- uninstaller = Gem::Uninstaller.new nil
51
-
52
- ui = Gem::MockGemUi.new "y\n"
53
-
54
- use_ui ui do
55
- uninstaller.remove_all [@spec]
56
- end
57
-
58
- assert_path_not_exist @spec.gem_dir
59
- end
60
-
61
- def test_remove_executables_force_keep
62
- uninstaller = Gem::Uninstaller.new nil, :executables => false
63
-
64
- executable = File.join Gem.bindir(@user_spec.base_dir), "executable"
65
- assert File.exist?(executable), "executable not written"
66
-
67
- use_ui @ui do
68
- uninstaller.remove_executables @user_spec
69
- end
70
-
71
- assert File.exist? executable
72
-
73
- assert_equal "Executables and scripts will remain installed.\n", @ui.output
74
- end
75
-
76
- def test_remove_executables_force_remove
77
- uninstaller = Gem::Uninstaller.new nil, :executables => true
78
-
79
- executable = File.join Gem.bindir(@user_spec.base_dir), "executable"
80
- assert File.exist?(executable), "executable not written"
81
-
82
- use_ui @ui do
83
- uninstaller.remove_executables @user_spec
84
- end
85
-
86
- assert_equal "Removing executable\n", @ui.output
87
-
88
- refute File.exist? executable
89
- end
90
-
91
- def test_remove_executables_user
92
- uninstaller = Gem::Uninstaller.new nil, :executables => true
93
-
94
- use_ui @ui do
95
- uninstaller.remove_executables @user_spec
96
- end
97
-
98
- exec_path = File.join Gem.user_dir, "bin", "executable"
99
- refute File.exist?(exec_path), "exec still exists in user bin dir"
100
-
101
- assert_equal "Removing executable\n", @ui.output
102
- end
103
-
104
- def test_remove_executables_user_format
105
- Gem::Installer.exec_format = "foo-%s-bar"
106
-
107
- uninstaller = Gem::Uninstaller.new nil, :executables => true, :format_executable => true
108
-
109
- use_ui @ui do
110
- uninstaller.remove_executables @user_spec
111
- end
112
-
113
- exec_path = File.join Gem.user_dir, "bin", "foo-executable-bar"
114
- assert_equal false, File.exist?(exec_path), "removed exec from bin dir"
115
-
116
- assert_equal "Removing foo-executable-bar\n", @ui.output
117
- ensure
118
- Gem::Installer.exec_format = nil
119
- end
120
-
121
- def test_remove_executables_user_format_disabled
122
- Gem::Installer.exec_format = "foo-%s-bar"
123
-
124
- uninstaller = Gem::Uninstaller.new nil, :executables => true
125
-
126
- use_ui @ui do
127
- uninstaller.remove_executables @user_spec
128
- end
129
-
130
- exec_path = File.join Gem.user_dir, "bin", "executable"
131
- refute File.exist?(exec_path), "removed exec from bin dir"
132
-
133
- assert_equal "Removing executable\n", @ui.output
134
- ensure
135
- Gem::Installer.exec_format = nil
136
- end
137
-
138
- def test_remove_not_in_home
139
- Dir.mkdir "#{@gemhome}2"
140
- uninstaller = Gem::Uninstaller.new nil, :install_dir => "#{@gemhome}2"
141
-
142
- e = assert_raise Gem::GemNotInHomeException do
143
- use_ui ui do
144
- uninstaller.remove @spec
145
- end
146
- end
147
-
148
- expected =
149
- "Gem '#{@spec.full_name}' is not installed in directory #{@gemhome}2"
150
-
151
- assert_equal expected, e.message
152
-
153
- assert_path_exist @spec.gem_dir
154
- end
155
-
156
- def test_remove_symlinked_gem_home
157
- pend "Symlinks not supported or not enabled" unless symlink_supported?
158
-
159
- Dir.mktmpdir("gem_home") do |dir|
160
- symlinked_gem_home = "#{dir}/#{File.basename(@gemhome)}"
161
-
162
- FileUtils.ln_s(@gemhome, dir)
163
-
164
- uninstaller = Gem::Uninstaller.new nil, :install_dir => symlinked_gem_home
165
-
166
- use_ui ui do
167
- uninstaller.remove @spec
168
- end
169
-
170
- assert_path_not_exist @spec.gem_dir
171
- end
172
- end
173
-
174
- def test_remove_plugins
175
- write_file File.join(@tempdir, "lib", "rubygems_plugin.rb") do |io|
176
- io.write "# do nothing"
177
- end
178
-
179
- @spec.files += %w[lib/rubygems_plugin.rb]
180
-
181
- Gem::Installer.at(Gem::Package.build(@spec), :force => true).install
182
-
183
- plugin_path = File.join Gem.plugindir, "a_plugin.rb"
184
- assert File.exist?(plugin_path), "plugin not written"
185
-
186
- Gem::Uninstaller.new(nil).remove_plugins @spec
187
-
188
- refute File.exist?(plugin_path), "plugin not removed"
189
- end
190
-
191
- def test_remove_plugins_with_install_dir
192
- write_file File.join(@tempdir, "lib", "rubygems_plugin.rb") do |io|
193
- io.write "# do nothing"
194
- end
195
-
196
- @spec.files += %w[lib/rubygems_plugin.rb]
197
-
198
- Gem::Installer.at(Gem::Package.build(@spec), :force => true).install
199
-
200
- plugin_path = File.join Gem.plugindir, "a_plugin.rb"
201
- assert File.exist?(plugin_path), "plugin not written"
202
-
203
- Dir.mkdir "#{@gemhome}2"
204
- Gem::Uninstaller.new(nil, :install_dir => "#{@gemhome}2").remove_plugins @spec
205
-
206
- assert File.exist?(plugin_path), "plugin unintentionally removed"
207
- end
208
-
209
- def test_regenerate_plugins_for
210
- write_file File.join(@tempdir, "lib", "rubygems_plugin.rb") do |io|
211
- io.write "# do nothing"
212
- end
213
-
214
- @spec.files += %w[lib/rubygems_plugin.rb]
215
-
216
- Gem::Installer.at(Gem::Package.build(@spec), :force => true).install
217
-
218
- plugin_path = File.join Gem.plugindir, "a_plugin.rb"
219
- assert File.exist?(plugin_path), "plugin not written"
220
-
221
- FileUtils.rm plugin_path
222
- Gem::Uninstaller.new(nil).regenerate_plugins_for @spec, Gem.plugindir
223
-
224
- assert File.exist?(plugin_path), "plugin not regenerated"
225
- end
226
-
227
- def test_path_ok_eh
228
- uninstaller = Gem::Uninstaller.new nil
229
-
230
- assert_equal true, uninstaller.path_ok?(@gemhome, @spec)
231
- end
232
-
233
- def test_path_ok_eh_legacy
234
- uninstaller = Gem::Uninstaller.new nil
235
-
236
- @spec.loaded_from = @spec.loaded_from.gsub @spec.full_name, '\&-legacy'
237
- @spec.internal_init # blow out cache. but why did ^^ depend on cache?
238
- @spec.platform = "legacy"
239
-
240
- assert_equal true, uninstaller.path_ok?(@gemhome, @spec)
241
- end
242
-
243
- def test_path_ok_eh_user
244
- uninstaller = Gem::Uninstaller.new nil
245
-
246
- assert_equal true, uninstaller.path_ok?(Gem.user_dir, @user_spec)
247
- end
248
-
249
- def test_uninstall
250
- uninstaller = Gem::Uninstaller.new @spec.name, :executables => true
251
-
252
- gem_dir = File.join @gemhome, "gems", @spec.full_name
253
-
254
- Gem.pre_uninstall do
255
- sleep(0.1) if win_platform?
256
- assert File.exist?(gem_dir), "gem_dir should exist"
257
- end
258
-
259
- Gem.post_uninstall do
260
- sleep(0.1) if win_platform?
261
- refute File.exist?(gem_dir), "gem_dir should not exist"
262
- end
263
-
264
- uninstaller.uninstall
265
-
266
- refute File.exist?(gem_dir)
267
-
268
- assert_same uninstaller, @pre_uninstall_hook_arg
269
- assert_same uninstaller, @post_uninstall_hook_arg
270
- end
271
-
272
- def test_uninstall_default_gem
273
- spec = new_default_spec "default", "2"
274
-
275
- install_default_gems spec
276
-
277
- uninstaller = Gem::Uninstaller.new spec.name, :executables => true
278
-
279
- use_ui @ui do
280
- uninstaller.uninstall
281
- end
282
-
283
- lines = @ui.output.split("\n")
284
-
285
- assert_equal "Gem default-2 cannot be uninstalled because it is a default gem", lines.shift
286
- end
287
-
288
- def test_uninstall_default_gem_with_same_version
289
- default_spec = new_default_spec "default", "2"
290
- install_default_gems default_spec
291
-
292
- spec = util_spec "default", "2"
293
- install_gem spec
294
-
295
- Gem::Specification.reset
296
-
297
- uninstaller = Gem::Uninstaller.new spec.name, :executables => true
298
-
299
- ui = Gem::MockGemUi.new "1\ny\n"
300
- use_ui ui do
301
- uninstaller.uninstall
302
- end
303
- expected = "Successfully uninstalled default-2\n" \
304
- "There was both a regular copy and a default copy of default-2. The " \
305
- "regular copy was successfully uninstalled, but the default copy " \
306
- "was left around because default gems can't be removed.\n"
307
- assert_equal expected, ui.output
308
- assert_path_not_exist spec.gem_dir
309
- end
310
-
311
- def test_uninstall_extension
312
- @spec.extensions << "extconf.rb"
313
- write_file File.join(@tempdir, "extconf.rb") do |io|
314
- io.write <<-RUBY
315
- require 'mkmf'
316
- create_makefile '#{@spec.name}'
317
- RUBY
318
- end
319
-
320
- @spec.files += %w[extconf.rb]
321
-
322
- use_ui @ui do
323
- path = Gem::Package.build @spec
324
-
325
- installer = Gem::Installer.at path, :force => true
326
- installer.install
327
- end
328
-
329
- assert_path_exist @spec.extension_dir, "sanity check"
330
-
331
- uninstaller = Gem::Uninstaller.new @spec.name, :executables => true
332
- uninstaller.uninstall
333
-
334
- assert_path_not_exist @spec.extension_dir
335
- end
336
-
337
- def test_uninstall_nonexistent
338
- uninstaller = Gem::Uninstaller.new "bogus", :executables => true
339
-
340
- e = assert_raise Gem::InstallError do
341
- uninstaller.uninstall
342
- end
343
-
344
- assert_equal 'gem "bogus" is not installed', e.message
345
- end
346
-
347
- def test_uninstall_not_ok
348
- quick_gem "z" do |s|
349
- s.add_runtime_dependency @spec.name
350
- end
351
-
352
- uninstaller = Gem::Uninstaller.new @spec.name
353
-
354
- gem_dir = File.join @gemhome, "gems", @spec.full_name
355
- executable = File.join @gemhome, "bin", "executable"
356
-
357
- assert File.exist?(gem_dir), "gem_dir must exist"
358
- assert File.exist?(executable), "executable must exist"
359
-
360
- ui = Gem::MockGemUi.new "n\n"
361
-
362
- assert_raise Gem::DependencyRemovalException do
363
- use_ui ui do
364
- uninstaller.uninstall
365
- end
366
- end
367
-
368
- assert File.exist?(gem_dir), "gem_dir must still exist"
369
- assert File.exist?(executable), "executable must still exist"
370
- end
371
-
372
- def test_uninstall_user_install
373
- @user_spec = Gem::Specification.find_by_name "b"
374
-
375
- uninstaller = Gem::Uninstaller.new(@user_spec.name,
376
- :executables => true,
377
- :user_install => true)
378
-
379
- gem_dir = File.join @user_spec.gem_dir
380
-
381
- Gem.pre_uninstall do
382
- assert_path_exist gem_dir
383
- end
384
-
385
- Gem.post_uninstall do
386
- assert_path_not_exist gem_dir
387
- end
388
-
389
- uninstaller.uninstall
390
-
391
- assert_path_not_exist gem_dir
392
-
393
- assert_same uninstaller, @pre_uninstall_hook_arg
394
- assert_same uninstaller, @post_uninstall_hook_arg
395
- end
396
-
397
- def test_uninstall_wrong_repo
398
- Dir.mkdir "#{@gemhome}2"
399
- Gem.use_paths "#{@gemhome}2", [@gemhome]
400
-
401
- uninstaller = Gem::Uninstaller.new @spec.name, :executables => true
402
-
403
- e = assert_raise Gem::InstallError do
404
- uninstaller.uninstall
405
- end
406
-
407
- expected = <<-MESSAGE.strip
408
- #{@spec.name} is not installed in GEM_HOME, try:
409
- \tgem uninstall -i #{@gemhome} a
410
- MESSAGE
411
-
412
- assert_equal expected, e.message
413
- end
414
-
415
- def test_uninstall_selection
416
- util_make_gems
417
-
418
- list = Gem::Specification.find_all_by_name "a"
419
-
420
- uninstaller = Gem::Uninstaller.new "a"
421
-
422
- ui = Gem::MockGemUi.new "1\ny\n"
423
-
424
- use_ui ui do
425
- uninstaller.uninstall
426
- end
427
-
428
- updated_list = Gem::Specification.find_all_by_name("a")
429
- assert_equal list.length - 1, updated_list.length
430
-
431
- assert_match " 1. a-1", ui.output
432
- assert_match " 2. a-2", ui.output
433
- assert_match " 3. a-3.a", ui.output
434
- assert_match " 4. All versions", ui.output
435
- assert_match "uninstalled a-1", ui.output
436
- end
437
-
438
- def test_uninstall_selection_greater_than_one
439
- util_make_gems
440
-
441
- list = Gem::Specification.find_all_by_name("a")
442
-
443
- uninstaller = Gem::Uninstaller.new("a")
444
-
445
- use_ui Gem::MockGemUi.new("2\ny\n") do
446
- uninstaller.uninstall
447
- end
448
-
449
- updated_list = Gem::Specification.find_all_by_name("a")
450
- assert_equal list.length - 1, updated_list.length
451
- end
452
-
453
- def test_uninstall_prompts_about_broken_deps
454
- quick_gem "r", "1" do |s|
455
- s.add_dependency "q", "= 1"
456
- end
457
-
458
- quick_gem "q", "1"
459
-
460
- un = Gem::Uninstaller.new("q")
461
- ui = Gem::MockGemUi.new("y\n")
462
-
463
- use_ui ui do
464
- un.uninstall
465
- end
466
-
467
- lines = ui.output.split("\n")
468
- lines.shift
469
-
470
- assert_match %r{You have requested to uninstall the gem:}, lines.shift
471
- lines.shift
472
- lines.shift
473
-
474
- assert_match %r{r-1 depends on q \(= 1\)}, lines.shift
475
- assert_match %r{Successfully uninstalled q-1}, lines.last
476
- end
477
-
478
- def test_uninstall_only_lists_unsatisfied_deps
479
- quick_gem "r", "1" do |s|
480
- s.add_dependency "q", "~> 1.0"
481
- end
482
-
483
- quick_gem "x", "1" do |s|
484
- s.add_dependency "q", "= 1.0"
485
- end
486
-
487
- quick_gem "q", "1.0"
488
- quick_gem "q", "1.1"
489
-
490
- un = Gem::Uninstaller.new("q", :version => "1.0")
491
- ui = Gem::MockGemUi.new("y\n")
492
-
493
- use_ui ui do
494
- un.uninstall
495
- end
496
-
497
- lines = ui.output.split("\n")
498
- lines.shift
499
-
500
- assert_match %r{You have requested to uninstall the gem:}, lines.shift
501
- lines.shift
502
- lines.shift
503
-
504
- assert_match %r{x-1 depends on q \(= 1.0\)}, lines.shift
505
- assert_match %r{Successfully uninstalled q-1.0}, lines.last
506
- end
507
-
508
- def test_uninstall_doesnt_prompt_when_other_gem_satisfies_requirement
509
- quick_gem "r", "1" do |s|
510
- s.add_dependency "q", "~> 1.0"
511
- end
512
-
513
- quick_gem "q", "1.0"
514
- quick_gem "q", "1.1"
515
-
516
- un = Gem::Uninstaller.new("q", :version => "1.0")
517
- ui = Gem::MockGemUi.new("y\n")
518
-
519
- use_ui ui do
520
- un.uninstall
521
- end
522
-
523
- lines = ui.output.split("\n")
524
-
525
- assert_equal "Successfully uninstalled q-1.0", lines.shift
526
- end
527
-
528
- def test_uninstall_doesnt_prompt_when_removing_a_dev_dep
529
- quick_gem "r", "1" do |s|
530
- s.add_development_dependency "q", "= 1.0"
531
- end
532
-
533
- quick_gem "q", "1.0"
534
-
535
- un = Gem::Uninstaller.new("q", :version => "1.0")
536
- ui = Gem::MockGemUi.new("y\n")
537
-
538
- use_ui ui do
539
- un.uninstall
540
- end
541
-
542
- lines = ui.output.split("\n")
543
-
544
- assert_equal "Successfully uninstalled q-1.0", lines.shift
545
- end
546
-
547
- def test_uninstall_doesnt_prompt_and_raises_when_abort_on_dependent_set
548
- quick_gem "r", "1" do |s|
549
- s.add_dependency "q", "= 1"
550
- end
551
-
552
- quick_gem "q", "1"
553
-
554
- un = Gem::Uninstaller.new("q", :abort_on_dependent => true)
555
- ui = Gem::MockGemUi.new("y\n")
556
-
557
- assert_raise Gem::DependencyRemovalException do
558
- use_ui ui do
559
- un.uninstall
560
- end
561
- end
562
- end
563
-
564
- def test_uninstall_prompt_includes_dep_type
565
- quick_gem "r", "1" do |s|
566
- s.add_development_dependency "q", "= 1"
567
- end
568
-
569
- quick_gem "q", "1"
570
-
571
- un = Gem::Uninstaller.new("q", :check_dev => true)
572
- ui = Gem::MockGemUi.new("y\n")
573
-
574
- use_ui ui do
575
- un.uninstall
576
- end
577
-
578
- lines = ui.output.split("\n")
579
- lines.shift
580
-
581
- assert_match %r{You have requested to uninstall the gem:}, lines.shift
582
- lines.shift
583
- lines.shift
584
-
585
- assert_match %r{r-1 depends on q \(= 1, development\)}, lines.shift
586
- assert_match %r{Successfully uninstalled q-1}, lines.last
587
- end
588
-
589
- def test_uninstall_prompt_only_lists_the_dependents_that_prevented_uninstallation
590
- quick_gem "r", "1" do |s|
591
- s.add_development_dependency "q", "= 1"
592
- end
593
-
594
- quick_gem "s", "1" do |s|
595
- s.add_dependency "q", "= 1"
596
- end
597
-
598
- quick_gem "q", "1"
599
-
600
- un = Gem::Uninstaller.new("q", :check_dev => false)
601
- ui = Gem::MockGemUi.new("y\n")
602
-
603
- use_ui ui do
604
- un.uninstall
605
- end
606
-
607
- lines = ui.output.split("\n")
608
- lines.shift
609
-
610
- assert_match %r{You have requested to uninstall the gem:}, lines.shift
611
- lines.shift
612
- lines.shift
613
-
614
- assert_match %r{s-1 depends on q \(= 1\)}, lines.shift
615
- assert_match %r{Successfully uninstalled q-1}, lines.last
616
- end
617
-
618
- def test_uninstall_no_permission
619
- uninstaller = Gem::Uninstaller.new @spec.name, :executables => true
620
-
621
- stub_rm_r = lambda do |*args|
622
- _path = args.shift
623
- options = args.shift || Hash.new
624
- # Uninstaller calls a method in RDoc which also calls FileUtils.rm_rf which
625
- # is an alias for FileUtils#rm_r, so skip if we're using the force option
626
- raise Errno::EPERM unless options[:force]
627
- end
628
-
629
- FileUtils.stub :rm_r, stub_rm_r do
630
- assert_raise Gem::UninstallError do
631
- uninstaller.uninstall
632
- end
633
- end
634
- end
635
-
636
- def test_uninstall_keeps_plugins_up_to_date
637
- write_file File.join(@tempdir, "lib", "rubygems_plugin.rb") do |io|
638
- io.write "# do nothing"
639
- end
640
-
641
- plugin_path = File.join Gem.plugindir, "a_plugin.rb"
642
-
643
- @spec.version = "1"
644
- Gem::Installer.at(Gem::Package.build(@spec), :force => true).install
645
-
646
- refute File.exist?(plugin_path), "version without plugin installed, but plugin written"
647
-
648
- @spec.files += %w[lib/rubygems_plugin.rb]
649
- @spec.version = "2"
650
- Gem::Installer.at(Gem::Package.build(@spec), :force => true).install
651
-
652
- assert File.exist?(plugin_path), "version with plugin installed, but plugin not written"
653
- assert_match %r{\Arequire.*a-2/lib/rubygems_plugin\.rb}, File.read(plugin_path), "written plugin has incorrect content"
654
-
655
- @spec.version = "3"
656
- Gem::Installer.at(Gem::Package.build(@spec), :force => true).install
657
-
658
- assert File.exist?(plugin_path), "version with plugin installed, but plugin removed"
659
- assert_match %r{\Arequire.*a-3/lib/rubygems_plugin\.rb}, File.read(plugin_path), "old version installed, but plugin updated"
660
-
661
- Gem::Uninstaller.new("a", :version => "1", :executables => true).uninstall
662
-
663
- assert File.exist?(plugin_path), "plugin removed when old version uninstalled"
664
- assert_match %r{\Arequire.*a-3/lib/rubygems_plugin\.rb}, File.read(plugin_path), "old version uninstalled, but plugin updated"
665
-
666
- Gem::Uninstaller.new("a", version: "3", :executables => true).uninstall
667
-
668
- assert File.exist?(plugin_path), "plugin removed when old version uninstalled and another version with plugin still present"
669
- assert_match %r{\Arequire.*a-2/lib/rubygems_plugin\.rb}, File.read(plugin_path), "latest version uninstalled, but plugin not updated to previous version"
670
-
671
- Gem::Uninstaller.new("a", version: "2", :executables => true).uninstall
672
-
673
- refute File.exist?(plugin_path), "last version uninstalled, but plugin still present"
674
- end
675
- end
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "helper"
4
-
5
- class TestGemUnsatisfiableDependencyError < Gem::TestCase
6
- def setup
7
- super
8
-
9
- @a_dep = dep "a", "~> 1"
10
-
11
- @req = Gem::Resolver::DependencyRequest.new @a_dep, nil
12
-
13
- @e = Gem::UnsatisfiableDependencyError.new @req
14
- end
15
-
16
- def test_errors
17
- assert_equal [], @e.errors
18
-
19
- @e.errors << :a
20
-
21
- assert_equal [:a], @e.errors
22
- end
23
-
24
- def test_name
25
- assert_equal "a", @e.name
26
- end
27
-
28
- def test_version
29
- assert_equal @a_dep.requirement, @e.version
30
- end
31
- end