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,836 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "helper"
4
- require "rubygems/commands/update_command"
5
-
6
- class TestGemCommandsUpdateCommand < Gem::TestCase
7
- def setup
8
- super
9
- common_installer_setup
10
-
11
- @cmd = Gem::Commands::UpdateCommand.new
12
-
13
- @cmd.options[:document] = []
14
-
15
- @specs = spec_fetcher do |fetcher|
16
- fetcher.download "a", 1
17
- fetcher.download "a", 2
18
- fetcher.download "a", "3.a"
19
- end
20
-
21
- @a1_path = @specs["a-1"].cache_file
22
- @a2_path = @specs["a-1"].cache_file
23
- @a3a_path = @specs["a-3.a"].cache_file
24
- end
25
-
26
- def test_execute
27
- spec_fetcher do |fetcher|
28
- fetcher.download "a", 2
29
- fetcher.spec "a", 1
30
- end
31
-
32
- @cmd.options[:args] = []
33
-
34
- use_ui @ui do
35
- @cmd.execute
36
- end
37
-
38
- out = @ui.output.split "\n"
39
- assert_equal "Updating installed gems", out.shift
40
- assert_equal "Updating a", out.shift
41
- assert_equal "Gems updated: a", out.shift
42
- assert_empty out
43
- end
44
-
45
- def test_execute_multiple
46
- spec_fetcher do |fetcher|
47
- fetcher.download "a", 2
48
- fetcher.download "ab", 2
49
-
50
- fetcher.spec "a", 1
51
- fetcher.spec "ab", 1
52
- end
53
-
54
- @cmd.options[:args] = %w[a]
55
-
56
- use_ui @ui do
57
- @cmd.execute
58
- end
59
-
60
- out = @ui.output.split "\n"
61
- assert_equal "Updating installed gems", out.shift
62
- assert_equal "Updating a", out.shift
63
- assert_equal "Gems updated: a", out.shift
64
- assert_empty out
65
- end
66
-
67
- def test_execute_system
68
- spec_fetcher do |fetcher|
69
- fetcher.download "rubygems-update", 9 do |s|
70
- s.files = %w[setup.rb]
71
- end
72
- end
73
-
74
- @cmd.options[:args] = []
75
- @cmd.options[:system] = true
76
-
77
- use_ui @ui do
78
- @cmd.execute
79
- end
80
-
81
- out = @ui.output.split "\n"
82
- assert_equal "Updating rubygems-update", out.shift
83
- assert_equal "Installing RubyGems 9", out.shift
84
- assert_equal "RubyGems system software updated", out.shift
85
-
86
- assert_empty out
87
- end
88
-
89
- def test_execute_system_at_latest
90
- spec_fetcher do |fetcher|
91
- fetcher.download "rubygems-update", Gem::VERSION do |s|
92
- s.files = %w[setup.rb]
93
- end
94
- end
95
-
96
- @cmd.options[:args] = []
97
- @cmd.options[:system] = true
98
-
99
- assert_raise Gem::MockGemUi::SystemExitException do
100
- use_ui @ui do
101
- @cmd.execute
102
- end
103
- end
104
-
105
- out = @ui.output.split "\n"
106
- assert_equal "Latest version already installed. Done.", out.shift
107
- assert_empty out
108
- end
109
-
110
- def test_execute_system_when_latest_does_not_support_your_ruby
111
- spec_fetcher do |fetcher|
112
- fetcher.download "rubygems-update", 9 do |s|
113
- s.files = %w[setup.rb]
114
- s.required_ruby_version = "> 9"
115
- end
116
- end
117
-
118
- @cmd.options[:args] = []
119
- @cmd.options[:system] = true
120
-
121
- use_ui @ui do
122
- @cmd.execute
123
- end
124
-
125
- out = @ui.output.split "\n"
126
- assert_equal "Updating rubygems-update", out.shift
127
- assert_empty out
128
-
129
- err = @ui.error.split "\n"
130
- assert_equal "ERROR: Error installing rubygems-update:", err.shift
131
- assert_equal "\trubygems-update-9 requires Ruby version > 9. The current ruby version is #{Gem.ruby_version}.", err.shift
132
- assert_empty err
133
- end
134
-
135
- def test_execute_system_multiple
136
- spec_fetcher do |fetcher|
137
- fetcher.download "rubygems-update", 8 do |s|
138
- s.files = %w[setup.rb]
139
- end
140
-
141
- fetcher.download "rubygems-update", 9 do |s|
142
- s.files = %w[setup.rb]
143
- end
144
- end
145
-
146
- @cmd.options[:args] = []
147
- @cmd.options[:system] = true
148
-
149
- use_ui @ui do
150
- @cmd.execute
151
- end
152
-
153
- out = @ui.output.split "\n"
154
- assert_equal "Updating rubygems-update", out.shift
155
- assert_equal "Installing RubyGems 9", out.shift
156
- assert_equal "RubyGems system software updated", out.shift
157
-
158
- assert_empty out
159
- end
160
-
161
- def test_execute_system_update_installed
162
- spec_fetcher do |fetcher|
163
- fetcher.download "rubygems-update", 8 do |s|
164
- s.files = %w[setup.rb]
165
- end
166
- end
167
-
168
- @cmd.options[:args] = []
169
- @cmd.options[:system] = true
170
-
171
- @cmd.execute
172
-
173
- spec_fetcher do |fetcher|
174
- fetcher.download "rubygems-update", 9 do |s|
175
- s.files = %w[setup.rb]
176
- end
177
- end
178
-
179
- @cmd = Gem::Commands::UpdateCommand.new
180
- @cmd.options[:args] = []
181
- @cmd.options[:system] = true
182
-
183
- use_ui @ui do
184
- @cmd.execute
185
- end
186
-
187
- out = @ui.output.split "\n"
188
- assert_equal "Updating rubygems-update", out.shift
189
- assert_equal "Installing RubyGems 9", out.shift
190
- assert_equal "RubyGems system software updated", out.shift
191
-
192
- assert_empty out
193
- end
194
-
195
- def test_execute_system_update_installed_in_non_default_gem_path
196
- rubygems_update_spec = quick_gem "rubygems-update", 9 do |s|
197
- write_file File.join(@tempdir, "setup.rb")
198
-
199
- s.files += %w[setup.rb]
200
- end
201
-
202
- util_setup_spec_fetcher rubygems_update_spec
203
-
204
- rubygems_update_package = Gem::Package.build rubygems_update_spec
205
-
206
- gemhome2 = "#{@gemhome}2"
207
-
208
- Gem::Installer.at(rubygems_update_package, :install_dir => gemhome2).install
209
-
210
- Gem.use_paths @gemhome, [gemhome2, @gemhome]
211
-
212
- @cmd.options[:args] = []
213
- @cmd.options[:system] = true
214
-
215
- use_ui @ui do
216
- @cmd.execute
217
- end
218
-
219
- out = @ui.output.split "\n"
220
- assert_equal "Installing RubyGems 9", out.shift
221
- assert_equal "RubyGems system software updated", out.shift
222
-
223
- assert_empty out
224
- end
225
-
226
- def test_execute_system_specific
227
- spec_fetcher do |fetcher|
228
- fetcher.download "rubygems-update", 8 do |s|
229
- s.files = %w[setup.rb]
230
- end
231
-
232
- fetcher.download "rubygems-update", 9 do |s|
233
- s.files = %w[setup.rb]
234
- end
235
- end
236
-
237
- @cmd.options[:args] = []
238
- @cmd.options[:system] = "8"
239
-
240
- use_ui @ui do
241
- @cmd.execute
242
- end
243
-
244
- out = @ui.output.split "\n"
245
- assert_equal "Updating rubygems-update", out.shift
246
- assert_equal "Installing RubyGems 8", out.shift
247
- assert_equal "RubyGems system software updated", out.shift
248
-
249
- assert_empty out
250
- end
251
-
252
- def test_execute_system_specific_older_than_minimum_supported_rubygems
253
- spec_fetcher do |fetcher|
254
- fetcher.download "rubygems-update", "2.5.1" do |s|
255
- s.files = %w[setup.rb]
256
- end
257
- end
258
-
259
- @cmd.options[:args] = []
260
- @cmd.options[:system] = "2.5.1"
261
-
262
- oldest_version_mod = Module.new do
263
- def oldest_supported_version
264
- Gem::Version.new("2.5.2")
265
- end
266
- private :oldest_supported_version
267
- end
268
-
269
- @cmd.extend(oldest_version_mod)
270
-
271
- assert_raise Gem::MockGemUi::TermError do
272
- use_ui @ui do
273
- @cmd.execute
274
- end
275
- end
276
-
277
- assert_empty @ui.output
278
- assert_equal "ERROR: rubygems 2.5.1 is not supported on #{RUBY_VERSION}. The oldest version supported by this ruby is 2.5.2\n", @ui.error
279
- end
280
-
281
- def test_execute_system_specific_older_than_3_2_removes_plugins_dir
282
- spec_fetcher do |fetcher|
283
- fetcher.download "rubygems-update", 3.1 do |s|
284
- s.files = %w[setup.rb]
285
- end
286
- end
287
-
288
- oldest_version_mod = Module.new do
289
- def oldest_supported_version
290
- Gem::Version.new("2.5.2")
291
- end
292
- private :oldest_supported_version
293
- end
294
-
295
- @cmd.extend(oldest_version_mod)
296
-
297
- @cmd.options[:args] = []
298
- @cmd.options[:system] = "3.1"
299
-
300
- FileUtils.mkdir_p Gem.plugindir
301
- write_file File.join(Gem.plugindir, "a_plugin.rb")
302
-
303
- @cmd.execute
304
-
305
- assert_path_not_exist Gem.plugindir, "Plugins folder not removed when updating rubygems to pre-3.2"
306
- end
307
-
308
- def test_execute_system_specific_newer_than_or_equal_to_3_2_leaves_plugins_dir_alone
309
- spec_fetcher do |fetcher|
310
- fetcher.download "rubygems-update", "3.2.a" do |s|
311
- s.files = %w[setup.rb]
312
- end
313
- end
314
-
315
- oldest_version_mod = Module.new do
316
- def oldest_supported_version
317
- Gem::Version.new("2.5.2")
318
- end
319
- private :oldest_supported_version
320
- end
321
-
322
- @cmd.extend(oldest_version_mod)
323
-
324
- @cmd.options[:args] = []
325
- @cmd.options[:system] = "3.2.a"
326
-
327
- FileUtils.mkdir_p Gem.plugindir
328
- plugin_file = File.join(Gem.plugindir, "a_plugin.rb")
329
- write_file plugin_file
330
-
331
- @cmd.execute
332
-
333
- assert_path_exist Gem.plugindir, "Plugin folder removed when updating rubygems to post-3.2"
334
- assert_path_exist plugin_file, "Plugin removed when updating rubygems to post-3.2"
335
- end
336
-
337
- def test_execute_system_specifically_to_latest_version
338
- spec_fetcher do |fetcher|
339
- fetcher.download "rubygems-update", 8 do |s|
340
- s.files = %w[setup.rb]
341
- end
342
-
343
- fetcher.download "rubygems-update", 9 do |s|
344
- s.files = %w[setup.rb]
345
- end
346
- end
347
-
348
- @cmd.options[:args] = []
349
- @cmd.options[:system] = "9"
350
-
351
- use_ui @ui do
352
- @cmd.execute
353
- end
354
-
355
- out = @ui.output.split "\n"
356
- assert_equal "Updating rubygems-update", out.shift
357
- assert_equal "Installing RubyGems 9", out.shift
358
- assert_equal "RubyGems system software updated", out.shift
359
-
360
- assert_empty out
361
- end
362
-
363
- def test_execute_system_with_gems
364
- @cmd.options[:args] = %w[gem]
365
- @cmd.options[:system] = true
366
-
367
- assert_raise Gem::MockGemUi::TermError do
368
- use_ui @ui do
369
- @cmd.execute
370
- end
371
- end
372
-
373
- assert_empty @ui.output
374
- assert_equal "ERROR: Gem names are not allowed with the --system option\n",
375
- @ui.error
376
- end
377
-
378
- def test_execute_system_with_disabled_update
379
- old_disable_system_update_message = Gem.disable_system_update_message
380
- Gem.disable_system_update_message = "Please use package manager instead."
381
-
382
- @cmd.options[:args] = []
383
- @cmd.options[:system] = true
384
-
385
- assert_raise Gem::MockGemUi::TermError do
386
- use_ui @ui do
387
- @cmd.execute
388
- end
389
- end
390
-
391
- assert_empty @ui.output
392
- assert_equal "ERROR: Please use package manager instead.\n", @ui.error
393
- ensure
394
- Gem.disable_system_update_message = old_disable_system_update_message
395
- end
396
-
397
- # The other style of `gem update --system` tests don't actually run
398
- # setup.rb, so we just check that setup.rb gets the `--silent` flag.
399
- def test_execute_system_silent_passed_to_setuprb
400
- @cmd.options[:args] = []
401
- @cmd.options[:system] = true
402
- @cmd.options[:silent] = true
403
-
404
- assert_equal true, @cmd.update_rubygems_arguments.include?("--silent")
405
- end
406
-
407
- def test_execute_system_silent
408
- spec_fetcher do |fetcher|
409
- fetcher.download "rubygems-update", 9 do |s|
410
- s.files = %w[setup.rb]
411
- end
412
- end
413
-
414
- @cmd.options[:args] = []
415
- @cmd.options[:system] = true
416
- @cmd.options[:silent] = true
417
-
418
- use_ui @ui do
419
- @cmd.execute
420
- end
421
-
422
- assert_empty @ui.output
423
- end
424
-
425
- # before:
426
- # a1 -> c1.2
427
- # after:
428
- # a2 -> b2 # new dependency
429
- # a2 -> c2
430
-
431
- def test_execute_dependencies
432
- spec_fetcher do |fetcher|
433
- fetcher.download "a", 2, "b" => 2, "c" => 2
434
- fetcher.download "b", 2
435
- fetcher.download "c", 2
436
-
437
- fetcher.spec "a", 1, "c" => "1.2"
438
- fetcher.spec "c", "1.2"
439
- end
440
-
441
- Gem::Specification.reset
442
-
443
- @cmd.options[:args] = []
444
-
445
- use_ui @ui do
446
- @cmd.execute
447
- end
448
-
449
- out = @ui.output.split "\n"
450
- assert_equal "Updating installed gems", out.shift
451
- assert_equal "Updating a", out.shift
452
- assert_equal "Gems updated: a b c",
453
- out.shift
454
-
455
- assert_empty out
456
- end
457
-
458
- def test_execute_rdoc
459
- spec_fetcher do |fetcher|
460
- fetcher.download "a", 2
461
- fetcher.spec "a", 1
462
- end
463
-
464
- Gem.done_installing(&Gem::RDoc.method(:generation_hook))
465
-
466
- @cmd.options[:document] = %w[rdoc ri]
467
-
468
- @cmd.options[:args] = %w[a]
469
-
470
- use_ui @ui do
471
- @cmd.execute
472
- end
473
-
474
- wait_for_child_process_to_exit
475
-
476
- a2 = @specs["a-2"]
477
-
478
- assert_path_exist File.join(a2.doc_dir, "rdoc")
479
- end
480
-
481
- def test_execute_named
482
- spec_fetcher do |fetcher|
483
- fetcher.download "a", 2
484
-
485
- fetcher.spec "a", 1
486
- end
487
-
488
- @cmd.options[:args] = %w[a]
489
-
490
- use_ui @ui do
491
- @cmd.execute
492
- end
493
-
494
- out = @ui.output.split "\n"
495
- assert_equal "Updating installed gems", out.shift
496
- assert_equal "Updating a", out.shift
497
- assert_equal "Gems updated: a", out.shift
498
-
499
- assert_empty out
500
- end
501
-
502
- def test_execute_named_some_up_to_date
503
- spec_fetcher do |fetcher|
504
- fetcher.download "a", 2
505
- fetcher.spec "a", 1
506
-
507
- fetcher.spec "b", 2
508
- end
509
-
510
- @cmd.options[:args] = %w[a b]
511
-
512
- use_ui @ui do
513
- @cmd.execute
514
- end
515
-
516
- out = @ui.output.split "\n"
517
- assert_equal "Updating installed gems", out.shift
518
- assert_equal "Updating a", out.shift
519
- assert_equal "Gems updated: a", out.shift
520
- assert_equal "Gems already up-to-date: b", out.shift
521
-
522
- assert_empty out
523
- end
524
-
525
- def test_execute_named_up_to_date
526
- spec_fetcher do |fetcher|
527
- fetcher.spec "a", 2
528
- end
529
-
530
- @cmd.options[:args] = %w[a]
531
-
532
- use_ui @ui do
533
- @cmd.execute
534
- end
535
-
536
- out = @ui.output.split "\n"
537
- assert_equal "Updating installed gems", out.shift
538
- assert_equal "Nothing to update", out.shift
539
- assert_equal "Gems already up-to-date: a", out.shift
540
-
541
- assert_empty out
542
- end
543
-
544
- def test_execute_named_up_to_date_prerelease
545
- spec_fetcher do |fetcher|
546
- fetcher.download "a", "3.a"
547
-
548
- fetcher.gem "a", 2
549
- end
550
-
551
- @cmd.options[:args] = %w[a]
552
- @cmd.options[:prerelease] = true
553
-
554
- use_ui @ui do
555
- @cmd.execute
556
- end
557
-
558
- out = @ui.output.split "\n"
559
- assert_equal "Updating installed gems", out.shift
560
- assert_equal "Updating a", out.shift
561
- assert_equal "Gems updated: a", out.shift
562
-
563
- assert_empty out
564
- end
565
-
566
- def test_execute_up_to_date
567
- spec_fetcher do |fetcher|
568
- fetcher.gem "a", 2
569
- end
570
-
571
- @cmd.options[:args] = []
572
-
573
- use_ui @ui do
574
- @cmd.execute
575
- end
576
-
577
- out = @ui.output.split "\n"
578
- assert_equal "Updating installed gems", out.shift
579
- assert_equal "Nothing to update", out.shift
580
-
581
- assert_empty out
582
- end
583
-
584
- def test_execute_user_install
585
- a = util_spec "a", 1
586
- b = util_spec "b", 1
587
- install_gem_user(a)
588
- install_gem(b)
589
-
590
- @cmd.handle_options %w[--user-install]
591
-
592
- use_ui @ui do
593
- @cmd.execute
594
- end
595
-
596
- installer = @cmd.installer
597
- user_install = installer.instance_variable_get :@user_install
598
-
599
- assert user_install, "user_install must be set on the installer"
600
-
601
- out = @ui.output.split "\n"
602
- assert_equal "Updating installed gems", out.shift
603
- assert_equal "Updating a", out.shift
604
- assert_equal "Gems updated: a", out.shift
605
- assert_empty out
606
- end
607
-
608
- def test_fetch_remote_gems
609
- specs = spec_fetcher do |fetcher|
610
- fetcher.gem "a", 1
611
- fetcher.gem "a", 2
612
- end
613
-
614
- expected = [
615
- [Gem::NameTuple.new("a", v(2), Gem::Platform::RUBY),
616
- Gem::Source.new(@gem_repo)],
617
- ]
618
-
619
- assert_equal expected, @cmd.fetch_remote_gems(specs["a-1"])
620
- end
621
-
622
- def test_fetch_remote_gems_error
623
- Gem.sources.replace %w[http://nonexistent.example]
624
-
625
- assert_raise Gem::RemoteFetcher::FetchError do
626
- @cmd.fetch_remote_gems @specs["a-1"]
627
- end
628
- end
629
-
630
- def test_fetch_remote_gems_mismatch
631
- platform = Gem::Platform.new "x86-freebsd9"
632
-
633
- specs = spec_fetcher do |fetcher|
634
- fetcher.spec "a", 1
635
- fetcher.spec "a", 2
636
-
637
- fetcher.spec "a", 2 do |s|
638
- s.platform = platform
639
- end
640
- end
641
-
642
- expected = [
643
- [Gem::NameTuple.new("a", v(2), Gem::Platform::RUBY),
644
- Gem::Source.new(@gem_repo)],
645
- ]
646
-
647
- assert_equal expected, @cmd.fetch_remote_gems(specs["a-1"])
648
- end
649
-
650
- def test_fetch_remote_gems_prerelease
651
- specs = spec_fetcher do |fetcher|
652
- fetcher.gem "a", 1
653
- fetcher.gem "a", 2
654
- fetcher.gem "a", "3.a"
655
- end
656
-
657
- @cmd.options[:prerelease] = true
658
-
659
- expected = [
660
- [Gem::NameTuple.new("a", v(2), Gem::Platform::RUBY),
661
- Gem::Source.new(@gem_repo)],
662
- [Gem::NameTuple.new("a", v("3.a"), Gem::Platform::RUBY),
663
- Gem::Source.new(@gem_repo)],
664
- ]
665
-
666
- assert_equal expected, @cmd.fetch_remote_gems(specs["a-1"])
667
- end
668
-
669
- def test_handle_options_system
670
- @cmd.handle_options %w[--system]
671
-
672
- expected = {
673
- :args => [],
674
- :document => %w[ri],
675
- :force => false,
676
- :system => true,
677
- }
678
-
679
- assert_equal expected, @cmd.options
680
- end
681
-
682
- def test_handle_options_system_non_version
683
- assert_raise ArgumentError do
684
- @cmd.handle_options %w[--system non-version]
685
- end
686
- end
687
-
688
- def test_handle_options_system_specific
689
- @cmd.handle_options %w[--system 1.3.7]
690
-
691
- expected = {
692
- :args => [],
693
- :document => %w[ri],
694
- :force => false,
695
- :system => "1.3.7",
696
- }
697
-
698
- assert_equal expected, @cmd.options
699
- end
700
-
701
- def test_update_gem_prerelease
702
- spec_fetcher do |fetcher|
703
- fetcher.spec "a", "1.a"
704
- fetcher.gem "a", "1.b"
705
- end
706
-
707
- @cmd.update_gem "a", Gem::Requirement.new("= 1.b")
708
-
709
- refute_empty @cmd.updated
710
-
711
- assert @cmd.installer.instance_variable_get :@prerelease
712
- end
713
-
714
- def test_update_gem_unresolved_dependency
715
- spec_fetcher do |fetcher|
716
- fetcher.spec "a", 1
717
- fetcher.gem "a", 2 do |s|
718
- s.add_dependency "b", ">= 2"
719
- end
720
-
721
- fetcher.spec "b", 1
722
- end
723
-
724
- @cmd.update_gem "a"
725
-
726
- assert_empty @cmd.updated
727
- end
728
-
729
- def test_update_rubygems_arguments
730
- @cmd.options[:system] = true
731
-
732
- arguments = @cmd.update_rubygems_arguments
733
-
734
- assert_equal "--prefix", arguments.shift
735
- assert_equal Gem.prefix, arguments.shift
736
- assert_equal "--no-document", arguments.shift
737
- assert_equal "--previous-version", arguments.shift
738
- assert_equal Gem::VERSION, arguments.shift
739
- assert_empty arguments
740
- end
741
-
742
- def test_explain
743
- spec_fetcher do |fetcher|
744
- fetcher.download "a", 2
745
- fetcher.spec "a", 1
746
- end
747
-
748
- @cmd.options[:explain] = true
749
- @cmd.options[:args] = %w[a]
750
-
751
- use_ui @ui do
752
- @cmd.execute
753
- end
754
-
755
- out = @ui.output.split "\n"
756
-
757
- assert_equal "Gems to update:", out.shift
758
- assert_equal " a-2", out.shift
759
- assert_empty out
760
- end
761
-
762
- def test_explain_platform_local
763
- local = Gem::Platform.local
764
- spec_fetcher do |fetcher|
765
- fetcher.download "a", 2
766
-
767
- fetcher.download "a", 2 do |s|
768
- s.platform = local
769
- end
770
-
771
- fetcher.spec "a", 1
772
- end
773
-
774
- @cmd.options[:explain] = true
775
- @cmd.options[:args] = %w[a]
776
-
777
- use_ui @ui do
778
- @cmd.execute
779
- end
780
-
781
- out = @ui.output.split "\n"
782
-
783
- assert_equal "Gems to update:", out.shift
784
- assert_equal " a-2-#{local}", out.shift
785
- assert_empty out
786
- end
787
-
788
- def test_explain_platform_ruby
789
- local = Gem::Platform.local
790
- spec_fetcher do |fetcher|
791
- fetcher.download "a", 2
792
-
793
- fetcher.download "a", 2 do |s|
794
- s.platform = local
795
- end
796
-
797
- fetcher.spec "a", 1
798
- end
799
-
800
- # equivalent to --platform=ruby
801
- Gem.platforms = [Gem::Platform::RUBY]
802
-
803
- @cmd.options[:explain] = true
804
- @cmd.options[:args] = %w[a]
805
-
806
- use_ui @ui do
807
- @cmd.execute
808
- end
809
-
810
- out = @ui.output.split "\n"
811
-
812
- assert_equal "Gems to update:", out.shift
813
- assert_equal " a-2", out.shift
814
- assert_empty out
815
- end
816
-
817
- def test_execute_named_not_installed_and_no_update
818
- spec_fetcher do |fetcher|
819
- fetcher.spec "a", 2
820
- end
821
-
822
- @cmd.options[:args] = %w[a b]
823
-
824
- use_ui @ui do
825
- @cmd.execute
826
- end
827
-
828
- out = @ui.output.split "\n"
829
- assert_equal "Updating installed gems", out.shift
830
- assert_equal "Nothing to update", out.shift
831
- assert_equal "Gems already up-to-date: a", out.shift
832
- assert_equal "Gems not currently installed: b", out.shift
833
-
834
- assert_empty out
835
- end
836
- end