rubygems-update 3.4.22 → 3.5.1

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 (540) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +105 -2
  3. data/Manifest.txt +46 -221
  4. data/README.md +1 -3
  5. data/bundler/CHANGELOG.md +63 -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 +254 -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 +46 -30
  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/.document +1 -0
  134. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  135. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +53 -6
  136. data/bundler/lib/bundler/vendor/fileutils/.document +1 -0
  137. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +8 -20
  138. data/bundler/lib/bundler/vendor/net-http-persistent/.document +1 -0
  139. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +3 -3
  140. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +2 -2
  141. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +1 -1
  142. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +34 -34
  143. data/bundler/lib/bundler/vendor/pub_grub/.document +1 -0
  144. data/bundler/lib/bundler/vendor/thor/.document +1 -0
  145. data/bundler/lib/bundler/vendor/tsort/.document +1 -0
  146. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +3 -0
  147. data/bundler/lib/bundler/vendor/uri/.document +1 -0
  148. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +256 -132
  149. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1 -0
  150. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +95 -31
  151. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  152. data/bundler/lib/bundler/vendored_net_http.rb +8 -0
  153. data/bundler/lib/bundler/vendored_persistent.rb +0 -4
  154. data/bundler/lib/bundler/vendored_timeout.rb +8 -0
  155. data/bundler/lib/bundler/version.rb +1 -1
  156. data/bundler/lib/bundler/vlad.rb +1 -1
  157. data/bundler/lib/bundler/yaml_serializer.rb +3 -3
  158. data/bundler/lib/bundler.rb +41 -32
  159. data/lib/rubygems/available_set.rb +4 -4
  160. data/lib/rubygems/basic_specification.rb +35 -37
  161. data/lib/rubygems/bundler_version_finder.rb +4 -4
  162. data/lib/rubygems/ci_detector.rb +75 -0
  163. data/lib/rubygems/command.rb +13 -15
  164. data/lib/rubygems/command_manager.rb +5 -4
  165. data/lib/rubygems/commands/build_command.rb +2 -2
  166. data/lib/rubygems/commands/cert_command.rb +1 -2
  167. data/lib/rubygems/commands/check_command.rb +4 -4
  168. data/lib/rubygems/commands/cleanup_command.rb +12 -14
  169. data/lib/rubygems/commands/contents_command.rb +4 -4
  170. data/lib/rubygems/commands/dependency_command.rb +4 -5
  171. data/lib/rubygems/commands/environment_command.rb +1 -3
  172. data/lib/rubygems/commands/exec_command.rb +1 -1
  173. data/lib/rubygems/commands/fetch_command.rb +2 -2
  174. data/lib/rubygems/commands/generate_index_command.rb +39 -74
  175. data/lib/rubygems/commands/help_command.rb +3 -3
  176. data/lib/rubygems/commands/info_command.rb +2 -2
  177. data/lib/rubygems/commands/install_command.rb +8 -16
  178. data/lib/rubygems/commands/list_command.rb +2 -2
  179. data/lib/rubygems/commands/lock_command.rb +1 -1
  180. data/lib/rubygems/commands/open_command.rb +1 -1
  181. data/lib/rubygems/commands/owner_command.rb +1 -1
  182. data/lib/rubygems/commands/pristine_command.rb +13 -15
  183. data/lib/rubygems/commands/push_command.rb +2 -2
  184. data/lib/rubygems/commands/query_command.rb +4 -5
  185. data/lib/rubygems/commands/rdoc_command.rb +2 -2
  186. data/lib/rubygems/commands/search_command.rb +2 -2
  187. data/lib/rubygems/commands/setup_command.rb +31 -34
  188. data/lib/rubygems/commands/sources_command.rb +12 -12
  189. data/lib/rubygems/commands/specification_command.rb +10 -10
  190. data/lib/rubygems/commands/stale_command.rb +1 -1
  191. data/lib/rubygems/commands/uninstall_command.rb +9 -10
  192. data/lib/rubygems/commands/unpack_command.rb +4 -4
  193. data/lib/rubygems/commands/update_command.rb +10 -12
  194. data/lib/rubygems/commands/which_command.rb +1 -1
  195. data/lib/rubygems/commands/yank_command.rb +1 -1
  196. data/lib/rubygems/compatibility.rb +5 -6
  197. data/lib/rubygems/config_file.rb +4 -4
  198. data/lib/rubygems/core_ext/kernel_gem.rb +0 -2
  199. data/lib/rubygems/core_ext/kernel_require.rb +19 -48
  200. data/lib/rubygems/core_ext/kernel_warn.rb +1 -1
  201. data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
  202. data/lib/rubygems/defaults.rb +15 -3
  203. data/lib/rubygems/dependency.rb +12 -14
  204. data/lib/rubygems/dependency_installer.rb +29 -30
  205. data/lib/rubygems/dependency_list.rb +1 -1
  206. data/lib/rubygems/deprecate.rb +16 -15
  207. data/lib/rubygems/doctor.rb +5 -5
  208. data/lib/rubygems/errors.rb +2 -6
  209. data/lib/rubygems/exceptions.rb +2 -1
  210. data/lib/rubygems/ext/builder.rb +15 -10
  211. data/lib/rubygems/ext/cargo_builder.rb +5 -5
  212. data/lib/rubygems/ext/ext_conf_builder.rb +1 -3
  213. data/lib/rubygems/gem_runner.rb +4 -4
  214. data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +3 -3
  215. data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +3 -3
  216. data/lib/rubygems/gemcutter_utilities.rb +18 -19
  217. data/lib/rubygems/install_update_options.rb +18 -19
  218. data/lib/rubygems/installer.rb +59 -33
  219. data/lib/rubygems/installer_uninstaller_utils.rb +0 -2
  220. data/lib/rubygems/local_remote_options.rb +7 -10
  221. data/lib/rubygems/name_tuple.rb +7 -9
  222. data/lib/rubygems/net/http.rb +3 -0
  223. data/lib/rubygems/net-http/.document +1 -0
  224. data/lib/rubygems/net-http/LICENSE.txt +22 -0
  225. data/lib/rubygems/net-http/lib/net/http/backward.rb +40 -0
  226. data/lib/rubygems/net-http/lib/net/http/exceptions.rb +34 -0
  227. data/lib/rubygems/net-http/lib/net/http/generic_request.rb +414 -0
  228. data/lib/rubygems/net-http/lib/net/http/header.rb +981 -0
  229. data/lib/rubygems/net-http/lib/net/http/proxy_delta.rb +17 -0
  230. data/lib/rubygems/net-http/lib/net/http/request.rb +88 -0
  231. data/lib/rubygems/net-http/lib/net/http/requests.rb +425 -0
  232. data/lib/rubygems/net-http/lib/net/http/response.rb +738 -0
  233. data/lib/rubygems/net-http/lib/net/http/responses.rb +1174 -0
  234. data/lib/rubygems/net-http/lib/net/http/status.rb +84 -0
  235. data/lib/rubygems/net-http/lib/net/http.rb +2496 -0
  236. data/lib/rubygems/net-http/lib/net/https.rb +23 -0
  237. data/lib/rubygems/net-protocol/.document +1 -0
  238. data/lib/rubygems/net-protocol/LICENSE.txt +22 -0
  239. data/lib/rubygems/net-protocol/lib/net/protocol.rb +544 -0
  240. data/lib/rubygems/optparse/lib/optparse.rb +39 -17
  241. data/lib/rubygems/package/old.rb +2 -2
  242. data/lib/rubygems/package/tar_header.rb +45 -39
  243. data/lib/rubygems/package/tar_reader/entry.rb +5 -4
  244. data/lib/rubygems/package/tar_reader.rb +5 -3
  245. data/lib/rubygems/package/tar_writer.rb +19 -17
  246. data/lib/rubygems/package.rb +27 -26
  247. data/lib/rubygems/package_task.rb +2 -2
  248. data/lib/rubygems/path_support.rb +9 -10
  249. data/lib/rubygems/platform.rb +60 -45
  250. data/lib/rubygems/query_utils.rb +7 -9
  251. data/lib/rubygems/remote_fetcher.rb +15 -15
  252. data/lib/rubygems/request/connection_pools.rb +3 -3
  253. data/lib/rubygems/request.rb +20 -17
  254. data/lib/rubygems/request_set/gem_dependency_api.rb +119 -122
  255. data/lib/rubygems/request_set/lockfile/parser.rb +9 -9
  256. data/lib/rubygems/request_set/lockfile/tokenizer.rb +20 -12
  257. data/lib/rubygems/request_set/lockfile.rb +6 -11
  258. data/lib/rubygems/request_set.rb +5 -5
  259. data/lib/rubygems/requirement.rb +7 -7
  260. data/lib/rubygems/resolv/.document +1 -0
  261. data/lib/rubygems/resolv/LICENSE.txt +22 -0
  262. data/lib/rubygems/resolv/lib/resolv.rb +3387 -0
  263. data/lib/rubygems/resolver/activation_request.rb +1 -3
  264. data/lib/rubygems/resolver/api_set/gem_parser.rb +7 -3
  265. data/lib/rubygems/resolver/best_set.rb +1 -1
  266. data/lib/rubygems/resolver/composed_set.rb +1 -1
  267. data/lib/rubygems/resolver/conflict.rb +4 -12
  268. data/lib/rubygems/resolver/index_set.rb +4 -4
  269. data/lib/rubygems/resolver/index_specification.rb +2 -2
  270. data/lib/rubygems/resolver/installer_set.rb +5 -6
  271. data/lib/rubygems/resolver/lock_set.rb +1 -1
  272. data/lib/rubygems/resolver/molinillo/.document +1 -0
  273. data/lib/rubygems/resolver.rb +3 -10
  274. data/lib/rubygems/s3_uri_signer.rb +6 -6
  275. data/lib/rubygems/safe_marshal/elements.rb +138 -0
  276. data/lib/rubygems/safe_marshal/reader.rb +306 -0
  277. data/lib/rubygems/safe_marshal/visitors/stream_printer.rb +31 -0
  278. data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +385 -0
  279. data/lib/rubygems/safe_marshal/visitors/visitor.rb +74 -0
  280. data/lib/rubygems/safe_marshal.rb +74 -0
  281. data/lib/rubygems/safe_yaml.rb +5 -28
  282. data/lib/rubygems/security/policies.rb +36 -38
  283. data/lib/rubygems/security/policy.rb +7 -11
  284. data/lib/rubygems/security/signer.rb +1 -1
  285. data/lib/rubygems/security/trust_dir.rb +3 -3
  286. data/lib/rubygems/security.rb +8 -22
  287. data/lib/rubygems/source/git.rb +1 -3
  288. data/lib/rubygems/source/installed.rb +0 -2
  289. data/lib/rubygems/source/local.rb +5 -8
  290. data/lib/rubygems/source/lock.rb +1 -3
  291. data/lib/rubygems/source/specific_file.rb +0 -1
  292. data/lib/rubygems/source/vendor.rb +0 -2
  293. data/lib/rubygems/source.rb +12 -12
  294. data/lib/rubygems/source_list.rb +4 -4
  295. data/lib/rubygems/spec_fetcher.rb +29 -29
  296. data/lib/rubygems/specification.rb +125 -138
  297. data/lib/rubygems/specification_policy.rb +55 -25
  298. data/lib/rubygems/stub_specification.rb +4 -5
  299. data/lib/rubygems/text.rb +1 -2
  300. data/lib/rubygems/timeout/.document +1 -0
  301. data/lib/rubygems/timeout/LICENSE.txt +22 -0
  302. data/lib/rubygems/timeout/lib/timeout.rb +199 -0
  303. data/lib/rubygems/timeout.rb +3 -0
  304. data/lib/rubygems/tsort/lib/tsort.rb +3 -0
  305. data/lib/rubygems/uninstaller.rb +7 -9
  306. data/lib/rubygems/update_suggestion.rb +5 -18
  307. data/lib/rubygems/uri_formatter.rb +1 -1
  308. data/lib/rubygems/user_interaction.rb +15 -21
  309. data/lib/rubygems/util/licenses.rb +65 -35
  310. data/lib/rubygems/util/list.rb +3 -1
  311. data/lib/rubygems/util.rb +2 -4
  312. data/lib/rubygems/validator.rb +5 -3
  313. data/lib/rubygems/version.rb +34 -28
  314. data/lib/rubygems/version_option.rb +2 -5
  315. data/lib/rubygems/yaml_serializer.rb +3 -3
  316. data/lib/rubygems.rb +37 -37
  317. data/rubygems-update.gemspec +4 -4
  318. data/setup.rb +2 -2
  319. metadata +50 -225
  320. data/lib/rubygems/indexer.rb +0 -428
  321. data/lib/rubygems/mock_gem_ui.rb +0 -86
  322. data/test/rubygems/alternate_cert.pem +0 -19
  323. data/test/rubygems/alternate_cert_32.pem +0 -19
  324. data/test/rubygems/alternate_key.pem +0 -27
  325. data/test/rubygems/bad_rake.rb +0 -3
  326. data/test/rubygems/bundler_test_gem.rb +0 -424
  327. data/test/rubygems/ca_cert.pem +0 -77
  328. data/test/rubygems/child_cert.pem +0 -19
  329. data/test/rubygems/child_cert_32.pem +0 -19
  330. data/test/rubygems/child_key.pem +0 -27
  331. data/test/rubygems/client.pem +0 -107
  332. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  333. data/test/rubygems/data/gem-private_key.pem +0 -27
  334. data/test/rubygems/data/gem-public_cert.pem +0 -20
  335. data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
  336. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  337. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  338. data/test/rubygems/encrypted_private_key.pem +0 -30
  339. data/test/rubygems/expired_cert.pem +0 -19
  340. data/test/rubygems/fake_certlib/openssl.rb +0 -9
  341. data/test/rubygems/foo/discover.rb +0 -1
  342. data/test/rubygems/future_cert.pem +0 -19
  343. data/test/rubygems/future_cert_32.pem +0 -19
  344. data/test/rubygems/good_rake.rb +0 -3
  345. data/test/rubygems/grandchild_cert.pem +0 -19
  346. data/test/rubygems/grandchild_cert_32.pem +0 -19
  347. data/test/rubygems/grandchild_key.pem +0 -27
  348. data/test/rubygems/helper.rb +0 -1649
  349. data/test/rubygems/installer_test_case.rb +0 -248
  350. data/test/rubygems/invalid_client.pem +0 -49
  351. data/test/rubygems/invalid_issuer_cert.pem +0 -20
  352. data/test/rubygems/invalid_issuer_cert_32.pem +0 -20
  353. data/test/rubygems/invalid_key.pem +0 -27
  354. data/test/rubygems/invalid_signer_cert.pem +0 -19
  355. data/test/rubygems/invalid_signer_cert_32.pem +0 -19
  356. data/test/rubygems/invalidchild_cert.pem +0 -19
  357. data/test/rubygems/invalidchild_cert_32.pem +0 -19
  358. data/test/rubygems/invalidchild_key.pem +0 -27
  359. data/test/rubygems/multifactor_auth_utilities.rb +0 -111
  360. data/test/rubygems/package/tar_test_case.rb +0 -175
  361. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  362. data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
  363. data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
  364. data/test/rubygems/plugin/exception/rubygems_plugin.rb +0 -4
  365. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -5
  366. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +0 -4
  367. data/test/rubygems/private3072_key.pem +0 -40
  368. data/test/rubygems/private_ec_key.pem +0 -9
  369. data/test/rubygems/private_key.pem +0 -27
  370. data/test/rubygems/public3072_cert.pem +0 -25
  371. data/test/rubygems/public_cert.pem +0 -20
  372. data/test/rubygems/public_cert_32.pem +0 -19
  373. data/test/rubygems/public_key.pem +0 -9
  374. data/test/rubygems/rubygems/commands/crash_command.rb +0 -5
  375. data/test/rubygems/rubygems_plugin.rb +0 -24
  376. data/test/rubygems/sff/discover.rb +0 -1
  377. data/test/rubygems/simple_gem.rb +0 -68
  378. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -9
  379. data/test/rubygems/specifications/foo-0.0.1-x86-mswin32.gemspec +0 -0
  380. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +0 -14
  381. data/test/rubygems/ssl_cert.pem +0 -80
  382. data/test/rubygems/ssl_key.pem +0 -27
  383. data/test/rubygems/test_bundled_ca.rb +0 -61
  384. data/test/rubygems/test_config.rb +0 -28
  385. data/test/rubygems/test_deprecate.rb +0 -158
  386. data/test/rubygems/test_exit.rb +0 -17
  387. data/test/rubygems/test_gem.rb +0 -1799
  388. data/test/rubygems/test_gem_available_set.rb +0 -130
  389. data/test/rubygems/test_gem_bundler_version_finder.rb +0 -127
  390. data/test/rubygems/test_gem_command.rb +0 -403
  391. data/test/rubygems/test_gem_command_manager.rb +0 -400
  392. data/test/rubygems/test_gem_commands_build_command.rb +0 -739
  393. data/test/rubygems/test_gem_commands_cert_command.rb +0 -866
  394. data/test/rubygems/test_gem_commands_check_command.rb +0 -68
  395. data/test/rubygems/test_gem_commands_cleanup_command.rb +0 -292
  396. data/test/rubygems/test_gem_commands_contents_command.rb +0 -271
  397. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -228
  398. data/test/rubygems/test_gem_commands_environment_command.rb +0 -169
  399. data/test/rubygems/test_gem_commands_exec_command.rb +0 -857
  400. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -258
  401. data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -81
  402. data/test/rubygems/test_gem_commands_help_command.rb +0 -94
  403. data/test/rubygems/test_gem_commands_info_command.rb +0 -70
  404. data/test/rubygems/test_gem_commands_install_command.rb +0 -1573
  405. data/test/rubygems/test_gem_commands_list_command.rb +0 -33
  406. data/test/rubygems/test_gem_commands_lock_command.rb +0 -67
  407. data/test/rubygems/test_gem_commands_mirror.rb +0 -20
  408. data/test/rubygems/test_gem_commands_open_command.rb +0 -101
  409. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -50
  410. data/test/rubygems/test_gem_commands_owner_command.rb +0 -503
  411. data/test/rubygems/test_gem_commands_pristine_command.rb +0 -708
  412. data/test/rubygems/test_gem_commands_push_command.rb +0 -603
  413. data/test/rubygems/test_gem_commands_query_command.rb +0 -858
  414. data/test/rubygems/test_gem_commands_search_command.rb +0 -16
  415. data/test/rubygems/test_gem_commands_server_command.rb +0 -20
  416. data/test/rubygems/test_gem_commands_setup_command.rb +0 -474
  417. data/test/rubygems/test_gem_commands_signin_command.rb +0 -259
  418. data/test/rubygems/test_gem_commands_signout_command.rb +0 -30
  419. data/test/rubygems/test_gem_commands_sources_command.rb +0 -534
  420. data/test/rubygems/test_gem_commands_specification_command.rb +0 -277
  421. data/test/rubygems/test_gem_commands_stale_command.rb +0 -43
  422. data/test/rubygems/test_gem_commands_uninstall_command.rb +0 -542
  423. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -224
  424. data/test/rubygems/test_gem_commands_update_command.rb +0 -836
  425. data/test/rubygems/test_gem_commands_which_command.rb +0 -85
  426. data/test/rubygems/test_gem_commands_yank_command.rb +0 -299
  427. data/test/rubygems/test_gem_config_file.rb +0 -551
  428. data/test/rubygems/test_gem_dependency.rb +0 -398
  429. data/test/rubygems/test_gem_dependency_installer.rb +0 -1190
  430. data/test/rubygems/test_gem_dependency_list.rb +0 -265
  431. data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -27
  432. data/test/rubygems/test_gem_doctor.rb +0 -195
  433. data/test/rubygems/test_gem_ext_builder.rb +0 -337
  434. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +0 -1
  435. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +0 -10
  436. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +0 -249
  437. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +0 -10
  438. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +0 -27
  439. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +0 -3
  440. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +0 -1
  441. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +0 -249
  442. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +0 -10
  443. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +0 -10
  444. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +0 -51
  445. data/test/rubygems/test_gem_ext_cargo_builder.rb +0 -167
  446. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +0 -34
  447. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +0 -60
  448. data/test/rubygems/test_gem_ext_cmake_builder.rb +0 -84
  449. data/test/rubygems/test_gem_ext_configure_builder.rb +0 -80
  450. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -229
  451. data/test/rubygems/test_gem_ext_rake_builder.rb +0 -113
  452. data/test/rubygems/test_gem_gem_runner.rb +0 -119
  453. data/test/rubygems/test_gem_gemcutter_utilities.rb +0 -361
  454. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -60
  455. data/test/rubygems/test_gem_indexer.rb +0 -381
  456. data/test/rubygems/test_gem_install_update_options.rb +0 -208
  457. data/test/rubygems/test_gem_installer.rb +0 -2512
  458. data/test/rubygems/test_gem_local_remote_options.rb +0 -133
  459. data/test/rubygems/test_gem_name_tuple.rb +0 -43
  460. data/test/rubygems/test_gem_package.rb +0 -1306
  461. data/test/rubygems/test_gem_package_old.rb +0 -91
  462. data/test/rubygems/test_gem_package_tar_header.rb +0 -226
  463. data/test/rubygems/test_gem_package_tar_reader.rb +0 -150
  464. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -350
  465. data/test/rubygems/test_gem_package_tar_writer.rb +0 -331
  466. data/test/rubygems/test_gem_package_task.rb +0 -118
  467. data/test/rubygems/test_gem_path_support.rb +0 -139
  468. data/test/rubygems/test_gem_platform.rb +0 -497
  469. data/test/rubygems/test_gem_rdoc.rb +0 -137
  470. data/test/rubygems/test_gem_remote_fetcher.rb +0 -1227
  471. data/test/rubygems/test_gem_request.rb +0 -547
  472. data/test/rubygems/test_gem_request_connection_pools.rb +0 -152
  473. data/test/rubygems/test_gem_request_set.rb +0 -672
  474. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +0 -853
  475. data/test/rubygems/test_gem_request_set_lockfile.rb +0 -469
  476. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +0 -544
  477. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +0 -307
  478. data/test/rubygems/test_gem_requirement.rb +0 -505
  479. data/test/rubygems/test_gem_resolver.rb +0 -859
  480. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -43
  481. data/test/rubygems/test_gem_resolver_api_set.rb +0 -210
  482. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -167
  483. data/test/rubygems/test_gem_resolver_best_set.rb +0 -159
  484. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -44
  485. data/test/rubygems/test_gem_resolver_conflict.rb +0 -82
  486. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -83
  487. data/test/rubygems/test_gem_resolver_git_set.rb +0 -188
  488. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -114
  489. data/test/rubygems/test_gem_resolver_index_set.rb +0 -88
  490. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -93
  491. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -47
  492. data/test/rubygems/test_gem_resolver_installer_set.rb +0 -320
  493. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -44
  494. data/test/rubygems/test_gem_resolver_lock_set.rb +0 -62
  495. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -98
  496. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -19
  497. data/test/rubygems/test_gem_resolver_specification.rb +0 -63
  498. data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -82
  499. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -82
  500. data/test/rubygems/test_gem_security.rb +0 -341
  501. data/test/rubygems/test_gem_security_policy.rb +0 -535
  502. data/test/rubygems/test_gem_security_signer.rb +0 -218
  503. data/test/rubygems/test_gem_security_trust_dir.rb +0 -99
  504. data/test/rubygems/test_gem_silent_ui.rb +0 -123
  505. data/test/rubygems/test_gem_source.rb +0 -254
  506. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -37
  507. data/test/rubygems/test_gem_source_git.rb +0 -310
  508. data/test/rubygems/test_gem_source_installed.rb +0 -35
  509. data/test/rubygems/test_gem_source_list.rb +0 -119
  510. data/test/rubygems/test_gem_source_local.rb +0 -107
  511. data/test/rubygems/test_gem_source_lock.rb +0 -113
  512. data/test/rubygems/test_gem_source_specific_file.rb +0 -76
  513. data/test/rubygems/test_gem_source_subpath_problem.rb +0 -50
  514. data/test/rubygems/test_gem_source_vendor.rb +0 -30
  515. data/test/rubygems/test_gem_spec_fetcher.rb +0 -338
  516. data/test/rubygems/test_gem_specification.rb +0 -3856
  517. data/test/rubygems/test_gem_stream_ui.rb +0 -255
  518. data/test/rubygems/test_gem_stub_specification.rb +0 -278
  519. data/test/rubygems/test_gem_text.rb +0 -103
  520. data/test/rubygems/test_gem_uninstaller.rb +0 -675
  521. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -31
  522. data/test/rubygems/test_gem_update_suggestion.rb +0 -209
  523. data/test/rubygems/test_gem_uri.rb +0 -41
  524. data/test/rubygems/test_gem_uri_formatter.rb +0 -27
  525. data/test/rubygems/test_gem_util.rb +0 -91
  526. data/test/rubygems/test_gem_validator.rb +0 -42
  527. data/test/rubygems/test_gem_version.rb +0 -305
  528. data/test/rubygems/test_gem_version_option.rb +0 -165
  529. data/test/rubygems/test_kernel.rb +0 -124
  530. data/test/rubygems/test_project_sanity.rb +0 -49
  531. data/test/rubygems/test_remote_fetch_error.rb +0 -20
  532. data/test/rubygems/test_require.rb +0 -732
  533. data/test/rubygems/test_rubygems.rb +0 -76
  534. data/test/rubygems/test_webauthn_listener.rb +0 -143
  535. data/test/rubygems/test_webauthn_listener_response.rb +0 -93
  536. data/test/rubygems/test_webauthn_poller.rb +0 -124
  537. data/test/rubygems/utilities.rb +0 -436
  538. data/test/rubygems/wrong_key_cert.pem +0 -19
  539. data/test/rubygems/wrong_key_cert_32.pem +0 -19
  540. data/test/test_changelog_generator.rb +0 -17
@@ -1,857 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "helper"
4
- require "rubygems/commands/exec_command"
5
-
6
- class TestGemCommandsExecCommand < Gem::TestCase
7
- def setup
8
- @orig_args = Gem::Command.build_args
9
- @orig_specific_extra_args = Gem::Command.specific_extra_args_hash.dup
10
- @orig_extra_args = Gem::Command.extra_args.dup
11
-
12
- super
13
- common_installer_setup
14
-
15
- @cmd = Gem::Commands::ExecCommand.new
16
-
17
- @gem_home = Gem.dir
18
- @gem_path = Gem.path
19
- @test_arch = RbConfig::CONFIG["arch"]
20
-
21
- @installed_specs = []
22
- Gem.post_install {|installer| @installed_specs << installer.spec }
23
- end
24
-
25
- def teardown
26
- super
27
-
28
- common_installer_teardown
29
-
30
- Gem::Command.build_args = @orig_args
31
- Gem::Command.specific_extra_args_hash = @orig_specific_extra_args
32
- Gem::Command.extra_args = @orig_extra_args
33
- Gem.configuration = nil
34
- end
35
-
36
- def invoke(*args)
37
- @ui.outs.truncate(0)
38
- @ui.outs.rewind
39
- @ui.errs.truncate(0)
40
- @ui.errs.rewind
41
- @installed_specs.clear
42
-
43
- @cmd.invoke(*args)
44
- ensure
45
- Gem::Specification.unresolved_deps.clear
46
- Gem.loaded_specs.clear
47
- Gem.instance_variable_set(:@activated_gem_paths, 0)
48
- Gem.clear_default_specs
49
- Gem.use_paths(@gem_home, @gem_path)
50
- Gem.refresh
51
- end
52
-
53
- def test_error_with_no_arguments
54
- e = assert_raise Gem::CommandLineError do
55
- @cmd.invoke
56
- end
57
- assert_equal "Please specify an executable to run (e.g. gem exec COMMAND)",
58
- e.message
59
- end
60
-
61
- def test_error_with_no_executable
62
- e = assert_raise Gem::CommandLineError do
63
- @cmd.invoke "--verbose", "--gem", "GEM", "--version", "< 10", "--conservative"
64
- end
65
- assert_equal "Please specify an executable to run (e.g. gem exec COMMAND)",
66
- e.message
67
- end
68
-
69
- def test_full_option_parsing
70
- @cmd.when_invoked do |options|
71
- assert_equal options, {
72
- args: ["install", "--no-color", "--help", "--verbose"],
73
- executable: "pod",
74
- :explicit_prerelease => false,
75
- gem_name: "cocoapods",
76
- prerelease: false,
77
- :version => Gem::Requirement.new(["> 1", "< 1.3"]),
78
- build_args: nil,
79
- }
80
- end
81
- @cmd.invoke "--gem", "cocoapods", "-v", "> 1", "--version", "< 1.3", "--verbose", "--", "pod", "install", "--no-color", "--help", "--verbose"
82
- end
83
-
84
- def test_single_arg_parsing
85
- @cmd.when_invoked do |options|
86
- assert_equal options, {
87
- args: [],
88
- executable: "rails",
89
- gem_name: "rails",
90
- :version => Gem::Requirement.new([">= 0"]),
91
- build_args: nil,
92
- }
93
- end
94
- @cmd.invoke "rails"
95
- end
96
-
97
- def test_single_arg_parsing_with_version
98
- @cmd.when_invoked do |options|
99
- assert_equal options, {
100
- args: [],
101
- executable: "rails",
102
- gem_name: "rails",
103
- :version => Gem::Requirement.new(["= 7.1"]),
104
- build_args: nil,
105
- }
106
- end
107
- @cmd.invoke "rails:7.1"
108
- end
109
-
110
- def test_gem_without_executable
111
- spec_fetcher do |fetcher|
112
- fetcher.gem "a", 2
113
- end
114
-
115
- util_clear_gems
116
-
117
- use_ui @ui do
118
- e = assert_raise Gem::MockGemUi::TermError, @ui.error do
119
- @cmd.invoke "a:2"
120
- end
121
- assert_equal 1, e.exit_code
122
- assert_equal "ERROR: Failed to load executable `a`, are you sure the gem `a` contains it?\n", @ui.error
123
- end
124
- end
125
-
126
- def test_gem_with_executable
127
- spec_fetcher do |fetcher|
128
- fetcher.gem "a", 2 do |s|
129
- s.executables = %w[a]
130
- s.files = %w[bin/a lib/a.rb]
131
-
132
- write_file File.join(*%W[gems #{s.original_name} bin a]) do |f|
133
- f << "Gem.ui.say #{s.original_name.dump}"
134
- end
135
- end
136
- end
137
-
138
- util_clear_gems
139
-
140
- use_ui @ui do
141
- @cmd.invoke "a:2"
142
- assert_equal "a-2\n", @ui.output
143
- end
144
- end
145
-
146
- def test_gem_with_platforms
147
- spec_fetcher do |fetcher|
148
- fetcher.download "a", 2 do |s|
149
- s.executables = %w[a]
150
- s.files = %w[bin/a lib/a.rb]
151
-
152
- write_file File.join(*%W[gems #{s.original_name} bin a]) do |f|
153
- f << "Gem.ui.say #{s.original_name.dump}"
154
- end
155
- end
156
-
157
- fetcher.download "a", 2 do |s|
158
- s.executables = %w[a]
159
- s.files = %w[bin/a lib/a.rb]
160
- s.platform = "x86_64-darwin"
161
-
162
- write_file File.join(*%W[gems #{s.original_name} bin a]) do |f|
163
- f << "Gem.ui.say #{s.original_name.dump}"
164
- end
165
- end
166
- end
167
-
168
- use_ui @ui do
169
- invoke "a:2"
170
- assert_equal "a-2\n", @ui.output
171
- end
172
-
173
- use_ui @ui do
174
- util_set_arch "x86_64-darwin-18"
175
- invoke "a:2"
176
- assert_equal "a-2-x86_64-darwin\n", @ui.output
177
- end
178
- end
179
-
180
- def test_gem_with_platform_dependencies
181
- spec_fetcher do |fetcher|
182
- fetcher.download "a", 2 do |s|
183
- s.executables = %w[a]
184
- s.files = %w[bin/a lib/a.rb]
185
- s.add_runtime_dependency "with_platform"
186
-
187
- write_file File.join(*%W[gems #{s.original_name} bin a]) do |f|
188
- f << 'require "with_platform"' << "\n"
189
- f << 'Gem.ui.say Gem.loaded_specs.each_value.map(&:original_name).sort.join("\n")'
190
- end
191
- end
192
-
193
- fetcher.download "with_platform", 2 do |s|
194
- s.files = %w[lib/with_platform.rb]
195
- s.platform = Gem::Platform.local
196
- end
197
-
198
- fetcher.download "with_platform", 2 do |s|
199
- s.files = %w[lib/with_platform.rb]
200
- end
201
- end
202
-
203
- use_ui @ui do
204
- util_set_arch "unknown-unknown"
205
- invoke "a"
206
- assert_equal "a-2\nwith_platform-2\n", @ui.output
207
- end
208
-
209
- use_ui @ui do
210
- util_set_arch @test_arch
211
- invoke "a"
212
- assert_empty @ui.error
213
- assert_equal "a-2\nwith_platform-2-#{Gem::Platform.local}\n", @ui.output
214
- end
215
- end
216
-
217
- def test_gem_with_platform_and_platform_dependencies
218
- pend "extensions don't quite work on jruby" if Gem.java_platform?
219
- pend "terminates on mswin" if vc_windows? && ruby_repo?
220
-
221
- spec_fetcher do |fetcher|
222
- fetcher.download "a", 2 do |s|
223
- s.executables = %w[a]
224
- s.files = %w[bin/a lib/a.rb]
225
- s.add_runtime_dependency "with_platform"
226
- s.platform = Gem::Platform.local.to_s
227
-
228
- write_file File.join(*%W[gems #{s.original_name} bin a]) do |f|
229
- f << 'require "with_platform"' << "\n"
230
- f << 'Gem.ui.say Gem.loaded_specs.each_value.map(&:original_name).sort.join("\n")'
231
- end
232
- end
233
-
234
- fetcher.download "a", 2 do |s|
235
- s.executables = %w[a]
236
- s.files = %w[bin/a lib/a.rb extconf.rb]
237
- s.add_runtime_dependency "with_platform"
238
-
239
- write_file File.join(*%W[gems #{s.original_name} bin a]) do |f|
240
- f << 'require "with_platform"' << "\n"
241
- f << 'Gem.ui.say Gem.loaded_specs.each_value.map(&:original_name).sort.join("\n")'
242
- end
243
-
244
- s.extensions = %w[extconf.rb]
245
- write_file File.join(*%W[gems #{s.original_name} extconf.rb]) do |f|
246
- f.write <<-RUBY
247
- gem('with_platform', '~> 2.0')
248
- require 'with_platform'
249
- gem 'sometimes_used'
250
- require 'sometimes_used'
251
- require "mkmf"
252
- create_makefile("#{s.name}")
253
- RUBY
254
- end
255
- end
256
-
257
- fetcher.download "with_platform", 2 do |s|
258
- s.files = %w[lib/with_platform.rb]
259
- s.platform = Gem::Platform.local.to_s
260
- end
261
-
262
- fetcher.download "with_platform", 2 do |s|
263
- s.files = %w[lib/with_platform.rb]
264
- s.add_runtime_dependency "sometimes_used"
265
- end
266
-
267
- fetcher.download "sometimes_used", 2 do |s|
268
- s.files = %w[lib/sometimes_used.rb]
269
- end
270
- end
271
-
272
- use_ui @ui do
273
- util_set_arch "unknown-unknown"
274
- invoke "a"
275
- assert_empty @ui.error
276
- assert_equal "Building native extensions. This could take a while...\na-2\nsometimes_used-2\nwith_platform-2\n", @ui.output
277
- end
278
-
279
- use_ui @ui do
280
- util_set_arch @test_arch
281
- invoke "a"
282
- assert_empty @ui.error
283
- assert_equal "a-2-#{Gem::Platform.local}\nwith_platform-2-#{Gem::Platform.local}\n", @ui.output
284
- end
285
- end
286
-
287
- def test_gem_with_other_executable_name
288
- spec_fetcher do |fetcher|
289
- fetcher.gem "a", 2 do |s|
290
- s.executables = %w[foo]
291
- s.files = %w[bin/foo lib/a.rb]
292
-
293
- write_file File.join(*%W[gems #{s.original_name} bin foo]) do |f|
294
- f << "Gem.ui.say #{s.original_name.dump}"
295
- end
296
- end
297
- end
298
-
299
- util_clear_gems
300
-
301
- use_ui @ui do
302
- @cmd.invoke "a:2"
303
- assert_equal "a-2\n", @ui.output
304
- end
305
- end
306
-
307
- def test_gem_with_executable_error
308
- spec_fetcher do |fetcher|
309
- fetcher.gem "a", 2 do |s|
310
- s.executables = %w[foo]
311
- s.files = %w[bin/foo lib/a.rb]
312
-
313
- write_file File.join(*%W[gems #{s.original_name} bin foo]) do |f|
314
- f << "raise #{s.original_name.dump}"
315
- end
316
- end
317
- end
318
-
319
- util_clear_gems
320
-
321
- use_ui @ui do
322
- e = assert_raise RuntimeError do
323
- @cmd.invoke "a:2"
324
- end
325
- assert_equal "a-2", e.message
326
- assert_empty @ui.error
327
- end
328
- end
329
-
330
- def test_gem_with_multiple_executables_one_match
331
- spec_fetcher do |fetcher|
332
- fetcher.gem "a", 2 do |s|
333
- s.executables = %w[foo a]
334
- s.files = %w[bin/foo bin/a lib/a.rb]
335
-
336
- write_file File.join(*%W[gems #{s.original_name} bin foo]) do |f|
337
- f << "Gem.ui.say #{s.original_name.dump} + ' ' + File.basename(__FILE__)"
338
- end
339
-
340
- write_file File.join(*%W[gems #{s.original_name} bin a]) do |f|
341
- f << "Gem.ui.say #{s.original_name.dump} + ' ' + File.basename(__FILE__)"
342
- end
343
- end
344
- end
345
-
346
- util_clear_gems
347
-
348
- use_ui @ui do
349
- @cmd.invoke "a:2"
350
- assert_equal "a-2 a\n", @ui.output
351
- end
352
- end
353
-
354
- def test_gem_with_multiple_executables_no_match
355
- spec_fetcher do |fetcher|
356
- fetcher.gem "a", 2 do |s|
357
- s.executables = %w[foo bar]
358
- s.files = %w[bin/foo bin/bar lib/a.rb]
359
-
360
- write_file File.join(*%W[gems #{s.original_name} bin foo]) do |f|
361
- f << "Gem.ui.say #{s.original_name.dump} + ' ' + File.basename(__FILE__)"
362
- end
363
-
364
- write_file File.join(*%W[gems #{s.original_name} bin bar]) do |f|
365
- f << "Gem.ui.say #{s.original_name.dump} + ' ' + File.basename(__FILE__)"
366
- end
367
- end
368
- end
369
-
370
- util_clear_gems
371
-
372
- use_ui @ui do
373
- @cmd.invoke "a:2"
374
- assert_equal "a-2 foo\n", @ui.output
375
- end
376
- end
377
-
378
- def test_gem_dependency_contains_executable
379
- spec_fetcher do |fetcher|
380
- fetcher.gem "a", 2 do |s|
381
- s.executables = %w[]
382
- s.files = %w[lib/a.rb]
383
-
384
- s.add_dependency "b"
385
- end
386
-
387
- fetcher.gem "b", 2 do |s|
388
- s.executables = %w[a]
389
- s.files = %w[bin/a lib/b.rb]
390
-
391
- write_file File.join(*%W[gems #{s.original_name} bin a]) do |f|
392
- f << "Gem.ui.say #{s.original_name.dump} + ' ' + File.basename(__FILE__)"
393
- end
394
- end
395
- end
396
-
397
- util_clear_gems
398
-
399
- use_ui @ui do
400
- @cmd.invoke "a:2"
401
- assert_equal "b-2 a\n", @ui.output
402
- end
403
- end
404
-
405
- def test_gem_dependency_contains_other_executable
406
- spec_fetcher do |fetcher|
407
- fetcher.gem "a", 2 do |s|
408
- s.executables = %w[]
409
- s.files = %w[lib/a.rb]
410
-
411
- s.add_dependency "b"
412
- end
413
-
414
- fetcher.gem "b", 2 do |s|
415
- s.executables = %w[foo]
416
- s.files = %w[bin/foo lib/b.rb]
417
-
418
- write_file File.join(*%W[gems #{s.original_name} bin foo]) do |f|
419
- f << "Gem.ui.say #{s.original_name.dump} + ' ' + File.basename(__FILE__)"
420
- end
421
- end
422
- end
423
-
424
- util_clear_gems
425
-
426
- use_ui @ui do
427
- e = assert_raise Gem::MockGemUi::TermError do
428
- @cmd.invoke "a:2"
429
- end
430
- assert_equal 1, e.exit_code
431
- assert_equal <<~ERR, @ui.error
432
- ERROR: Failed to load executable `a`, are you sure the gem `a` contains it?
433
- ERR
434
- end
435
- end
436
-
437
- def test_other_gem_contains_executable
438
- spec_fetcher do |fetcher|
439
- fetcher.gem "a", 2 do |s|
440
- s.executables = %w[]
441
- s.files = %w[lib/a.rb]
442
- end
443
-
444
- fetcher.gem "b", 2 do |s|
445
- s.executables = %w[a]
446
- s.files = %w[bin/a lib/b.rb]
447
-
448
- write_file File.join(*%W[gems #{s.original_name} bin foo]) do |f|
449
- f << "Gem.ui.say #{s.original_name.dump} + ' ' + File.basename(__FILE__)"
450
- end
451
- end
452
- end
453
-
454
- util_clear_gems
455
-
456
- use_ui @ui do
457
- e = assert_raise Gem::MockGemUi::TermError do
458
- @cmd.invoke "a:2"
459
- end
460
- assert_equal 1, e.exit_code
461
- assert_equal <<~ERR, @ui.error
462
- ERROR: Failed to load executable `a`, are you sure the gem `a` contains it?
463
- ERR
464
- end
465
- end
466
-
467
- def test_missing_gem
468
- spec_fetcher do |fetcher|
469
- end
470
-
471
- use_ui @ui do
472
- e = assert_raise Gem::MockGemUi::TermError do
473
- @cmd.invoke "a"
474
- end
475
- assert_equal 2, e.exit_code
476
- assert_equal <<~ERR, @ui.error
477
- ERROR: Could not find a valid gem 'a' (>= 0) in any repository
478
- ERR
479
- end
480
- end
481
-
482
- def test_version_mismatch
483
- spec_fetcher do |fetcher|
484
- fetcher.gem "a", 1
485
- end
486
-
487
- util_clear_gems
488
-
489
- use_ui @ui do
490
- e = assert_raise Gem::MockGemUi::TermError do
491
- @cmd.invoke "a:2"
492
- end
493
- assert_equal 2, e.exit_code
494
- assert_equal <<~ERR, @ui.error
495
- ERROR: Could not find a valid gem 'a' (= 2) in any repository
496
- ERROR: Possible alternatives: a
497
- ERR
498
- end
499
- end
500
-
501
- def test_pre_argument
502
- spec_fetcher do |fetcher|
503
- fetcher.gem "a", 1 do |s|
504
- s.executables = %w[foo]
505
- s.files = %w[bin/foo lib/a.rb]
506
-
507
- write_file File.join(*%W[gems #{s.original_name} bin foo]) do |f|
508
- f << "Gem.ui.say #{s.original_name.dump} + ' ' + File.basename(__FILE__)"
509
- end
510
- end
511
- fetcher.gem "a", "1.1.a" do |s|
512
- s.executables = %w[foo ]
513
- s.files = %w[bin/foo lib/a.rb]
514
-
515
- write_file File.join(*%W[gems #{s.original_name} bin foo]) do |f|
516
- f << "Gem.ui.say #{s.original_name.dump} + ' ' + File.basename(__FILE__)"
517
- end
518
- end
519
- end
520
-
521
- util_clear_gems
522
-
523
- use_ui @ui do
524
- @cmd.invoke "--pre", "a"
525
- assert_equal "a-1.1.a foo\n", @ui.output
526
- end
527
- end
528
-
529
- def test_pre_version_option
530
- spec_fetcher do |fetcher|
531
- fetcher.download "a", 1 do |s|
532
- s.executables = %w[foo]
533
- s.files = %w[bin/foo lib/a.rb]
534
-
535
- write_file File.join(*%W[gems #{s.original_name} bin foo]) do |f|
536
- f << "Gem.ui.say #{s.original_name.dump} + ' ' + File.basename(__FILE__)"
537
- end
538
- end
539
- fetcher.download "a", "1.1.a" do |s|
540
- s.executables = %w[foo ]
541
- s.files = %w[bin/foo lib/a.rb]
542
-
543
- write_file File.join(*%W[gems #{s.original_name} bin foo]) do |f|
544
- f << "Gem.ui.say #{s.original_name.dump} + ' ' + File.basename(__FILE__)"
545
- end
546
- end
547
- end
548
-
549
- use_ui @ui do
550
- @cmd.invoke "-v", ">= 0.a", "a"
551
- assert_equal "a-1.1.a foo\n", @ui.output
552
- end
553
- end
554
-
555
- def test_conservative_missing_gem
556
- spec_fetcher do |fetcher|
557
- fetcher.gem "a", 1 do |s|
558
- s.executables = %w[foo]
559
- s.files = %w[bin/foo lib/a.rb]
560
-
561
- write_file File.join(*%W[gems #{s.original_name} bin foo]) do |f|
562
- f << "Gem.ui.say #{s.original_name.dump} + ' ' + File.basename(__FILE__)"
563
- end
564
- end
565
- end
566
-
567
- util_clear_gems
568
-
569
- use_ui @ui do
570
- e = assert_raise Gem::MockGemUi::TermError do
571
- @cmd.invoke "--verbose", "--conservative", "a:2"
572
- end
573
- assert_equal 2, e.exit_code
574
- assert_include @ui.output, "a (= 2) not available locally"
575
- assert_equal <<~ERROR, @ui.error
576
- ERROR: Could not find a valid gem 'a' (= 2) in any repository
577
- ERROR: Possible alternatives: a
578
- ERROR
579
- end
580
- end
581
-
582
- def test_conservative
583
- spec_fetcher do |fetcher|
584
- fetcher.download "a", 1 do |s|
585
- s.executables = %w[foo]
586
- s.files = %w[bin/foo lib/a.rb]
587
-
588
- write_file File.join(*%W[gems #{s.original_name} bin foo]) do |f|
589
- f << "Gem.ui.say #{s.original_name.dump} + ' ' + File.basename(__FILE__)"
590
- end
591
- end
592
- end
593
-
594
- use_ui @ui do
595
- invoke "--verbose", "--conservative", "a"
596
- assert_include @ui.output, "a (>= 0) not available locally"
597
- assert_include @ui.output, "a-1 foo"
598
- assert_equal %w[a-1], @installed_specs.map(&:original_name)
599
- end
600
-
601
- spec_fetcher do |fetcher|
602
- fetcher.gem "a", 1 do |s|
603
- s.executables = %w[foo]
604
- s.files = %w[bin/foo lib/a.rb]
605
-
606
- write_file File.join(*%W[gems #{s.original_name} bin foo]) do |f|
607
- f << "Gem.ui.say #{s.original_name.dump} + ' ' + File.basename(__FILE__)"
608
- end
609
- end
610
-
611
- fetcher.download "a", 2 do |s|
612
- s.executables = %w[foo]
613
- s.files = %w[bin/foo lib/a.rb]
614
-
615
- write_file File.join(*%W[gems #{s.original_name} bin foo]) do |f|
616
- f << "Gem.ui.say #{s.original_name.dump} + ' ' + File.basename(__FILE__)"
617
- end
618
- end
619
- end
620
-
621
- use_ui @ui do
622
- invoke "--verbose", "--conservative", "a"
623
- assert_not_include @ui.output, "a (>= 0) not available locally"
624
- assert_include @ui.output, "a-1 foo"
625
- assert_empty @installed_specs.map(&:original_name)
626
- end
627
- end
628
-
629
- def test_uses_newest_version
630
- spec_fetcher do |fetcher|
631
- fetcher.download "a", 1 do |s|
632
- s.executables = %w[foo]
633
- s.files = %w[bin/foo lib/a.rb]
634
-
635
- write_file File.join(*%W[gems #{s.original_name} bin foo]) do |f|
636
- f << "Gem.ui.say #{s.original_name.dump} + ' ' + File.basename(__FILE__)"
637
- end
638
- end
639
- end
640
-
641
- use_ui @ui do
642
- invoke "a"
643
- assert_include @ui.output, "a-1 foo"
644
- end
645
-
646
- spec_fetcher do |fetcher|
647
- fetcher.download "a", 1 do |s|
648
- s.executables = %w[foo]
649
- s.files = %w[bin/foo lib/a.rb]
650
-
651
- write_file File.join(*%W[gems #{s.original_name} bin foo]) do |f|
652
- f << "Gem.ui.say #{s.original_name.dump} + ' ' + File.basename(__FILE__)"
653
- end
654
- end
655
-
656
- fetcher.download "a", 2 do |s|
657
- s.executables = %w[foo]
658
- s.files = %w[bin/foo lib/a.rb]
659
-
660
- write_file File.join(*%W[gems #{s.original_name} bin foo]) do |f|
661
- f << "Gem.ui.say #{s.original_name.dump} + ' ' + File.basename(__FILE__)"
662
- end
663
- end
664
- end
665
-
666
- use_ui @ui do
667
- invoke "--verbose", "a:2"
668
- refute_predicate @ui, :terminated?
669
- assert_empty @ui.error
670
- assert_include @ui.output, "a-2 foo"
671
- assert_equal %w[a-2], @installed_specs.map(&:original_name)
672
- end
673
- end
674
-
675
- def test_uses_newest_version_of_dependency
676
- spec_fetcher do |fetcher|
677
- fetcher.gem "a", 1 do |s|
678
- s.executables = %w[]
679
- s.files = %w[lib/a.rb]
680
- s.add_runtime_dependency "b"
681
- end
682
-
683
- fetcher.gem "b", 1 do |s|
684
- s.executables = %w[a]
685
- s.files = %w[bin/a lib/a.rb]
686
-
687
- write_file File.join(*%W[gems #{s.original_name} bin a]) do |f|
688
- f << "Gem.ui.say #{s.original_name.dump} + ' ' + File.basename(__FILE__)"
689
- end
690
- end
691
-
692
- fetcher.download "b", 2 do |s|
693
- s.executables = %w[a]
694
- s.files = %w[bin/a lib/a.rb]
695
-
696
- write_file File.join(*%W[gems #{s.original_name} bin a]) do |f|
697
- f << "Gem.ui.say #{s.original_name.dump} + ' ' + File.basename(__FILE__)"
698
- end
699
- end
700
- end
701
-
702
- use_ui @ui do
703
- invoke "a"
704
- assert_include @ui.output, "b-2 a"
705
- assert_equal %w[b-2], @installed_specs.map(&:original_name)
706
- end
707
- end
708
-
709
- def test_gem_exec_gem_uninstall
710
- spec_fetcher do |fetcher|
711
- fetcher.download "a", 2 do |s|
712
- s.executables = %w[a]
713
- s.files = %w[bin/a lib/a.rb]
714
- s.add_runtime_dependency "b"
715
-
716
- write_file File.join(*%W[gems #{s.original_name} bin a]) do |f|
717
- f << "Gem.ui.say #{s.original_name.dump}"
718
- end
719
- end
720
-
721
- fetcher.download "b", 2 do |s|
722
- s.files = %w[lib/b.rb]
723
- end
724
- end
725
-
726
- use_ui @ui do
727
- invoke "a:2"
728
- assert_equal "a-2\n", @ui.output
729
-
730
- invoke "gem", "list", "--local"
731
- assert_includes @ui.output, "a (2)\n"
732
- assert_includes @ui.output, "b (2)\n"
733
-
734
- begin
735
- invoke "gem", "uninstall", "--verbose", "-x", "a"
736
- rescue StandardError
737
- nil
738
- end
739
- refute_includes @ui.output, "running gem exec with"
740
- assert_includes @ui.output, "Successfully uninstalled a-2\n"
741
-
742
- invoke "--verbose", "gem", "uninstall", "b"
743
- assert_includes @ui.output, "Successfully uninstalled b-2\n"
744
-
745
- invoke "gem", "list", "--local"
746
- assert_empty @ui.error
747
- assert_match(/\A\s*\** LOCAL GEMS \**\s*\z/m, @ui.output)
748
-
749
- invoke "gem", "env", "GEM_HOME"
750
- assert_equal "#{@gem_home}/gem_exec\n", @ui.output
751
- end
752
- end
753
-
754
- def test_only_prerelease_available
755
- spec_fetcher do |fetcher|
756
- fetcher.download "a", "1.a" do |s|
757
- s.executables = %w[a]
758
- s.files = %w[lib/a.rb bin/a]
759
-
760
- write_file File.join(*%W[gems #{s.original_name} bin a]) do |f|
761
- f << "Gem.ui.say #{s.original_name.dump} + ' ' + File.basename(__FILE__)"
762
- end
763
- end
764
- end
765
-
766
- use_ui @ui do
767
- assert_raise Gem::MockGemUi::TermError do
768
- invoke "a"
769
- end
770
- assert_equal "ERROR: Could not find a valid gem 'a' (>= 0) in any repository\n" +
771
- "ERROR: Possible alternatives: a\n", @ui.error
772
- assert_empty @ui.output
773
- assert_empty @installed_specs
774
- end
775
-
776
- use_ui @ui do
777
- invoke "a:1.a"
778
- assert_empty @ui.error
779
- assert_equal "a-1.a a\n", @ui.output
780
- assert_equal %w[a-1.a], @installed_specs.map(&:full_name)
781
- end
782
-
783
- FileUtils.rm_rf Gem.dir
784
-
785
- use_ui @ui do
786
- invoke "--version", ">= 1.a", "a"
787
- assert_empty @ui.error
788
- assert_equal "a-1.a a\n", @ui.output
789
- assert_equal %w[a-1.a], @installed_specs.map(&:full_name)
790
- end
791
-
792
- FileUtils.rm_rf Gem.dir
793
-
794
- use_ui @ui do
795
- invoke "--pre", "a"
796
- assert_empty @ui.error
797
- assert_equal "a-1.a a\n", @ui.output
798
- assert_equal %w[a-1.a], @installed_specs.map(&:full_name)
799
- end
800
- end
801
-
802
- def test_newer_prerelease_available
803
- spec_fetcher do |fetcher|
804
- fetcher.download "a", "1" do |s|
805
- s.executables = %w[a]
806
- s.files = %w[lib/a.rb bin/a]
807
-
808
- write_file File.join(*%W[gems #{s.original_name} bin a]) do |f|
809
- f << "Gem.ui.say #{s.original_name.dump} + ' ' + File.basename(__FILE__)"
810
- end
811
- end
812
-
813
- fetcher.download "a", "1.1.a" do |s|
814
- s.executables = %w[a]
815
- s.files = %w[lib/a.rb bin/a]
816
-
817
- write_file File.join(*%W[gems #{s.original_name} bin a]) do |f|
818
- f << "Gem.ui.say #{s.original_name.dump} + ' ' + File.basename(__FILE__)"
819
- end
820
- end
821
- end
822
-
823
- use_ui @ui do
824
- invoke "a"
825
- assert_empty @ui.error
826
- assert_equal "a-1 a\n", @ui.output
827
- assert_equal %w[a-1], @installed_specs.map(&:full_name)
828
- end
829
-
830
- FileUtils.rm_rf Gem.dir
831
-
832
- use_ui @ui do
833
- invoke "a:1.1.a"
834
- assert_empty @ui.error
835
- assert_equal "a-1.1.a a\n", @ui.output
836
- assert_equal %w[a-1.1.a], @installed_specs.map(&:full_name)
837
- end
838
-
839
- FileUtils.rm_rf Gem.dir
840
-
841
- use_ui @ui do
842
- invoke "--version", ">= 1.a", "a"
843
- assert_empty @ui.error
844
- assert_equal "a-1.1.a a\n", @ui.output
845
- assert_equal %w[a-1.1.a], @installed_specs.map(&:full_name)
846
- end
847
-
848
- FileUtils.rm_rf Gem.dir
849
-
850
- use_ui @ui do
851
- invoke "--pre", "a"
852
- assert_empty @ui.error
853
- assert_equal "a-1.1.a a\n", @ui.output
854
- assert_equal %w[a-1.1.a], @installed_specs.map(&:full_name)
855
- end
856
- end
857
- end