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,859 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "helper"
4
-
5
- class TestGemResolver < Gem::TestCase
6
- def setup
7
- super
8
-
9
- @DR = Gem::Resolver
10
- end
11
-
12
- def make_dep(name, *req)
13
- Gem::Dependency.new(name, *req)
14
- end
15
-
16
- def set(*specs)
17
- source = Gem::Source.new URI @gem_repo
18
-
19
- specs = specs.map do |spec|
20
- Gem::Resolver::SpecSpecification.new nil, spec, source
21
- end
22
-
23
- StaticSet.new(specs)
24
- end
25
-
26
- def assert_resolves_to(expected, resolver)
27
- actual = resolver.resolve
28
-
29
- exp = expected.sort_by {|s| s.full_name }
30
- act = actual.map {|a| a.spec.spec }.sort_by {|s| s.full_name }
31
-
32
- msg = "Set of gems was not the same: #{exp.map {|x| x.full_name }.inspect} != #{act.map {|x| x.full_name }.inspect}"
33
-
34
- assert_equal exp, act, msg
35
- rescue Gem::DependencyResolutionError => e
36
- flunk e.message
37
- end
38
-
39
- def test_self_compose_sets_best_set
40
- best_set = @DR::BestSet.new
41
-
42
- composed = @DR.compose_sets best_set
43
-
44
- assert_equal best_set, composed
45
- end
46
-
47
- def test_self_compose_sets_multiple
48
- index_set = @DR::IndexSet.new
49
- vendor_set = @DR::VendorSet.new
50
-
51
- composed = @DR.compose_sets index_set, vendor_set
52
-
53
- assert_kind_of Gem::Resolver::ComposedSet, composed
54
-
55
- assert_equal [index_set, vendor_set], composed.sets
56
- end
57
-
58
- def test_self_compose_sets_nest
59
- index_set = @DR::IndexSet.new
60
- vendor_set = @DR::VendorSet.new
61
-
62
- inner = @DR.compose_sets index_set, vendor_set
63
-
64
- current_set = @DR::CurrentSet.new
65
-
66
- composed = @DR.compose_sets inner, current_set
67
-
68
- assert_kind_of Gem::Resolver::ComposedSet, composed
69
-
70
- assert_equal [index_set, vendor_set, current_set], composed.sets
71
- end
72
-
73
- def test_self_compose_sets_nil
74
- index_set = @DR::IndexSet.new
75
-
76
- composed = @DR.compose_sets index_set, nil
77
-
78
- assert_same index_set, composed
79
-
80
- e = assert_raise ArgumentError do
81
- @DR.compose_sets nil
82
- end
83
-
84
- assert_equal "one set in the composition must be non-nil", e.message
85
- end
86
-
87
- def test_self_compose_sets_single
88
- index_set = @DR::IndexSet.new
89
-
90
- composed = @DR.compose_sets index_set
91
-
92
- assert_same index_set, composed
93
- end
94
-
95
- def test_requests
96
- a1 = util_spec "a", 1, "b" => 2
97
-
98
- r1 = Gem::Resolver::DependencyRequest.new dep("a", "= 1"), nil
99
-
100
- act = Gem::Resolver::ActivationRequest.new a1, r1
101
-
102
- res = Gem::Resolver.new [a1]
103
-
104
- reqs = []
105
-
106
- res.requests a1, act, reqs
107
-
108
- assert_equal ["b (= 2)"], reqs.map {|req| req.to_s }
109
- end
110
-
111
- def test_requests_development
112
- a1 = util_spec "a", 1, "b" => 2
113
-
114
- spec = Gem::Resolver::SpecSpecification.new nil, a1
115
- def spec.fetch_development_dependencies
116
- @called = true
117
- end
118
-
119
- r1 = Gem::Resolver::DependencyRequest.new dep("a", "= 1"), nil
120
-
121
- act = Gem::Resolver::ActivationRequest.new spec, r1
122
-
123
- res = Gem::Resolver.new [act]
124
- res.development = true
125
-
126
- reqs = []
127
-
128
- res.requests spec, act, reqs
129
-
130
- assert_equal ["b (= 2)"], reqs.map {|req| req.to_s }
131
-
132
- assert spec.instance_variable_defined? :@called
133
- end
134
-
135
- def test_requests_ignore_dependencies
136
- a1 = util_spec "a", 1, "b" => 2
137
-
138
- r1 = Gem::Resolver::DependencyRequest.new dep("a", "= 1"), nil
139
-
140
- act = Gem::Resolver::ActivationRequest.new a1, r1
141
-
142
- res = Gem::Resolver.new [a1]
143
- res.ignore_dependencies = true
144
-
145
- reqs = []
146
-
147
- res.requests a1, act, reqs
148
-
149
- assert_empty reqs
150
- end
151
-
152
- def test_resolve_conservative
153
- a1_spec = util_spec "a", 1
154
-
155
- a2_spec = util_spec "a", 2 do |s|
156
- s.add_dependency "b", 2
157
- s.add_dependency "c"
158
- end
159
-
160
- b1_spec = util_spec "b", 1
161
- b2_spec = util_spec "b", 2
162
-
163
- c1_spec = util_spec "c", 1 do |s|
164
- s.add_dependency "d", 2
165
- end
166
-
167
- c2_spec = util_spec "c", 2 do |s|
168
- s.add_dependency "d", 2
169
- end
170
-
171
- d1_spec = util_spec "d", 1 do |s|
172
- s.add_dependency "e"
173
- end
174
-
175
- d2_spec = util_spec "d", 2 do |s|
176
- s.add_dependency "e"
177
- end
178
-
179
- e1_spec = util_spec "e", 1
180
- e2_spec = util_spec "e", 2
181
-
182
- a_dep = make_dep "a", "= 2"
183
- e_dep = make_dep "e"
184
-
185
- # When requesting to install:
186
- # a-2, e
187
- deps = [a_dep, e_dep]
188
-
189
- s = set a1_spec, a2_spec, b1_spec, b2_spec, c1_spec, c2_spec, d1_spec, d2_spec, e1_spec, e2_spec
190
-
191
- res = Gem::Resolver.new deps, s
192
-
193
- # With the following gems already installed:
194
- # a-1, b-1, c-1, e-1
195
- res.skip_gems = { "a" => [a1_spec], "b" => [b1_spec], "c" => [c1_spec], "e" => [e1_spec] }
196
-
197
- # Make sure the following gems end up getting used/installed/upgraded:
198
- # a-2 (upgraded)
199
- # b-2 (upgraded), specific dependency from a-2
200
- # c-1 (used, not upgraded), open dependency from a-2
201
- # d-2 (installed), specific dependency from c-2
202
- # e-1 (used, not upgraded), open dependency from request
203
- assert_resolves_to [a2_spec, b2_spec, c1_spec, d2_spec, e1_spec], res
204
- end
205
-
206
- def test_resolve_development
207
- a_spec = util_spec "a", 1 do |s|
208
- s.add_development_dependency "b"
209
- end
210
-
211
- b_spec = util_spec "b", 1 do
212
- |s| s.add_development_dependency "c"
213
- end
214
-
215
- c_spec = util_spec "c", 1
216
-
217
- a_dep = make_dep "a", "= 1"
218
-
219
- deps = [a_dep]
220
-
221
- s = set a_spec, b_spec, c_spec
222
-
223
- res = Gem::Resolver.new deps, s
224
-
225
- res.development = true
226
-
227
- assert_resolves_to [a_spec, b_spec, c_spec], res
228
- end
229
-
230
- def test_resolve_development_shallow
231
- a_spec = util_spec "a", 1 do |s|
232
- s.add_development_dependency "b"
233
- s.add_runtime_dependency "d"
234
- end
235
-
236
- b_spec = util_spec "b", 1 do |s|
237
- s.add_development_dependency "c"
238
- end
239
-
240
- c_spec = util_spec "c", 1
241
-
242
- d_spec = util_spec "d", 1 do |s|
243
- s.add_development_dependency "e"
244
- end
245
-
246
- e_spec = util_spec "e", 1
247
-
248
- a_dep = make_dep "a", "= 1"
249
-
250
- deps = [a_dep]
251
-
252
- s = set a_spec, b_spec, c_spec, d_spec, e_spec
253
-
254
- res = Gem::Resolver.new deps, s
255
-
256
- res.development = true
257
- res.development_shallow = true
258
-
259
- assert_resolves_to [a_spec, b_spec, d_spec], res
260
- end
261
-
262
- def test_resolve_remote_missing_dependency
263
- @fetcher = Gem::FakeFetcher.new
264
- Gem::RemoteFetcher.fetcher = @fetcher
265
-
266
- a_dep = make_dep "a", "= 1"
267
-
268
- res = Gem::Resolver.new [a_dep], Gem::Resolver::IndexSet.new
269
-
270
- e = assert_raise Gem::UnsatisfiableDependencyError do
271
- res.resolve
272
- end
273
-
274
- refute_empty e.errors
275
- end
276
-
277
- def test_no_overlap_specifically
278
- a = util_spec "a", "1"
279
- b = util_spec "b", "1"
280
-
281
- ad = make_dep "a", "= 1"
282
- bd = make_dep "b", "= 1"
283
-
284
- deps = [ad, bd]
285
-
286
- s = set(a, b)
287
-
288
- res = Gem::Resolver.new(deps, s)
289
-
290
- assert_resolves_to [a, b], res
291
- end
292
-
293
- def test_pulls_in_dependencies
294
- a = util_spec "a", "1"
295
- b = util_spec "b", "1", "c" => "= 1"
296
- c = util_spec "c", "1"
297
-
298
- ad = make_dep "a", "= 1"
299
- bd = make_dep "b", "= 1"
300
-
301
- deps = [ad, bd]
302
-
303
- s = set(a, b, c)
304
-
305
- res = Gem::Resolver.new(deps, s)
306
-
307
- assert_resolves_to [a, b, c], res
308
- end
309
-
310
- def test_picks_highest_version
311
- a1 = util_spec "a", "1"
312
- a2 = util_spec "a", "2"
313
-
314
- s = set(a1, a2)
315
-
316
- ad = make_dep "a"
317
-
318
- res = Gem::Resolver.new([ad], s)
319
-
320
- assert_resolves_to [a2], res
321
- end
322
-
323
- def test_picks_best_platform
324
- is = Gem::Resolver::IndexSpecification
325
- unknown = Gem::Platform.new "unknown"
326
-
327
- spec_fetcher do |fetcher|
328
- fetcher.spec "a", 2
329
-
330
- fetcher.spec "a", 2 do |s|
331
- s.platform = Gem::Platform.local
332
- end
333
-
334
- fetcher.spec "a", 3 do |s|
335
- s.platform = unknown
336
- end
337
- end
338
-
339
- v2 = v(2)
340
- v3 = v(3)
341
- source = Gem::Source.new @gem_repo
342
-
343
- s = set
344
-
345
- a2 = is.new s, "a", v2, source, Gem::Platform::RUBY
346
- a2_p1 = is.new s, "a", v2, source, Gem::Platform.local.to_s
347
- a3_p2 = is.new s, "a", v3, source, unknown
348
-
349
- s.add a3_p2
350
- s.add a2_p1
351
- s.add a2
352
-
353
- ad = make_dep "a"
354
-
355
- res = Gem::Resolver.new([ad], s)
356
-
357
- assert_resolves_to [a2_p1.spec], res
358
- end
359
-
360
- def test_does_not_pick_musl_variants_on_non_musl_linux
361
- util_set_arch "aarch64-linux" do
362
- is = Gem::Resolver::IndexSpecification
363
-
364
- linux_musl = Gem::Platform.new("aarch64-linux-musl")
365
-
366
- spec_fetcher do |fetcher|
367
- fetcher.spec "libv8-node", "15.14.0.1" do |s|
368
- s.platform = Gem::Platform.local
369
- end
370
-
371
- fetcher.spec "libv8-node", "15.14.0.1" do |s|
372
- s.platform = linux_musl
373
- end
374
- end
375
-
376
- v15 = v("15.14.0.1")
377
- source = Gem::Source.new @gem_repo
378
-
379
- s = set
380
-
381
- v15_linux = is.new s, "libv8-node", v15, source, Gem::Platform.local.to_s
382
- v15_linux_musl = is.new s, "libv8-node", v15, source, linux_musl.to_s
383
-
384
- s.add v15_linux
385
- s.add v15_linux_musl
386
-
387
- ad = make_dep "libv8-node", "= 15.14.0.1"
388
-
389
- res = Gem::Resolver.new([ad], s)
390
-
391
- assert_resolves_to [v15_linux.spec], res
392
- end
393
- end
394
-
395
- def test_pick_generic_linux_variants_on_musl_linux
396
- util_set_arch "aarch64-linux-musl" do
397
- is = Gem::Resolver::IndexSpecification
398
-
399
- linux = Gem::Platform.new("aarch64-linux")
400
-
401
- spec_fetcher do |fetcher|
402
- fetcher.spec "libv8-node", "15.14.0.1" do |s|
403
- s.platform = linux
404
- end
405
-
406
- fetcher.spec "libv8-node", "15.14.0.1"
407
- end
408
-
409
- v15 = v("15.14.0.1")
410
- source = Gem::Source.new @gem_repo
411
-
412
- s = set
413
-
414
- v15_ruby = is.new s, "libv8-node", v15, source, Gem::Platform::RUBY
415
- v15_linux = is.new s, "libv8-node", v15, source, linux.to_s
416
-
417
- s.add v15_linux
418
- s.add v15_ruby
419
-
420
- ad = make_dep "libv8-node", "= 15.14.0.1"
421
-
422
- res = Gem::Resolver.new([ad], s)
423
-
424
- assert_resolves_to [v15_linux.spec], res
425
- end
426
- end
427
-
428
- def test_only_returns_spec_once
429
- a1 = util_spec "a", "1", "c" => "= 1"
430
- b1 = util_spec "b", "1", "c" => "= 1"
431
-
432
- c1 = util_spec "c", "1"
433
-
434
- ad = make_dep "a"
435
- bd = make_dep "b"
436
-
437
- s = set(a1, b1, c1)
438
-
439
- res = Gem::Resolver.new([ad, bd], s)
440
-
441
- assert_resolves_to [a1, b1, c1], res
442
- end
443
-
444
- def test_picks_lower_version_when_needed
445
- a1 = util_spec "a", "1", "c" => ">= 1"
446
- b1 = util_spec "b", "1", "c" => "= 1"
447
-
448
- c1 = util_spec "c", "1"
449
- c2 = util_spec "c", "2"
450
-
451
- ad = make_dep "a"
452
- bd = make_dep "b"
453
-
454
- s = set(a1, b1, c1, c2)
455
-
456
- res = Gem::Resolver.new([ad, bd], s)
457
-
458
- assert_resolves_to [a1, b1, c1], res
459
- end
460
-
461
- def test_conflict_resolution_only_effects_correct_spec
462
- a1 = util_spec "a", "1", "c" => ">= 1"
463
- b1 = util_spec "b", "1", "d" => ">= 1"
464
-
465
- d3 = util_spec "d", "3", "c" => "= 1"
466
- d4 = util_spec "d", "4", "c" => "= 1"
467
-
468
- c1 = util_spec "c", "1"
469
- c2 = util_spec "c", "2"
470
-
471
- ad = make_dep "a"
472
- bd = make_dep "b"
473
-
474
- s = set(a1, b1, d3, d4, c1, c2)
475
-
476
- res = Gem::Resolver.new([ad, bd], s)
477
-
478
- assert_resolves_to [a1, b1, c1, d4], res
479
- end
480
-
481
- def test_backoff_higher_version_to_satisfy_dep
482
- t3 = util_spec "railties", "3.2"
483
- t4 = util_spec "railties", "4.0"
484
-
485
- r3 = util_spec "rails", "3.2", "railties" => "= 3.2"
486
- r4 = util_spec "rails", "4.0", "railties" => "= 4.0"
487
-
488
- rd = make_dep "rails", "3.2"
489
-
490
- c3 = util_spec "coffee", "3.0", "railties" => "~> 3.0"
491
- c4 = util_spec "coffee", "4.0", "railties" => "~> 4.0"
492
-
493
- cd = make_dep "coffee"
494
-
495
- s = set(t3, t4, r3, r4, c3, c4)
496
-
497
- res = Gem::Resolver.new([rd, cd], s)
498
-
499
- assert_resolves_to [r3, t3, c3], res
500
- end
501
-
502
- def test_raises_dependency_error
503
- a1 = util_spec "a", "1", "c" => "= 1"
504
- b1 = util_spec "b", "1", "c" => "= 2"
505
-
506
- c1 = util_spec "c", "1"
507
- c2 = util_spec "c", "2"
508
-
509
- ad = make_dep "a"
510
- bd = make_dep "b"
511
-
512
- s = set(a1, b1, c1, c2)
513
-
514
- r = Gem::Resolver.new([ad, bd], s)
515
-
516
- e = assert_raise Gem::DependencyResolutionError do
517
- r.resolve
518
- end
519
-
520
- deps = [make_dep("c", "= 2"), make_dep("c", "= 1")]
521
- assert_equal deps, e.conflicting_dependencies
522
-
523
- con = e.conflict
524
-
525
- act = con.activated
526
- assert_equal "c-1", act.spec.full_name
527
-
528
- parent = act.parent
529
- assert_equal "a-1", parent.spec.full_name
530
-
531
- act = con.requester
532
- assert_equal "b-1", act.spec.full_name
533
- end
534
-
535
- def test_raises_when_a_gem_is_missing
536
- ad = make_dep "a"
537
-
538
- r = Gem::Resolver.new([ad], set)
539
-
540
- e = assert_raise Gem::UnsatisfiableDependencyError do
541
- r.resolve
542
- end
543
-
544
- assert_equal "Unable to resolve dependency: user requested 'a (>= 0)'",
545
- e.message
546
-
547
- assert_equal "a (>= 0)", e.dependency.to_s
548
- end
549
-
550
- def test_raises_when_a_gem_version_is_missing
551
- a1 = util_spec "a", "1"
552
-
553
- ad = make_dep "a", "= 3"
554
-
555
- r = Gem::Resolver.new([ad], set(a1))
556
-
557
- e = assert_raise Gem::UnsatisfiableDependencyError do
558
- r.resolve
559
- end
560
-
561
- assert_equal "a (= 3)", e.dependency.to_s
562
- end
563
-
564
- def test_raises_and_reports_a_toplevel_request_properly
565
- a1 = util_spec "a", "1"
566
- ad = make_dep "a", "= 3"
567
-
568
- r = Gem::Resolver.new([ad], set(a1))
569
-
570
- e = assert_raise Gem::UnsatisfiableDependencyError do
571
- r.resolve
572
- end
573
-
574
- assert_equal "Unable to resolve dependency: user requested 'a (= 3)'",
575
- e.message
576
- end
577
-
578
- def test_raises_and_reports_an_implicit_request_properly
579
- a1 = util_spec "a", "1" do |s|
580
- s.add_runtime_dependency "b", "= 2"
581
- end
582
-
583
- ad = make_dep "a", "= 1"
584
-
585
- r = Gem::Resolver.new([ad], set(a1))
586
-
587
- e = assert_raise Gem::UnsatisfiableDependencyError do
588
- r.resolve
589
- end
590
-
591
- assert_equal "Unable to resolve dependency: 'a (= 1)' requires 'b (= 2)'",
592
- e.message
593
- end
594
-
595
- def test_raises_when_possibles_are_exhausted
596
- a1 = util_spec "a", "1", "c" => ">= 2"
597
- b1 = util_spec "b", "1", "c" => "= 1"
598
-
599
- c1 = util_spec "c", "1"
600
- c2 = util_spec "c", "2"
601
- c3 = util_spec "c", "3"
602
-
603
- s = set(a1, b1, c1, c2, c3)
604
-
605
- ad = make_dep "a"
606
- bd = make_dep "b"
607
-
608
- r = Gem::Resolver.new([ad, bd], s)
609
-
610
- e = assert_raise Gem::DependencyResolutionError do
611
- r.resolve
612
- end
613
-
614
- dependency = e.conflict.dependency
615
-
616
- assert_includes %w[a b], dependency.name
617
- assert_equal req(">= 0"), dependency.requirement
618
-
619
- activated = e.conflict.activated
620
- assert_equal "c-1", activated.full_name
621
-
622
- assert_equal dep("c", "= 1"), activated.request.dependency
623
-
624
- assert_equal [dep("c", ">= 2"), dep("c", "= 1")],
625
- e.conflict.conflicting_dependencies
626
- end
627
-
628
- def test_keeps_resolving_after_seeing_satisfied_dep
629
- a1 = util_spec "a", "1", "b" => "= 1", "c" => "= 1"
630
- b1 = util_spec "b", "1"
631
- c1 = util_spec "c", "1"
632
-
633
- ad = make_dep "a"
634
- bd = make_dep "b"
635
-
636
- s = set(a1, b1, c1)
637
-
638
- r = Gem::Resolver.new([ad, bd], s)
639
-
640
- assert_resolves_to [a1, b1, c1], r
641
- end
642
-
643
- def test_common_rack_activation_scenario
644
- rack100 = util_spec "rack", "1.0.0"
645
- rack101 = util_spec "rack", "1.0.1"
646
-
647
- lib1 = util_spec "lib", "1", "rack" => ">= 1.0.1"
648
-
649
- rails = util_spec "rails", "3", "actionpack" => "= 3"
650
- ap = util_spec "actionpack", "3", "rack" => ">= 1.0.0"
651
-
652
- d1 = make_dep "rails"
653
- d2 = make_dep "lib"
654
-
655
- s = set(lib1, rails, ap, rack100, rack101)
656
-
657
- r = Gem::Resolver.new([d1, d2], s)
658
-
659
- assert_resolves_to [rails, ap, rack101, lib1], r
660
-
661
- # check it with the deps reverse too
662
-
663
- r = Gem::Resolver.new([d2, d1], s)
664
-
665
- assert_resolves_to [lib1, rack101, rails, ap], r
666
- end
667
-
668
- def test_backtracks_to_the_first_conflict
669
- a1 = util_spec "a", "1"
670
- a2 = util_spec "a", "2"
671
- a3 = util_spec "a", "3"
672
- a4 = util_spec "a", "4"
673
-
674
- d1 = make_dep "a"
675
- d2 = make_dep "a", ">= 2"
676
- d3 = make_dep "a", "= 1"
677
-
678
- s = set(a1, a2, a3, a4)
679
-
680
- r = Gem::Resolver.new([d1, d2, d3], s)
681
-
682
- assert_raise Gem::DependencyResolutionError do
683
- r.resolve
684
- end
685
- end
686
-
687
- def test_resolve_conflict
688
- a1 = util_spec "a", 1
689
- a2 = util_spec "a", 2
690
-
691
- b2 = util_spec "b", 2, "a" => "~> 2.0"
692
-
693
- s = set a1, a2, b2
694
-
695
- a_dep = dep "a", "~> 1.0"
696
- b_dep = dep "b"
697
-
698
- r = Gem::Resolver.new [a_dep, b_dep], s
699
-
700
- assert_raise Gem::DependencyResolutionError do
701
- r.resolve
702
- end
703
- end
704
-
705
- def test_resolve_bug_699
706
- a1 = util_spec "a", "1", "b" => "= 2",
707
- "c" => "~> 1.0.3"
708
-
709
- b1 = util_spec "b", "2", "c" => "~> 1.0"
710
-
711
- c1 = util_spec "c", "1.0.9"
712
- c2 = util_spec "c", "1.1.0"
713
- c3 = util_spec "c", "1.2.0"
714
-
715
- s = set a1, b1, c1, c2, c3
716
-
717
- a_dep = dep "a", "= 1"
718
-
719
- r = Gem::Resolver.new [a_dep], s
720
-
721
- assert_resolves_to [a1, b1, c1], r
722
- end
723
-
724
- def test_resolve_rollback
725
- a1 = util_spec "a", 1
726
- a2 = util_spec "a", 2
727
-
728
- b1 = util_spec "b", 1, "a" => "~> 1.0"
729
- b2 = util_spec "b", 2, "a" => "~> 2.0"
730
-
731
- s = set a1, a2, b1, b2
732
-
733
- a_dep = dep "a", "~> 1.0"
734
- b_dep = dep "b"
735
-
736
- r = Gem::Resolver.new [a_dep, b_dep], s
737
-
738
- assert_resolves_to [a1, b1], r
739
- end
740
-
741
- # actionmailer 2.3.4
742
- # activemerchant 1.5.0
743
- # activesupport 2.3.5, 2.3.4
744
- # Activemerchant needs activesupport >= 2.3.2. When you require activemerchant, it will activate the latest version that meets that requirement which is 2.3.5. Actionmailer on the other hand needs activesupport = 2.3.4. When rubygems tries to activate activesupport 2.3.4, it will raise an error.
745
-
746
- def test_simple_activesupport_problem
747
- sup1 = util_spec "activesupport", "2.3.4"
748
- sup2 = util_spec "activesupport", "2.3.5"
749
-
750
- merch = util_spec "activemerchant", "1.5.0", "activesupport" => ">= 2.3.2"
751
- mail = util_spec "actionmailer", "2.3.4", "activesupport" => "= 2.3.4"
752
-
753
- s = set(mail, merch, sup1, sup2)
754
-
755
- d1 = make_dep "activemerchant"
756
- d2 = make_dep "actionmailer"
757
-
758
- r = Gem::Resolver.new([d1, d2], s)
759
-
760
- assert_resolves_to [merch, mail, sup1], r
761
- end
762
-
763
- def test_second_level_backout
764
- b1 = util_spec "b", "1", { "c" => ">= 1" }, "lib/b.rb"
765
- b2 = util_spec "b", "2", { "c" => ">= 2" }, "lib/b.rb"
766
- c1 = util_spec "c", "1"
767
- c2 = util_spec "c", "2"
768
- d1 = util_spec "d", "1", { "c" => "< 2" }, "lib/d.rb"
769
- d2 = util_spec "d", "2", { "c" => "< 2" }, "lib/d.rb"
770
-
771
- s = set(b1, b2, c1, c2, d1, d2)
772
-
773
- p1 = make_dep "b", "> 0"
774
- p2 = make_dep "d", "> 0"
775
-
776
- r = Gem::Resolver.new([p1, p2], s)
777
-
778
- assert_resolves_to [b1, c1, d2], r
779
- end
780
-
781
- def test_sorts_by_source_then_version
782
- sourceA = Gem::Source.new "http://example.com/a"
783
- sourceB = Gem::Source.new "http://example.com/b"
784
- sourceC = Gem::Source.new "http://example.com/c"
785
-
786
- spec_A_1 = util_spec "some-dep", "0.0.1"
787
- spec_A_2 = util_spec "some-dep", "1.0.0"
788
- spec_B_1 = util_spec "some-dep", "0.0.1"
789
- spec_B_2 = util_spec "some-dep", "0.0.2"
790
- spec_C_1 = util_spec "some-dep", "0.1.0"
791
-
792
- set = StaticSet.new [
793
- Gem::Resolver::SpecSpecification.new(nil, spec_B_1, sourceB),
794
- Gem::Resolver::SpecSpecification.new(nil, spec_B_2, sourceB),
795
- Gem::Resolver::SpecSpecification.new(nil, spec_C_1, sourceC),
796
- Gem::Resolver::SpecSpecification.new(nil, spec_A_2, sourceA),
797
- Gem::Resolver::SpecSpecification.new(nil, spec_A_1, sourceA),
798
- ]
799
-
800
- dependency = make_dep "some-dep", "> 0"
801
-
802
- resolver = Gem::Resolver.new [dependency], set
803
-
804
- assert_resolves_to [spec_B_2], resolver
805
- end
806
-
807
- def test_select_local_platforms
808
- r = Gem::Resolver.new nil, nil
809
-
810
- a1 = util_spec "a", 1
811
-
812
- a1_p1 = util_spec "a", 1 do |s|
813
- s.platform = Gem::Platform.local
814
- end
815
-
816
- a1_p2 = util_spec "a", 1 do |s|
817
- s.platform = "unknown"
818
- end
819
-
820
- selected = r.select_local_platforms [a1, a1_p1, a1_p2]
821
-
822
- assert_equal [a1, a1_p1], selected
823
- end
824
-
825
- def test_search_for_local_platform_partial_string_match
826
- a1 = util_spec "a", 1
827
-
828
- a1_p1 = util_spec "a", 1 do |s|
829
- s.platform = Gem::Platform.local.os
830
- end
831
-
832
- a1_p2 = util_spec "a", 1 do |s|
833
- s.platform = "unknown"
834
- end
835
-
836
- s = set(a1_p1, a1_p2, a1)
837
- d = [make_dep("a")]
838
- r = Gem::Resolver.new(d, s)
839
-
840
- assert_resolves_to [a1_p1], r
841
- end
842
-
843
- def test_raises_and_explains_when_platform_prevents_install
844
- a1 = util_spec "a", "1" do |s|
845
- s.platform = Gem::Platform.new %w[c p 1]
846
- end
847
-
848
- ad = make_dep "a", "= 1"
849
-
850
- r = Gem::Resolver.new([ad], set(a1))
851
-
852
- e = assert_raise Gem::UnsatisfiableDependencyError do
853
- r.resolve
854
- end
855
-
856
- assert_match "No match for 'a (= 1)' on this platform. Found: c-p-1",
857
- e.message
858
- end
859
- end