rubygems-update 3.4.22 → 3.5.1

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 (540) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +105 -2
  3. data/Manifest.txt +46 -221
  4. data/README.md +1 -3
  5. data/bundler/CHANGELOG.md +63 -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 +254 -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 +46 -30
  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/.document +1 -0
  134. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  135. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +53 -6
  136. data/bundler/lib/bundler/vendor/fileutils/.document +1 -0
  137. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +8 -20
  138. data/bundler/lib/bundler/vendor/net-http-persistent/.document +1 -0
  139. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +3 -3
  140. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +2 -2
  141. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +1 -1
  142. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +34 -34
  143. data/bundler/lib/bundler/vendor/pub_grub/.document +1 -0
  144. data/bundler/lib/bundler/vendor/thor/.document +1 -0
  145. data/bundler/lib/bundler/vendor/tsort/.document +1 -0
  146. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +3 -0
  147. data/bundler/lib/bundler/vendor/uri/.document +1 -0
  148. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +256 -132
  149. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1 -0
  150. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +95 -31
  151. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  152. data/bundler/lib/bundler/vendored_net_http.rb +8 -0
  153. data/bundler/lib/bundler/vendored_persistent.rb +0 -4
  154. data/bundler/lib/bundler/vendored_timeout.rb +8 -0
  155. data/bundler/lib/bundler/version.rb +1 -1
  156. data/bundler/lib/bundler/vlad.rb +1 -1
  157. data/bundler/lib/bundler/yaml_serializer.rb +3 -3
  158. data/bundler/lib/bundler.rb +41 -32
  159. data/lib/rubygems/available_set.rb +4 -4
  160. data/lib/rubygems/basic_specification.rb +35 -37
  161. data/lib/rubygems/bundler_version_finder.rb +4 -4
  162. data/lib/rubygems/ci_detector.rb +75 -0
  163. data/lib/rubygems/command.rb +13 -15
  164. data/lib/rubygems/command_manager.rb +5 -4
  165. data/lib/rubygems/commands/build_command.rb +2 -2
  166. data/lib/rubygems/commands/cert_command.rb +1 -2
  167. data/lib/rubygems/commands/check_command.rb +4 -4
  168. data/lib/rubygems/commands/cleanup_command.rb +12 -14
  169. data/lib/rubygems/commands/contents_command.rb +4 -4
  170. data/lib/rubygems/commands/dependency_command.rb +4 -5
  171. data/lib/rubygems/commands/environment_command.rb +1 -3
  172. data/lib/rubygems/commands/exec_command.rb +1 -1
  173. data/lib/rubygems/commands/fetch_command.rb +2 -2
  174. data/lib/rubygems/commands/generate_index_command.rb +39 -74
  175. data/lib/rubygems/commands/help_command.rb +3 -3
  176. data/lib/rubygems/commands/info_command.rb +2 -2
  177. data/lib/rubygems/commands/install_command.rb +8 -16
  178. data/lib/rubygems/commands/list_command.rb +2 -2
  179. data/lib/rubygems/commands/lock_command.rb +1 -1
  180. data/lib/rubygems/commands/open_command.rb +1 -1
  181. data/lib/rubygems/commands/owner_command.rb +1 -1
  182. data/lib/rubygems/commands/pristine_command.rb +13 -15
  183. data/lib/rubygems/commands/push_command.rb +2 -2
  184. data/lib/rubygems/commands/query_command.rb +4 -5
  185. data/lib/rubygems/commands/rdoc_command.rb +2 -2
  186. data/lib/rubygems/commands/search_command.rb +2 -2
  187. data/lib/rubygems/commands/setup_command.rb +31 -34
  188. data/lib/rubygems/commands/sources_command.rb +12 -12
  189. data/lib/rubygems/commands/specification_command.rb +10 -10
  190. data/lib/rubygems/commands/stale_command.rb +1 -1
  191. data/lib/rubygems/commands/uninstall_command.rb +9 -10
  192. data/lib/rubygems/commands/unpack_command.rb +4 -4
  193. data/lib/rubygems/commands/update_command.rb +10 -12
  194. data/lib/rubygems/commands/which_command.rb +1 -1
  195. data/lib/rubygems/commands/yank_command.rb +1 -1
  196. data/lib/rubygems/compatibility.rb +5 -6
  197. data/lib/rubygems/config_file.rb +4 -4
  198. data/lib/rubygems/core_ext/kernel_gem.rb +0 -2
  199. data/lib/rubygems/core_ext/kernel_require.rb +19 -48
  200. data/lib/rubygems/core_ext/kernel_warn.rb +1 -1
  201. data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
  202. data/lib/rubygems/defaults.rb +15 -3
  203. data/lib/rubygems/dependency.rb +12 -14
  204. data/lib/rubygems/dependency_installer.rb +29 -30
  205. data/lib/rubygems/dependency_list.rb +1 -1
  206. data/lib/rubygems/deprecate.rb +16 -15
  207. data/lib/rubygems/doctor.rb +5 -5
  208. data/lib/rubygems/errors.rb +2 -6
  209. data/lib/rubygems/exceptions.rb +2 -1
  210. data/lib/rubygems/ext/builder.rb +15 -10
  211. data/lib/rubygems/ext/cargo_builder.rb +5 -5
  212. data/lib/rubygems/ext/ext_conf_builder.rb +1 -3
  213. data/lib/rubygems/gem_runner.rb +4 -4
  214. data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +3 -3
  215. data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +3 -3
  216. data/lib/rubygems/gemcutter_utilities.rb +18 -19
  217. data/lib/rubygems/install_update_options.rb +18 -19
  218. data/lib/rubygems/installer.rb +59 -33
  219. data/lib/rubygems/installer_uninstaller_utils.rb +0 -2
  220. data/lib/rubygems/local_remote_options.rb +7 -10
  221. data/lib/rubygems/name_tuple.rb +7 -9
  222. data/lib/rubygems/net/http.rb +3 -0
  223. data/lib/rubygems/net-http/.document +1 -0
  224. data/lib/rubygems/net-http/LICENSE.txt +22 -0
  225. data/lib/rubygems/net-http/lib/net/http/backward.rb +40 -0
  226. data/lib/rubygems/net-http/lib/net/http/exceptions.rb +34 -0
  227. data/lib/rubygems/net-http/lib/net/http/generic_request.rb +414 -0
  228. data/lib/rubygems/net-http/lib/net/http/header.rb +981 -0
  229. data/lib/rubygems/net-http/lib/net/http/proxy_delta.rb +17 -0
  230. data/lib/rubygems/net-http/lib/net/http/request.rb +88 -0
  231. data/lib/rubygems/net-http/lib/net/http/requests.rb +425 -0
  232. data/lib/rubygems/net-http/lib/net/http/response.rb +738 -0
  233. data/lib/rubygems/net-http/lib/net/http/responses.rb +1174 -0
  234. data/lib/rubygems/net-http/lib/net/http/status.rb +84 -0
  235. data/lib/rubygems/net-http/lib/net/http.rb +2496 -0
  236. data/lib/rubygems/net-http/lib/net/https.rb +23 -0
  237. data/lib/rubygems/net-protocol/.document +1 -0
  238. data/lib/rubygems/net-protocol/LICENSE.txt +22 -0
  239. data/lib/rubygems/net-protocol/lib/net/protocol.rb +544 -0
  240. data/lib/rubygems/optparse/lib/optparse.rb +39 -17
  241. data/lib/rubygems/package/old.rb +2 -2
  242. data/lib/rubygems/package/tar_header.rb +45 -39
  243. data/lib/rubygems/package/tar_reader/entry.rb +5 -4
  244. data/lib/rubygems/package/tar_reader.rb +5 -3
  245. data/lib/rubygems/package/tar_writer.rb +19 -17
  246. data/lib/rubygems/package.rb +27 -26
  247. data/lib/rubygems/package_task.rb +2 -2
  248. data/lib/rubygems/path_support.rb +9 -10
  249. data/lib/rubygems/platform.rb +60 -45
  250. data/lib/rubygems/query_utils.rb +7 -9
  251. data/lib/rubygems/remote_fetcher.rb +15 -15
  252. data/lib/rubygems/request/connection_pools.rb +3 -3
  253. data/lib/rubygems/request.rb +20 -17
  254. data/lib/rubygems/request_set/gem_dependency_api.rb +119 -122
  255. data/lib/rubygems/request_set/lockfile/parser.rb +9 -9
  256. data/lib/rubygems/request_set/lockfile/tokenizer.rb +20 -12
  257. data/lib/rubygems/request_set/lockfile.rb +6 -11
  258. data/lib/rubygems/request_set.rb +5 -5
  259. data/lib/rubygems/requirement.rb +7 -7
  260. data/lib/rubygems/resolv/.document +1 -0
  261. data/lib/rubygems/resolv/LICENSE.txt +22 -0
  262. data/lib/rubygems/resolv/lib/resolv.rb +3387 -0
  263. data/lib/rubygems/resolver/activation_request.rb +1 -3
  264. data/lib/rubygems/resolver/api_set/gem_parser.rb +7 -3
  265. data/lib/rubygems/resolver/best_set.rb +1 -1
  266. data/lib/rubygems/resolver/composed_set.rb +1 -1
  267. data/lib/rubygems/resolver/conflict.rb +4 -12
  268. data/lib/rubygems/resolver/index_set.rb +4 -4
  269. data/lib/rubygems/resolver/index_specification.rb +2 -2
  270. data/lib/rubygems/resolver/installer_set.rb +5 -6
  271. data/lib/rubygems/resolver/lock_set.rb +1 -1
  272. data/lib/rubygems/resolver/molinillo/.document +1 -0
  273. data/lib/rubygems/resolver.rb +3 -10
  274. data/lib/rubygems/s3_uri_signer.rb +6 -6
  275. data/lib/rubygems/safe_marshal/elements.rb +138 -0
  276. data/lib/rubygems/safe_marshal/reader.rb +306 -0
  277. data/lib/rubygems/safe_marshal/visitors/stream_printer.rb +31 -0
  278. data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +385 -0
  279. data/lib/rubygems/safe_marshal/visitors/visitor.rb +74 -0
  280. data/lib/rubygems/safe_marshal.rb +74 -0
  281. data/lib/rubygems/safe_yaml.rb +5 -28
  282. data/lib/rubygems/security/policies.rb +36 -38
  283. data/lib/rubygems/security/policy.rb +7 -11
  284. data/lib/rubygems/security/signer.rb +1 -1
  285. data/lib/rubygems/security/trust_dir.rb +3 -3
  286. data/lib/rubygems/security.rb +8 -22
  287. data/lib/rubygems/source/git.rb +1 -3
  288. data/lib/rubygems/source/installed.rb +0 -2
  289. data/lib/rubygems/source/local.rb +5 -8
  290. data/lib/rubygems/source/lock.rb +1 -3
  291. data/lib/rubygems/source/specific_file.rb +0 -1
  292. data/lib/rubygems/source/vendor.rb +0 -2
  293. data/lib/rubygems/source.rb +12 -12
  294. data/lib/rubygems/source_list.rb +4 -4
  295. data/lib/rubygems/spec_fetcher.rb +29 -29
  296. data/lib/rubygems/specification.rb +125 -138
  297. data/lib/rubygems/specification_policy.rb +55 -25
  298. data/lib/rubygems/stub_specification.rb +4 -5
  299. data/lib/rubygems/text.rb +1 -2
  300. data/lib/rubygems/timeout/.document +1 -0
  301. data/lib/rubygems/timeout/LICENSE.txt +22 -0
  302. data/lib/rubygems/timeout/lib/timeout.rb +199 -0
  303. data/lib/rubygems/timeout.rb +3 -0
  304. data/lib/rubygems/tsort/lib/tsort.rb +3 -0
  305. data/lib/rubygems/uninstaller.rb +7 -9
  306. data/lib/rubygems/update_suggestion.rb +5 -18
  307. data/lib/rubygems/uri_formatter.rb +1 -1
  308. data/lib/rubygems/user_interaction.rb +15 -21
  309. data/lib/rubygems/util/licenses.rb +65 -35
  310. data/lib/rubygems/util/list.rb +3 -1
  311. data/lib/rubygems/util.rb +2 -4
  312. data/lib/rubygems/validator.rb +5 -3
  313. data/lib/rubygems/version.rb +34 -28
  314. data/lib/rubygems/version_option.rb +2 -5
  315. data/lib/rubygems/yaml_serializer.rb +3 -3
  316. data/lib/rubygems.rb +37 -37
  317. data/rubygems-update.gemspec +4 -4
  318. data/setup.rb +2 -2
  319. metadata +50 -225
  320. data/lib/rubygems/indexer.rb +0 -428
  321. data/lib/rubygems/mock_gem_ui.rb +0 -86
  322. data/test/rubygems/alternate_cert.pem +0 -19
  323. data/test/rubygems/alternate_cert_32.pem +0 -19
  324. data/test/rubygems/alternate_key.pem +0 -27
  325. data/test/rubygems/bad_rake.rb +0 -3
  326. data/test/rubygems/bundler_test_gem.rb +0 -424
  327. data/test/rubygems/ca_cert.pem +0 -77
  328. data/test/rubygems/child_cert.pem +0 -19
  329. data/test/rubygems/child_cert_32.pem +0 -19
  330. data/test/rubygems/child_key.pem +0 -27
  331. data/test/rubygems/client.pem +0 -107
  332. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  333. data/test/rubygems/data/gem-private_key.pem +0 -27
  334. data/test/rubygems/data/gem-public_cert.pem +0 -20
  335. data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
  336. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  337. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  338. data/test/rubygems/encrypted_private_key.pem +0 -30
  339. data/test/rubygems/expired_cert.pem +0 -19
  340. data/test/rubygems/fake_certlib/openssl.rb +0 -9
  341. data/test/rubygems/foo/discover.rb +0 -1
  342. data/test/rubygems/future_cert.pem +0 -19
  343. data/test/rubygems/future_cert_32.pem +0 -19
  344. data/test/rubygems/good_rake.rb +0 -3
  345. data/test/rubygems/grandchild_cert.pem +0 -19
  346. data/test/rubygems/grandchild_cert_32.pem +0 -19
  347. data/test/rubygems/grandchild_key.pem +0 -27
  348. data/test/rubygems/helper.rb +0 -1649
  349. data/test/rubygems/installer_test_case.rb +0 -248
  350. data/test/rubygems/invalid_client.pem +0 -49
  351. data/test/rubygems/invalid_issuer_cert.pem +0 -20
  352. data/test/rubygems/invalid_issuer_cert_32.pem +0 -20
  353. data/test/rubygems/invalid_key.pem +0 -27
  354. data/test/rubygems/invalid_signer_cert.pem +0 -19
  355. data/test/rubygems/invalid_signer_cert_32.pem +0 -19
  356. data/test/rubygems/invalidchild_cert.pem +0 -19
  357. data/test/rubygems/invalidchild_cert_32.pem +0 -19
  358. data/test/rubygems/invalidchild_key.pem +0 -27
  359. data/test/rubygems/multifactor_auth_utilities.rb +0 -111
  360. data/test/rubygems/package/tar_test_case.rb +0 -175
  361. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  362. data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
  363. data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
  364. data/test/rubygems/plugin/exception/rubygems_plugin.rb +0 -4
  365. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -5
  366. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +0 -4
  367. data/test/rubygems/private3072_key.pem +0 -40
  368. data/test/rubygems/private_ec_key.pem +0 -9
  369. data/test/rubygems/private_key.pem +0 -27
  370. data/test/rubygems/public3072_cert.pem +0 -25
  371. data/test/rubygems/public_cert.pem +0 -20
  372. data/test/rubygems/public_cert_32.pem +0 -19
  373. data/test/rubygems/public_key.pem +0 -9
  374. data/test/rubygems/rubygems/commands/crash_command.rb +0 -5
  375. data/test/rubygems/rubygems_plugin.rb +0 -24
  376. data/test/rubygems/sff/discover.rb +0 -1
  377. data/test/rubygems/simple_gem.rb +0 -68
  378. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -9
  379. data/test/rubygems/specifications/foo-0.0.1-x86-mswin32.gemspec +0 -0
  380. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +0 -14
  381. data/test/rubygems/ssl_cert.pem +0 -80
  382. data/test/rubygems/ssl_key.pem +0 -27
  383. data/test/rubygems/test_bundled_ca.rb +0 -61
  384. data/test/rubygems/test_config.rb +0 -28
  385. data/test/rubygems/test_deprecate.rb +0 -158
  386. data/test/rubygems/test_exit.rb +0 -17
  387. data/test/rubygems/test_gem.rb +0 -1799
  388. data/test/rubygems/test_gem_available_set.rb +0 -130
  389. data/test/rubygems/test_gem_bundler_version_finder.rb +0 -127
  390. data/test/rubygems/test_gem_command.rb +0 -403
  391. data/test/rubygems/test_gem_command_manager.rb +0 -400
  392. data/test/rubygems/test_gem_commands_build_command.rb +0 -739
  393. data/test/rubygems/test_gem_commands_cert_command.rb +0 -866
  394. data/test/rubygems/test_gem_commands_check_command.rb +0 -68
  395. data/test/rubygems/test_gem_commands_cleanup_command.rb +0 -292
  396. data/test/rubygems/test_gem_commands_contents_command.rb +0 -271
  397. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -228
  398. data/test/rubygems/test_gem_commands_environment_command.rb +0 -169
  399. data/test/rubygems/test_gem_commands_exec_command.rb +0 -857
  400. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -258
  401. data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -81
  402. data/test/rubygems/test_gem_commands_help_command.rb +0 -94
  403. data/test/rubygems/test_gem_commands_info_command.rb +0 -70
  404. data/test/rubygems/test_gem_commands_install_command.rb +0 -1573
  405. data/test/rubygems/test_gem_commands_list_command.rb +0 -33
  406. data/test/rubygems/test_gem_commands_lock_command.rb +0 -67
  407. data/test/rubygems/test_gem_commands_mirror.rb +0 -20
  408. data/test/rubygems/test_gem_commands_open_command.rb +0 -101
  409. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -50
  410. data/test/rubygems/test_gem_commands_owner_command.rb +0 -503
  411. data/test/rubygems/test_gem_commands_pristine_command.rb +0 -708
  412. data/test/rubygems/test_gem_commands_push_command.rb +0 -603
  413. data/test/rubygems/test_gem_commands_query_command.rb +0 -858
  414. data/test/rubygems/test_gem_commands_search_command.rb +0 -16
  415. data/test/rubygems/test_gem_commands_server_command.rb +0 -20
  416. data/test/rubygems/test_gem_commands_setup_command.rb +0 -474
  417. data/test/rubygems/test_gem_commands_signin_command.rb +0 -259
  418. data/test/rubygems/test_gem_commands_signout_command.rb +0 -30
  419. data/test/rubygems/test_gem_commands_sources_command.rb +0 -534
  420. data/test/rubygems/test_gem_commands_specification_command.rb +0 -277
  421. data/test/rubygems/test_gem_commands_stale_command.rb +0 -43
  422. data/test/rubygems/test_gem_commands_uninstall_command.rb +0 -542
  423. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -224
  424. data/test/rubygems/test_gem_commands_update_command.rb +0 -836
  425. data/test/rubygems/test_gem_commands_which_command.rb +0 -85
  426. data/test/rubygems/test_gem_commands_yank_command.rb +0 -299
  427. data/test/rubygems/test_gem_config_file.rb +0 -551
  428. data/test/rubygems/test_gem_dependency.rb +0 -398
  429. data/test/rubygems/test_gem_dependency_installer.rb +0 -1190
  430. data/test/rubygems/test_gem_dependency_list.rb +0 -265
  431. data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -27
  432. data/test/rubygems/test_gem_doctor.rb +0 -195
  433. data/test/rubygems/test_gem_ext_builder.rb +0 -337
  434. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +0 -1
  435. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +0 -10
  436. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +0 -249
  437. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +0 -10
  438. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +0 -27
  439. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +0 -3
  440. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +0 -1
  441. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +0 -249
  442. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +0 -10
  443. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +0 -10
  444. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +0 -51
  445. data/test/rubygems/test_gem_ext_cargo_builder.rb +0 -167
  446. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +0 -34
  447. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +0 -60
  448. data/test/rubygems/test_gem_ext_cmake_builder.rb +0 -84
  449. data/test/rubygems/test_gem_ext_configure_builder.rb +0 -80
  450. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -229
  451. data/test/rubygems/test_gem_ext_rake_builder.rb +0 -113
  452. data/test/rubygems/test_gem_gem_runner.rb +0 -119
  453. data/test/rubygems/test_gem_gemcutter_utilities.rb +0 -361
  454. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -60
  455. data/test/rubygems/test_gem_indexer.rb +0 -381
  456. data/test/rubygems/test_gem_install_update_options.rb +0 -208
  457. data/test/rubygems/test_gem_installer.rb +0 -2512
  458. data/test/rubygems/test_gem_local_remote_options.rb +0 -133
  459. data/test/rubygems/test_gem_name_tuple.rb +0 -43
  460. data/test/rubygems/test_gem_package.rb +0 -1306
  461. data/test/rubygems/test_gem_package_old.rb +0 -91
  462. data/test/rubygems/test_gem_package_tar_header.rb +0 -226
  463. data/test/rubygems/test_gem_package_tar_reader.rb +0 -150
  464. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -350
  465. data/test/rubygems/test_gem_package_tar_writer.rb +0 -331
  466. data/test/rubygems/test_gem_package_task.rb +0 -118
  467. data/test/rubygems/test_gem_path_support.rb +0 -139
  468. data/test/rubygems/test_gem_platform.rb +0 -497
  469. data/test/rubygems/test_gem_rdoc.rb +0 -137
  470. data/test/rubygems/test_gem_remote_fetcher.rb +0 -1227
  471. data/test/rubygems/test_gem_request.rb +0 -547
  472. data/test/rubygems/test_gem_request_connection_pools.rb +0 -152
  473. data/test/rubygems/test_gem_request_set.rb +0 -672
  474. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +0 -853
  475. data/test/rubygems/test_gem_request_set_lockfile.rb +0 -469
  476. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +0 -544
  477. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +0 -307
  478. data/test/rubygems/test_gem_requirement.rb +0 -505
  479. data/test/rubygems/test_gem_resolver.rb +0 -859
  480. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -43
  481. data/test/rubygems/test_gem_resolver_api_set.rb +0 -210
  482. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -167
  483. data/test/rubygems/test_gem_resolver_best_set.rb +0 -159
  484. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -44
  485. data/test/rubygems/test_gem_resolver_conflict.rb +0 -82
  486. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -83
  487. data/test/rubygems/test_gem_resolver_git_set.rb +0 -188
  488. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -114
  489. data/test/rubygems/test_gem_resolver_index_set.rb +0 -88
  490. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -93
  491. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -47
  492. data/test/rubygems/test_gem_resolver_installer_set.rb +0 -320
  493. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -44
  494. data/test/rubygems/test_gem_resolver_lock_set.rb +0 -62
  495. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -98
  496. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -19
  497. data/test/rubygems/test_gem_resolver_specification.rb +0 -63
  498. data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -82
  499. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -82
  500. data/test/rubygems/test_gem_security.rb +0 -341
  501. data/test/rubygems/test_gem_security_policy.rb +0 -535
  502. data/test/rubygems/test_gem_security_signer.rb +0 -218
  503. data/test/rubygems/test_gem_security_trust_dir.rb +0 -99
  504. data/test/rubygems/test_gem_silent_ui.rb +0 -123
  505. data/test/rubygems/test_gem_source.rb +0 -254
  506. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -37
  507. data/test/rubygems/test_gem_source_git.rb +0 -310
  508. data/test/rubygems/test_gem_source_installed.rb +0 -35
  509. data/test/rubygems/test_gem_source_list.rb +0 -119
  510. data/test/rubygems/test_gem_source_local.rb +0 -107
  511. data/test/rubygems/test_gem_source_lock.rb +0 -113
  512. data/test/rubygems/test_gem_source_specific_file.rb +0 -76
  513. data/test/rubygems/test_gem_source_subpath_problem.rb +0 -50
  514. data/test/rubygems/test_gem_source_vendor.rb +0 -30
  515. data/test/rubygems/test_gem_spec_fetcher.rb +0 -338
  516. data/test/rubygems/test_gem_specification.rb +0 -3856
  517. data/test/rubygems/test_gem_stream_ui.rb +0 -255
  518. data/test/rubygems/test_gem_stub_specification.rb +0 -278
  519. data/test/rubygems/test_gem_text.rb +0 -103
  520. data/test/rubygems/test_gem_uninstaller.rb +0 -675
  521. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -31
  522. data/test/rubygems/test_gem_update_suggestion.rb +0 -209
  523. data/test/rubygems/test_gem_uri.rb +0 -41
  524. data/test/rubygems/test_gem_uri_formatter.rb +0 -27
  525. data/test/rubygems/test_gem_util.rb +0 -91
  526. data/test/rubygems/test_gem_validator.rb +0 -42
  527. data/test/rubygems/test_gem_version.rb +0 -305
  528. data/test/rubygems/test_gem_version_option.rb +0 -165
  529. data/test/rubygems/test_kernel.rb +0 -124
  530. data/test/rubygems/test_project_sanity.rb +0 -49
  531. data/test/rubygems/test_remote_fetch_error.rb +0 -20
  532. data/test/rubygems/test_require.rb +0 -732
  533. data/test/rubygems/test_rubygems.rb +0 -76
  534. data/test/rubygems/test_webauthn_listener.rb +0 -143
  535. data/test/rubygems/test_webauthn_listener_response.rb +0 -93
  536. data/test/rubygems/test_webauthn_poller.rb +0 -124
  537. data/test/rubygems/utilities.rb +0 -436
  538. data/test/rubygems/wrong_key_cert.pem +0 -19
  539. data/test/rubygems/wrong_key_cert_32.pem +0 -19
  540. 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