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,130 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "helper"
4
- require "rubygems/available_set"
5
- require "rubygems/security"
6
-
7
- class TestGemAvailableSet < Gem::TestCase
8
- def setup
9
- super
10
-
11
- @source = Gem::Source.new(@gem_repo)
12
- end
13
-
14
- def test_add_and_empty
15
- a1, _ = util_gem "a", "1"
16
-
17
- set = Gem::AvailableSet.new
18
- assert set.empty?
19
-
20
- set.add a1, @source
21
-
22
- refute set.empty?
23
-
24
- assert_equal [a1], set.all_specs
25
- end
26
-
27
- def test_find_all
28
- a1, a1_gem = util_gem "a", 1
29
- a1a, a1a_gem = util_gem "a", "1.a"
30
-
31
- a1_source = Gem::Source::SpecificFile.new a1_gem
32
- a1a_source = Gem::Source::SpecificFile.new a1a_gem
33
-
34
- set = Gem::AvailableSet.new
35
- set.add a1, a1_source
36
- set.add a1a, a1a_source
37
-
38
- dep = Gem::Resolver::DependencyRequest.new dep("a"), nil
39
-
40
- assert_equal %w[a-1], set.find_all(dep).map {|spec| spec.full_name }
41
-
42
- dep = Gem::Resolver::DependencyRequest.new dep("a", ">= 0.a"), nil
43
-
44
- assert_equal %w[a-1 a-1.a],
45
- set.find_all(dep).map {|spec| spec.full_name }.sort
46
- end
47
-
48
- def test_match_platform
49
- a1, _ = util_gem "a", "1" do |g|
50
- g.platform = "something-weird-yep"
51
- end
52
-
53
- a1c, _ = util_gem "a", "2" do |g|
54
- g.platform = Gem::Platform.local
55
- end
56
-
57
- a2, _ = util_gem "a", "2"
58
-
59
- set = Gem::AvailableSet.new
60
- set.add a1, @source
61
- set.add a1c, @source
62
- set.add a2, @source
63
-
64
- set.match_platform!
65
-
66
- assert_equal [a1c, a2], set.all_specs
67
- end
68
-
69
- def test_best
70
- a1, _ = util_gem "a", "1"
71
- a2, _ = util_gem "a", "2"
72
-
73
- set = Gem::AvailableSet.new
74
- set.add a1, @source
75
- set.add a2, @source
76
-
77
- set.pick_best!
78
-
79
- assert_equal [a2], set.all_specs
80
- end
81
-
82
- def test_remove_installed_bang
83
- a1, _ = util_spec "a", "1"
84
- install_specs a1
85
-
86
- a1.activate
87
-
88
- set = Gem::AvailableSet.new
89
- set.add a1, @source
90
-
91
- dep = Gem::Dependency.new "a", ">= 0"
92
-
93
- set.remove_installed! dep
94
-
95
- assert set.empty?
96
- end
97
-
98
- def test_sorted_normal_versions
99
- a1, _ = util_gem "a", "1"
100
- a2, _ = util_gem "a", "2"
101
-
102
- set = Gem::AvailableSet.new
103
- set.add a1, @source
104
- set.add a2, @source
105
-
106
- g = set.sorted
107
-
108
- assert_equal a2, g[0].spec
109
- assert_equal a1, g[1].spec
110
- end
111
-
112
- def test_sorted_respect_pre
113
- a1a, _ = util_gem "a", "1.a"
114
- a1, _ = util_gem "a", "1"
115
- a2a, _ = util_gem "a", "2.a"
116
- a2, _ = util_gem "a", "2"
117
- a3a, _ = util_gem "a", "3.a"
118
-
119
- set = Gem::AvailableSet.new
120
- set.add a1, @source
121
- set.add a1a, @source
122
- set.add a3a, @source
123
- set.add a2a, @source
124
- set.add a2, @source
125
-
126
- g = set.sorted.map {|t| t.spec }
127
-
128
- assert_equal [a3a, a2, a2a, a1, a1a], g
129
- end
130
- end
@@ -1,127 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "helper"
4
- require "rubygems/bundler_version_finder"
5
-
6
- class TestGemBundlerVersionFinder < Gem::TestCase
7
- def setup
8
- @argv = ARGV.dup
9
- @dollar_0 = $0
10
- super
11
-
12
- without_any_upwards_gemfiles
13
- end
14
-
15
- def teardown
16
- ARGV.replace @argv
17
- $0 = @dollar_0
18
-
19
- super
20
- end
21
-
22
- def bvf
23
- Gem::BundlerVersionFinder
24
- end
25
-
26
- def test_bundler_version_defaults_to_nil
27
- assert_nil bvf.bundler_version
28
- end
29
-
30
- def test_bundler_version_with_env_var
31
- ENV["BUNDLER_VERSION"] = "1.1.1.1"
32
- assert_equal v("1.1.1.1"), bvf.bundler_version
33
- end
34
-
35
- def test_bundler_version_with_bundle_update_bundler
36
- ARGV.replace %w[update --bundler]
37
- assert_nil bvf.bundler_version
38
- $0 = "/foo/bar/bundle"
39
- assert_nil bvf.bundler_version
40
- ARGV.replace %w[update --bundler=1.1.1.1 gem_name]
41
- assert_equal v("1.1.1.1"), bvf.bundler_version
42
- ARGV.replace %w[update --bundler 1.1.1.1 gem_name]
43
- assert_equal v("1.1.1.1"), bvf.bundler_version
44
- ARGV.replace %w[update --bundler\ 1.1.1.1 gem_name]
45
- assert_equal v("1.1.1.1"), bvf.bundler_version
46
- ARGV.replace %w[update --bundler\ 1.1.1.2 --bundler --bundler 1.1.1.1 gem_name]
47
- assert_equal v("1.1.1.1"), bvf.bundler_version
48
- $0 = "other"
49
- assert_nil bvf.bundler_version
50
- end
51
-
52
- def test_bundler_version_with_lockfile
53
- bvf.stub(:lockfile_contents, "") do
54
- assert_nil bvf.bundler_version
55
- end
56
- bvf.stub(:lockfile_contents, "\n\nBUNDLED WITH\n 1.1.1.1\n") do
57
- assert_equal v("1.1.1.1"), bvf.bundler_version
58
- end
59
- bvf.stub(:lockfile_contents, "\n\nBUNDLED WITH\n fjdkslfjdkslfjsldk\n") do
60
- assert_nil bvf.bundler_version
61
- end
62
- end
63
-
64
- def test_bundler_version
65
- assert_nil bvf.bundler_version
66
- bvf.stub(:lockfile_contents, "\n\nBUNDLED WITH\n 1.1.1.1\n") do
67
- assert_equal "1.1.1.1", bvf.bundler_version.to_s
68
-
69
- $0 = "bundle"
70
- ARGV.replace %w[update --bundler]
71
- assert_nil bvf.bundler_version
72
-
73
- ARGV.replace %w[update --bundler=1.1.1.2]
74
- assert_equal "1.1.1.2", bvf.bundler_version.to_s
75
-
76
- ENV["BUNDLER_VERSION"] = "1.1.1.3"
77
- assert_equal "1.1.1.3", bvf.bundler_version.to_s
78
- end
79
- end
80
-
81
- def test_deleted_directory
82
- pend "Cannot perform this test on windows" if win_platform?
83
- pend "Cannot perform this test on Solaris" if RUBY_PLATFORM.include?("solaris")
84
- require "tmpdir"
85
-
86
- orig_dir = Dir.pwd
87
-
88
- begin
89
- Dir.mktmpdir("some_dir") do |dir|
90
- Dir.chdir(dir)
91
- end
92
- ensure
93
- Dir.chdir(orig_dir)
94
- end
95
-
96
- assert_nil bvf.bundler_version
97
- end
98
-
99
- def test_prioritize
100
- versions = %w[1 1.0 1.0.1.1 2 2.a 2.0 2.1.1 3 3.a 3.0 3.1.1]
101
- specs = versions.map {|v| util_spec("bundler", v) }
102
-
103
- assert_equal %w[1 1.0 1.0.1.1 2 2.a 2.0 2.1.1 3 3.a 3.0 3.1.1], util_prioritize_specs(specs)
104
-
105
- bvf.stub(:bundler_version, v("2.1.1.1")) do
106
- assert_equal %w[1 1.0 1.0.1.1 2 2.a 2.0 2.1.1 3 3.a 3.0 3.1.1], util_prioritize_specs(specs)
107
- end
108
- bvf.stub(:bundler_version, v("1.1.1.1")) do
109
- assert_equal %w[1 1.0 1.0.1.1 2 2.a 2.0 2.1.1 3 3.a 3.0 3.1.1], util_prioritize_specs(specs)
110
- end
111
- bvf.stub(:bundler_version, v("1")) do
112
- assert_equal %w[1 1.0 1.0.1.1 2 2.a 2.0 2.1.1 3 3.a 3.0 3.1.1], util_prioritize_specs(specs)
113
- end
114
- bvf.stub(:bundler_version, v("2.a")) do
115
- assert_equal %w[2.a 1 1.0 1.0.1.1 2 2.0 2.1.1 3 3.a 3.0 3.1.1], util_prioritize_specs(specs)
116
- end
117
- bvf.stub(:bundler_version, v("3")) do
118
- assert_equal %w[3 1 1.0 1.0.1.1 2 2.a 2.0 2.1.1 3.a 3.0 3.1.1], util_prioritize_specs(specs)
119
- end
120
- end
121
-
122
- def util_prioritize_specs(specs)
123
- specs = specs.dup
124
- bvf.prioritize!(specs)
125
- specs.map(&:version).map(&:to_s)
126
- end
127
- end
@@ -1,403 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "helper"
4
- require "rubygems/command"
5
-
6
- class Gem::Command
7
- public :parser
8
- end
9
-
10
- class TestGemCommand < Gem::TestCase
11
- def setup
12
- super
13
-
14
- @xopt = nil
15
-
16
- @common_options = Gem::Command.common_options.dup
17
- Gem::Command.common_options.clear
18
- Gem::Command.common_options << [
19
- ["-x", "--exe", "Execute"], lambda do |*a|
20
- @xopt = true
21
- end
22
- ]
23
-
24
- @cmd_name = "doit"
25
- @cmd = Gem::Command.new @cmd_name, "summary"
26
- end
27
-
28
- def teardown
29
- super
30
- Gem::Command.common_options.replace @common_options
31
- end
32
-
33
- def test_self_add_specific_extra_args
34
- added_args = %w[--all]
35
- @cmd.add_option("--all") {|v,o| }
36
-
37
- Gem::Command.add_specific_extra_args @cmd_name, added_args
38
-
39
- assert_equal added_args, Gem::Command.specific_extra_args(@cmd_name)
40
-
41
- h = @cmd.add_extra_args []
42
-
43
- assert_equal added_args, h
44
- end
45
-
46
- def test_self_add_specific_extra_args_unknown
47
- added_args = %w[--definitely_not_there]
48
-
49
- Gem::Command.add_specific_extra_args @cmd_name, added_args
50
-
51
- assert_equal added_args, Gem::Command.specific_extra_args(@cmd_name)
52
-
53
- h = @cmd.add_extra_args []
54
-
55
- assert_equal [], h
56
- end
57
-
58
- def test_self_extra_args
59
- verbose = $VERBOSE
60
- $VERBOSE = nil
61
- separator = $;
62
- extra_args = Gem::Command.extra_args
63
-
64
- Gem::Command.extra_args = %w[--all]
65
- assert_equal %w[--all], Gem::Command.extra_args
66
-
67
- Gem::Command.extra_args = "--file --help"
68
- assert_equal %w[--file --help], Gem::Command.extra_args
69
-
70
- $; = "="
71
-
72
- Gem::Command.extra_args = "--awesome=true --verbose"
73
- assert_equal %w[--awesome=true --verbose], Gem::Command.extra_args
74
-
75
- ensure
76
- Gem::Command.extra_args = extra_args
77
- $; = separator
78
- $VERBOSE = verbose
79
- end
80
-
81
- def test_basic_accessors
82
- assert_equal "doit", @cmd.command
83
- assert_equal "gem doit", @cmd.program_name
84
- assert_equal "summary", @cmd.summary
85
- end
86
-
87
- def test_common_option_in_class
88
- assert Array === Gem::Command.common_options
89
- end
90
-
91
- def test_defaults
92
- @cmd.add_option("-h", "--help [COMMAND]", "Get help on COMMAND") do |value, options|
93
- options[:help] = value
94
- end
95
-
96
- @cmd.defaults = { :help => true }
97
-
98
- @cmd.when_invoked do |options|
99
- assert options[:help], "Help options should default true"
100
- end
101
-
102
- use_ui @ui do
103
- @cmd.invoke
104
- end
105
-
106
- assert_match %r{Usage: gem doit}, @ui.output
107
- end
108
-
109
- def test_invoke
110
- done = false
111
- @cmd.when_invoked { done = true }
112
-
113
- use_ui @ui do
114
- @cmd.invoke
115
- end
116
-
117
- assert done
118
- end
119
-
120
- def test_invoke_with_bad_options
121
- use_ui @ui do
122
- @cmd.when_invoked { true }
123
-
124
- ex = assert_raise Gem::OptionParser::InvalidOption do
125
- @cmd.invoke("-zzz")
126
- end
127
-
128
- assert_match(/invalid option:/, ex.message)
129
- end
130
- end
131
-
132
- def test_invoke_with_common_options
133
- @cmd.when_invoked { true }
134
-
135
- use_ui @ui do
136
- @cmd.invoke "-x"
137
- end
138
-
139
- assert @xopt, "Should have done xopt"
140
- end
141
-
142
- def test_invoke_with_build_args
143
- @cmd.when_invoked { true }
144
-
145
- use_ui @ui do
146
- @cmd.invoke_with_build_args ["-x"], ["--awesome=true"]
147
- end
148
-
149
- assert_equal ["--awesome=true"], @cmd.options[:build_args]
150
- end
151
-
152
- # Returning false from the command handler invokes the usage output.
153
- def test_invoke_with_help
154
- done = false
155
-
156
- use_ui @ui do
157
- @cmd.add_option("-h", "--help [COMMAND]", "Get help on COMMAND") do |value, options|
158
- options[:help] = true
159
- done = true
160
- end
161
-
162
- @cmd.invoke("--help")
163
-
164
- assert done
165
- end
166
-
167
- assert_match(/Usage/, @ui.output)
168
- assert_match(/gem doit/, @ui.output)
169
- assert_match(/\[options\]/, @ui.output)
170
- assert_match(/-h/, @ui.output)
171
- assert_match(/--help \[COMMAND\]/, @ui.output)
172
- assert_match(/Get help on COMMAND/, @ui.output)
173
- assert_match(/-x/, @ui.output)
174
- assert_match(/--exe/, @ui.output)
175
- assert_match(/Execute/, @ui.output)
176
- assert_match(/Common Options:/, @ui.output)
177
- end
178
-
179
- def test_invoke_with_options
180
- @cmd.add_option("-h", "--help [COMMAND]", "Get help on COMMAND") do |value, options|
181
- options[:help] = true
182
- end
183
-
184
- @cmd.when_invoked do |opts|
185
- assert opts[:help]
186
- end
187
-
188
- use_ui @ui do
189
- @cmd.invoke "-h"
190
- end
191
-
192
- assert_match %r{Usage: gem doit}, @ui.output
193
- end
194
-
195
- def test_add_option
196
- assert_nothing_raised RuntimeError do
197
- @cmd.add_option("--force", "skip validation of the spec") {|v,o| }
198
- end
199
- end
200
-
201
- def test_add_option_with_empty
202
- assert_raise RuntimeError, "Do not pass an empty string in opts" do
203
- @cmd.add_option("", "skip validation of the spec") {|v,o| }
204
- end
205
- end
206
-
207
- def test_option_recognition
208
- @cmd.add_option("-h", "--help [COMMAND]", "Get help on COMMAND") do |value, options|
209
- options[:help] = true
210
- end
211
- @cmd.add_option("-f", "--file FILE", "File option") do |value, options|
212
- options[:help] = true
213
- end
214
- @cmd.add_option("--silent", "Silence RubyGems output") do |value, options|
215
- options[:silent] = true
216
- end
217
- assert @cmd.handles?(["-x"])
218
- assert @cmd.handles?(["-h"])
219
- assert @cmd.handles?(["-h", "command"])
220
- assert @cmd.handles?(["--help", "command"])
221
- assert @cmd.handles?(["-f", "filename"])
222
- assert @cmd.handles?(["--file=filename"])
223
- assert @cmd.handles?(["--silent"])
224
- refute @cmd.handles?(["-z"])
225
- refute @cmd.handles?(["-f"])
226
- refute @cmd.handles?(["--toothpaste"])
227
-
228
- args = ["-h", "command"]
229
- @cmd.handles?(args)
230
- assert_equal ["-h", "command"], args
231
- end
232
-
233
- def test_deprecate_option
234
- deprecate_msg = <<-EXPECTED
235
- WARNING: The \"--test\" option has been deprecated and will be removed in Rubygems 3.1.
236
- EXPECTED
237
-
238
- testCommand = Class.new(Gem::Command) do
239
- def initialize
240
- super("test", "Gem::Command instance for testing")
241
-
242
- add_option("-t", "--test", "Test command") do |value, options|
243
- options[:test] = true
244
- end
245
-
246
- deprecate_option("--test", version: "3.1")
247
- end
248
-
249
- def execute
250
- true
251
- end
252
- end
253
-
254
- cmd = testCommand.new
255
-
256
- use_ui @ui do
257
- cmd.invoke("--test")
258
- assert_equal deprecate_msg, @ui.error
259
- end
260
- end
261
-
262
- def test_deprecate_option_no_version
263
- deprecate_msg = <<-EXPECTED
264
- WARNING: The \"--test\" option has been deprecated and will be removed in future versions of Rubygems.
265
- EXPECTED
266
-
267
- testCommand = Class.new(Gem::Command) do
268
- def initialize
269
- super("test", "Gem::Command instance for testing")
270
-
271
- add_option("-t", "--test", "Test command") do |value, options|
272
- options[:test] = true
273
- end
274
-
275
- deprecate_option("--test")
276
- end
277
-
278
- def execute
279
- true
280
- end
281
- end
282
-
283
- cmd = testCommand.new
284
-
285
- use_ui @ui do
286
- cmd.invoke("--test")
287
- assert_equal deprecate_msg, @ui.error
288
- end
289
- end
290
-
291
- def test_deprecate_option_extra_message
292
- deprecate_msg = <<-EXPECTED
293
- WARNING: The \"--test\" option has been deprecated and will be removed in Rubygems 3.1. Whether you set `--test` mode or not, this dummy app always runs in test mode.
294
- EXPECTED
295
-
296
- testCommand = Class.new(Gem::Command) do
297
- def initialize
298
- super("test", "Gem::Command instance for testing")
299
-
300
- add_option("-t", "--test", "Test command") do |value, options|
301
- options[:test] = true
302
- end
303
-
304
- deprecate_option("--test", version: "3.1", extra_msg: "Whether you set `--test` mode or not, this dummy app always runs in test mode.")
305
- end
306
-
307
- def execute
308
- true
309
- end
310
- end
311
-
312
- cmd = testCommand.new
313
-
314
- use_ui @ui do
315
- cmd.invoke("--test")
316
- assert_equal deprecate_msg, @ui.error
317
- end
318
- end
319
-
320
- def test_deprecate_option_extra_message_and_no_version
321
- deprecate_msg = <<-EXPECTED
322
- WARNING: The \"--test\" option has been deprecated and will be removed in future versions of Rubygems. Whether you set `--test` mode or not, this dummy app always runs in test mode.
323
- EXPECTED
324
-
325
- testCommand = Class.new(Gem::Command) do
326
- def initialize
327
- super("test", "Gem::Command instance for testing")
328
-
329
- add_option("-t", "--test", "Test command") do |value, options|
330
- options[:test] = true
331
- end
332
-
333
- deprecate_option("--test", extra_msg: "Whether you set `--test` mode or not, this dummy app always runs in test mode.")
334
- end
335
-
336
- def execute
337
- true
338
- end
339
- end
340
-
341
- cmd = testCommand.new
342
-
343
- use_ui @ui do
344
- cmd.invoke("--test")
345
- assert_equal deprecate_msg, @ui.error
346
- end
347
- end
348
-
349
- def test_show_lookup_failure_suggestions_local
350
- correct = "non_existent_with_hint"
351
- misspelled = "nonexistent_with_hint"
352
-
353
- spec_fetcher do |fetcher|
354
- fetcher.spec correct, 2
355
- end
356
-
357
- use_ui @ui do
358
- @cmd.show_lookup_failure misspelled, Gem::Requirement.default, [], :local
359
- end
360
-
361
- expected = <<-EXPECTED
362
- ERROR: Could not find a valid gem 'nonexistent_with_hint' (>= 0) in any repository
363
- EXPECTED
364
-
365
- assert_equal expected, @ui.error
366
- end
367
-
368
- def test_show_lookup_failure_suggestions_none
369
- spec_fetcher do |fetcher|
370
- fetcher.spec "correct", 2
371
- end
372
-
373
- use_ui @ui do
374
- @cmd.show_lookup_failure "other", Gem::Requirement.default, [], :remote
375
- end
376
-
377
- expected = <<-EXPECTED
378
- ERROR: Could not find a valid gem 'other' (>= 0) in any repository
379
- EXPECTED
380
-
381
- assert_equal expected, @ui.error
382
- end
383
-
384
- def test_show_lookup_failure_suggestions_remote
385
- correct = "non_existent_with_hint"
386
- misspelled = "nonexistent_with_hint"
387
-
388
- spec_fetcher do |fetcher|
389
- fetcher.spec correct, 2
390
- end
391
-
392
- use_ui @ui do
393
- @cmd.show_lookup_failure misspelled, Gem::Requirement.default, []
394
- end
395
-
396
- expected = <<-EXPECTED
397
- ERROR: Could not find a valid gem 'nonexistent_with_hint' (>= 0) in any repository
398
- ERROR: Possible alternatives: non_existent_with_hint
399
- EXPECTED
400
-
401
- assert_equal expected, @ui.error
402
- end
403
- end