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,113 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "helper"
4
-
5
- class TestGemSourceLock < Gem::TestCase
6
- def test_fetch_spec
7
- spec_fetcher do |fetcher|
8
- fetcher.spec "a", 1
9
- end
10
-
11
- name_tuple = Gem::NameTuple.new "a", v(1), "ruby"
12
-
13
- remote = Gem::Source.new @gem_repo
14
- lock = Gem::Source::Lock.new remote
15
-
16
- spec = lock.fetch_spec name_tuple
17
-
18
- assert_equal "a-1", spec.full_name
19
- end
20
-
21
- def test_equals2
22
- git = Gem::Source::Git.new "a", "git/a", nil, false
23
- g_lock = Gem::Source::Lock.new git
24
-
25
- installed = Gem::Source::Installed.new
26
- i_lock = Gem::Source::Lock.new installed
27
-
28
- assert_equal g_lock, g_lock
29
- refute_equal g_lock, i_lock
30
- refute_equal g_lock, Object.new
31
- end
32
-
33
- def test_spaceship
34
- git = Gem::Source::Git.new "a", "git/a", nil, false
35
- g_lock = Gem::Source::Lock.new git
36
-
37
- installed = Gem::Source::Installed.new
38
- i_lock = Gem::Source::Lock.new installed
39
-
40
- vendor = Gem::Source::Vendor.new "vendor/a"
41
- v_lock = Gem::Source::Lock.new vendor
42
-
43
- assert_equal(0, g_lock.<=>(g_lock), "g_lock <=> g_lock")
44
- assert_equal(0, i_lock.<=>(i_lock), "i_lock <=> i_lock")
45
- assert_equal(0, v_lock.<=>(v_lock), "v_lock <=> v_lock")
46
-
47
- assert_equal(1, g_lock.<=>(i_lock), "g_lock <=> i_lock")
48
- assert_equal(-1, i_lock.<=>(g_lock), "i_lock <=> g_lock")
49
-
50
- assert_equal(-1, g_lock.<=>(v_lock), "g_lock <=> v_lock")
51
- assert_equal(1, v_lock.<=>(g_lock), "v_lock <=> g_lock")
52
-
53
- assert_equal(-1, i_lock.<=>(v_lock), "i_lock <=> v_lock")
54
- assert_equal(1, v_lock.<=>(i_lock), "i_lock <=> v_lock")
55
- end
56
-
57
- def test_spaceship_git
58
- git = Gem::Source::Git.new "a", "git/a", nil, false
59
- lock = Gem::Source::Lock.new git
60
-
61
- assert_equal(1, lock.<=>(git), "lock <=> git")
62
- assert_equal(-1, git.<=>(lock), "git <=> lock")
63
- end
64
-
65
- def test_spaceship_installed
66
- installed = Gem::Source::Installed.new
67
- lock = Gem::Source::Lock.new installed
68
-
69
- assert_equal(1, lock.<=>(installed), "lock <=> installed")
70
- assert_equal(-1, installed.<=>(lock), "installed <=> lock")
71
- end
72
-
73
- def test_spaceship_local
74
- local = Gem::Source::Local.new
75
- lock = Gem::Source::Lock.new local # nonsense
76
-
77
- assert_equal(1, lock.<=>(local), "lock <=> local")
78
- assert_equal(-1, local.<=>(lock), "local <=> lock")
79
- end
80
-
81
- def test_spaceship_remote
82
- remote = Gem::Source.new @gem_repo
83
- lock = Gem::Source::Lock.new remote
84
-
85
- assert_equal(1, lock.<=>(remote), "lock <=> remote")
86
- assert_equal(-1, remote.<=>(lock), "remote <=> lock")
87
- end
88
-
89
- def test_spaceship_specific_file
90
- _, gem = util_gem "a", 1
91
-
92
- specific = Gem::Source::SpecificFile.new gem
93
- lock = Gem::Source::Lock.new specific # nonsense
94
-
95
- assert_equal(1, lock.<=>(specific), "lock <=> specific")
96
- assert_equal(-1, specific.<=>(lock), "specific <=> lock")
97
- end
98
-
99
- def test_spaceship_vendor
100
- vendor = Gem::Source::Vendor.new "vendor/a"
101
- lock = Gem::Source::Lock.new vendor
102
-
103
- assert_equal(1, lock.<=>(vendor), "lock <=> vendor")
104
- assert_equal(-1, vendor.<=>(lock), "vendor <=> lock")
105
- end
106
-
107
- def test_uri
108
- remote = Gem::Source.new @gem_repo
109
- lock = Gem::Source::Lock.new remote
110
-
111
- assert_equal URI(@gem_repo), lock.uri
112
- end
113
- end
@@ -1,76 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "helper"
4
- require "rubygems/source"
5
-
6
- class TestGemSourceSpecificFile < Gem::TestCase
7
- def setup
8
- super
9
-
10
- @a, @a_gem = util_gem "a", "1"
11
- @sf = Gem::Source::SpecificFile.new(@a_gem)
12
- end
13
-
14
- def test_path
15
- assert_equal @a_gem, @sf.path
16
- end
17
-
18
- def test_spec
19
- assert_equal @a, @sf.spec
20
- end
21
-
22
- def test_load_specs
23
- assert_equal [@a.name_tuple], @sf.load_specs
24
- end
25
-
26
- def test_fetch_spec
27
- assert_equal @a, @sf.fetch_spec(@a.name_tuple)
28
- end
29
-
30
- def test_fetch_spec_fails_on_unknown_name
31
- assert_raise Gem::Exception do
32
- @sf.fetch_spec(nil)
33
- end
34
- end
35
-
36
- def test_download
37
- assert_equal @a_gem, @sf.download(@a)
38
- end
39
-
40
- def test_spaceship
41
- a1 = quick_gem "a", "1"
42
- util_build_gem a1
43
-
44
- remote = Gem::Source.new @gem_repo
45
- specific = Gem::Source::SpecificFile.new a1.cache_file
46
- installed = Gem::Source::Installed.new
47
- local = Gem::Source::Local.new
48
-
49
- assert_equal(0, specific.<=>(specific), "specific <=> specific")
50
-
51
- assert_equal(-1, remote.<=>(specific), "remote <=> specific")
52
- assert_equal(1, specific.<=>(remote), "specific <=> remote")
53
-
54
- assert_equal(-1, specific.<=>(local), "specific <=> local")
55
- assert_equal(1, local. <=>(specific), "local <=> specific")
56
-
57
- assert_equal(-1, specific. <=>(installed), "specific <=> installed")
58
- assert_equal(1, installed.<=>(specific), "installed <=> specific")
59
-
60
- a2 = quick_gem "a", "2"
61
- util_build_gem a2
62
-
63
- b1 = quick_gem "b", "1"
64
- util_build_gem b1
65
-
66
- a1_source = specific
67
- a2_source = Gem::Source::SpecificFile.new a2.cache_file
68
- b1_source = Gem::Source::SpecificFile.new b1.cache_file
69
-
70
- assert_nil a1_source.<=>(b1_source), "a1_source <=> b1_source"
71
-
72
- assert_equal(-1, a1_source.<=>(a2_source), "a1_source <=> a2_source")
73
- assert_equal(0, a1_source.<=>(a1_source), "a1_source <=> a1_source")
74
- assert_equal(1, a2_source.<=>(a1_source), "a2_source <=> a1_source")
75
- end
76
- end
@@ -1,50 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "helper"
4
- require "rubygems/source"
5
-
6
- class TestGemSourceSubpathProblem < Gem::TestCase
7
- def tuple(*args)
8
- Gem::NameTuple.new(*args)
9
- end
10
-
11
- def setup
12
- super
13
-
14
- @gem_repo = "http://gems.example.com/private"
15
-
16
- spec_fetcher
17
-
18
- @source = Gem::Source.new(@gem_repo)
19
-
20
- util_make_gems
21
- end
22
-
23
- def test_dependency_resolver_set
24
- response = Net::HTTPResponse.new "1.1", 200, "OK"
25
- response.uri = URI("http://example")
26
-
27
- @fetcher.data["#{@gem_repo}/"] = response
28
-
29
- set = @source.dependency_resolver_set
30
-
31
- assert_kind_of Gem::Resolver::APISet, set
32
- end
33
-
34
- def test_fetch_spec
35
- @fetcher.data["#{@gem_repo}/#{Gem::MARSHAL_SPEC_DIR}#{@a1.spec_name}.rz"] = Zlib::Deflate.deflate(Marshal.dump(@a1))
36
-
37
- spec = @source.fetch_spec tuple("a", Gem::Version.new(1), "ruby")
38
- assert_equal @a1.full_name, spec.full_name
39
- end
40
-
41
- def test_load_specs
42
- @fetcher.data["#{@gem_repo}/latest_specs.#{Gem.marshal_version}.gz"] = util_gzip(Marshal.dump([
43
- Gem::NameTuple.new(@a1.name, @a1.version, "ruby"),
44
- Gem::NameTuple.new(@b2.name, @b2.version, "ruby"),
45
- ]))
46
-
47
- released = @source.load_specs(:latest).map {|spec| spec.full_name }
48
- assert_equal %W[a-1 b-2], released
49
- end
50
- end
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "helper"
4
- require "rubygems/source"
5
-
6
- class TestGemSourceVendor < Gem::TestCase
7
- def test_initialize
8
- source = Gem::Source::Vendor.new "vendor/foo"
9
-
10
- assert_equal "vendor/foo", source.uri
11
- end
12
-
13
- def test_spaceship
14
- vendor = Gem::Source::Vendor.new "vendor/foo"
15
- remote = Gem::Source.new @gem_repo
16
- git = Gem::Source::Git.new "a", "a", nil
17
- installed = Gem::Source::Installed.new
18
-
19
- assert_equal(0, vendor.<=>(vendor), "vendor <=> vendor")
20
-
21
- assert_equal(1, vendor.<=>(remote), "vendor <=> remote")
22
- assert_equal(-1, remote.<=>(vendor), "remote <=> vendor")
23
-
24
- assert_equal(1, vendor.<=>(git), "vendor <=> git")
25
- assert_equal(-1, git.<=>(vendor), "git <=> vendor")
26
-
27
- assert_equal(1, vendor.<=>(installed), "vendor <=> installed")
28
- assert_equal(-1, installed.<=>(vendor), "installed <=> vendor")
29
- end
30
- end
@@ -1,338 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "helper"
4
- require "rubygems/spec_fetcher"
5
-
6
- class TestGemSpecFetcher < Gem::TestCase
7
- def tuple(*args)
8
- Gem::NameTuple.new(*args)
9
- end
10
-
11
- def setup
12
- super
13
-
14
- @uri = URI.parse @gem_repo
15
- @source = Gem::Source.new(@uri)
16
-
17
- @sf = Gem::SpecFetcher.new
18
- end
19
-
20
- def test_initialize
21
- fetcher = Gem::SpecFetcher.new
22
-
23
- assert_same Gem.sources, fetcher.sources
24
- end
25
-
26
- def test_initialize_source
27
- alternate = "http://alternate.example"
28
- fetcher = Gem::SpecFetcher.new alternate
29
-
30
- refute_same Gem.sources, fetcher.sources
31
-
32
- assert_equal alternate, fetcher.sources
33
- end
34
-
35
- def test_initialize_nonexistent_home_dir
36
- FileUtils.rmdir Gem.user_home
37
-
38
- assert Gem::SpecFetcher.new
39
- end
40
-
41
- def test_initialize_unwritable_home_dir
42
- pend "chmod not supported" if Gem.win_platform?
43
-
44
- FileUtils.chmod 0o000, Gem.user_home
45
-
46
- begin
47
- assert Gem::SpecFetcher.new
48
- ensure
49
- FileUtils.chmod 0o755, Gem.user_home
50
- end
51
- end
52
-
53
- def test_spec_for_dependency_all
54
- spec_fetcher do |fetcher|
55
- fetcher.spec "a", 1
56
- fetcher.spec "a", "2.a"
57
- fetcher.spec "a", 2
58
- fetcher.spec "a", "3.a"
59
- end
60
-
61
- dep = Gem::Dependency.new "a", ">= 1"
62
-
63
- specs_and_sources, _ = @sf.spec_for_dependency dep
64
-
65
- spec_names = specs_and_sources.map do |spec, source_uri|
66
- [spec.full_name, source_uri]
67
- end
68
-
69
- expected = [["a-1", @source], ["a-2", @source]]
70
-
71
- assert_equal expected, spec_names
72
-
73
- assert_same specs_and_sources.first.last, specs_and_sources.last.last
74
- end
75
-
76
- def test_spec_for_dependency_latest
77
- spec_fetcher do |fetcher|
78
- fetcher.spec "a", 1
79
- fetcher.spec "a", 2
80
- fetcher.spec "a", "3.a"
81
- end
82
-
83
- dep = Gem::Dependency.new "a"
84
- specs_and_sources, _ = @sf.spec_for_dependency dep
85
-
86
- spec_names = specs_and_sources.map do |spec, source_uri|
87
- [spec.full_name, source_uri]
88
- end
89
-
90
- assert_equal [["a-2", Gem::Source.new(@gem_repo)]],
91
- spec_names
92
- end
93
-
94
- def test_spec_for_dependency_prerelease
95
- spec_fetcher do |fetcher|
96
- fetcher.spec "a", "1.a"
97
- fetcher.spec "a", 1
98
- end
99
-
100
- specs_and_sources, _ = @sf.spec_for_dependency dep("a", "1.a")
101
-
102
- spec_names = specs_and_sources.map do |spec, source_uri|
103
- [spec.full_name, source_uri]
104
- end
105
-
106
- assert_equal [["a-1.a", Gem::Source.new(@gem_repo)]], spec_names
107
- end
108
-
109
- def test_spec_for_dependency_platform
110
- util_set_arch "i386-linux"
111
-
112
- spec_fetcher do |fetcher|
113
- fetcher.legacy_platform
114
- end
115
-
116
- dep = Gem::Dependency.new "pl", 1
117
- specs_and_sources, _ = @sf.spec_for_dependency dep
118
-
119
- spec_names = specs_and_sources.map do |spec, source_uri|
120
- [spec.full_name, source_uri]
121
- end
122
-
123
- assert_equal [["pl-1-x86-linux", Gem::Source.new(@gem_repo)]],
124
- spec_names
125
- end
126
-
127
- def test_spec_for_dependency_mismatched_platform
128
- util_set_arch "hrpa-989"
129
-
130
- spec_fetcher do |fetcher|
131
- fetcher.legacy_platform
132
- end
133
-
134
- dep = Gem::Dependency.new "pl", 1
135
- specs_and_sources, errors = @sf.spec_for_dependency dep
136
-
137
- assert_equal 0, specs_and_sources.size
138
- assert_equal 1, errors.size
139
- pmm = errors.first
140
-
141
- assert_equal "i386-linux", pmm.platforms.first
142
- assert_equal "Found pl (1), but was for platform i386-linux", pmm.wordy
143
- end
144
-
145
- def test_spec_for_dependency_bad_fetch_spec
146
- src = Gem::Source.new(@gem_repo)
147
- def src.fetch_spec(name)
148
- raise Gem::RemoteFetcher::FetchError.new("bad news from the internet", @uri)
149
- end
150
-
151
- Gem.sources.replace [src]
152
-
153
- spec_fetcher do |fetcher|
154
- fetcher.spec "a", 1
155
- fetcher.spec "a", "2.a"
156
- fetcher.spec "a", 2
157
- fetcher.spec "a", "3.a"
158
- end
159
-
160
- dep = Gem::Dependency.new "a", ">= 1"
161
-
162
- specs_and_sources, errors = @sf.spec_for_dependency dep
163
-
164
- assert_equal [], specs_and_sources
165
- sfp = errors.first
166
-
167
- assert_kind_of Gem::SourceFetchProblem, sfp
168
- assert_equal src, sfp.source
169
- assert_equal "bad news from the internet (#{@gem_repo})", sfp.error.message
170
- end
171
-
172
- def test_suggest_gems_from_name_latest
173
- spec_fetcher do|fetcher|
174
- fetcher.spec "example", 1
175
- fetcher.spec "other-example", 1
176
- fetcher.spec "examp", 1
177
- end
178
-
179
- suggestions = @sf.suggest_gems_from_name("examplw", :latest, 1)
180
- assert_equal ["example"], suggestions
181
-
182
- suggestions = @sf.suggest_gems_from_name("other")
183
- assert_equal ["other-example"], suggestions
184
-
185
- suggestions = @sf.suggest_gems_from_name("exam")
186
- assert suggestions.any? { ["examp"] }
187
- assert suggestions.any? { ["example"] }
188
- assert suggestions.any? { ["other-example"] }
189
- end
190
-
191
- def test_suggest_gems_from_name_prerelease
192
- spec_fetcher do|fetcher|
193
- fetcher.spec "example", "1.a"
194
- fetcher.spec "other-example", 1
195
- end
196
-
197
- suggestions = @sf.suggest_gems_from_name("examplw")
198
- assert_equal ["example"], suggestions
199
- end
200
-
201
- def test_available_specs_latest
202
- spec_fetcher do |fetcher|
203
- fetcher.spec "a", 1
204
- fetcher.spec "a", 2
205
- fetcher.spec "a", "3.a"
206
- fetcher.legacy_platform
207
- end
208
-
209
- specs, _ = @sf.available_specs(:latest)
210
-
211
- assert_equal [@source], specs.keys
212
-
213
- expected = Gem::NameTuple.from_list \
214
- [["a", v(2), Gem::Platform::RUBY],
215
- ["pl", v(1), "i386-linux"]]
216
-
217
- assert_equal expected, specs[@source]
218
- end
219
-
220
- def test_available_specs_released
221
- spec_fetcher do |fetcher|
222
- fetcher.spec "a", 1
223
- fetcher.legacy_platform
224
- end
225
-
226
- specs, _ = @sf.available_specs(:released)
227
-
228
- assert_equal [@source], specs.keys
229
-
230
- expected = Gem::NameTuple.from_list \
231
- [["a", v(1), Gem::Platform::RUBY],
232
- ["pl", v(1), "i386-linux"]]
233
-
234
- assert_equal expected, specs[@source]
235
- end
236
-
237
- def test_available_specs_complete
238
- spec_fetcher do |fetcher|
239
- fetcher.spec "a", 1
240
- fetcher.spec "a", "2.a"
241
- fetcher.spec "b", 2
242
- fetcher.legacy_platform
243
- end
244
-
245
- specs, _ = @sf.available_specs(:complete)
246
-
247
- assert_equal [@source], specs.keys
248
-
249
- expected = Gem::NameTuple.from_list \
250
- [["a", v(1), Gem::Platform::RUBY],
251
- ["a", v("2.a"), Gem::Platform::RUBY],
252
- ["b", v(2), Gem::Platform::RUBY],
253
- ["pl", v(1), "i386-linux"]]
254
-
255
- assert_equal expected, specs[@source]
256
- end
257
-
258
- def test_available_specs_complete_handles_no_prerelease
259
- spec_fetcher do |fetcher|
260
- fetcher.spec "a", 1
261
- fetcher.spec "a", "2.a"
262
- fetcher.spec "b", 2
263
- fetcher.legacy_platform
264
- end
265
-
266
- v = Gem.marshal_version
267
- @fetcher.data.delete "#{@gem_repo}prerelease_specs.#{v}.gz"
268
-
269
- specs, _ = @sf.available_specs(:complete)
270
-
271
- assert_equal [@source], specs.keys
272
-
273
- expected = Gem::NameTuple.from_list \
274
- [["a", v(1), Gem::Platform::RUBY],
275
- ["b", v(2), Gem::Platform::RUBY],
276
- ["pl", v(1), "i386-linux"]]
277
-
278
- assert_equal expected, specs[@source]
279
- end
280
-
281
- def test_available_specs_cache
282
- spec_fetcher do |fetcher|
283
- fetcher.spec "a", 1
284
- end
285
-
286
- specs, _ = @sf.available_specs(:latest)
287
-
288
- refute specs[@source].empty?
289
-
290
- @fetcher.data["#{@gem_repo}/latest_specs.#{Gem.marshal_version}.gz"] = nil
291
-
292
- cached_specs, _ = @sf.available_specs(:latest)
293
-
294
- assert_equal specs, cached_specs
295
- end
296
-
297
- def test_available_specs_cache_released
298
- spec_fetcher do |fetcher|
299
- fetcher.spec "a", 1
300
- fetcher.spec "a", "2.a"
301
- fetcher.spec "b", 2
302
- fetcher.legacy_platform
303
- end
304
-
305
- specs, _ = @sf.available_specs(:released)
306
-
307
- refute specs[@source].empty?
308
-
309
- @fetcher.data["#{@gem_repo}/specs.#{Gem.marshal_version}.gz"] = nil
310
-
311
- cached_specs, _ = @sf.available_specs(:released)
312
-
313
- assert_equal specs, cached_specs
314
- end
315
-
316
- def test_available_specs_prerelease
317
- spec_fetcher do |fetcher|
318
- fetcher.spec "a", 1
319
- fetcher.spec "a", "2.a"
320
- end
321
-
322
- specs, _ = @sf.available_specs(:prerelease)
323
-
324
- expected = Gem::NameTuple.from_list \
325
- [["a", v("2.a"), Gem::Platform::RUBY]]
326
-
327
- assert_equal expected, specs[@source]
328
- end
329
-
330
- def test_available_specs_with_bad_source
331
- Gem.sources.replace ["http://not-there.nothing"]
332
-
333
- specs, errors = @sf.available_specs(:latest)
334
-
335
- assert_equal({}, specs)
336
- assert_kind_of Gem::SourceFetchProblem, errors.first
337
- end
338
- end