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,708 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "helper"
4
- require "rubygems/commands/pristine_command"
5
-
6
- class TestGemCommandsPristineCommand < Gem::TestCase
7
- def setup
8
- super
9
- common_installer_setup
10
-
11
- @cmd = Gem::Commands::PristineCommand.new
12
- end
13
-
14
- def test_execute
15
- a = util_spec "a" do |s|
16
- s.executables = %w[foo]
17
- s.files = %w[bin/foo lib/a.rb]
18
- end
19
-
20
- write_file File.join(@tempdir, "lib", "a.rb") do |fp|
21
- fp.puts "puts __FILE__"
22
- end
23
- write_file File.join(@tempdir, "bin", "foo") do |fp|
24
- fp.puts "#!/usr/bin/ruby"
25
- end
26
-
27
- install_gem a
28
-
29
- foo_path = File.join @gemhome, "gems", a.full_name, "bin", "foo"
30
- a_rb_path = File.join @gemhome, "gems", a.full_name, "lib", "a.rb"
31
-
32
- write_file foo_path do |io|
33
- io.puts "I changed it!"
34
- end
35
-
36
- write_file a_rb_path do |io|
37
- io.puts "I changed it!"
38
- end
39
-
40
- @cmd.options[:args] = %w[a]
41
-
42
- use_ui @ui do
43
- @cmd.execute
44
- end
45
-
46
- assert_equal "#!/usr/bin/ruby\n", File.read(foo_path), foo_path
47
- assert_equal "puts __FILE__\n", File.read(a_rb_path), a_rb_path
48
-
49
- out = @ui.output.split "\n"
50
-
51
- assert_equal "Restoring gems to pristine condition...", out.shift
52
- assert_equal "Restored #{a.full_name}", out.shift
53
- assert_empty out, out.inspect
54
- end
55
-
56
- def test_execute_user_install
57
- FileUtils.chmod 0o555, @gemhome
58
-
59
- a = util_spec "a" do |s|
60
- s.executables = %w[foo]
61
- s.files = %w[bin/foo lib/a.rb]
62
- end
63
-
64
- write_file File.join(@tempdir, "lib", "a.rb") do |fp|
65
- fp.puts "puts __FILE__"
66
- end
67
-
68
- write_file File.join(@tempdir, "bin", "foo") do |fp|
69
- fp.puts "#!/usr/bin/ruby"
70
- end
71
-
72
- install_gem_user(a)
73
-
74
- Gem::Specification.dirs = [Gem.dir, Gem.user_dir]
75
-
76
- foo_path = File.join(Gem.user_dir, "gems", a.full_name, "bin", "foo")
77
- a_rb_path = File.join(Gem.user_dir, "gems", a.full_name, "lib", "a.rb")
78
-
79
- write_file foo_path do |io|
80
- io.puts("I changed it!")
81
- end
82
-
83
- write_file a_rb_path do |io|
84
- io.puts("I changed it!")
85
- end
86
-
87
- @cmd.options[:args] = %w[a]
88
-
89
- use_ui @ui do
90
- @cmd.execute
91
- end
92
-
93
- assert_equal "#!/usr/bin/ruby\n", File.read(foo_path), foo_path
94
- assert_equal "puts __FILE__\n", File.read(a_rb_path), a_rb_path
95
-
96
- out = @ui.output.split("\n")
97
-
98
- assert_equal "Restoring gems to pristine condition...", out.shift
99
- assert_equal "Restored #{a.full_name}", out.shift
100
- assert_empty out, out.inspect
101
- ensure
102
- FileUtils.chmod(0o755, @gemhome)
103
- end
104
-
105
- def test_execute_all
106
- a = util_spec "a" do |s|
107
- s.executables = %w[foo]
108
- end
109
-
110
- write_file File.join(@tempdir, "bin", "foo") do |fp|
111
- fp.puts "#!/usr/bin/ruby"
112
- end
113
-
114
- install_gem a
115
-
116
- gem_bin = File.join @gemhome, "gems", a.full_name, "bin", "foo"
117
- gem_stub = File.join @gemhome, "bin", "foo"
118
-
119
- FileUtils.rm gem_bin
120
- FileUtils.rm gem_stub
121
-
122
- @cmd.handle_options %w[--all]
123
-
124
- use_ui @ui do
125
- @cmd.execute
126
- end
127
-
128
- assert File.exist?(gem_bin)
129
- assert File.exist?(gem_stub)
130
-
131
- out = @ui.output.split "\n"
132
-
133
- assert_equal "Restoring gems to pristine condition...", out.shift
134
- assert_equal "Restored #{a.full_name}", out.shift
135
- assert_empty out, out.inspect
136
- end
137
-
138
- def test_execute_env_shebang
139
- a = util_spec "a" do |s|
140
- s.executables = %w[foo]
141
- s.files = %w[bin/foo]
142
- end
143
- write_file File.join(@tempdir, "bin", "foo") do |fp|
144
- fp.puts "#!/usr/bin/ruby"
145
- end
146
-
147
- install_gem a
148
-
149
- gem_exec = File.join @gemhome, "bin", "foo"
150
-
151
- FileUtils.rm gem_exec
152
-
153
- @cmd.handle_options %w[--all --env-shebang]
154
-
155
- use_ui @ui do
156
- @cmd.execute
157
- end
158
-
159
- assert_path_exist gem_exec
160
-
161
- ruby_exec = sprintf Gem.default_exec_format, "ruby"
162
-
163
- bin_env = win_platform? ? "" : %w[/usr/bin/env /bin/env].find {|f| File.executable?(f) } + " "
164
-
165
- assert_match %r{\A#!\s*#{bin_env}#{ruby_exec}}, File.read(gem_exec)
166
- end
167
-
168
- def test_execute_extensions_explicit
169
- a = util_spec "a" do |s|
170
- s.extensions << "ext/a/extconf.rb"
171
- end
172
-
173
- ext_path = File.join @tempdir, "ext", "a", "extconf.rb"
174
- write_file ext_path do |io|
175
- io.write <<-'RUBY'
176
- File.open "Makefile", "w" do |f|
177
- f.puts "clean:\n\techo cleaned\n"
178
- f.puts "all:\n\techo built\n"
179
- f.puts "install:\n\techo installed\n"
180
- end
181
- RUBY
182
- end
183
-
184
- b = util_spec "b"
185
-
186
- install_gem a
187
- install_gem b
188
-
189
- @cmd.options[:extensions] = true
190
- @cmd.options[:extensions_set] = true
191
- @cmd.options[:args] = []
192
-
193
- use_ui @ui do
194
- @cmd.execute
195
- end
196
-
197
- out = @ui.output.split "\n"
198
-
199
- assert_equal "Restoring gems to pristine condition...", out.shift
200
- assert_equal "Building native extensions. This could take a while...",
201
- out.shift
202
- assert_equal "Restored #{a.full_name}", out.shift
203
- assert_empty out, out.inspect
204
- end
205
-
206
- def test_execute_extensions_only_missing_extensions
207
- a = util_spec "a" do |s|
208
- s.extensions << "ext/a/extconf.rb"
209
- end
210
-
211
- ext_path = File.join @tempdir, "ext", "a", "extconf.rb"
212
- write_file ext_path do |io|
213
- io.write <<-'RUBY'
214
- File.open "Makefile", "w" do |f|
215
- f.puts "clean:\n\techo cleaned\n"
216
- f.puts "all:\n\techo built\n"
217
- f.puts "install:\n\techo installed\n"
218
- end
219
- RUBY
220
- end
221
-
222
- b = util_spec "b" do |s|
223
- s.extensions << "ext/b/extconf.rb"
224
- end
225
-
226
- ext_path = File.join @tempdir, "ext", "b", "extconf.rb"
227
- write_file ext_path do |io|
228
- io.write <<-'RUBY'
229
- File.open "Makefile", "w" do |f|
230
- f.puts "clean:\n\techo cleaned\n"
231
- f.puts "all:\n\techo built\n"
232
- f.puts "install:\n\techo installed\n"
233
- end
234
- RUBY
235
- end
236
-
237
- install_gem a
238
- install_gem b
239
-
240
- # Remove the extension files for b
241
- FileUtils.rm_rf b.gem_build_complete_path
242
-
243
- @cmd.options[:only_missing_extensions] = true
244
- @cmd.options[:args] = []
245
-
246
- use_ui @ui do
247
- @cmd.execute
248
- end
249
-
250
- refute_includes @ui.output, "Restored #{a.full_name}"
251
- assert_includes @ui.output, "Restored #{b.full_name}"
252
- end
253
-
254
- def test_execute_no_extension
255
- a = util_spec "a" do |s|
256
- s.extensions << "ext/a/extconf.rb"
257
- end
258
-
259
- ext_path = File.join @tempdir, "ext", "a", "extconf.rb"
260
- write_file ext_path do |io|
261
- io.write "# extconf.rb\nrequire 'mkmf'; create_makefile 'a'"
262
- end
263
-
264
- install_gem a
265
-
266
- @cmd.options[:args] = %w[a]
267
- @cmd.options[:extensions] = false
268
-
269
- use_ui @ui do
270
- @cmd.execute
271
- end
272
-
273
- out = @ui.output.split "\n"
274
-
275
- assert_equal "Restoring gems to pristine condition...", out.shift
276
- assert_equal "Skipped #{a.full_name}, it needs to compile an extension",
277
- out.shift
278
- assert_empty out, out.inspect
279
- end
280
-
281
- def test_execute_with_extension_with_build_args
282
- a = util_spec "a" do |s|
283
- s.extensions << "ext/a/extconf.rb"
284
- end
285
-
286
- ext_path = File.join @tempdir, "ext", "a", "extconf.rb"
287
- write_file ext_path do |io|
288
- io.write <<-'RUBY'
289
- File.open "Makefile", "w" do |f|
290
- f.puts "clean:\n\techo cleaned\n"
291
- f.puts "all:\n\techo built\n"
292
- f.puts "install:\n\techo installed\n"
293
- end
294
- RUBY
295
- end
296
-
297
- build_args = %w[--with-awesome=true --sweet]
298
-
299
- install_gem a, :build_args => build_args
300
-
301
- @cmd.options[:args] = %w[a]
302
-
303
- use_ui @ui do
304
- @cmd.execute
305
- end
306
-
307
- out = @ui.output.split "\n"
308
-
309
- assert_equal "Restoring gems to pristine condition...", out.shift
310
- assert_equal "Building native extensions with: '--with-awesome=true --sweet'", out.shift
311
- assert_equal "This could take a while...", out.shift
312
- assert_equal "Restored #{a.full_name}", out.shift
313
- assert_empty out, out.inspect
314
- end
315
-
316
- def test_execute_many
317
- a = util_spec "a"
318
- b = util_spec "b"
319
-
320
- install_gem a
321
- install_gem b
322
-
323
- @cmd.options[:args] = %w[a b]
324
-
325
- use_ui @ui do
326
- @cmd.execute
327
- end
328
-
329
- out = @ui.output.split "\n"
330
-
331
- assert_equal "Restoring gems to pristine condition...", out.shift
332
- assert_equal "Restored #{a.full_name}", out.shift
333
- assert_equal "Restored #{b.full_name}", out.shift
334
- assert_empty out, out.inspect
335
- end
336
-
337
- def test_skip
338
- a = util_spec "a"
339
- b = util_spec "b"
340
-
341
- install_gem a
342
- install_gem b
343
-
344
- @cmd.options[:args] = %w[a b]
345
- @cmd.options[:skip] = "a"
346
-
347
- use_ui @ui do
348
- @cmd.execute
349
- end
350
-
351
- out = @ui.output.split "\n"
352
-
353
- assert_equal "Restoring gems to pristine condition...", out.shift
354
- assert_equal "Skipped #{a.full_name}, it was given through options", out.shift
355
- assert_equal "Restored #{b.full_name}", out.shift
356
- assert_empty out, out.inspect
357
- end
358
-
359
- def test_skip_many_gems
360
- a = util_spec "a"
361
- b = util_spec "b"
362
- c = util_spec "c"
363
-
364
- install_gem a
365
- install_gem b
366
- install_gem c
367
-
368
- @cmd.options[:args] = %w[a b c]
369
- @cmd.options[:skip] = ["a", "c"]
370
-
371
- use_ui @ui do
372
- @cmd.execute
373
- end
374
-
375
- out = @ui.output.split "\n"
376
-
377
- assert_equal "Restoring gems to pristine condition...", out.shift
378
- assert_equal "Skipped #{a.full_name}, it was given through options", out.shift
379
- assert_equal "Restored #{b.full_name}", out.shift
380
- assert_equal "Skipped #{c.full_name}, it was given through options", out.shift
381
- assert_empty out, out.inspect
382
- end
383
-
384
- def test_execute_many_multi_repo
385
- a = util_spec "a"
386
- install_gem a
387
-
388
- Gem.clear_paths
389
- gemhome2 = File.join @tempdir, "gemhome2"
390
- Gem.use_paths gemhome2, [gemhome2, @gemhome]
391
-
392
- b = util_spec "b"
393
- install_gem b
394
-
395
- @cmd.options[:args] = %w[a b]
396
-
397
- use_ui @ui do
398
- @cmd.execute
399
- end
400
-
401
- out = @ui.output.split "\n"
402
-
403
- assert_equal "Restoring gems to pristine condition...", out.shift
404
- assert_equal "Restored #{a.full_name}", out.shift
405
- assert_equal "Restored #{b.full_name}", out.shift
406
- assert_empty out, out.inspect
407
-
408
- assert_path_exist File.join(@gemhome, "gems", "a-2")
409
- assert_path_not_exist File.join(gemhome2, "gems", "a-2")
410
- assert_path_exist File.join(gemhome2, "gems", "b-2")
411
- assert_path_not_exist File.join(@gemhome, "gems", "b-2")
412
- end
413
-
414
- def test_execute_missing_cache_gem
415
- specs = spec_fetcher do |fetcher|
416
- fetcher.gem "a", 1
417
- fetcher.gem "a", 2
418
- fetcher.gem "a", 3
419
- fetcher.gem "a", "3.a"
420
- end
421
-
422
- FileUtils.rm specs["a-2"].cache_file
423
-
424
- @cmd.options[:args] = %w[a]
425
-
426
- use_ui @ui do
427
- @cmd.execute
428
- end
429
-
430
- out = @ui.output.split "\n"
431
-
432
- [
433
- "Restoring gems to pristine condition...",
434
- "Restored a-1",
435
- "Cached gem for a-2 not found, attempting to fetch...",
436
- "Restored a-2",
437
- "Restored a-3.a",
438
- "Restored a-3",
439
- ].each do |line|
440
- assert_equal line, out.shift
441
- end
442
-
443
- assert_empty out, out.inspect
444
- end
445
-
446
- def test_execute_missing_cache_gem_when_multi_repo
447
- specs = spec_fetcher do |fetcher|
448
- fetcher.gem "a", 1
449
- fetcher.gem "b", 1
450
- end
451
-
452
- FileUtils.rm_rf File.join(@gemhome, "gems", "a-1")
453
- FileUtils.rm_rf File.join(@gemhome, "gems", "b-1")
454
-
455
- install_gem specs["a-1"]
456
- FileUtils.rm File.join(@gemhome, "cache", "a-1.gem")
457
-
458
- Gem.clear_paths
459
- gemhome2 = File.join(@tempdir, "gemhome2")
460
- Gem.use_paths gemhome2, [gemhome2, @gemhome]
461
-
462
- install_gem specs["b-1"]
463
- FileUtils.rm File.join(gemhome2, "cache", "b-1.gem")
464
- Gem::Specification.reset
465
-
466
- @cmd.options[:args] = %w[a b]
467
-
468
- use_ui @ui do
469
- @cmd.execute
470
- end
471
-
472
- out = @ui.output.split "\n"
473
-
474
- [
475
- "Restoring gems to pristine condition...",
476
- "Cached gem for a-1 not found, attempting to fetch...",
477
- "Restored a-1",
478
- "Cached gem for b-1 not found, attempting to fetch...",
479
- "Restored b-1",
480
- ].each do |line|
481
- assert_equal line, out.shift
482
- end
483
-
484
- assert_empty out, out.inspect
485
- assert_empty @ui.error
486
-
487
- assert_path_exist File.join(@gemhome, "cache", "a-1.gem")
488
- assert_path_not_exist File.join(gemhome2, "cache", "a-2.gem")
489
- assert_path_exist File.join(@gemhome, "gems", "a-1")
490
- assert_path_not_exist File.join(gemhome2, "gems", "a-1")
491
-
492
- assert_path_exist File.join(gemhome2, "cache", "b-1.gem")
493
- assert_path_not_exist File.join(@gemhome, "cache", "b-2.gem")
494
- assert_path_exist File.join(gemhome2, "gems", "b-1")
495
- assert_path_not_exist File.join(@gemhome, "gems", "b-1")
496
- end
497
-
498
- def test_execute_no_gem
499
- @cmd.options[:args] = %w[]
500
-
501
- e = assert_raise Gem::CommandLineError do
502
- use_ui @ui do
503
- @cmd.execute
504
- end
505
- end
506
-
507
- assert_match %r{at least one gem name}, e.message
508
- end
509
-
510
- def test_execute_only_executables
511
- a = util_spec "a" do |s|
512
- s.executables = %w[foo]
513
- s.files = %w[bin/foo lib/a.rb]
514
- end
515
- write_file File.join(@tempdir, "lib", "a.rb") do |fp|
516
- fp.puts "puts __FILE__"
517
- end
518
- write_file File.join(@tempdir, "bin", "foo") do |fp|
519
- fp.puts "#!/usr/bin/ruby"
520
- end
521
-
522
- install_gem a
523
-
524
- gem_lib = File.join @gemhome, "gems", a.full_name, "lib", "a.rb"
525
- gem_exec = File.join @gemhome, "bin", "foo"
526
-
527
- FileUtils.rm gem_exec
528
- FileUtils.rm gem_lib
529
-
530
- @cmd.handle_options %w[--all --only-executables]
531
-
532
- use_ui @ui do
533
- @cmd.execute
534
- end
535
-
536
- assert File.exist? gem_exec
537
- refute File.exist? gem_lib
538
- end
539
-
540
- def test_execute_only_plugins
541
- a = util_spec "a" do |s|
542
- s.executables = %w[foo]
543
- s.files = %w[bin/foo lib/a.rb lib/rubygems_plugin.rb]
544
- end
545
- write_file File.join(@tempdir, "lib", "a.rb") do |fp|
546
- fp.puts "puts __FILE__"
547
- end
548
- write_file File.join(@tempdir, "lib", "rubygems_plugin.rb") do |fp|
549
- fp.puts "# do nothing"
550
- end
551
- write_file File.join(@tempdir, "bin", "foo") do |fp|
552
- fp.puts "#!/usr/bin/ruby"
553
- end
554
-
555
- install_gem a
556
-
557
- gem_lib = File.join @gemhome, "gems", a.full_name, "lib", "a.rb"
558
- gem_plugin = File.join @gemhome, "plugins", "a_plugin.rb"
559
- gem_exec = File.join @gemhome, "bin", "foo"
560
-
561
- FileUtils.rm gem_exec
562
- FileUtils.rm gem_plugin
563
- FileUtils.rm gem_lib
564
-
565
- @cmd.handle_options %w[--all --only-plugins]
566
-
567
- use_ui @ui do
568
- @cmd.execute
569
- end
570
-
571
- refute File.exist? gem_exec
572
- assert File.exist? gem_plugin
573
- refute File.exist? gem_lib
574
- end
575
-
576
- def test_execute_bindir
577
- a = util_spec "a" do |s|
578
- s.name = "test_gem"
579
- s.executables = %w[foo]
580
- s.files = %w[bin/foo]
581
- end
582
-
583
- write_file File.join(@tempdir, "bin", "foo") do |fp|
584
- fp.puts "#!/usr/bin/ruby"
585
- end
586
-
587
- write_file File.join(@tempdir, "test_bin", "foo") do |fp|
588
- fp.puts "#!/usr/bin/ruby"
589
- end
590
-
591
- install_gem a
592
-
593
- gem_exec = File.join @gemhome, "bin", "foo"
594
- gem_bindir = File.join @tempdir, "test_bin", "foo"
595
-
596
- FileUtils.rm gem_exec
597
- FileUtils.rm gem_bindir
598
-
599
- @cmd.handle_options ["--all", "--only-executables", "--bindir", "#{gem_bindir}"]
600
-
601
- use_ui @ui do
602
- @cmd.execute
603
- end
604
-
605
- refute File.exist? gem_exec
606
- assert File.exist? gem_bindir
607
- end
608
-
609
- def test_execute_unknown_gem_at_remote_source
610
- install_specs util_spec "a"
611
-
612
- @cmd.options[:args] = %w[a]
613
-
614
- use_ui @ui do
615
- @cmd.execute
616
- end
617
-
618
- assert_equal([
619
- "Restoring gems to pristine condition...",
620
- "Cached gem for a-2 not found, attempting to fetch...",
621
- "Skipped a-2, it was not found from cache and remote sources",
622
- ], @ui.output.split("\n"))
623
-
624
- assert_empty @ui.error
625
- end
626
-
627
- def test_execute_default_gem
628
- default_gem_spec = new_default_spec("default", "2.0.0.0",
629
- nil, "default/gem.rb")
630
- install_default_gems(default_gem_spec)
631
-
632
- @cmd.options[:args] = %w[default]
633
-
634
- use_ui @ui do
635
- @cmd.execute
636
- end
637
-
638
- assert_equal(
639
- [
640
- "Restoring gems to pristine condition...",
641
- "Skipped default-2.0.0.0, it is a default gem",
642
- ],
643
- @ui.output.split("\n")
644
- )
645
- assert_empty(@ui.error)
646
- end
647
-
648
- def test_execute_multi_platform
649
- a = util_spec "a" do |s|
650
- s.extensions << "ext/a/extconf.rb"
651
- end
652
-
653
- b = util_spec "b" do |s|
654
- s.extensions << "ext/a/extconf.rb"
655
- s.platform = Gem::Platform.new("java")
656
- end
657
-
658
- ext_path = File.join @tempdir, "ext", "a", "extconf.rb"
659
- write_file ext_path do |io|
660
- io.write <<-'RUBY'
661
- File.open "Makefile", "w" do |f|
662
- f.puts "clean:\n\techo cleaned\n"
663
- f.puts "all:\n\techo built\n"
664
- f.puts "install:\n\techo installed\n"
665
- end
666
- RUBY
667
- end
668
-
669
- install_gem a
670
- install_gem b
671
-
672
- @cmd.options[:extensions] = true
673
- @cmd.options[:extensions_set] = true
674
- @cmd.options[:args] = []
675
-
676
- util_set_arch "x86_64-darwin" do
677
- use_ui @ui do
678
- @cmd.execute
679
- end
680
- end
681
-
682
- out = @ui.output.split "\n"
683
-
684
- assert_equal "Restoring gems to pristine condition...", out.shift
685
- assert_equal "Building native extensions. This could take a while...",
686
- out.shift
687
- assert_equal "Restored #{a.full_name}", out.shift
688
- assert_empty out, out.inspect
689
- end
690
-
691
- def test_handle_options
692
- @cmd.handle_options %w[]
693
-
694
- refute @cmd.options[:all]
695
-
696
- assert @cmd.options[:extensions]
697
- refute @cmd.options[:extensions_set]
698
-
699
- assert_equal Gem::Requirement.default, @cmd.options[:version]
700
- end
701
-
702
- def test_handle_options_extensions
703
- @cmd.handle_options %w[--extensions]
704
-
705
- assert @cmd.options[:extensions]
706
- assert @cmd.options[:extensions_set]
707
- end
708
- end