rubygems-update 3.4.21 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (564) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +132 -2
  3. data/Manifest.txt +39 -221
  4. data/README.md +1 -3
  5. data/bundler/CHANGELOG.md +74 -0
  6. data/bundler/README.md +1 -2
  7. data/bundler/bundler.gemspec +4 -2
  8. data/bundler/exe/bundle +1 -10
  9. data/bundler/lib/bundler/build_metadata.rb +3 -3
  10. data/bundler/lib/bundler/capistrano.rb +1 -1
  11. data/bundler/lib/bundler/checksum.rb +245 -0
  12. data/bundler/lib/bundler/ci_detector.rb +75 -0
  13. data/bundler/lib/bundler/cli/add.rb +3 -3
  14. data/bundler/lib/bundler/cli/binstubs.rb +4 -4
  15. data/bundler/lib/bundler/cli/cache.rb +1 -1
  16. data/bundler/lib/bundler/cli/check.rb +1 -1
  17. data/bundler/lib/bundler/cli/common.rb +9 -1
  18. data/bundler/lib/bundler/cli/config.rb +8 -7
  19. data/bundler/lib/bundler/cli/console.rb +3 -2
  20. data/bundler/lib/bundler/cli/doctor.rb +2 -2
  21. data/bundler/lib/bundler/cli/exec.rb +1 -1
  22. data/bundler/lib/bundler/cli/gem.rb +31 -23
  23. data/bundler/lib/bundler/cli/info.rb +2 -13
  24. data/bundler/lib/bundler/cli/install.rb +5 -4
  25. data/bundler/lib/bundler/cli/issue.rb +1 -1
  26. data/bundler/lib/bundler/cli/lock.rb +4 -4
  27. data/bundler/lib/bundler/cli/open.rb +1 -1
  28. data/bundler/lib/bundler/cli/outdated.rb +6 -6
  29. data/bundler/lib/bundler/cli/plugin.rb +7 -14
  30. data/bundler/lib/bundler/cli/pristine.rb +38 -30
  31. data/bundler/lib/bundler/cli/show.rb +2 -2
  32. data/bundler/lib/bundler/cli/update.rb +5 -5
  33. data/bundler/lib/bundler/cli.rb +215 -263
  34. data/bundler/lib/bundler/compact_index_client/cache.rb +29 -9
  35. data/bundler/lib/bundler/compact_index_client/cache_file.rb +153 -0
  36. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +7 -3
  37. data/bundler/lib/bundler/compact_index_client/updater.rb +79 -81
  38. data/bundler/lib/bundler/compact_index_client.rb +14 -7
  39. data/bundler/lib/bundler/constants.rb +1 -1
  40. data/bundler/lib/bundler/current_ruby.rb +5 -21
  41. data/bundler/lib/bundler/definition.rb +43 -16
  42. data/bundler/lib/bundler/dependency.rb +16 -12
  43. data/bundler/lib/bundler/digest.rb +2 -2
  44. data/bundler/lib/bundler/dsl.rb +43 -25
  45. data/bundler/lib/bundler/endpoint_specification.rb +6 -2
  46. data/bundler/lib/bundler/env.rb +1 -3
  47. data/bundler/lib/bundler/errors.rb +58 -0
  48. data/bundler/lib/bundler/fetcher/base.rb +3 -1
  49. data/bundler/lib/bundler/fetcher/compact_index.rb +4 -4
  50. data/bundler/lib/bundler/fetcher/downloader.rb +13 -11
  51. data/bundler/lib/bundler/fetcher/gem_remote_fetcher.rb +16 -0
  52. data/bundler/lib/bundler/fetcher/index.rb +1 -1
  53. data/bundler/lib/bundler/fetcher.rb +28 -25
  54. data/bundler/lib/bundler/friendly_errors.rb +5 -5
  55. data/bundler/lib/bundler/gem_helper.rb +1 -1
  56. data/bundler/lib/bundler/gem_helpers.rb +12 -2
  57. data/bundler/lib/bundler/graph.rb +9 -9
  58. data/bundler/lib/bundler/index.rb +1 -2
  59. data/bundler/lib/bundler/injector.rb +1 -1
  60. data/bundler/lib/bundler/inline.rb +3 -3
  61. data/bundler/lib/bundler/installer/gem_installer.rb +10 -10
  62. data/bundler/lib/bundler/installer/parallel_installer.rb +16 -8
  63. data/bundler/lib/bundler/installer/standalone.rb +2 -3
  64. data/bundler/lib/bundler/installer.rb +9 -9
  65. data/bundler/lib/bundler/lazy_specification.rb +28 -17
  66. data/bundler/lib/bundler/lockfile_generator.rb +9 -0
  67. data/bundler/lib/bundler/lockfile_parser.rb +81 -10
  68. data/bundler/lib/bundler/man/bundle-add.1 +3 -26
  69. data/bundler/lib/bundler/man/bundle-binstubs.1 +4 -16
  70. data/bundler/lib/bundler/man/bundle-cache.1 +3 -24
  71. data/bundler/lib/bundler/man/bundle-check.1 +3 -12
  72. data/bundler/lib/bundler/man/bundle-clean.1 +3 -10
  73. data/bundler/lib/bundler/man/bundle-config.1 +20 -211
  74. data/bundler/lib/bundler/man/bundle-config.1.ronn +6 -0
  75. data/bundler/lib/bundler/man/bundle-console.1 +4 -22
  76. data/bundler/lib/bundler/man/bundle-doctor.1 +4 -18
  77. data/bundler/lib/bundler/man/bundle-exec.1 +12 -73
  78. data/bundler/lib/bundler/man/bundle-gem.1 +13 -49
  79. data/bundler/lib/bundler/man/bundle-help.1 +3 -7
  80. data/bundler/lib/bundler/man/bundle-info.1 +3 -9
  81. data/bundler/lib/bundler/man/bundle-init.1 +3 -12
  82. data/bundler/lib/bundler/man/bundle-inject.1 +6 -19
  83. data/bundler/lib/bundler/man/bundle-install.1 +27 -125
  84. data/bundler/lib/bundler/man/bundle-install.1.ronn +1 -0
  85. data/bundler/lib/bundler/man/bundle-list.1 +4 -19
  86. data/bundler/lib/bundler/man/bundle-lock.1 +5 -29
  87. data/bundler/lib/bundler/man/bundle-open.1 +7 -27
  88. data/bundler/lib/bundler/man/bundle-outdated.1 +3 -55
  89. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +1 -0
  90. data/bundler/lib/bundler/man/bundle-platform.1 +5 -27
  91. data/bundler/lib/bundler/man/bundle-plugin.1 +3 -29
  92. data/bundler/lib/bundler/man/bundle-pristine.1 +5 -16
  93. data/bundler/lib/bundler/man/bundle-remove.1 +4 -14
  94. data/bundler/lib/bundler/man/bundle-show.1 +3 -10
  95. data/bundler/lib/bundler/man/bundle-update.1 +18 -137
  96. data/bundler/lib/bundler/man/bundle-version.1 +3 -16
  97. data/bundler/lib/bundler/man/bundle-viz.1 +4 -16
  98. data/bundler/lib/bundler/man/bundle.1 +5 -44
  99. data/bundler/lib/bundler/man/gemfile.5 +24 -301
  100. data/bundler/lib/bundler/man/gemfile.5.ronn +4 -0
  101. data/bundler/lib/bundler/match_metadata.rb +4 -0
  102. data/bundler/lib/bundler/match_platform.rb +1 -1
  103. data/bundler/lib/bundler/plugin/api/source.rb +3 -2
  104. data/bundler/lib/bundler/plugin/index.rb +8 -0
  105. data/bundler/lib/bundler/plugin/installer.rb +1 -1
  106. data/bundler/lib/bundler/plugin.rb +12 -5
  107. data/bundler/lib/bundler/resolver/base.rb +1 -1
  108. data/bundler/lib/bundler/resolver/incompatibility.rb +1 -1
  109. data/bundler/lib/bundler/resolver/spec_group.rb +1 -4
  110. data/bundler/lib/bundler/resolver.rb +16 -16
  111. data/bundler/lib/bundler/ruby_dsl.rb +20 -12
  112. data/bundler/lib/bundler/ruby_version.rb +1 -1
  113. data/bundler/lib/bundler/rubygems_ext.rb +27 -54
  114. data/bundler/lib/bundler/rubygems_gem_installer.rb +23 -58
  115. data/bundler/lib/bundler/rubygems_integration.rb +25 -94
  116. data/bundler/lib/bundler/runtime.rb +2 -2
  117. data/bundler/lib/bundler/self_manager.rb +23 -7
  118. data/bundler/lib/bundler/settings.rb +27 -7
  119. data/bundler/lib/bundler/setup.rb +4 -1
  120. data/bundler/lib/bundler/shared_helpers.rb +35 -13
  121. data/bundler/lib/bundler/source/git/git_proxy.rb +22 -14
  122. data/bundler/lib/bundler/source/git.rb +4 -3
  123. data/bundler/lib/bundler/source/metadata.rb +16 -16
  124. data/bundler/lib/bundler/source/path.rb +7 -6
  125. data/bundler/lib/bundler/source/rubygems.rb +21 -14
  126. data/bundler/lib/bundler/source.rb +2 -0
  127. data/bundler/lib/bundler/spec_set.rb +43 -12
  128. data/bundler/lib/bundler/stub_specification.rb +1 -0
  129. data/bundler/lib/bundler/templates/Executable.bundler +1 -1
  130. data/bundler/lib/bundler/templates/newgem/README.md.tt +3 -3
  131. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +2 -6
  132. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +1 -1
  133. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +1 -1
  134. data/bundler/lib/bundler/templates/newgem/standard.yml.tt +1 -1
  135. data/bundler/lib/bundler/ui/shell.rb +2 -2
  136. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  137. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +53 -6
  138. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +8 -20
  139. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +4 -3
  140. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +23 -11
  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 +36 -36
  143. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +3 -2
  144. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +1 -1
  145. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb +1 -1
  146. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +8 -10
  147. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +15 -4
  148. data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +15 -15
  149. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +140 -14
  150. data/bundler/lib/bundler/vendor/thor/lib/thor/command.rb +13 -4
  151. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +4 -0
  152. data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +16 -25
  153. data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +1 -1
  154. data/bundler/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -1
  155. data/bundler/lib/bundler/vendor/thor/lib/thor/nested_context.rb +2 -2
  156. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +20 -1
  157. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +33 -17
  158. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +27 -8
  159. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +44 -6
  160. data/bundler/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +2 -2
  161. data/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +40 -30
  162. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +26 -150
  163. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +4 -46
  164. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/column_printer.rb +29 -0
  165. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +3 -45
  166. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/lcs_diff.rb +49 -0
  167. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +134 -0
  168. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/terminal.rb +42 -0
  169. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/wrapped_printer.rb +38 -0
  170. data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
  171. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +8 -7
  172. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  173. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +155 -8
  174. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +3 -0
  175. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +256 -132
  176. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1 -0
  177. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +95 -31
  178. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  179. data/bundler/lib/bundler/vendored_net_http.rb +8 -0
  180. data/bundler/lib/bundler/vendored_persistent.rb +0 -4
  181. data/bundler/lib/bundler/vendored_timeout.rb +8 -0
  182. data/bundler/lib/bundler/version.rb +1 -1
  183. data/bundler/lib/bundler/vlad.rb +1 -1
  184. data/bundler/lib/bundler/yaml_serializer.rb +9 -4
  185. data/bundler/lib/bundler.rb +38 -35
  186. data/lib/rubygems/available_set.rb +4 -4
  187. data/lib/rubygems/basic_specification.rb +35 -37
  188. data/lib/rubygems/bundler_version_finder.rb +4 -4
  189. data/lib/rubygems/ci_detector.rb +75 -0
  190. data/lib/rubygems/command.rb +15 -17
  191. data/lib/rubygems/command_manager.rb +5 -4
  192. data/lib/rubygems/commands/build_command.rb +2 -2
  193. data/lib/rubygems/commands/cert_command.rb +2 -3
  194. data/lib/rubygems/commands/check_command.rb +4 -4
  195. data/lib/rubygems/commands/cleanup_command.rb +12 -14
  196. data/lib/rubygems/commands/contents_command.rb +5 -5
  197. data/lib/rubygems/commands/dependency_command.rb +4 -5
  198. data/lib/rubygems/commands/environment_command.rb +3 -5
  199. data/lib/rubygems/commands/exec_command.rb +1 -1
  200. data/lib/rubygems/commands/fetch_command.rb +2 -2
  201. data/lib/rubygems/commands/generate_index_command.rb +39 -74
  202. data/lib/rubygems/commands/help_command.rb +4 -4
  203. data/lib/rubygems/commands/info_command.rb +2 -2
  204. data/lib/rubygems/commands/install_command.rb +8 -16
  205. data/lib/rubygems/commands/list_command.rb +2 -2
  206. data/lib/rubygems/commands/lock_command.rb +1 -1
  207. data/lib/rubygems/commands/open_command.rb +1 -1
  208. data/lib/rubygems/commands/owner_command.rb +1 -1
  209. data/lib/rubygems/commands/pristine_command.rb +13 -15
  210. data/lib/rubygems/commands/push_command.rb +2 -2
  211. data/lib/rubygems/commands/query_command.rb +4 -5
  212. data/lib/rubygems/commands/rdoc_command.rb +2 -2
  213. data/lib/rubygems/commands/search_command.rb +2 -2
  214. data/lib/rubygems/commands/setup_command.rb +33 -36
  215. data/lib/rubygems/commands/sources_command.rb +12 -12
  216. data/lib/rubygems/commands/specification_command.rb +10 -10
  217. data/lib/rubygems/commands/stale_command.rb +1 -1
  218. data/lib/rubygems/commands/uninstall_command.rb +13 -14
  219. data/lib/rubygems/commands/unpack_command.rb +7 -7
  220. data/lib/rubygems/commands/update_command.rb +11 -13
  221. data/lib/rubygems/commands/which_command.rb +1 -1
  222. data/lib/rubygems/commands/yank_command.rb +1 -1
  223. data/lib/rubygems/compatibility.rb +5 -6
  224. data/lib/rubygems/config_file.rb +7 -7
  225. data/lib/rubygems/core_ext/kernel_gem.rb +0 -2
  226. data/lib/rubygems/core_ext/kernel_require.rb +20 -49
  227. data/lib/rubygems/core_ext/kernel_warn.rb +1 -1
  228. data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
  229. data/lib/rubygems/defaults.rb +15 -3
  230. data/lib/rubygems/dependency.rb +12 -14
  231. data/lib/rubygems/dependency_installer.rb +30 -31
  232. data/lib/rubygems/dependency_list.rb +1 -1
  233. data/lib/rubygems/deprecate.rb +16 -15
  234. data/lib/rubygems/doctor.rb +6 -6
  235. data/lib/rubygems/errors.rb +2 -6
  236. data/lib/rubygems/exceptions.rb +2 -1
  237. data/lib/rubygems/ext/builder.rb +15 -10
  238. data/lib/rubygems/ext/cargo_builder.rb +5 -5
  239. data/lib/rubygems/ext/ext_conf_builder.rb +2 -4
  240. data/lib/rubygems/ext/rake_builder.rb +1 -1
  241. data/lib/rubygems/gem_runner.rb +4 -4
  242. data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +3 -3
  243. data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +3 -3
  244. data/lib/rubygems/gemcutter_utilities.rb +18 -19
  245. data/lib/rubygems/install_update_options.rb +18 -19
  246. data/lib/rubygems/installer.rb +66 -45
  247. data/lib/rubygems/installer_uninstaller_utils.rb +0 -2
  248. data/lib/rubygems/local_remote_options.rb +8 -11
  249. data/lib/rubygems/name_tuple.rb +7 -9
  250. data/lib/rubygems/net/http.rb +3 -0
  251. data/lib/rubygems/net-http/LICENSE.txt +22 -0
  252. data/lib/rubygems/net-http/lib/net/http/backward.rb +40 -0
  253. data/lib/rubygems/net-http/lib/net/http/exceptions.rb +34 -0
  254. data/lib/rubygems/net-http/lib/net/http/generic_request.rb +414 -0
  255. data/lib/rubygems/net-http/lib/net/http/header.rb +981 -0
  256. data/lib/rubygems/net-http/lib/net/http/proxy_delta.rb +17 -0
  257. data/lib/rubygems/net-http/lib/net/http/request.rb +88 -0
  258. data/lib/rubygems/net-http/lib/net/http/requests.rb +425 -0
  259. data/lib/rubygems/net-http/lib/net/http/response.rb +738 -0
  260. data/lib/rubygems/net-http/lib/net/http/responses.rb +1174 -0
  261. data/lib/rubygems/net-http/lib/net/http/status.rb +84 -0
  262. data/lib/rubygems/net-http/lib/net/http.rb +2496 -0
  263. data/lib/rubygems/net-http/lib/net/https.rb +23 -0
  264. data/lib/rubygems/net-protocol/LICENSE.txt +22 -0
  265. data/lib/rubygems/net-protocol/lib/net/protocol.rb +544 -0
  266. data/lib/rubygems/optparse/lib/optparse.rb +39 -17
  267. data/lib/rubygems/package/digest_io.rb +1 -1
  268. data/lib/rubygems/package/old.rb +2 -2
  269. data/lib/rubygems/package/tar_header.rb +45 -39
  270. data/lib/rubygems/package/tar_reader/entry.rb +5 -4
  271. data/lib/rubygems/package/tar_reader.rb +14 -5
  272. data/lib/rubygems/package/tar_writer.rb +20 -18
  273. data/lib/rubygems/package.rb +28 -27
  274. data/lib/rubygems/package_task.rb +2 -2
  275. data/lib/rubygems/path_support.rb +10 -11
  276. data/lib/rubygems/platform.rb +65 -48
  277. data/lib/rubygems/query_utils.rb +7 -9
  278. data/lib/rubygems/remote_fetcher.rb +17 -17
  279. data/lib/rubygems/request/connection_pools.rb +3 -3
  280. data/lib/rubygems/request.rb +20 -17
  281. data/lib/rubygems/request_set/gem_dependency_api.rb +120 -123
  282. data/lib/rubygems/request_set/lockfile/parser.rb +9 -9
  283. data/lib/rubygems/request_set/lockfile/tokenizer.rb +20 -12
  284. data/lib/rubygems/request_set/lockfile.rb +6 -11
  285. data/lib/rubygems/request_set.rb +5 -5
  286. data/lib/rubygems/requirement.rb +7 -7
  287. data/lib/rubygems/resolv/LICENSE.txt +22 -0
  288. data/lib/rubygems/resolv/lib/resolv.rb +3387 -0
  289. data/lib/rubygems/resolver/activation_request.rb +1 -3
  290. data/lib/rubygems/resolver/api_set/gem_parser.rb +7 -3
  291. data/lib/rubygems/resolver/best_set.rb +1 -1
  292. data/lib/rubygems/resolver/composed_set.rb +1 -1
  293. data/lib/rubygems/resolver/conflict.rb +4 -12
  294. data/lib/rubygems/resolver/index_set.rb +4 -4
  295. data/lib/rubygems/resolver/index_specification.rb +2 -2
  296. data/lib/rubygems/resolver/installer_set.rb +5 -6
  297. data/lib/rubygems/resolver/lock_set.rb +1 -1
  298. data/lib/rubygems/resolver.rb +6 -13
  299. data/lib/rubygems/s3_uri_signer.rb +6 -6
  300. data/lib/rubygems/safe_marshal/elements.rb +138 -0
  301. data/lib/rubygems/safe_marshal/reader.rb +306 -0
  302. data/lib/rubygems/safe_marshal/visitors/stream_printer.rb +31 -0
  303. data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +385 -0
  304. data/lib/rubygems/safe_marshal/visitors/visitor.rb +74 -0
  305. data/lib/rubygems/safe_marshal.rb +74 -0
  306. data/lib/rubygems/safe_yaml.rb +5 -28
  307. data/lib/rubygems/security/policies.rb +36 -38
  308. data/lib/rubygems/security/policy.rb +7 -11
  309. data/lib/rubygems/security/signer.rb +1 -1
  310. data/lib/rubygems/security/trust_dir.rb +4 -4
  311. data/lib/rubygems/security.rb +8 -22
  312. data/lib/rubygems/source/git.rb +1 -3
  313. data/lib/rubygems/source/installed.rb +0 -2
  314. data/lib/rubygems/source/local.rb +7 -9
  315. data/lib/rubygems/source/lock.rb +1 -3
  316. data/lib/rubygems/source/specific_file.rb +0 -1
  317. data/lib/rubygems/source/vendor.rb +0 -2
  318. data/lib/rubygems/source.rb +12 -12
  319. data/lib/rubygems/source_list.rb +5 -5
  320. data/lib/rubygems/spec_fetcher.rb +31 -31
  321. data/lib/rubygems/specification.rb +145 -150
  322. data/lib/rubygems/specification_policy.rb +61 -31
  323. data/lib/rubygems/stub_specification.rb +4 -5
  324. data/lib/rubygems/text.rb +1 -2
  325. data/lib/rubygems/timeout/LICENSE.txt +22 -0
  326. data/lib/rubygems/timeout/lib/timeout.rb +199 -0
  327. data/lib/rubygems/timeout.rb +3 -0
  328. data/lib/rubygems/tsort/lib/tsort.rb +3 -0
  329. data/lib/rubygems/uninstaller.rb +9 -11
  330. data/lib/rubygems/update_suggestion.rb +5 -18
  331. data/lib/rubygems/uri_formatter.rb +1 -1
  332. data/lib/rubygems/user_interaction.rb +17 -23
  333. data/lib/rubygems/util/licenses.rb +113 -35
  334. data/lib/rubygems/util/list.rb +3 -1
  335. data/lib/rubygems/util.rb +2 -4
  336. data/lib/rubygems/validator.rb +6 -4
  337. data/lib/rubygems/version.rb +35 -29
  338. data/lib/rubygems/version_option.rb +2 -5
  339. data/lib/rubygems/yaml_serializer.rb +9 -4
  340. data/lib/rubygems.rb +42 -42
  341. data/rubygems-update.gemspec +4 -4
  342. data/setup.rb +2 -2
  343. metadata +43 -225
  344. data/lib/rubygems/indexer.rb +0 -428
  345. data/lib/rubygems/mock_gem_ui.rb +0 -86
  346. data/test/rubygems/alternate_cert.pem +0 -19
  347. data/test/rubygems/alternate_cert_32.pem +0 -19
  348. data/test/rubygems/alternate_key.pem +0 -27
  349. data/test/rubygems/bad_rake.rb +0 -3
  350. data/test/rubygems/bundler_test_gem.rb +0 -424
  351. data/test/rubygems/ca_cert.pem +0 -77
  352. data/test/rubygems/child_cert.pem +0 -19
  353. data/test/rubygems/child_cert_32.pem +0 -19
  354. data/test/rubygems/child_key.pem +0 -27
  355. data/test/rubygems/client.pem +0 -107
  356. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  357. data/test/rubygems/data/gem-private_key.pem +0 -27
  358. data/test/rubygems/data/gem-public_cert.pem +0 -20
  359. data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
  360. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  361. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  362. data/test/rubygems/encrypted_private_key.pem +0 -30
  363. data/test/rubygems/expired_cert.pem +0 -19
  364. data/test/rubygems/fake_certlib/openssl.rb +0 -9
  365. data/test/rubygems/foo/discover.rb +0 -1
  366. data/test/rubygems/future_cert.pem +0 -19
  367. data/test/rubygems/future_cert_32.pem +0 -19
  368. data/test/rubygems/good_rake.rb +0 -3
  369. data/test/rubygems/grandchild_cert.pem +0 -19
  370. data/test/rubygems/grandchild_cert_32.pem +0 -19
  371. data/test/rubygems/grandchild_key.pem +0 -27
  372. data/test/rubygems/helper.rb +0 -1649
  373. data/test/rubygems/installer_test_case.rb +0 -248
  374. data/test/rubygems/invalid_client.pem +0 -49
  375. data/test/rubygems/invalid_issuer_cert.pem +0 -20
  376. data/test/rubygems/invalid_issuer_cert_32.pem +0 -20
  377. data/test/rubygems/invalid_key.pem +0 -27
  378. data/test/rubygems/invalid_signer_cert.pem +0 -19
  379. data/test/rubygems/invalid_signer_cert_32.pem +0 -19
  380. data/test/rubygems/invalidchild_cert.pem +0 -19
  381. data/test/rubygems/invalidchild_cert_32.pem +0 -19
  382. data/test/rubygems/invalidchild_key.pem +0 -27
  383. data/test/rubygems/multifactor_auth_utilities.rb +0 -111
  384. data/test/rubygems/package/tar_test_case.rb +0 -175
  385. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  386. data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
  387. data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
  388. data/test/rubygems/plugin/exception/rubygems_plugin.rb +0 -4
  389. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -5
  390. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +0 -4
  391. data/test/rubygems/private3072_key.pem +0 -40
  392. data/test/rubygems/private_ec_key.pem +0 -9
  393. data/test/rubygems/private_key.pem +0 -27
  394. data/test/rubygems/public3072_cert.pem +0 -25
  395. data/test/rubygems/public_cert.pem +0 -20
  396. data/test/rubygems/public_cert_32.pem +0 -19
  397. data/test/rubygems/public_key.pem +0 -9
  398. data/test/rubygems/rubygems/commands/crash_command.rb +0 -5
  399. data/test/rubygems/rubygems_plugin.rb +0 -24
  400. data/test/rubygems/sff/discover.rb +0 -1
  401. data/test/rubygems/simple_gem.rb +0 -68
  402. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -9
  403. data/test/rubygems/specifications/foo-0.0.1-x86-mswin32.gemspec +0 -0
  404. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +0 -14
  405. data/test/rubygems/ssl_cert.pem +0 -80
  406. data/test/rubygems/ssl_key.pem +0 -27
  407. data/test/rubygems/test_bundled_ca.rb +0 -61
  408. data/test/rubygems/test_config.rb +0 -28
  409. data/test/rubygems/test_deprecate.rb +0 -158
  410. data/test/rubygems/test_exit.rb +0 -17
  411. data/test/rubygems/test_gem.rb +0 -1799
  412. data/test/rubygems/test_gem_available_set.rb +0 -130
  413. data/test/rubygems/test_gem_bundler_version_finder.rb +0 -127
  414. data/test/rubygems/test_gem_command.rb +0 -403
  415. data/test/rubygems/test_gem_command_manager.rb +0 -400
  416. data/test/rubygems/test_gem_commands_build_command.rb +0 -739
  417. data/test/rubygems/test_gem_commands_cert_command.rb +0 -866
  418. data/test/rubygems/test_gem_commands_check_command.rb +0 -68
  419. data/test/rubygems/test_gem_commands_cleanup_command.rb +0 -292
  420. data/test/rubygems/test_gem_commands_contents_command.rb +0 -271
  421. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -228
  422. data/test/rubygems/test_gem_commands_environment_command.rb +0 -169
  423. data/test/rubygems/test_gem_commands_exec_command.rb +0 -857
  424. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -258
  425. data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -81
  426. data/test/rubygems/test_gem_commands_help_command.rb +0 -94
  427. data/test/rubygems/test_gem_commands_info_command.rb +0 -70
  428. data/test/rubygems/test_gem_commands_install_command.rb +0 -1573
  429. data/test/rubygems/test_gem_commands_list_command.rb +0 -33
  430. data/test/rubygems/test_gem_commands_lock_command.rb +0 -67
  431. data/test/rubygems/test_gem_commands_mirror.rb +0 -20
  432. data/test/rubygems/test_gem_commands_open_command.rb +0 -101
  433. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -50
  434. data/test/rubygems/test_gem_commands_owner_command.rb +0 -503
  435. data/test/rubygems/test_gem_commands_pristine_command.rb +0 -708
  436. data/test/rubygems/test_gem_commands_push_command.rb +0 -603
  437. data/test/rubygems/test_gem_commands_query_command.rb +0 -858
  438. data/test/rubygems/test_gem_commands_search_command.rb +0 -16
  439. data/test/rubygems/test_gem_commands_server_command.rb +0 -20
  440. data/test/rubygems/test_gem_commands_setup_command.rb +0 -474
  441. data/test/rubygems/test_gem_commands_signin_command.rb +0 -259
  442. data/test/rubygems/test_gem_commands_signout_command.rb +0 -30
  443. data/test/rubygems/test_gem_commands_sources_command.rb +0 -534
  444. data/test/rubygems/test_gem_commands_specification_command.rb +0 -277
  445. data/test/rubygems/test_gem_commands_stale_command.rb +0 -43
  446. data/test/rubygems/test_gem_commands_uninstall_command.rb +0 -522
  447. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -224
  448. data/test/rubygems/test_gem_commands_update_command.rb +0 -836
  449. data/test/rubygems/test_gem_commands_which_command.rb +0 -85
  450. data/test/rubygems/test_gem_commands_yank_command.rb +0 -299
  451. data/test/rubygems/test_gem_config_file.rb +0 -551
  452. data/test/rubygems/test_gem_dependency.rb +0 -398
  453. data/test/rubygems/test_gem_dependency_installer.rb +0 -1190
  454. data/test/rubygems/test_gem_dependency_list.rb +0 -265
  455. data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -27
  456. data/test/rubygems/test_gem_doctor.rb +0 -195
  457. data/test/rubygems/test_gem_ext_builder.rb +0 -337
  458. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +0 -1
  459. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +0 -10
  460. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +0 -249
  461. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +0 -10
  462. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +0 -27
  463. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +0 -3
  464. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +0 -1
  465. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +0 -249
  466. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +0 -10
  467. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +0 -10
  468. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +0 -51
  469. data/test/rubygems/test_gem_ext_cargo_builder.rb +0 -167
  470. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +0 -34
  471. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +0 -60
  472. data/test/rubygems/test_gem_ext_cmake_builder.rb +0 -84
  473. data/test/rubygems/test_gem_ext_configure_builder.rb +0 -80
  474. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -229
  475. data/test/rubygems/test_gem_ext_rake_builder.rb +0 -113
  476. data/test/rubygems/test_gem_gem_runner.rb +0 -119
  477. data/test/rubygems/test_gem_gemcutter_utilities.rb +0 -361
  478. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -60
  479. data/test/rubygems/test_gem_indexer.rb +0 -381
  480. data/test/rubygems/test_gem_install_update_options.rb +0 -208
  481. data/test/rubygems/test_gem_installer.rb +0 -2512
  482. data/test/rubygems/test_gem_local_remote_options.rb +0 -133
  483. data/test/rubygems/test_gem_name_tuple.rb +0 -43
  484. data/test/rubygems/test_gem_package.rb +0 -1306
  485. data/test/rubygems/test_gem_package_old.rb +0 -91
  486. data/test/rubygems/test_gem_package_tar_header.rb +0 -226
  487. data/test/rubygems/test_gem_package_tar_reader.rb +0 -135
  488. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -350
  489. data/test/rubygems/test_gem_package_tar_writer.rb +0 -331
  490. data/test/rubygems/test_gem_package_task.rb +0 -118
  491. data/test/rubygems/test_gem_path_support.rb +0 -139
  492. data/test/rubygems/test_gem_platform.rb +0 -497
  493. data/test/rubygems/test_gem_rdoc.rb +0 -137
  494. data/test/rubygems/test_gem_remote_fetcher.rb +0 -1227
  495. data/test/rubygems/test_gem_request.rb +0 -547
  496. data/test/rubygems/test_gem_request_connection_pools.rb +0 -152
  497. data/test/rubygems/test_gem_request_set.rb +0 -672
  498. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +0 -853
  499. data/test/rubygems/test_gem_request_set_lockfile.rb +0 -469
  500. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +0 -544
  501. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +0 -307
  502. data/test/rubygems/test_gem_requirement.rb +0 -505
  503. data/test/rubygems/test_gem_resolver.rb +0 -859
  504. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -43
  505. data/test/rubygems/test_gem_resolver_api_set.rb +0 -210
  506. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -167
  507. data/test/rubygems/test_gem_resolver_best_set.rb +0 -159
  508. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -44
  509. data/test/rubygems/test_gem_resolver_conflict.rb +0 -82
  510. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -83
  511. data/test/rubygems/test_gem_resolver_git_set.rb +0 -188
  512. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -114
  513. data/test/rubygems/test_gem_resolver_index_set.rb +0 -88
  514. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -93
  515. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -47
  516. data/test/rubygems/test_gem_resolver_installer_set.rb +0 -320
  517. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -44
  518. data/test/rubygems/test_gem_resolver_lock_set.rb +0 -62
  519. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -98
  520. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -19
  521. data/test/rubygems/test_gem_resolver_specification.rb +0 -63
  522. data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -82
  523. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -82
  524. data/test/rubygems/test_gem_security.rb +0 -341
  525. data/test/rubygems/test_gem_security_policy.rb +0 -535
  526. data/test/rubygems/test_gem_security_signer.rb +0 -218
  527. data/test/rubygems/test_gem_security_trust_dir.rb +0 -99
  528. data/test/rubygems/test_gem_silent_ui.rb +0 -123
  529. data/test/rubygems/test_gem_source.rb +0 -254
  530. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -37
  531. data/test/rubygems/test_gem_source_git.rb +0 -310
  532. data/test/rubygems/test_gem_source_installed.rb +0 -35
  533. data/test/rubygems/test_gem_source_list.rb +0 -119
  534. data/test/rubygems/test_gem_source_local.rb +0 -107
  535. data/test/rubygems/test_gem_source_lock.rb +0 -113
  536. data/test/rubygems/test_gem_source_specific_file.rb +0 -76
  537. data/test/rubygems/test_gem_source_subpath_problem.rb +0 -50
  538. data/test/rubygems/test_gem_source_vendor.rb +0 -30
  539. data/test/rubygems/test_gem_spec_fetcher.rb +0 -338
  540. data/test/rubygems/test_gem_specification.rb +0 -3856
  541. data/test/rubygems/test_gem_stream_ui.rb +0 -255
  542. data/test/rubygems/test_gem_stub_specification.rb +0 -278
  543. data/test/rubygems/test_gem_text.rb +0 -103
  544. data/test/rubygems/test_gem_uninstaller.rb +0 -675
  545. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -31
  546. data/test/rubygems/test_gem_update_suggestion.rb +0 -209
  547. data/test/rubygems/test_gem_uri.rb +0 -41
  548. data/test/rubygems/test_gem_uri_formatter.rb +0 -27
  549. data/test/rubygems/test_gem_util.rb +0 -91
  550. data/test/rubygems/test_gem_validator.rb +0 -42
  551. data/test/rubygems/test_gem_version.rb +0 -305
  552. data/test/rubygems/test_gem_version_option.rb +0 -165
  553. data/test/rubygems/test_kernel.rb +0 -124
  554. data/test/rubygems/test_project_sanity.rb +0 -49
  555. data/test/rubygems/test_remote_fetch_error.rb +0 -20
  556. data/test/rubygems/test_require.rb +0 -732
  557. data/test/rubygems/test_rubygems.rb +0 -76
  558. data/test/rubygems/test_webauthn_listener.rb +0 -143
  559. data/test/rubygems/test_webauthn_listener_response.rb +0 -93
  560. data/test/rubygems/test_webauthn_poller.rb +0 -124
  561. data/test/rubygems/utilities.rb +0 -436
  562. data/test/rubygems/wrong_key_cert.pem +0 -19
  563. data/test/rubygems/wrong_key_cert_32.pem +0 -19
  564. data/test/test_changelog_generator.rb +0 -17
@@ -1,43 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "helper"
4
-
5
- class TestGemResolverActivationRequest < Gem::TestCase
6
- def setup
7
- super
8
-
9
- @DR = Gem::Resolver
10
-
11
- @dep = @DR::DependencyRequest.new dep("a", ">= 0"), nil
12
-
13
- source = Gem::Source::Local.new
14
- platform = Gem::Platform::RUBY
15
-
16
- @a3 = @DR::IndexSpecification.new nil, "a", v(3), source, platform
17
-
18
- @req = @DR::ActivationRequest.new @a3, @dep
19
- end
20
-
21
- def test_development_eh
22
- refute @req.development?
23
-
24
- dep_req = @DR::DependencyRequest.new dep("a", ">= 0", :development), nil
25
-
26
- act_req = @DR::ActivationRequest.new @a3, dep_req
27
-
28
- assert act_req.development?
29
- end
30
-
31
- def test_inspect
32
- assert_match "a-3", @req.inspect
33
- assert_match "from a (>= 0)", @req.inspect
34
- end
35
-
36
- def test_installed_eh
37
- v_spec = Gem::Resolver::VendorSpecification.new nil, @a3
38
-
39
- @req = @DR::ActivationRequest.new v_spec, @dep
40
-
41
- assert @req.installed?
42
- end
43
- end
@@ -1,210 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "helper"
4
-
5
- class TestGemResolverAPISet < Gem::TestCase
6
- def setup
7
- super
8
-
9
- @DR = Gem::Resolver
10
- @dep_uri = URI "#{@gem_repo}info/"
11
- end
12
-
13
- def test_initialize
14
- set = @DR::APISet.new
15
-
16
- assert_equal URI("https://index.rubygems.org/info/"), set.dep_uri
17
- assert_equal URI("https://index.rubygems.org/"), set.uri
18
- assert_equal Gem::Source.new(URI("https://index.rubygems.org")), set.source
19
- end
20
-
21
- def test_initialize_deeper_uri
22
- set = @DR::APISet.new "https://rubygemsserver.com/mygems/info"
23
-
24
- assert_equal URI("https://rubygemsserver.com/mygems/info"), set.dep_uri
25
- assert_equal URI("https://rubygemsserver.com/"), set.uri
26
- assert_equal Gem::Source.new(URI("https://rubygemsserver.com/")), set.source
27
- end
28
-
29
- def test_initialize_uri
30
- set = @DR::APISet.new @dep_uri
31
-
32
- assert_equal URI("#{@gem_repo}info/"), set.dep_uri
33
- assert_equal URI("#{@gem_repo}"), set.uri
34
- end
35
-
36
- def test_find_all
37
- spec_fetcher
38
-
39
- data = [
40
- { :name => "a",
41
- :number => "1",
42
- :platform => "ruby",
43
- :dependencies => [] },
44
- ]
45
-
46
- @fetcher.data["#{@dep_uri}a"] = "---\n1 "
47
-
48
- set = @DR::APISet.new @dep_uri
49
-
50
- a_dep = @DR::DependencyRequest.new dep("a"), nil
51
-
52
- expected = [
53
- @DR::APISpecification.new(set, data.first),
54
- ]
55
-
56
- assert_equal expected, set.find_all(a_dep)
57
- end
58
-
59
- def test_find_all_prereleases
60
- spec_fetcher
61
-
62
- data = [
63
- { :name => "a",
64
- :number => "1",
65
- :platform => "ruby",
66
- :dependencies => [] },
67
- { :name => "a",
68
- :number => "2.a",
69
- :platform => "ruby",
70
- :dependencies => [] },
71
- ]
72
-
73
- @fetcher.data["#{@dep_uri}a"] = "---\n1\n2.a"
74
-
75
- set = @DR::APISet.new @dep_uri
76
- set.prerelease = true
77
-
78
- a_dep = @DR::DependencyRequest.new dep("a"), nil
79
-
80
- expected = [
81
- @DR::APISpecification.new(set, data.first),
82
- @DR::APISpecification.new(set, data.last),
83
- ]
84
-
85
- assert_equal expected, set.find_all(a_dep)
86
- end
87
-
88
- def test_find_all_cache
89
- spec_fetcher
90
-
91
- data = [
92
- { :name => "a",
93
- :number => "1",
94
- :platform => "ruby",
95
- :dependencies => [] },
96
- ]
97
-
98
- @fetcher.data["#{@dep_uri}a"] = "---\n1 "
99
-
100
- set = @DR::APISet.new @dep_uri
101
-
102
- a_dep = @DR::DependencyRequest.new dep("a"), nil
103
-
104
- set.prefetch [a_dep]
105
-
106
- expected = [
107
- @DR::APISpecification.new(set, data.first),
108
- ]
109
-
110
- assert_equal expected, set.find_all(a_dep)
111
-
112
- @fetcher.data.delete "#{@dep_uri}a"
113
- end
114
-
115
- def test_find_all_local
116
- set = @DR::APISet.new @dep_uri
117
- set.remote = false
118
-
119
- a_dep = @DR::DependencyRequest.new dep("a"), nil
120
-
121
- assert_empty set.find_all(a_dep)
122
- end
123
-
124
- def test_find_all_missing
125
- spec_fetcher
126
-
127
- @fetcher.data["#{@dep_uri}a"] = "---"
128
-
129
- set = @DR::APISet.new @dep_uri
130
-
131
- a_dep = @DR::DependencyRequest.new dep("a"), nil
132
-
133
- assert_empty set.find_all(a_dep)
134
-
135
- @fetcher.data.delete "#{@dep_uri}a"
136
-
137
- assert_empty set.find_all(a_dep)
138
- end
139
-
140
- def test_prefetch
141
- spec_fetcher
142
-
143
- @fetcher.data["#{@dep_uri}a"] = "---\n1 \n"
144
- @fetcher.data["#{@dep_uri}b"] = "---"
145
-
146
- set = @DR::APISet.new @dep_uri
147
-
148
- a_dep = @DR::DependencyRequest.new dep("a"), nil
149
- b_dep = @DR::DependencyRequest.new dep("b"), nil
150
-
151
- set.prefetch [a_dep, b_dep]
152
-
153
- assert_equal %w[a-1], set.find_all(a_dep).map {|s| s.full_name }
154
- assert_empty set.find_all(b_dep)
155
- end
156
-
157
- def test_prefetch_cache
158
- spec_fetcher
159
-
160
- @fetcher.data["#{@dep_uri}a"] = "---\n1 \n"
161
-
162
- set = @DR::APISet.new @dep_uri
163
-
164
- a_dep = @DR::DependencyRequest.new dep("a"), nil
165
- b_dep = @DR::DependencyRequest.new dep("b"), nil
166
-
167
- set.prefetch [a_dep]
168
-
169
- @fetcher.data.delete "#{@dep_uri}a"
170
- @fetcher.data["#{@dep_uri}?b"] = "---"
171
-
172
- set.prefetch [a_dep, b_dep]
173
- end
174
-
175
- def test_prefetch_cache_missing
176
- spec_fetcher
177
-
178
- @fetcher.data["#{@dep_uri}a"] = "---\n1 \n"
179
- @fetcher.data["#{@dep_uri}b"] = "---"
180
-
181
- set = @DR::APISet.new @dep_uri
182
-
183
- a_dep = @DR::DependencyRequest.new dep("a"), nil
184
- b_dep = @DR::DependencyRequest.new dep("b"), nil
185
-
186
- set.prefetch [a_dep, b_dep]
187
-
188
- @fetcher.data.delete "#{@dep_uri}a"
189
- @fetcher.data.delete "#{@dep_uri}b"
190
-
191
- set.prefetch [a_dep, b_dep]
192
- end
193
-
194
- def test_prefetch_local
195
- spec_fetcher
196
-
197
- @fetcher.data["#{@dep_uri}a"] = "---\n1 \n"
198
- @fetcher.data["#{@dep_uri}b"] = "---"
199
-
200
- set = @DR::APISet.new @dep_uri
201
- set.remote = false
202
-
203
- a_dep = @DR::DependencyRequest.new dep("a"), nil
204
- b_dep = @DR::DependencyRequest.new dep("b"), nil
205
-
206
- set.prefetch [a_dep, b_dep]
207
-
208
- assert_empty set.instance_variable_get :@data
209
- end
210
- end
@@ -1,167 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "helper"
4
-
5
- class TestGemResolverAPISpecification < Gem::TestCase
6
- def test_initialize
7
- set = Gem::Resolver::APISet.new
8
- data = {
9
- :name => "rails",
10
- :number => "3.0.3",
11
- :platform => Gem::Platform.local.to_s,
12
- :dependencies => [
13
- ["bundler", "~> 1.0"],
14
- ["railties", "= 3.0.3"],
15
- ],
16
- }
17
-
18
- spec = Gem::Resolver::APISpecification.new set, data
19
-
20
- assert_equal "rails", spec.name
21
- assert_equal Gem::Version.new("3.0.3"), spec.version
22
- assert_equal Gem::Platform.local, spec.platform
23
-
24
- expected = [
25
- Gem::Dependency.new("bundler", "~> 1.0"),
26
- Gem::Dependency.new("railties", "= 3.0.3"),
27
- ]
28
-
29
- assert_equal expected, spec.dependencies
30
- end
31
-
32
- def test_fetch_development_dependencies
33
- specs = spec_fetcher do |fetcher|
34
- fetcher.spec "rails", "3.0.3" do |s|
35
- s.add_runtime_dependency "bundler", "~> 1.0"
36
- s.add_runtime_dependency "railties", "= 3.0.3"
37
- s.add_development_dependency "a", "= 1"
38
- end
39
- end
40
-
41
- rails = specs["rails-3.0.3"]
42
-
43
- repo = @gem_repo + "info"
44
-
45
- set = Gem::Resolver::APISet.new repo
46
-
47
- data = {
48
- :name => "rails",
49
- :number => "3.0.3",
50
- :platform => "ruby",
51
- :dependencies => [
52
- ["bundler", "~> 1.0"],
53
- ["railties", "= 3.0.3"],
54
- ],
55
- }
56
-
57
- util_setup_spec_fetcher rails
58
-
59
- spec = Gem::Resolver::APISpecification.new set, data
60
-
61
- spec.fetch_development_dependencies
62
-
63
- expected = [
64
- Gem::Dependency.new("bundler", "~> 1.0"),
65
- Gem::Dependency.new("railties", "= 3.0.3"),
66
- Gem::Dependency.new("a", "= 1", :development),
67
- ]
68
-
69
- assert_equal expected, spec.dependencies
70
- end
71
-
72
- def test_installable_platform_eh
73
- set = Gem::Resolver::APISet.new
74
- data = {
75
- :name => "a",
76
- :number => "1",
77
- :platform => "ruby",
78
- :dependencies => [],
79
- }
80
-
81
- a_spec = Gem::Resolver::APISpecification.new set, data
82
-
83
- assert a_spec.installable_platform?
84
-
85
- data = {
86
- :name => "b",
87
- :number => "1",
88
- :platform => "cpu-other_platform-1",
89
- :dependencies => [],
90
- }
91
-
92
- b_spec = Gem::Resolver::APISpecification.new set, data
93
-
94
- refute b_spec.installable_platform?
95
-
96
- data = {
97
- :name => "c",
98
- :number => "1",
99
- :platform => Gem::Platform.local.to_s,
100
- :dependencies => [],
101
- }
102
-
103
- c_spec = Gem::Resolver::APISpecification.new set, data
104
-
105
- assert c_spec.installable_platform?
106
- end
107
-
108
- def test_source
109
- set = Gem::Resolver::APISet.new
110
- data = {
111
- :name => "a",
112
- :number => "1",
113
- :platform => "ruby",
114
- :dependencies => [],
115
- }
116
-
117
- api_spec = Gem::Resolver::APISpecification.new set, data
118
-
119
- assert_equal set.source, api_spec.source
120
- end
121
-
122
- def test_spec
123
- spec_fetcher do |fetcher|
124
- fetcher.spec "a", 1
125
- end
126
-
127
- dep_uri = URI(@gem_repo) + "info"
128
- set = Gem::Resolver::APISet.new dep_uri
129
- data = {
130
- :name => "a",
131
- :number => "1",
132
- :platform => "ruby",
133
- :dependencies => [],
134
- }
135
-
136
- api_spec = Gem::Resolver::APISpecification.new set, data
137
-
138
- spec = api_spec.spec
139
-
140
- assert_kind_of Gem::Specification, spec
141
- assert_equal "a-1", spec.full_name
142
- end
143
-
144
- def test_spec_jruby_platform
145
- spec_fetcher do |fetcher|
146
- fetcher.gem "j", 1 do |spec|
147
- spec.platform = "jruby"
148
- end
149
- end
150
-
151
- dep_uri = URI(@gem_repo) + "info"
152
- set = Gem::Resolver::APISet.new dep_uri
153
- data = {
154
- :name => "j",
155
- :number => "1",
156
- :platform => "jruby",
157
- :dependencies => [],
158
- }
159
-
160
- api_spec = Gem::Resolver::APISpecification.new set, data
161
-
162
- spec = api_spec.spec
163
-
164
- assert_kind_of Gem::Specification, spec
165
- assert_equal "j-1-java", spec.full_name
166
- end
167
- end
@@ -1,159 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "helper"
4
-
5
- class TestGemResolverBestSet < Gem::TestCase
6
- def setup
7
- super
8
-
9
- @DR = Gem::Resolver
10
- end
11
-
12
- def test_initialize
13
- set = @DR::BestSet.new
14
-
15
- assert_empty set.sets
16
- end
17
-
18
- def test_find_all_index
19
- spec_fetcher do |fetcher|
20
- fetcher.spec "a", 1
21
- fetcher.spec "a", 2
22
- fetcher.spec "b", 1
23
- end
24
-
25
- set = @DR::BestSet.new
26
-
27
- dependency = dep "a", "~> 1"
28
-
29
- req = @DR::DependencyRequest.new dependency, nil
30
-
31
- found = set.find_all req
32
-
33
- assert_equal %w[a-1], found.map {|s| s.full_name }
34
- end
35
-
36
- def test_find_all_fallback
37
- spec_fetcher do |fetcher|
38
- fetcher.spec "a", 1
39
- end
40
-
41
- set = @DR::BestSet.new
42
-
43
- api_uri = URI(@gem_repo)
44
-
45
- set.sets << Gem::Resolver::APISet.new(api_uri)
46
-
47
- dependency = dep "a", "~> 1"
48
-
49
- req = @DR::DependencyRequest.new dependency, nil
50
-
51
- found = set.find_all req
52
-
53
- assert_equal %w[a-1], found.map {|s| s.full_name }
54
- end
55
-
56
- def test_find_all_local
57
- spec_fetcher do |fetcher|
58
- fetcher.spec "a", 1
59
- fetcher.spec "a", 2
60
- fetcher.spec "b", 1
61
- end
62
-
63
- set = @DR::BestSet.new
64
- set.remote = false
65
-
66
- dependency = dep "a", "~> 1"
67
-
68
- req = @DR::DependencyRequest.new dependency, nil
69
-
70
- found = set.find_all req
71
-
72
- assert_empty found
73
- end
74
-
75
- def test_prefetch
76
- spec_fetcher do |fetcher|
77
- fetcher.spec "a", 1
78
- end
79
-
80
- set = @DR::BestSet.new
81
-
82
- set.prefetch []
83
-
84
- refute_empty set.sets
85
- end
86
-
87
- def test_prefetch_local
88
- spec_fetcher do |fetcher|
89
- fetcher.spec "a", 1
90
- end
91
-
92
- set = @DR::BestSet.new
93
- set.remote = false
94
-
95
- set.prefetch []
96
-
97
- assert_empty set.sets
98
- end
99
-
100
- def test_replace_failed_api_set
101
- set = @DR::BestSet.new
102
-
103
- api_uri = URI(@gem_repo) + "./info/"
104
- api_set = Gem::Resolver::APISet.new api_uri
105
-
106
- set.sets << api_set
107
-
108
- error_uri = api_uri + "a"
109
-
110
- error = Gem::RemoteFetcher::FetchError.new "bogus", error_uri
111
-
112
- set.replace_failed_api_set error
113
-
114
- assert_equal 1, set.sets.size
115
-
116
- refute_includes set.sets, api_set
117
-
118
- assert_kind_of Gem::Resolver::IndexSet, set.sets.first
119
- end
120
-
121
- def test_replace_failed_api_set_no_api_set
122
- set = @DR::BestSet.new
123
-
124
- index_set = Gem::Resolver::IndexSet.new Gem::Source.new @gem_repo
125
-
126
- set.sets << index_set
127
-
128
- error = Gem::RemoteFetcher::FetchError.new "bogus", @gem_repo
129
-
130
- e = assert_raise Gem::RemoteFetcher::FetchError do
131
- set.replace_failed_api_set error
132
- end
133
-
134
- assert_equal error, e
135
- end
136
-
137
- def test_replace_failed_api_set_uri_with_credentials
138
- set = @DR::BestSet.new
139
-
140
- api_uri = URI(@gem_repo) + "./info/"
141
- api_uri.user = "user"
142
- api_uri.password = "pass"
143
- api_set = Gem::Resolver::APISet.new api_uri
144
-
145
- set.sets << api_set
146
-
147
- error_uri = api_uri + "a"
148
-
149
- error = Gem::RemoteFetcher::FetchError.new "bogus", error_uri
150
-
151
- set.replace_failed_api_set error
152
-
153
- assert_equal 1, set.sets.size
154
-
155
- refute_includes set.sets, api_set
156
-
157
- assert_kind_of Gem::Resolver::IndexSet, set.sets.first
158
- end
159
- end
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "helper"
4
-
5
- class TestGemResolverComposedSet < Gem::TestCase
6
- def test_errors
7
- index_set = Gem::Resolver::IndexSet.new
8
- current_set = Gem::Resolver::CurrentSet.new
9
-
10
- set = Gem::Resolver::ComposedSet.new index_set, current_set
11
-
12
- set.instance_variable_get(:@errors) << :a
13
- current_set.errors << :b
14
-
15
- assert_includes set.errors, :a
16
- assert_includes set.errors, :b
17
- assert_includes set.errors, index_set.errors.first
18
- end
19
-
20
- def test_prerelease_equals
21
- best_set = Gem::Resolver::BestSet.new
22
- current_set = Gem::Resolver::CurrentSet.new
23
-
24
- set = Gem::Resolver::ComposedSet.new best_set, current_set
25
-
26
- set.prerelease = true
27
-
28
- assert set.prerelease
29
- assert best_set.prerelease
30
- assert current_set.prerelease
31
- end
32
-
33
- def test_remote_equals
34
- best_set = Gem::Resolver::BestSet.new
35
- current_set = Gem::Resolver::CurrentSet.new
36
-
37
- set = Gem::Resolver::ComposedSet.new best_set, current_set
38
-
39
- set.remote = false
40
-
41
- refute best_set.remote?
42
- refute current_set.remote?
43
- end
44
- end
@@ -1,82 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "helper"
4
-
5
- class TestGemResolverConflict < Gem::TestCase
6
- def test_explanation
7
- root =
8
- dependency_request dep("net-ssh", ">= 2.0.13"), "rye", "0.9.8"
9
- child =
10
- dependency_request dep("net-ssh", ">= 2.6.5"), "net-ssh", "2.2.2", root
11
-
12
- dep = Gem::Resolver::DependencyRequest.new dep("net-ssh", ">= 2.0.13"), nil
13
-
14
- spec = util_spec "net-ssh", "2.2.2"
15
- active =
16
- Gem::Resolver::ActivationRequest.new spec, dep
17
-
18
- conflict =
19
- Gem::Resolver::Conflict.new child, active
20
-
21
- expected = <<-EXPECTED
22
- Activated net-ssh-2.2.2
23
- which does not match conflicting dependency (>= 2.6.5)
24
-
25
- Conflicting dependency chains:
26
- net-ssh (>= 2.0.13), 2.2.2 activated
27
-
28
- versus:
29
- rye (= 0.9.8), 0.9.8 activated, depends on
30
- net-ssh (>= 2.0.13), 2.2.2 activated, depends on
31
- net-ssh (>= 2.6.5)
32
-
33
- EXPECTED
34
-
35
- assert_equal expected, conflict.explanation
36
- end
37
-
38
- def test_explanation_user_request
39
- @DR = Gem::Resolver
40
-
41
- spec = util_spec "a", 2
42
-
43
- a1_req = @DR::DependencyRequest.new dep("a", "= 1"), nil
44
- a2_req = @DR::DependencyRequest.new dep("a", "= 2"), nil
45
-
46
- activated = @DR::ActivationRequest.new spec, a2_req
47
-
48
- conflict = @DR::Conflict.new a1_req, activated
49
-
50
- expected = <<-EXPECTED
51
- Activated a-2
52
- which does not match conflicting dependency (= 1)
53
-
54
- Conflicting dependency chains:
55
- a (= 2), 2 activated
56
-
57
- versus:
58
- a (= 1)
59
-
60
- EXPECTED
61
-
62
- assert_equal expected, conflict.explanation
63
- end
64
-
65
- def test_request_path
66
- root =
67
- dependency_request dep("net-ssh", ">= 2.0.13"), "rye", "0.9.8"
68
-
69
- child =
70
- dependency_request dep("other", ">= 1.0"), "net-ssh", "2.2.2", root
71
-
72
- conflict =
73
- Gem::Resolver::Conflict.new nil, nil
74
-
75
- expected = [
76
- "net-ssh (>= 2.0.13), 2.2.2 activated",
77
- "rye (= 0.9.8), 0.9.8 activated",
78
- ]
79
-
80
- assert_equal expected, conflict.request_path(child.requester)
81
- end
82
- end