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,381 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "helper"
4
- require "rubygems/indexer"
5
-
6
- class TestGemIndexer < Gem::TestCase
7
- def setup
8
- super
9
-
10
- util_make_gems
11
-
12
- @d2_0 = util_spec "d", "2.0" do |s|
13
- s.date = Gem::Specification::TODAY - 86_400 * 3
14
- end
15
- util_build_gem @d2_0
16
-
17
- @d2_0_a = util_spec "d", "2.0.a"
18
- util_build_gem @d2_0_a
19
-
20
- @d2_0_b = util_spec "d", "2.0.b"
21
- util_build_gem @d2_0_b
22
-
23
- @default = new_default_spec "default", 2
24
- install_default_gems @default
25
-
26
- @indexerdir = File.join(@tempdir, "indexer")
27
-
28
- gems = File.join(@indexerdir, "gems")
29
- FileUtils.mkdir_p gems
30
- FileUtils.mv Dir[File.join(@gemhome, "cache", "*.gem")], gems
31
-
32
- @indexer = Gem::Indexer.new(@indexerdir)
33
- end
34
-
35
- def teardown
36
- FileUtils.rm_rf(@indexer.directory)
37
- ensure
38
- super
39
- end
40
-
41
- def with_indexer(dir, **opts)
42
- indexer = Gem::Indexer.new(dir, **opts)
43
- build_directory = indexer.directory
44
- yield indexer
45
- ensure
46
- FileUtils.rm_rf(build_directory) if build_directory
47
- end
48
-
49
- def test_initialize
50
- assert_equal @indexerdir, @indexer.dest_directory
51
- Dir.mktmpdir("gem_generate_index") do |tmpdir|
52
- assert_match %r{#{tmpdir.match(/.*-/)}}, @indexer.directory
53
- end
54
-
55
- with_indexer(@indexerdir) do |indexer|
56
- assert_predicate indexer, :build_modern
57
- end
58
-
59
- with_indexer(@indexerdir, :build_modern => true) do |indexer|
60
- assert_predicate indexer, :build_modern
61
- end
62
- end
63
-
64
- def test_build_indices
65
- @indexer.make_temp_directories
66
-
67
- use_ui @ui do
68
- @indexer.build_indices
69
- end
70
-
71
- specs_path = File.join @indexer.directory, "specs.#{@marshal_version}"
72
- specs_dump = Gem.read_binary specs_path
73
- specs = Marshal.load specs_dump
74
-
75
- expected = [["a", Gem::Version.new("1"), "ruby"],
76
- ["a", Gem::Version.new("2"), "ruby"],
77
- ["a_evil", Gem::Version.new("9"), "ruby"],
78
- ["b", Gem::Version.new("2"), "ruby"],
79
- ["c", Gem::Version.new("1.2"), "ruby"],
80
- ["d", Gem::Version.new("2.0"), "ruby"],
81
- ["dep_x", Gem::Version.new("1"), "ruby"],
82
- ["pl", Gem::Version.new("1"), "i386-linux"],
83
- ["x", Gem::Version.new("1"), "ruby"]]
84
-
85
- assert_equal expected, specs
86
-
87
- latest_specs_path = File.join(@indexer.directory,
88
- "latest_specs.#{@marshal_version}")
89
- latest_specs_dump = Gem.read_binary latest_specs_path
90
- latest_specs = Marshal.load latest_specs_dump
91
-
92
- expected = [["a", Gem::Version.new("2"), "ruby"],
93
- ["a_evil", Gem::Version.new("9"), "ruby"],
94
- ["b", Gem::Version.new("2"), "ruby"],
95
- ["c", Gem::Version.new("1.2"), "ruby"],
96
- ["d", Gem::Version.new("2.0"), "ruby"],
97
- ["dep_x", Gem::Version.new("1"), "ruby"],
98
- ["pl", Gem::Version.new("1"), "i386-linux"],
99
- ["x", Gem::Version.new("1"), "ruby"]]
100
-
101
- assert_equal expected, latest_specs, "latest_specs"
102
- end
103
-
104
- def test_generate_index
105
- use_ui @ui do
106
- @indexer.generate_index
107
- end
108
-
109
- quickdir = File.join @indexerdir, "quick"
110
- marshal_quickdir = File.join quickdir, "Marshal.#{@marshal_version}"
111
-
112
- assert_directory_exists quickdir
113
- assert_directory_exists marshal_quickdir
114
-
115
- assert_indexed marshal_quickdir, "#{File.basename(@a1.spec_file)}.rz"
116
- assert_indexed marshal_quickdir, "#{File.basename(@a2.spec_file)}.rz"
117
-
118
- refute_indexed marshal_quickdir, File.basename(@c1_2.spec_file)
119
-
120
- assert_indexed @indexerdir, "specs.#{@marshal_version}"
121
- assert_indexed @indexerdir, "specs.#{@marshal_version}.gz"
122
-
123
- assert_indexed @indexerdir, "latest_specs.#{@marshal_version}"
124
- assert_indexed @indexerdir, "latest_specs.#{@marshal_version}.gz"
125
-
126
- refute_directory_exists @indexer.directory
127
- end
128
-
129
- def test_generate_index_modern
130
- @indexer.build_modern = true
131
-
132
- use_ui @ui do
133
- @indexer.generate_index
134
- end
135
-
136
- refute_indexed @indexerdir, "yaml"
137
- refute_indexed @indexerdir, "yaml.Z"
138
- refute_indexed @indexerdir, "Marshal.#{@marshal_version}"
139
- refute_indexed @indexerdir, "Marshal.#{@marshal_version}.Z"
140
-
141
- quickdir = File.join @indexerdir, "quick"
142
- marshal_quickdir = File.join quickdir, "Marshal.#{@marshal_version}"
143
-
144
- assert_directory_exists quickdir, "quickdir should be directory"
145
- assert_directory_exists marshal_quickdir
146
-
147
- refute_indexed quickdir, "index"
148
- refute_indexed quickdir, "index.rz"
149
-
150
- refute_indexed quickdir, "latest_index"
151
- refute_indexed quickdir, "latest_index.rz"
152
-
153
- refute_indexed quickdir, "#{File.basename(@a1.spec_file)}.rz"
154
- refute_indexed quickdir, "#{File.basename(@a2.spec_file)}.rz"
155
- refute_indexed quickdir, "#{File.basename(@b2.spec_file)}.rz"
156
- refute_indexed quickdir, "#{File.basename(@c1_2.spec_file)}.rz"
157
-
158
- refute_indexed quickdir, "#{@pl1.original_name}.gemspec.rz"
159
- refute_indexed quickdir, "#{File.basename(@pl1.spec_file)}.rz"
160
-
161
- assert_indexed marshal_quickdir, "#{File.basename(@a1.spec_file)}.rz"
162
- assert_indexed marshal_quickdir, "#{File.basename(@a2.spec_file)}.rz"
163
-
164
- refute_indexed quickdir, "#{File.basename(@c1_2.spec_file)}"
165
- refute_indexed marshal_quickdir, "#{File.basename(@c1_2.spec_file)}"
166
-
167
- assert_indexed @indexerdir, "specs.#{@marshal_version}"
168
- assert_indexed @indexerdir, "specs.#{@marshal_version}.gz"
169
-
170
- assert_indexed @indexerdir, "latest_specs.#{@marshal_version}"
171
- assert_indexed @indexerdir, "latest_specs.#{@marshal_version}.gz"
172
- end
173
-
174
- def test_generate_index_modern_back_to_back
175
- @indexer.build_modern = true
176
-
177
- use_ui @ui do
178
- @indexer.generate_index
179
- end
180
-
181
- with_indexer @indexerdir do |indexer|
182
- indexer.build_modern = true
183
-
184
- use_ui @ui do
185
- indexer.generate_index
186
- end
187
- quickdir = File.join @indexerdir, "quick"
188
- marshal_quickdir = File.join quickdir, "Marshal.#{@marshal_version}"
189
-
190
- assert_directory_exists quickdir
191
- assert_directory_exists marshal_quickdir
192
-
193
- assert_indexed marshal_quickdir, "#{File.basename(@a1.spec_file)}.rz"
194
- assert_indexed marshal_quickdir, "#{File.basename(@a2.spec_file)}.rz"
195
-
196
- assert_indexed @indexerdir, "specs.#{@marshal_version}"
197
- assert_indexed @indexerdir, "specs.#{@marshal_version}.gz"
198
-
199
- assert_indexed @indexerdir, "latest_specs.#{@marshal_version}"
200
- assert_indexed @indexerdir, "latest_specs.#{@marshal_version}.gz"
201
- end
202
- end
203
-
204
- def test_generate_index_ui
205
- use_ui @ui do
206
- @indexer.generate_index
207
- end
208
-
209
- assert_match %r{^\.\.\.\.\.\.\.\.\.\.\.\.$}, @ui.output
210
- assert_match %r{^Generating Marshal quick index gemspecs for 12 gems$},
211
- @ui.output
212
- assert_match %r{^Complete$}, @ui.output
213
- assert_match %r{^Generating specs index$}, @ui.output
214
- assert_match %r{^Generating latest specs index$}, @ui.output
215
- assert_match %r{^Generating prerelease specs index$}, @ui.output
216
- assert_match %r{^Complete$}, @ui.output
217
- assert_match %r{^Compressing indices$}, @ui.output
218
-
219
- assert_equal "", @ui.error
220
- end
221
-
222
- def test_generate_index_specs
223
- use_ui @ui do
224
- @indexer.generate_index
225
- end
226
-
227
- specs_path = File.join @indexerdir, "specs.#{@marshal_version}"
228
-
229
- specs_dump = Gem.read_binary specs_path
230
- specs = Marshal.load specs_dump
231
-
232
- expected = [
233
- ["a", Gem::Version.new(1), "ruby"],
234
- ["a", Gem::Version.new(2), "ruby"],
235
- ["a_evil", Gem::Version.new(9), "ruby"],
236
- ["b", Gem::Version.new(2), "ruby"],
237
- ["c", Gem::Version.new("1.2"), "ruby"],
238
- ["d", Gem::Version.new("2.0"), "ruby"],
239
- ["dep_x", Gem::Version.new(1), "ruby"],
240
- ["pl", Gem::Version.new(1), "i386-linux"],
241
- ["x", Gem::Version.new(1), "ruby"],
242
- ]
243
-
244
- assert_equal expected, specs
245
-
246
- assert_same specs[0].first, specs[1].first,
247
- "identical names not identical"
248
-
249
- assert_same specs[0][1], specs[-1][1],
250
- "identical versions not identical"
251
-
252
- assert_same specs[0].last, specs[1].last,
253
- "identical platforms not identical"
254
-
255
- refute_same specs[1][1], specs[5][1],
256
- "different versions not different"
257
- end
258
-
259
- def test_generate_index_latest_specs
260
- use_ui @ui do
261
- @indexer.generate_index
262
- end
263
-
264
- latest_specs_path = File.join @indexerdir, "latest_specs.#{@marshal_version}"
265
-
266
- latest_specs_dump = Gem.read_binary latest_specs_path
267
- latest_specs = Marshal.load latest_specs_dump
268
-
269
- expected = [
270
- ["a", Gem::Version.new(2), "ruby"],
271
- ["a_evil", Gem::Version.new(9), "ruby"],
272
- ["b", Gem::Version.new(2), "ruby"],
273
- ["c", Gem::Version.new("1.2"), "ruby"],
274
- ["d", Gem::Version.new("2.0"), "ruby"],
275
- ["dep_x", Gem::Version.new(1), "ruby"],
276
- ["pl", Gem::Version.new(1), "i386-linux"],
277
- ["x", Gem::Version.new(1), "ruby"],
278
- ]
279
-
280
- assert_equal expected, latest_specs
281
-
282
- assert_same latest_specs[0][1], latest_specs[2][1],
283
- "identical versions not identical"
284
-
285
- assert_same latest_specs[0].last, latest_specs[1].last,
286
- "identical platforms not identical"
287
- end
288
-
289
- def test_generate_index_prerelease_specs
290
- use_ui @ui do
291
- @indexer.generate_index
292
- end
293
-
294
- prerelease_specs_path = File.join @indexerdir, "prerelease_specs.#{@marshal_version}"
295
-
296
- prerelease_specs_dump = Gem.read_binary prerelease_specs_path
297
- prerelease_specs = Marshal.load prerelease_specs_dump
298
-
299
- assert_equal [["a", Gem::Version.new("3.a"), "ruby"],
300
- ["d", Gem::Version.new("2.0.a"), "ruby"],
301
- ["d", Gem::Version.new("2.0.b"), "ruby"]],
302
- prerelease_specs
303
- end
304
-
305
- ##
306
- # Emulate the starting state of Gem::Specification in a live environment,
307
- # where it will carry the list of system gems
308
- def with_system_gems
309
- Gem::Specification.reset
310
-
311
- sys_gem = util_spec "systemgem", "1.0"
312
- util_build_gem sys_gem
313
- install_default_gems sys_gem
314
- yield
315
- util_remove_gem sys_gem
316
- end
317
-
318
- def test_update_index
319
- use_ui @ui do
320
- @indexer.generate_index
321
- end
322
-
323
- quickdir = File.join @indexerdir, "quick"
324
- marshal_quickdir = File.join quickdir, "Marshal.#{@marshal_version}"
325
-
326
- assert_directory_exists quickdir
327
- assert_directory_exists marshal_quickdir
328
-
329
- @d2_1 = util_spec "d", "2.1"
330
- util_build_gem @d2_1
331
- @d2_1_tuple = [@d2_1.name, @d2_1.version, @d2_1.original_platform]
332
-
333
- @d2_1_a = util_spec "d", "2.2.a"
334
- util_build_gem @d2_1_a
335
- @d2_1_a_tuple = [@d2_1_a.name, @d2_1_a.version, @d2_1_a.original_platform]
336
-
337
- gems = File.join @indexerdir, "gems"
338
-
339
- FileUtils.mv @d2_1.cache_file, gems
340
- FileUtils.mv @d2_1_a.cache_file, gems
341
-
342
- with_system_gems do
343
- use_ui @ui do
344
- @indexer.update_index
345
- end
346
-
347
- assert_indexed marshal_quickdir, "#{File.basename(@d2_1.spec_file)}.rz"
348
-
349
- specs_index = Marshal.load Gem.read_binary(@indexer.dest_specs_index)
350
-
351
- assert_includes specs_index, @d2_1_tuple
352
- refute_includes specs_index, @d2_1_a_tuple
353
-
354
- latest_specs_index = Marshal.load \
355
- Gem.read_binary(@indexer.dest_latest_specs_index)
356
-
357
- assert_includes latest_specs_index, @d2_1_tuple
358
- assert_includes latest_specs_index,
359
- [@d2_0.name, @d2_0.version, @d2_0.original_platform]
360
- refute_includes latest_specs_index, @d2_1_a_tuple
361
-
362
- pre_specs_index = Marshal.load \
363
- Gem.read_binary(@indexer.dest_prerelease_specs_index)
364
-
365
- assert_includes pre_specs_index, @d2_1_a_tuple
366
- refute_includes pre_specs_index, @d2_1_tuple
367
-
368
- refute_directory_exists @indexer.directory
369
- end
370
- end
371
-
372
- def assert_indexed(dir, name)
373
- file = File.join dir, name
374
- assert File.exist?(file), "#{file} does not exist"
375
- end
376
-
377
- def refute_indexed(dir, name)
378
- file = File.join dir, name
379
- refute File.exist?(file), "#{file} exists"
380
- end
381
- end
@@ -1,208 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "installer_test_case"
4
- require "rubygems/install_update_options"
5
- require "rubygems/command"
6
- require "rubygems/dependency_installer"
7
-
8
- class TestGemInstallUpdateOptions < Gem::InstallerTestCase
9
- def setup
10
- super
11
-
12
- @cmd = Gem::Command.new "dummy", "dummy",
13
- Gem::DependencyInstaller::DEFAULT_OPTIONS
14
- @cmd.extend Gem::InstallUpdateOptions
15
- @cmd.add_install_update_options
16
- end
17
-
18
- def test_add_install_update_options
19
- args = %w[
20
- --document
21
- --build-root build_root
22
- --format-exec
23
- --ignore-dependencies
24
- --document
25
- -E
26
- -f
27
- -i /install_to
28
- -w
29
- --post-install-message
30
- ]
31
-
32
- args.concat %w[--vendor] unless Gem.java_platform?
33
-
34
- args.concat %w[-P HighSecurity] if Gem::HAVE_OPENSSL
35
-
36
- assert @cmd.handles?(args)
37
- end
38
-
39
- def test_build_root
40
- @cmd.handle_options %w[--build-root build_root]
41
-
42
- assert_equal File.expand_path("build_root"), @cmd.options[:build_root]
43
- end
44
-
45
- def test_doc
46
- @cmd.handle_options %w[--doc]
47
-
48
- assert_equal %w[ri], @cmd.options[:document].sort
49
- end
50
-
51
- def test_doc_rdoc
52
- @cmd.handle_options %w[--doc=rdoc]
53
-
54
- assert_equal %w[rdoc], @cmd.options[:document]
55
-
56
- @cmd.handle_options %w[--doc ri]
57
-
58
- assert_equal %w[ri], @cmd.options[:document]
59
- end
60
-
61
- def test_doc_rdoc_ri
62
- @cmd.handle_options %w[--doc=rdoc,ri]
63
-
64
- assert_equal %w[rdoc ri], @cmd.options[:document]
65
- end
66
-
67
- def test_doc_no
68
- @cmd.handle_options %w[--no-doc]
69
-
70
- assert_equal [], @cmd.options[:document]
71
- end
72
-
73
- def test_document
74
- @cmd.handle_options %w[--document]
75
-
76
- assert_equal %w[ri], @cmd.options[:document].sort
77
- end
78
-
79
- def test_document_no
80
- @cmd.handle_options %w[--no-document]
81
-
82
- assert_equal %w[], @cmd.options[:document]
83
- end
84
-
85
- def test_document_rdoc
86
- @cmd.handle_options %w[--document=rdoc]
87
-
88
- assert_equal %w[rdoc], @cmd.options[:document]
89
-
90
- @cmd.handle_options %w[--document ri]
91
-
92
- assert_equal %w[ri], @cmd.options[:document]
93
- end
94
-
95
- def test_security_policy
96
- pend "openssl is missing" unless Gem::HAVE_OPENSSL
97
-
98
- @cmd.handle_options %w[-P HighSecurity]
99
-
100
- assert_equal Gem::Security::HighSecurity, @cmd.options[:security_policy]
101
- end
102
-
103
- def test_security_policy_unknown
104
- pend "openssl is missing" unless Gem::HAVE_OPENSSL
105
-
106
- @cmd.add_install_update_options
107
-
108
- e = assert_raise Gem::OptionParser::InvalidArgument do
109
- @cmd.handle_options %w[-P UnknownSecurity]
110
- end
111
- assert_includes e.message, "UnknownSecurity"
112
- end
113
-
114
- def test_user_install_enabled
115
- @spec = quick_gem "a" do |spec|
116
- util_make_exec spec
117
- end
118
-
119
- util_build_gem @spec
120
- @gem = @spec.cache_file
121
-
122
- @cmd.handle_options %w[--user-install]
123
-
124
- assert @cmd.options[:user_install]
125
-
126
- @installer = Gem::Installer.at @gem, @cmd.options
127
- @installer.install
128
- assert_path_exist File.join(Gem.user_dir, "gems")
129
- assert_path_exist File.join(Gem.user_dir, "gems", @spec.full_name)
130
- end
131
-
132
- def test_user_install_disabled_read_only
133
- @spec = quick_gem "a" do |spec|
134
- util_make_exec spec
135
- end
136
-
137
- util_build_gem @spec
138
- @gem = @spec.cache_file
139
-
140
- if win_platform?
141
- pend("test_user_install_disabled_read_only test skipped on MS Windows")
142
- elsif Process.uid.zero?
143
- pend("test_user_install_disabled_read_only test skipped in root privilege")
144
- else
145
- @cmd.handle_options %w[--no-user-install]
146
-
147
- refute @cmd.options[:user_install]
148
-
149
- FileUtils.chmod 0o755, @userhome
150
- FileUtils.chmod 0o000, @gemhome
151
-
152
- Gem.use_paths @gemhome, @userhome
153
-
154
- assert_raise(Gem::FilePermissionError) do
155
- Gem::Installer.at(@gem, @cmd.options).install
156
- end
157
- end
158
- ensure
159
- FileUtils.chmod 0o755, @gemhome
160
- end
161
-
162
- def test_vendor
163
- vendordir(File.join(@tempdir, "vendor")) do
164
- @cmd.handle_options %w[--vendor]
165
-
166
- assert @cmd.options[:vendor]
167
- assert_equal Gem.vendor_dir, @cmd.options[:install_dir]
168
- end
169
- end
170
-
171
- def test_vendor_missing
172
- vendordir(nil) do
173
- e = assert_raise Gem::OptionParser::InvalidOption do
174
- @cmd.handle_options %w[--vendor]
175
- end
176
-
177
- assert_equal "invalid option: --vendor your platform is not supported",
178
- e.message
179
-
180
- refute @cmd.options[:vendor]
181
- refute @cmd.options[:install_dir]
182
- end
183
- end
184
-
185
- def test_post_install_message_no
186
- @cmd.handle_options %w[--no-post-install-message]
187
-
188
- assert_equal false, @cmd.options[:post_install_message]
189
- end
190
-
191
- def test_post_install_message
192
- @cmd.handle_options %w[--post-install-message]
193
-
194
- assert_equal true, @cmd.options[:post_install_message]
195
- end
196
-
197
- def test_minimal_deps_no
198
- @cmd.handle_options %w[--no-minimal-deps]
199
-
200
- assert_equal false, @cmd.options[:minimal_deps]
201
- end
202
-
203
- def test_minimal_deps
204
- @cmd.handle_options %w[--minimal-deps]
205
-
206
- assert_equal true, @cmd.options[:minimal_deps]
207
- end
208
- end