rubygems-update 3.4.22 → 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 (528) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +99 -2
  3. data/Manifest.txt +34 -221
  4. data/README.md +1 -3
  5. data/bundler/CHANGELOG.md +53 -0
  6. data/bundler/bundler.gemspec +4 -2
  7. data/bundler/exe/bundle +1 -10
  8. data/bundler/lib/bundler/build_metadata.rb +3 -3
  9. data/bundler/lib/bundler/capistrano.rb +1 -1
  10. data/bundler/lib/bundler/checksum.rb +245 -0
  11. data/bundler/lib/bundler/ci_detector.rb +75 -0
  12. data/bundler/lib/bundler/cli/add.rb +3 -3
  13. data/bundler/lib/bundler/cli/binstubs.rb +4 -4
  14. data/bundler/lib/bundler/cli/cache.rb +1 -1
  15. data/bundler/lib/bundler/cli/check.rb +1 -1
  16. data/bundler/lib/bundler/cli/common.rb +9 -1
  17. data/bundler/lib/bundler/cli/config.rb +8 -7
  18. data/bundler/lib/bundler/cli/console.rb +3 -2
  19. data/bundler/lib/bundler/cli/doctor.rb +2 -2
  20. data/bundler/lib/bundler/cli/exec.rb +1 -1
  21. data/bundler/lib/bundler/cli/gem.rb +28 -23
  22. data/bundler/lib/bundler/cli/info.rb +2 -13
  23. data/bundler/lib/bundler/cli/install.rb +5 -4
  24. data/bundler/lib/bundler/cli/issue.rb +1 -1
  25. data/bundler/lib/bundler/cli/lock.rb +4 -4
  26. data/bundler/lib/bundler/cli/open.rb +1 -1
  27. data/bundler/lib/bundler/cli/outdated.rb +6 -6
  28. data/bundler/lib/bundler/cli/plugin.rb +7 -14
  29. data/bundler/lib/bundler/cli/pristine.rb +38 -30
  30. data/bundler/lib/bundler/cli/show.rb +2 -2
  31. data/bundler/lib/bundler/cli/update.rb +5 -5
  32. data/bundler/lib/bundler/cli.rb +215 -263
  33. data/bundler/lib/bundler/compact_index_client/cache.rb +29 -9
  34. data/bundler/lib/bundler/compact_index_client/cache_file.rb +153 -0
  35. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +7 -3
  36. data/bundler/lib/bundler/compact_index_client/updater.rb +79 -81
  37. data/bundler/lib/bundler/compact_index_client.rb +14 -7
  38. data/bundler/lib/bundler/constants.rb +1 -1
  39. data/bundler/lib/bundler/current_ruby.rb +5 -21
  40. data/bundler/lib/bundler/definition.rb +42 -15
  41. data/bundler/lib/bundler/dependency.rb +16 -12
  42. data/bundler/lib/bundler/digest.rb +2 -2
  43. data/bundler/lib/bundler/dsl.rb +43 -25
  44. data/bundler/lib/bundler/endpoint_specification.rb +5 -1
  45. data/bundler/lib/bundler/env.rb +1 -3
  46. data/bundler/lib/bundler/errors.rb +43 -0
  47. data/bundler/lib/bundler/fetcher/base.rb +3 -1
  48. data/bundler/lib/bundler/fetcher/compact_index.rb +4 -4
  49. data/bundler/lib/bundler/fetcher/downloader.rb +13 -11
  50. data/bundler/lib/bundler/fetcher/gem_remote_fetcher.rb +16 -0
  51. data/bundler/lib/bundler/fetcher/index.rb +1 -1
  52. data/bundler/lib/bundler/fetcher.rb +28 -25
  53. data/bundler/lib/bundler/friendly_errors.rb +5 -5
  54. data/bundler/lib/bundler/gem_helper.rb +1 -1
  55. data/bundler/lib/bundler/gem_helpers.rb +5 -2
  56. data/bundler/lib/bundler/graph.rb +9 -9
  57. data/bundler/lib/bundler/index.rb +1 -2
  58. data/bundler/lib/bundler/injector.rb +1 -1
  59. data/bundler/lib/bundler/inline.rb +3 -3
  60. data/bundler/lib/bundler/installer/gem_installer.rb +5 -5
  61. data/bundler/lib/bundler/installer/parallel_installer.rb +16 -8
  62. data/bundler/lib/bundler/installer/standalone.rb +2 -3
  63. data/bundler/lib/bundler/installer.rb +9 -9
  64. data/bundler/lib/bundler/lazy_specification.rb +24 -17
  65. data/bundler/lib/bundler/lockfile_generator.rb +9 -0
  66. data/bundler/lib/bundler/lockfile_parser.rb +81 -10
  67. data/bundler/lib/bundler/man/bundle-add.1 +3 -26
  68. data/bundler/lib/bundler/man/bundle-binstubs.1 +4 -16
  69. data/bundler/lib/bundler/man/bundle-cache.1 +3 -24
  70. data/bundler/lib/bundler/man/bundle-check.1 +3 -12
  71. data/bundler/lib/bundler/man/bundle-clean.1 +3 -10
  72. data/bundler/lib/bundler/man/bundle-config.1 +20 -211
  73. data/bundler/lib/bundler/man/bundle-config.1.ronn +6 -0
  74. data/bundler/lib/bundler/man/bundle-console.1 +4 -22
  75. data/bundler/lib/bundler/man/bundle-doctor.1 +4 -18
  76. data/bundler/lib/bundler/man/bundle-exec.1 +12 -73
  77. data/bundler/lib/bundler/man/bundle-gem.1 +13 -49
  78. data/bundler/lib/bundler/man/bundle-help.1 +3 -7
  79. data/bundler/lib/bundler/man/bundle-info.1 +3 -9
  80. data/bundler/lib/bundler/man/bundle-init.1 +3 -12
  81. data/bundler/lib/bundler/man/bundle-inject.1 +6 -19
  82. data/bundler/lib/bundler/man/bundle-install.1 +27 -125
  83. data/bundler/lib/bundler/man/bundle-install.1.ronn +1 -0
  84. data/bundler/lib/bundler/man/bundle-list.1 +4 -19
  85. data/bundler/lib/bundler/man/bundle-lock.1 +5 -29
  86. data/bundler/lib/bundler/man/bundle-open.1 +7 -27
  87. data/bundler/lib/bundler/man/bundle-outdated.1 +3 -55
  88. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +1 -0
  89. data/bundler/lib/bundler/man/bundle-platform.1 +5 -27
  90. data/bundler/lib/bundler/man/bundle-plugin.1 +3 -29
  91. data/bundler/lib/bundler/man/bundle-pristine.1 +5 -16
  92. data/bundler/lib/bundler/man/bundle-remove.1 +4 -14
  93. data/bundler/lib/bundler/man/bundle-show.1 +3 -10
  94. data/bundler/lib/bundler/man/bundle-update.1 +18 -137
  95. data/bundler/lib/bundler/man/bundle-version.1 +3 -16
  96. data/bundler/lib/bundler/man/bundle-viz.1 +4 -16
  97. data/bundler/lib/bundler/man/bundle.1 +5 -44
  98. data/bundler/lib/bundler/man/gemfile.5 +24 -301
  99. data/bundler/lib/bundler/man/gemfile.5.ronn +4 -0
  100. data/bundler/lib/bundler/match_metadata.rb +4 -0
  101. data/bundler/lib/bundler/match_platform.rb +1 -1
  102. data/bundler/lib/bundler/plugin/api/source.rb +3 -2
  103. data/bundler/lib/bundler/plugin/installer.rb +1 -1
  104. data/bundler/lib/bundler/plugin.rb +3 -3
  105. data/bundler/lib/bundler/resolver/base.rb +1 -1
  106. data/bundler/lib/bundler/resolver/incompatibility.rb +1 -1
  107. data/bundler/lib/bundler/resolver/spec_group.rb +1 -4
  108. data/bundler/lib/bundler/resolver.rb +16 -16
  109. data/bundler/lib/bundler/ruby_dsl.rb +20 -12
  110. data/bundler/lib/bundler/ruby_version.rb +1 -1
  111. data/bundler/lib/bundler/rubygems_ext.rb +24 -50
  112. data/bundler/lib/bundler/rubygems_gem_installer.rb +6 -56
  113. data/bundler/lib/bundler/rubygems_integration.rb +25 -94
  114. data/bundler/lib/bundler/runtime.rb +2 -2
  115. data/bundler/lib/bundler/self_manager.rb +23 -7
  116. data/bundler/lib/bundler/settings.rb +27 -7
  117. data/bundler/lib/bundler/setup.rb +4 -1
  118. data/bundler/lib/bundler/shared_helpers.rb +35 -13
  119. data/bundler/lib/bundler/source/git/git_proxy.rb +15 -15
  120. data/bundler/lib/bundler/source/git.rb +4 -3
  121. data/bundler/lib/bundler/source/metadata.rb +15 -15
  122. data/bundler/lib/bundler/source/path.rb +7 -6
  123. data/bundler/lib/bundler/source/rubygems.rb +21 -14
  124. data/bundler/lib/bundler/source.rb +2 -0
  125. data/bundler/lib/bundler/spec_set.rb +38 -10
  126. data/bundler/lib/bundler/stub_specification.rb +1 -0
  127. data/bundler/lib/bundler/templates/Executable.bundler +1 -1
  128. data/bundler/lib/bundler/templates/newgem/README.md.tt +3 -3
  129. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +2 -6
  130. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +1 -1
  131. data/bundler/lib/bundler/templates/newgem/standard.yml.tt +1 -1
  132. data/bundler/lib/bundler/ui/shell.rb +1 -1
  133. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  134. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +53 -6
  135. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +8 -20
  136. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +3 -3
  137. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +2 -2
  138. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +1 -1
  139. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +35 -35
  140. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +3 -0
  141. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +256 -132
  142. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1 -0
  143. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +95 -31
  144. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  145. data/bundler/lib/bundler/vendored_net_http.rb +8 -0
  146. data/bundler/lib/bundler/vendored_persistent.rb +0 -4
  147. data/bundler/lib/bundler/vendored_timeout.rb +8 -0
  148. data/bundler/lib/bundler/version.rb +1 -1
  149. data/bundler/lib/bundler/vlad.rb +1 -1
  150. data/bundler/lib/bundler/yaml_serializer.rb +3 -3
  151. data/bundler/lib/bundler.rb +38 -27
  152. data/lib/rubygems/available_set.rb +4 -4
  153. data/lib/rubygems/basic_specification.rb +35 -37
  154. data/lib/rubygems/bundler_version_finder.rb +4 -4
  155. data/lib/rubygems/ci_detector.rb +75 -0
  156. data/lib/rubygems/command.rb +13 -15
  157. data/lib/rubygems/command_manager.rb +5 -4
  158. data/lib/rubygems/commands/build_command.rb +2 -2
  159. data/lib/rubygems/commands/cert_command.rb +1 -2
  160. data/lib/rubygems/commands/check_command.rb +4 -4
  161. data/lib/rubygems/commands/cleanup_command.rb +12 -14
  162. data/lib/rubygems/commands/contents_command.rb +4 -4
  163. data/lib/rubygems/commands/dependency_command.rb +4 -5
  164. data/lib/rubygems/commands/environment_command.rb +1 -3
  165. data/lib/rubygems/commands/exec_command.rb +1 -1
  166. data/lib/rubygems/commands/fetch_command.rb +2 -2
  167. data/lib/rubygems/commands/generate_index_command.rb +39 -74
  168. data/lib/rubygems/commands/help_command.rb +3 -3
  169. data/lib/rubygems/commands/info_command.rb +2 -2
  170. data/lib/rubygems/commands/install_command.rb +8 -16
  171. data/lib/rubygems/commands/list_command.rb +2 -2
  172. data/lib/rubygems/commands/lock_command.rb +1 -1
  173. data/lib/rubygems/commands/open_command.rb +1 -1
  174. data/lib/rubygems/commands/owner_command.rb +1 -1
  175. data/lib/rubygems/commands/pristine_command.rb +13 -15
  176. data/lib/rubygems/commands/push_command.rb +2 -2
  177. data/lib/rubygems/commands/query_command.rb +4 -5
  178. data/lib/rubygems/commands/rdoc_command.rb +2 -2
  179. data/lib/rubygems/commands/search_command.rb +2 -2
  180. data/lib/rubygems/commands/setup_command.rb +31 -34
  181. data/lib/rubygems/commands/sources_command.rb +12 -12
  182. data/lib/rubygems/commands/specification_command.rb +10 -10
  183. data/lib/rubygems/commands/stale_command.rb +1 -1
  184. data/lib/rubygems/commands/uninstall_command.rb +9 -10
  185. data/lib/rubygems/commands/unpack_command.rb +4 -4
  186. data/lib/rubygems/commands/update_command.rb +10 -12
  187. data/lib/rubygems/commands/which_command.rb +1 -1
  188. data/lib/rubygems/commands/yank_command.rb +1 -1
  189. data/lib/rubygems/compatibility.rb +5 -6
  190. data/lib/rubygems/config_file.rb +4 -4
  191. data/lib/rubygems/core_ext/kernel_gem.rb +0 -2
  192. data/lib/rubygems/core_ext/kernel_require.rb +19 -48
  193. data/lib/rubygems/core_ext/kernel_warn.rb +1 -1
  194. data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
  195. data/lib/rubygems/defaults.rb +15 -3
  196. data/lib/rubygems/dependency.rb +12 -14
  197. data/lib/rubygems/dependency_installer.rb +29 -30
  198. data/lib/rubygems/dependency_list.rb +1 -1
  199. data/lib/rubygems/deprecate.rb +16 -15
  200. data/lib/rubygems/doctor.rb +5 -5
  201. data/lib/rubygems/errors.rb +2 -6
  202. data/lib/rubygems/exceptions.rb +2 -1
  203. data/lib/rubygems/ext/builder.rb +15 -10
  204. data/lib/rubygems/ext/cargo_builder.rb +5 -5
  205. data/lib/rubygems/ext/ext_conf_builder.rb +1 -3
  206. data/lib/rubygems/gem_runner.rb +4 -4
  207. data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +3 -3
  208. data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +3 -3
  209. data/lib/rubygems/gemcutter_utilities.rb +18 -19
  210. data/lib/rubygems/install_update_options.rb +18 -19
  211. data/lib/rubygems/installer.rb +59 -33
  212. data/lib/rubygems/installer_uninstaller_utils.rb +0 -2
  213. data/lib/rubygems/local_remote_options.rb +7 -10
  214. data/lib/rubygems/name_tuple.rb +7 -9
  215. data/lib/rubygems/net/http.rb +3 -0
  216. data/lib/rubygems/net-http/LICENSE.txt +22 -0
  217. data/lib/rubygems/net-http/lib/net/http/backward.rb +40 -0
  218. data/lib/rubygems/net-http/lib/net/http/exceptions.rb +34 -0
  219. data/lib/rubygems/net-http/lib/net/http/generic_request.rb +414 -0
  220. data/lib/rubygems/net-http/lib/net/http/header.rb +981 -0
  221. data/lib/rubygems/net-http/lib/net/http/proxy_delta.rb +17 -0
  222. data/lib/rubygems/net-http/lib/net/http/request.rb +88 -0
  223. data/lib/rubygems/net-http/lib/net/http/requests.rb +425 -0
  224. data/lib/rubygems/net-http/lib/net/http/response.rb +738 -0
  225. data/lib/rubygems/net-http/lib/net/http/responses.rb +1174 -0
  226. data/lib/rubygems/net-http/lib/net/http/status.rb +84 -0
  227. data/lib/rubygems/net-http/lib/net/http.rb +2496 -0
  228. data/lib/rubygems/net-http/lib/net/https.rb +23 -0
  229. data/lib/rubygems/net-protocol/LICENSE.txt +22 -0
  230. data/lib/rubygems/net-protocol/lib/net/protocol.rb +544 -0
  231. data/lib/rubygems/optparse/lib/optparse.rb +39 -17
  232. data/lib/rubygems/package/old.rb +2 -2
  233. data/lib/rubygems/package/tar_header.rb +45 -39
  234. data/lib/rubygems/package/tar_reader/entry.rb +5 -4
  235. data/lib/rubygems/package/tar_reader.rb +5 -3
  236. data/lib/rubygems/package/tar_writer.rb +19 -17
  237. data/lib/rubygems/package.rb +27 -26
  238. data/lib/rubygems/package_task.rb +2 -2
  239. data/lib/rubygems/path_support.rb +9 -10
  240. data/lib/rubygems/platform.rb +60 -45
  241. data/lib/rubygems/query_utils.rb +7 -9
  242. data/lib/rubygems/remote_fetcher.rb +15 -15
  243. data/lib/rubygems/request/connection_pools.rb +3 -3
  244. data/lib/rubygems/request.rb +20 -17
  245. data/lib/rubygems/request_set/gem_dependency_api.rb +119 -122
  246. data/lib/rubygems/request_set/lockfile/parser.rb +9 -9
  247. data/lib/rubygems/request_set/lockfile/tokenizer.rb +20 -12
  248. data/lib/rubygems/request_set/lockfile.rb +6 -11
  249. data/lib/rubygems/request_set.rb +5 -5
  250. data/lib/rubygems/requirement.rb +7 -7
  251. data/lib/rubygems/resolv/LICENSE.txt +22 -0
  252. data/lib/rubygems/resolv/lib/resolv.rb +3387 -0
  253. data/lib/rubygems/resolver/activation_request.rb +1 -3
  254. data/lib/rubygems/resolver/api_set/gem_parser.rb +7 -3
  255. data/lib/rubygems/resolver/best_set.rb +1 -1
  256. data/lib/rubygems/resolver/composed_set.rb +1 -1
  257. data/lib/rubygems/resolver/conflict.rb +4 -12
  258. data/lib/rubygems/resolver/index_set.rb +4 -4
  259. data/lib/rubygems/resolver/index_specification.rb +2 -2
  260. data/lib/rubygems/resolver/installer_set.rb +5 -6
  261. data/lib/rubygems/resolver/lock_set.rb +1 -1
  262. data/lib/rubygems/resolver.rb +3 -10
  263. data/lib/rubygems/s3_uri_signer.rb +6 -6
  264. data/lib/rubygems/safe_marshal/elements.rb +138 -0
  265. data/lib/rubygems/safe_marshal/reader.rb +306 -0
  266. data/lib/rubygems/safe_marshal/visitors/stream_printer.rb +31 -0
  267. data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +385 -0
  268. data/lib/rubygems/safe_marshal/visitors/visitor.rb +74 -0
  269. data/lib/rubygems/safe_marshal.rb +74 -0
  270. data/lib/rubygems/safe_yaml.rb +5 -28
  271. data/lib/rubygems/security/policies.rb +36 -38
  272. data/lib/rubygems/security/policy.rb +7 -11
  273. data/lib/rubygems/security/signer.rb +1 -1
  274. data/lib/rubygems/security/trust_dir.rb +3 -3
  275. data/lib/rubygems/security.rb +8 -22
  276. data/lib/rubygems/source/git.rb +1 -3
  277. data/lib/rubygems/source/installed.rb +0 -2
  278. data/lib/rubygems/source/local.rb +5 -8
  279. data/lib/rubygems/source/lock.rb +1 -3
  280. data/lib/rubygems/source/specific_file.rb +0 -1
  281. data/lib/rubygems/source/vendor.rb +0 -2
  282. data/lib/rubygems/source.rb +12 -12
  283. data/lib/rubygems/source_list.rb +4 -4
  284. data/lib/rubygems/spec_fetcher.rb +29 -29
  285. data/lib/rubygems/specification.rb +125 -138
  286. data/lib/rubygems/specification_policy.rb +55 -25
  287. data/lib/rubygems/stub_specification.rb +4 -5
  288. data/lib/rubygems/text.rb +1 -2
  289. data/lib/rubygems/timeout/LICENSE.txt +22 -0
  290. data/lib/rubygems/timeout/lib/timeout.rb +199 -0
  291. data/lib/rubygems/timeout.rb +3 -0
  292. data/lib/rubygems/tsort/lib/tsort.rb +3 -0
  293. data/lib/rubygems/uninstaller.rb +7 -9
  294. data/lib/rubygems/update_suggestion.rb +5 -18
  295. data/lib/rubygems/uri_formatter.rb +1 -1
  296. data/lib/rubygems/user_interaction.rb +15 -21
  297. data/lib/rubygems/util/licenses.rb +65 -35
  298. data/lib/rubygems/util/list.rb +3 -1
  299. data/lib/rubygems/util.rb +2 -4
  300. data/lib/rubygems/validator.rb +5 -3
  301. data/lib/rubygems/version.rb +34 -28
  302. data/lib/rubygems/version_option.rb +2 -5
  303. data/lib/rubygems/yaml_serializer.rb +3 -3
  304. data/lib/rubygems.rb +37 -37
  305. data/rubygems-update.gemspec +4 -4
  306. data/setup.rb +2 -2
  307. metadata +38 -225
  308. data/lib/rubygems/indexer.rb +0 -428
  309. data/lib/rubygems/mock_gem_ui.rb +0 -86
  310. data/test/rubygems/alternate_cert.pem +0 -19
  311. data/test/rubygems/alternate_cert_32.pem +0 -19
  312. data/test/rubygems/alternate_key.pem +0 -27
  313. data/test/rubygems/bad_rake.rb +0 -3
  314. data/test/rubygems/bundler_test_gem.rb +0 -424
  315. data/test/rubygems/ca_cert.pem +0 -77
  316. data/test/rubygems/child_cert.pem +0 -19
  317. data/test/rubygems/child_cert_32.pem +0 -19
  318. data/test/rubygems/child_key.pem +0 -27
  319. data/test/rubygems/client.pem +0 -107
  320. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  321. data/test/rubygems/data/gem-private_key.pem +0 -27
  322. data/test/rubygems/data/gem-public_cert.pem +0 -20
  323. data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
  324. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  325. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  326. data/test/rubygems/encrypted_private_key.pem +0 -30
  327. data/test/rubygems/expired_cert.pem +0 -19
  328. data/test/rubygems/fake_certlib/openssl.rb +0 -9
  329. data/test/rubygems/foo/discover.rb +0 -1
  330. data/test/rubygems/future_cert.pem +0 -19
  331. data/test/rubygems/future_cert_32.pem +0 -19
  332. data/test/rubygems/good_rake.rb +0 -3
  333. data/test/rubygems/grandchild_cert.pem +0 -19
  334. data/test/rubygems/grandchild_cert_32.pem +0 -19
  335. data/test/rubygems/grandchild_key.pem +0 -27
  336. data/test/rubygems/helper.rb +0 -1649
  337. data/test/rubygems/installer_test_case.rb +0 -248
  338. data/test/rubygems/invalid_client.pem +0 -49
  339. data/test/rubygems/invalid_issuer_cert.pem +0 -20
  340. data/test/rubygems/invalid_issuer_cert_32.pem +0 -20
  341. data/test/rubygems/invalid_key.pem +0 -27
  342. data/test/rubygems/invalid_signer_cert.pem +0 -19
  343. data/test/rubygems/invalid_signer_cert_32.pem +0 -19
  344. data/test/rubygems/invalidchild_cert.pem +0 -19
  345. data/test/rubygems/invalidchild_cert_32.pem +0 -19
  346. data/test/rubygems/invalidchild_key.pem +0 -27
  347. data/test/rubygems/multifactor_auth_utilities.rb +0 -111
  348. data/test/rubygems/package/tar_test_case.rb +0 -175
  349. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  350. data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
  351. data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
  352. data/test/rubygems/plugin/exception/rubygems_plugin.rb +0 -4
  353. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -5
  354. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +0 -4
  355. data/test/rubygems/private3072_key.pem +0 -40
  356. data/test/rubygems/private_ec_key.pem +0 -9
  357. data/test/rubygems/private_key.pem +0 -27
  358. data/test/rubygems/public3072_cert.pem +0 -25
  359. data/test/rubygems/public_cert.pem +0 -20
  360. data/test/rubygems/public_cert_32.pem +0 -19
  361. data/test/rubygems/public_key.pem +0 -9
  362. data/test/rubygems/rubygems/commands/crash_command.rb +0 -5
  363. data/test/rubygems/rubygems_plugin.rb +0 -24
  364. data/test/rubygems/sff/discover.rb +0 -1
  365. data/test/rubygems/simple_gem.rb +0 -68
  366. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -9
  367. data/test/rubygems/specifications/foo-0.0.1-x86-mswin32.gemspec +0 -0
  368. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +0 -14
  369. data/test/rubygems/ssl_cert.pem +0 -80
  370. data/test/rubygems/ssl_key.pem +0 -27
  371. data/test/rubygems/test_bundled_ca.rb +0 -61
  372. data/test/rubygems/test_config.rb +0 -28
  373. data/test/rubygems/test_deprecate.rb +0 -158
  374. data/test/rubygems/test_exit.rb +0 -17
  375. data/test/rubygems/test_gem.rb +0 -1799
  376. data/test/rubygems/test_gem_available_set.rb +0 -130
  377. data/test/rubygems/test_gem_bundler_version_finder.rb +0 -127
  378. data/test/rubygems/test_gem_command.rb +0 -403
  379. data/test/rubygems/test_gem_command_manager.rb +0 -400
  380. data/test/rubygems/test_gem_commands_build_command.rb +0 -739
  381. data/test/rubygems/test_gem_commands_cert_command.rb +0 -866
  382. data/test/rubygems/test_gem_commands_check_command.rb +0 -68
  383. data/test/rubygems/test_gem_commands_cleanup_command.rb +0 -292
  384. data/test/rubygems/test_gem_commands_contents_command.rb +0 -271
  385. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -228
  386. data/test/rubygems/test_gem_commands_environment_command.rb +0 -169
  387. data/test/rubygems/test_gem_commands_exec_command.rb +0 -857
  388. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -258
  389. data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -81
  390. data/test/rubygems/test_gem_commands_help_command.rb +0 -94
  391. data/test/rubygems/test_gem_commands_info_command.rb +0 -70
  392. data/test/rubygems/test_gem_commands_install_command.rb +0 -1573
  393. data/test/rubygems/test_gem_commands_list_command.rb +0 -33
  394. data/test/rubygems/test_gem_commands_lock_command.rb +0 -67
  395. data/test/rubygems/test_gem_commands_mirror.rb +0 -20
  396. data/test/rubygems/test_gem_commands_open_command.rb +0 -101
  397. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -50
  398. data/test/rubygems/test_gem_commands_owner_command.rb +0 -503
  399. data/test/rubygems/test_gem_commands_pristine_command.rb +0 -708
  400. data/test/rubygems/test_gem_commands_push_command.rb +0 -603
  401. data/test/rubygems/test_gem_commands_query_command.rb +0 -858
  402. data/test/rubygems/test_gem_commands_search_command.rb +0 -16
  403. data/test/rubygems/test_gem_commands_server_command.rb +0 -20
  404. data/test/rubygems/test_gem_commands_setup_command.rb +0 -474
  405. data/test/rubygems/test_gem_commands_signin_command.rb +0 -259
  406. data/test/rubygems/test_gem_commands_signout_command.rb +0 -30
  407. data/test/rubygems/test_gem_commands_sources_command.rb +0 -534
  408. data/test/rubygems/test_gem_commands_specification_command.rb +0 -277
  409. data/test/rubygems/test_gem_commands_stale_command.rb +0 -43
  410. data/test/rubygems/test_gem_commands_uninstall_command.rb +0 -542
  411. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -224
  412. data/test/rubygems/test_gem_commands_update_command.rb +0 -836
  413. data/test/rubygems/test_gem_commands_which_command.rb +0 -85
  414. data/test/rubygems/test_gem_commands_yank_command.rb +0 -299
  415. data/test/rubygems/test_gem_config_file.rb +0 -551
  416. data/test/rubygems/test_gem_dependency.rb +0 -398
  417. data/test/rubygems/test_gem_dependency_installer.rb +0 -1190
  418. data/test/rubygems/test_gem_dependency_list.rb +0 -265
  419. data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -27
  420. data/test/rubygems/test_gem_doctor.rb +0 -195
  421. data/test/rubygems/test_gem_ext_builder.rb +0 -337
  422. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +0 -1
  423. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +0 -10
  424. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +0 -249
  425. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +0 -10
  426. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +0 -27
  427. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +0 -3
  428. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +0 -1
  429. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +0 -249
  430. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +0 -10
  431. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +0 -10
  432. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +0 -51
  433. data/test/rubygems/test_gem_ext_cargo_builder.rb +0 -167
  434. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +0 -34
  435. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +0 -60
  436. data/test/rubygems/test_gem_ext_cmake_builder.rb +0 -84
  437. data/test/rubygems/test_gem_ext_configure_builder.rb +0 -80
  438. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -229
  439. data/test/rubygems/test_gem_ext_rake_builder.rb +0 -113
  440. data/test/rubygems/test_gem_gem_runner.rb +0 -119
  441. data/test/rubygems/test_gem_gemcutter_utilities.rb +0 -361
  442. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -60
  443. data/test/rubygems/test_gem_indexer.rb +0 -381
  444. data/test/rubygems/test_gem_install_update_options.rb +0 -208
  445. data/test/rubygems/test_gem_installer.rb +0 -2512
  446. data/test/rubygems/test_gem_local_remote_options.rb +0 -133
  447. data/test/rubygems/test_gem_name_tuple.rb +0 -43
  448. data/test/rubygems/test_gem_package.rb +0 -1306
  449. data/test/rubygems/test_gem_package_old.rb +0 -91
  450. data/test/rubygems/test_gem_package_tar_header.rb +0 -226
  451. data/test/rubygems/test_gem_package_tar_reader.rb +0 -150
  452. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -350
  453. data/test/rubygems/test_gem_package_tar_writer.rb +0 -331
  454. data/test/rubygems/test_gem_package_task.rb +0 -118
  455. data/test/rubygems/test_gem_path_support.rb +0 -139
  456. data/test/rubygems/test_gem_platform.rb +0 -497
  457. data/test/rubygems/test_gem_rdoc.rb +0 -137
  458. data/test/rubygems/test_gem_remote_fetcher.rb +0 -1227
  459. data/test/rubygems/test_gem_request.rb +0 -547
  460. data/test/rubygems/test_gem_request_connection_pools.rb +0 -152
  461. data/test/rubygems/test_gem_request_set.rb +0 -672
  462. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +0 -853
  463. data/test/rubygems/test_gem_request_set_lockfile.rb +0 -469
  464. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +0 -544
  465. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +0 -307
  466. data/test/rubygems/test_gem_requirement.rb +0 -505
  467. data/test/rubygems/test_gem_resolver.rb +0 -859
  468. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -43
  469. data/test/rubygems/test_gem_resolver_api_set.rb +0 -210
  470. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -167
  471. data/test/rubygems/test_gem_resolver_best_set.rb +0 -159
  472. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -44
  473. data/test/rubygems/test_gem_resolver_conflict.rb +0 -82
  474. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -83
  475. data/test/rubygems/test_gem_resolver_git_set.rb +0 -188
  476. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -114
  477. data/test/rubygems/test_gem_resolver_index_set.rb +0 -88
  478. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -93
  479. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -47
  480. data/test/rubygems/test_gem_resolver_installer_set.rb +0 -320
  481. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -44
  482. data/test/rubygems/test_gem_resolver_lock_set.rb +0 -62
  483. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -98
  484. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -19
  485. data/test/rubygems/test_gem_resolver_specification.rb +0 -63
  486. data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -82
  487. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -82
  488. data/test/rubygems/test_gem_security.rb +0 -341
  489. data/test/rubygems/test_gem_security_policy.rb +0 -535
  490. data/test/rubygems/test_gem_security_signer.rb +0 -218
  491. data/test/rubygems/test_gem_security_trust_dir.rb +0 -99
  492. data/test/rubygems/test_gem_silent_ui.rb +0 -123
  493. data/test/rubygems/test_gem_source.rb +0 -254
  494. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -37
  495. data/test/rubygems/test_gem_source_git.rb +0 -310
  496. data/test/rubygems/test_gem_source_installed.rb +0 -35
  497. data/test/rubygems/test_gem_source_list.rb +0 -119
  498. data/test/rubygems/test_gem_source_local.rb +0 -107
  499. data/test/rubygems/test_gem_source_lock.rb +0 -113
  500. data/test/rubygems/test_gem_source_specific_file.rb +0 -76
  501. data/test/rubygems/test_gem_source_subpath_problem.rb +0 -50
  502. data/test/rubygems/test_gem_source_vendor.rb +0 -30
  503. data/test/rubygems/test_gem_spec_fetcher.rb +0 -338
  504. data/test/rubygems/test_gem_specification.rb +0 -3856
  505. data/test/rubygems/test_gem_stream_ui.rb +0 -255
  506. data/test/rubygems/test_gem_stub_specification.rb +0 -278
  507. data/test/rubygems/test_gem_text.rb +0 -103
  508. data/test/rubygems/test_gem_uninstaller.rb +0 -675
  509. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -31
  510. data/test/rubygems/test_gem_update_suggestion.rb +0 -209
  511. data/test/rubygems/test_gem_uri.rb +0 -41
  512. data/test/rubygems/test_gem_uri_formatter.rb +0 -27
  513. data/test/rubygems/test_gem_util.rb +0 -91
  514. data/test/rubygems/test_gem_validator.rb +0 -42
  515. data/test/rubygems/test_gem_version.rb +0 -305
  516. data/test/rubygems/test_gem_version_option.rb +0 -165
  517. data/test/rubygems/test_kernel.rb +0 -124
  518. data/test/rubygems/test_project_sanity.rb +0 -49
  519. data/test/rubygems/test_remote_fetch_error.rb +0 -20
  520. data/test/rubygems/test_require.rb +0 -732
  521. data/test/rubygems/test_rubygems.rb +0 -76
  522. data/test/rubygems/test_webauthn_listener.rb +0 -143
  523. data/test/rubygems/test_webauthn_listener_response.rb +0 -93
  524. data/test/rubygems/test_webauthn_poller.rb +0 -124
  525. data/test/rubygems/utilities.rb +0 -436
  526. data/test/rubygems/wrong_key_cert.pem +0 -19
  527. data/test/rubygems/wrong_key_cert_32.pem +0 -19
  528. 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