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,672 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "helper"
4
- require "rubygems/request_set"
5
-
6
- class TestGemRequestSet < Gem::TestCase
7
- def setup
8
- super
9
-
10
- Gem::RemoteFetcher.fetcher = @fetcher = Gem::FakeFetcher.new
11
-
12
- @DR = Gem::Resolver
13
- end
14
-
15
- def test_gem
16
- util_spec "a", "2"
17
-
18
- rs = Gem::RequestSet.new
19
- rs.gem "a", "= 2"
20
-
21
- assert_equal [Gem::Dependency.new("a", "=2")], rs.dependencies
22
- end
23
-
24
- def test_gem_duplicate
25
- rs = Gem::RequestSet.new
26
-
27
- rs.gem "a", "1"
28
- rs.gem "a", "2"
29
-
30
- assert_equal [dep("a", "= 1", "= 2")], rs.dependencies
31
- end
32
-
33
- def test_import
34
- rs = Gem::RequestSet.new
35
- rs.gem "a"
36
-
37
- rs.import [dep("b")]
38
-
39
- assert_equal [dep("a"), dep("b")], rs.dependencies
40
- end
41
-
42
- def test_install_from_gemdeps
43
- spec_fetcher do |fetcher|
44
- fetcher.gem "a", 2
45
- end
46
-
47
- done_installing_ran = false
48
-
49
- Gem.done_installing do |installer, specs|
50
- done_installing_ran = true
51
- end
52
-
53
- rs = Gem::RequestSet.new
54
- installed = []
55
-
56
- File.open "gem.deps.rb", "w" do |io|
57
- io.puts 'gem "a"'
58
- io.flush
59
-
60
- result = rs.install_from_gemdeps :gemdeps => io.path do |req, installer|
61
- installed << req.full_name
62
- end
63
-
64
- assert_kind_of Array, result # what is supposed to be in here?
65
- end
66
-
67
- assert_includes installed, "a-2"
68
- assert_path_exist File.join @gemhome, "gems", "a-2"
69
- assert_path_exist "gem.deps.rb.lock"
70
-
71
- assert rs.remote
72
- refute done_installing_ran
73
- end
74
-
75
- def test_install_from_gemdeps_explain
76
- spec_fetcher do |fetcher|
77
- fetcher.gem "a", 2
78
- end
79
-
80
- rs = Gem::RequestSet.new
81
-
82
- File.open "gem.deps.rb", "w" do |io|
83
- io.puts 'gem "a"'
84
- io.flush
85
-
86
- expected = <<-EXPECTED
87
- Gems to install:
88
- a-2
89
- EXPECTED
90
-
91
- actual, _ = capture_output do
92
- rs.install_from_gemdeps :gemdeps => io.path, :explain => true
93
- end
94
- assert_equal(expected, actual)
95
- end
96
- end
97
-
98
- def test_install_from_gemdeps_install_dir
99
- spec_fetcher do |fetcher|
100
- fetcher.gem "a", 2
101
- end
102
-
103
- util_clear_gems
104
- assert_path_not_exist File.join Gem.dir, "gems", "a-2"
105
-
106
- rs = Gem::RequestSet.new
107
- installed = []
108
-
109
- File.open "gem.deps.rb", "w" do |io|
110
- io.puts 'gem "a"'
111
- end
112
-
113
- options = {
114
- :gemdeps => "gem.deps.rb",
115
- :install_dir => "#{@gemhome}2",
116
- }
117
-
118
- rs.install_from_gemdeps options do |req, installer|
119
- installed << req.full_name
120
- end
121
-
122
- assert_includes installed, "a-2"
123
- assert_path_not_exist File.join Gem.dir, "gems", "a-2"
124
- end
125
-
126
- def test_install_from_gemdeps_local
127
- spec_fetcher do |fetcher|
128
- fetcher.gem "a", 2
129
- end
130
-
131
- rs = Gem::RequestSet.new
132
-
133
- File.open "gem.deps.rb", "w" do |io|
134
- io.puts 'gem "a"'
135
- io.flush
136
-
137
- assert_raise Gem::UnsatisfiableDependencyError do
138
- rs.install_from_gemdeps :gemdeps => io.path, :domain => :local
139
- end
140
- end
141
-
142
- refute rs.remote
143
- end
144
-
145
- def test_install_from_gemdeps_lockfile
146
- spec_fetcher do |fetcher|
147
- fetcher.download "a", 1
148
- fetcher.download "a", 2
149
- fetcher.download "b", 1, "a" => ">= 0"
150
- end
151
-
152
- rs = Gem::RequestSet.new
153
- installed = []
154
-
155
- File.open "gem.deps.rb.lock", "w" do |io|
156
- io.puts <<-LOCKFILE
157
- GEM
158
- remote: #{@gem_repo}
159
- specs:
160
- a (1)
161
- b (1)
162
- a (~> 1.0)
163
-
164
- PLATFORMS
165
- #{Gem::Platform::RUBY}
166
-
167
- DEPENDENCIES
168
- b
169
- LOCKFILE
170
- end
171
-
172
- File.open "gem.deps.rb", "w" do |io|
173
- io.puts 'gem "b"'
174
- end
175
-
176
- rs.install_from_gemdeps :gemdeps => "gem.deps.rb" do |req, installer|
177
- installed << req.full_name
178
- end
179
-
180
- assert_includes installed, "b-1"
181
- assert_includes installed, "a-1"
182
-
183
- assert_path_exist File.join @gemhome, "specifications", "a-1.gemspec"
184
- assert_path_exist File.join @gemhome, "specifications", "b-1.gemspec"
185
- end
186
-
187
- def test_install_from_gemdeps_complex_dependencies
188
- quick_gem("z", 1)
189
- quick_gem("z", "1.0.1")
190
- quick_gem("z", "1.0.2")
191
- quick_gem("z", "1.0.3")
192
- quick_gem("z", 2)
193
-
194
- spec_fetcher do |fetcher|
195
- fetcher.download "z", 1
196
- end
197
-
198
- rs = Gem::RequestSet.new
199
- installed = []
200
-
201
- File.open "Gemfile.lock", "w" do |io|
202
- io.puts <<-LOCKFILE
203
- GEM
204
- remote: #{@gem_repo}
205
- specs:
206
- z (1)
207
-
208
- PLATFORMS
209
- #{Gem::Platform::RUBY}
210
-
211
- DEPENDENCIES
212
- z (~> 1.0, >= 1.0.1)
213
- LOCKFILE
214
- end
215
-
216
- File.open "testo.gemspec", "w" do |io|
217
- io.puts <<-LOCKFILE
218
- Gem::Specification.new do |spec|
219
- spec.name = 'testo'
220
- spec.version = '1.0.0'
221
- spec.add_dependency('z', '~> 1.0', '>= 1.0.1')
222
- end
223
- LOCKFILE
224
- end
225
-
226
- File.open "Gemfile", "w" do |io|
227
- io.puts("gemspec")
228
- end
229
-
230
- rs.install_from_gemdeps :gemdeps => "Gemfile" do |req, installer|
231
- installed << req.full_name
232
- end
233
-
234
- assert_includes installed, "z-1.0.3"
235
-
236
- assert_path_exist File.join @gemhome, "specifications", "z-1.0.3.gemspec"
237
- end
238
-
239
- def test_install_from_gemdeps_version_mismatch
240
- spec_fetcher do |fetcher|
241
- fetcher.gem "a", 2
242
- end
243
-
244
- rs = Gem::RequestSet.new
245
- installed = []
246
-
247
- File.open "gem.deps.rb", "w" do |io|
248
- io.puts <<-GEM_DEPS
249
- gem "a"
250
- ruby "0"
251
- GEM_DEPS
252
-
253
- io.flush
254
-
255
- rs.install_from_gemdeps :gemdeps => io.path do |req, installer|
256
- installed << req.full_name
257
- end
258
- end
259
-
260
- assert_includes installed, "a-2"
261
- end
262
-
263
- def test_load_gemdeps
264
- rs = Gem::RequestSet.new
265
-
266
- tf = Tempfile.open "gem.deps.rb" do |io|
267
- io.puts 'gem "a"'
268
- io.flush
269
-
270
- gem_deps = rs.load_gemdeps io.path
271
-
272
- assert_kind_of Gem::RequestSet::GemDependencyAPI, gem_deps
273
- io
274
- end
275
- tf.close!
276
-
277
- assert_equal [dep("a")], rs.dependencies
278
-
279
- assert rs.git_set
280
- assert rs.vendor_set
281
- end
282
-
283
- def test_load_gemdeps_installing
284
- rs = Gem::RequestSet.new
285
-
286
- tf = Tempfile.open "gem.deps.rb" do |io|
287
- io.puts 'ruby "0"'
288
- io.puts 'gem "a"'
289
- io.flush
290
-
291
- gem_deps = rs.load_gemdeps io.path, [], true
292
-
293
- assert_kind_of Gem::RequestSet::GemDependencyAPI, gem_deps
294
- io
295
- end
296
- tf.close!
297
-
298
- assert_equal [dep("a")], rs.dependencies
299
- end
300
-
301
- def test_load_gemdeps_without_groups
302
- rs = Gem::RequestSet.new
303
-
304
- tf = Tempfile.open "gem.deps.rb" do |io|
305
- io.puts 'gem "a", :group => :test'
306
- io.flush
307
-
308
- rs.load_gemdeps io.path, [:test]
309
- io
310
- end
311
- tf.close!
312
-
313
- assert_empty rs.dependencies
314
- end
315
-
316
- def test_resolve
317
- a = util_spec "a", "2", "b" => ">= 2"
318
- b = util_spec "b", "2"
319
-
320
- rs = Gem::RequestSet.new
321
- rs.gem "a"
322
-
323
- orig_errors = rs.errors
324
-
325
- res = rs.resolve StaticSet.new([a, b])
326
- assert_equal 2, res.size
327
-
328
- names = res.map {|s| s.full_name }.sort
329
-
330
- assert_equal ["a-2", "b-2"], names
331
-
332
- refute_same orig_errors, rs.errors
333
- end
334
-
335
- def test_bug_bug_990
336
- a = util_spec "a", "1.b", "b" => "~> 1.a"
337
- b = util_spec "b", "1.b", "c" => ">= 1"
338
- c = util_spec "c", "1.1.b"
339
-
340
- rs = Gem::RequestSet.new
341
- rs.gem "a"
342
- rs.prerelease = true
343
-
344
- res = rs.resolve StaticSet.new([a, b, c])
345
- assert_equal 3, res.size
346
-
347
- names = res.map {|s| s.full_name }.sort
348
-
349
- assert_equal %w[a-1.b b-1.b c-1.1.b], names
350
- end
351
-
352
- def test_resolve_development
353
- a = util_spec "a", 1
354
- spec = Gem::Resolver::SpecSpecification.new nil, a
355
-
356
- rs = Gem::RequestSet.new
357
- rs.gem "a"
358
- rs.development = true
359
-
360
- res = rs.resolve StaticSet.new [spec]
361
- assert_equal 1, res.size
362
-
363
- assert rs.resolver.development
364
- refute rs.resolver.development_shallow
365
- end
366
-
367
- def test_resolve_development_shallow
368
- a = util_spec "a", 1 do |s|
369
- s.add_development_dependency "b"
370
- end
371
-
372
- b = util_spec "b", 1 do |s|
373
- s.add_development_dependency "c"
374
- end
375
-
376
- c = util_spec "c", 1
377
-
378
- a_spec = Gem::Resolver::SpecSpecification.new nil, a
379
- b_spec = Gem::Resolver::SpecSpecification.new nil, b
380
- c_spec = Gem::Resolver::SpecSpecification.new nil, c
381
-
382
- rs = Gem::RequestSet.new
383
- rs.gem "a"
384
- rs.development = true
385
- rs.development_shallow = true
386
-
387
- res = rs.resolve StaticSet.new [a_spec, b_spec, c_spec]
388
- assert_equal 2, res.size
389
-
390
- assert rs.resolver.development
391
- assert rs.resolver.development_shallow
392
- end
393
-
394
- def test_resolve_git
395
- name, _, repository, = git_gem
396
-
397
- rs = Gem::RequestSet.new
398
-
399
- tf = Tempfile.open "gem.deps.rb" do |io|
400
- io.puts <<-GEMS_DEPS_RB
401
- gem "#{name}", :git => "#{repository}"
402
- GEMS_DEPS_RB
403
-
404
- io.flush
405
-
406
- rs.load_gemdeps io.path
407
- io
408
- end
409
- tf.close!
410
-
411
- res = rs.resolve
412
- assert_equal 1, res.size
413
-
414
- names = res.map {|s| s.full_name }.sort
415
-
416
- assert_equal %w[a-1], names
417
-
418
- assert_equal [@DR::BestSet, @DR::GitSet, @DR::VendorSet, @DR::SourceSet],
419
- rs.sets.map {|set| set.class }
420
- end
421
-
422
- def test_resolve_ignore_dependencies
423
- a = util_spec "a", "2", "b" => ">= 2"
424
- b = util_spec "b", "2"
425
-
426
- rs = Gem::RequestSet.new
427
- rs.gem "a"
428
- rs.ignore_dependencies = true
429
-
430
- res = rs.resolve StaticSet.new([a, b])
431
- assert_equal 1, res.size
432
-
433
- names = res.map {|s| s.full_name }.sort
434
-
435
- assert_equal %w[a-2], names
436
- end
437
-
438
- def test_resolve_incompatible
439
- a1 = util_spec "a", 1
440
- a2 = util_spec "a", 2
441
-
442
- rs = Gem::RequestSet.new
443
- rs.gem "a", "= 1"
444
- rs.gem "a", "= 2"
445
-
446
- set = StaticSet.new [a1, a2]
447
-
448
- assert_raise Gem::UnsatisfiableDependencyError do
449
- rs.resolve set
450
- end
451
- end
452
-
453
- def test_resolve_vendor
454
- a_name, _, a_directory = vendor_gem "a", 1 do |s|
455
- s.add_dependency "b", "~> 2.0"
456
- end
457
-
458
- b_name, _, b_directory = vendor_gem "b", 2
459
-
460
- rs = Gem::RequestSet.new
461
-
462
- tf = Tempfile.open "gem.deps.rb" do |io|
463
- io.puts <<-GEMS_DEPS_RB
464
- gem "#{a_name}", :path => "#{a_directory}"
465
- gem "#{b_name}", :path => "#{b_directory}"
466
- GEMS_DEPS_RB
467
-
468
- io.flush
469
-
470
- rs.load_gemdeps io.path
471
- io
472
- end
473
- tf.close!
474
-
475
- res = rs.resolve
476
- assert_equal 2, res.size
477
-
478
- names = res.map {|s| s.full_name }.sort
479
-
480
- assert_equal ["a-1", "b-2"], names
481
-
482
- assert_equal [@DR::BestSet, @DR::GitSet, @DR::VendorSet, @DR::SourceSet],
483
- rs.sets.map {|set| set.class }
484
- end
485
-
486
- def test_sorted_requests
487
- a = util_spec "a", "2", "b" => ">= 2"
488
- b = util_spec "b", "2", "c" => ">= 2"
489
- c = util_spec "c", "2"
490
-
491
- rs = Gem::RequestSet.new
492
- rs.gem "a"
493
-
494
- rs.resolve StaticSet.new([a, b, c])
495
-
496
- names = rs.sorted_requests.map {|s| s.full_name }
497
- assert_equal %w[c-2 b-2 a-2], names
498
- end
499
-
500
- def test_install
501
- done_installing_ran = false
502
-
503
- Gem.done_installing do
504
- done_installing_ran = true
505
- end
506
-
507
- spec_fetcher do |fetcher|
508
- fetcher.download "a", "1", "b" => "= 1"
509
- fetcher.download "b", "1"
510
- end
511
-
512
- rs = Gem::RequestSet.new
513
- rs.gem "a"
514
-
515
- rs.resolve
516
-
517
- reqs = []
518
- installers = []
519
-
520
- installed = rs.install({}) do |req, installer|
521
- reqs << req
522
- installers << installer
523
- end
524
-
525
- assert_equal %w[b-1 a-1], reqs.map {|req| req.full_name }
526
- assert_equal %w[b-1 a-1],
527
- installers.map {|installer| installer.spec.full_name }
528
-
529
- assert_path_exist File.join @gemhome, "specifications", "a-1.gemspec"
530
- assert_path_exist File.join @gemhome, "specifications", "b-1.gemspec"
531
-
532
- assert_equal %w[b-1 a-1], installed.map {|s| s.full_name }
533
-
534
- assert done_installing_ran
535
- end
536
-
537
- def test_install_into
538
- spec_fetcher do |fetcher|
539
- fetcher.gem "a", "1", "b" => "= 1"
540
- fetcher.gem "b", "1"
541
- end
542
-
543
- rs = Gem::RequestSet.new
544
- rs.gem "a"
545
-
546
- rs.resolve
547
-
548
- installed = rs.install_into @tempdir do
549
- assert_equal @tempdir, ENV["GEM_HOME"]
550
- end
551
-
552
- assert_path_exist File.join @tempdir, "specifications", "a-1.gemspec"
553
- assert_path_exist File.join @tempdir, "specifications", "b-1.gemspec"
554
-
555
- assert_equal %w[b-1 a-1], installed.map {|s| s.full_name }
556
- end
557
-
558
- def test_install_into_development_shallow
559
- spec_fetcher do |fetcher|
560
- fetcher.gem "a", "1" do |s|
561
- s.add_development_dependency "b", "= 1"
562
- end
563
-
564
- fetcher.gem "b", "1" do |s|
565
- s.add_development_dependency "c", "= 1"
566
- end
567
-
568
- fetcher.spec "c", "1"
569
- end
570
-
571
- rs = Gem::RequestSet.new
572
- rs.development = true
573
- rs.development_shallow = true
574
- rs.gem "a"
575
-
576
- rs.resolve
577
-
578
- options = {
579
- :development => true,
580
- :development_shallow => true,
581
- }
582
-
583
- installed = rs.install_into @tempdir, true, options do
584
- assert_equal @tempdir, ENV["GEM_HOME"]
585
- end
586
-
587
- assert_equal %w[a-1 b-1], installed.map {|s| s.full_name }.sort
588
- end
589
-
590
- def test_sorted_requests_development_shallow
591
- a = util_spec "a", 1 do |s|
592
- s.add_development_dependency "b"
593
- end
594
-
595
- b = util_spec "b", 1 do |s|
596
- s.add_development_dependency "c"
597
- end
598
-
599
- c = util_spec "c", 1
600
-
601
- rs = Gem::RequestSet.new
602
- rs.gem "a"
603
- rs.development = true
604
- rs.development_shallow = true
605
-
606
- a_spec = Gem::Resolver::SpecSpecification.new nil, a
607
- b_spec = Gem::Resolver::SpecSpecification.new nil, b
608
- c_spec = Gem::Resolver::SpecSpecification.new nil, c
609
-
610
- rs.resolve StaticSet.new [a_spec, b_spec, c_spec]
611
-
612
- assert_equal %w[b-1 a-1], rs.sorted_requests.map {|req| req.full_name }
613
- end
614
-
615
- def test_tsort_each_child_development
616
- a = util_spec "a", 1 do |s|
617
- s.add_development_dependency "b"
618
- end
619
-
620
- b = util_spec "b", 1 do |s|
621
- s.add_development_dependency "c"
622
- end
623
-
624
- c = util_spec "c", 1
625
-
626
- rs = Gem::RequestSet.new
627
- rs.gem "a"
628
- rs.development = true
629
- rs.development_shallow = true
630
-
631
- a_spec = Gem::Resolver::SpecSpecification.new nil, a
632
- b_spec = Gem::Resolver::SpecSpecification.new nil, b
633
- c_spec = Gem::Resolver::SpecSpecification.new nil, c
634
-
635
- rs.resolve StaticSet.new [a_spec, b_spec, c_spec]
636
-
637
- a_req = Gem::Resolver::ActivationRequest.new a_spec, nil
638
-
639
- deps = rs.enum_for(:tsort_each_child, a_req).to_a
640
-
641
- assert_equal %w[b], deps.map {|dep| dep.name }
642
- end
643
-
644
- def test_tsort_each_child_development_shallow
645
- a = util_spec "a", 1 do |s|
646
- s.add_development_dependency "b"
647
- end
648
-
649
- b = util_spec "b", 1 do |s|
650
- s.add_development_dependency "c"
651
- end
652
-
653
- c = util_spec "c", 1
654
-
655
- rs = Gem::RequestSet.new
656
- rs.gem "a"
657
- rs.development = true
658
- rs.development_shallow = true
659
-
660
- a_spec = Gem::Resolver::SpecSpecification.new nil, a
661
- b_spec = Gem::Resolver::SpecSpecification.new nil, b
662
- c_spec = Gem::Resolver::SpecSpecification.new nil, c
663
-
664
- rs.resolve StaticSet.new [a_spec, b_spec, c_spec]
665
-
666
- b_req = Gem::Resolver::ActivationRequest.new b_spec, nil
667
-
668
- deps = rs.enum_for(:tsort_each_child, b_req).to_a
669
-
670
- assert_empty deps
671
- end
672
- end