rubygems-update 3.1.1 → 3.2.0.rc.2

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 (518) hide show
  1. checksums.yaml +4 -4
  2. data/CODE_OF_CONDUCT.md +55 -19
  3. data/CONTRIBUTING.md +25 -11
  4. data/History.txt +389 -144
  5. data/Manifest.txt +37 -73
  6. data/POLICIES.md +2 -9
  7. data/README.md +5 -5
  8. data/Rakefile +47 -82
  9. data/bin/update_rubygems +2 -2
  10. data/bundler/CHANGELOG.md +1546 -1414
  11. data/bundler/README.md +6 -8
  12. data/bundler/UPGRADING.md +18 -32
  13. data/bundler/bundler.gemspec +3 -3
  14. data/bundler/exe/bundle +3 -0
  15. data/bundler/lib/bundler.rb +21 -7
  16. data/bundler/lib/bundler/build_metadata.rb +4 -12
  17. data/bundler/lib/bundler/cli.rb +54 -20
  18. data/bundler/lib/bundler/cli/add.rb +1 -1
  19. data/bundler/lib/bundler/cli/cache.rb +1 -7
  20. data/bundler/lib/bundler/cli/clean.rb +1 -1
  21. data/bundler/lib/bundler/cli/common.rb +14 -0
  22. data/bundler/lib/bundler/cli/console.rb +1 -1
  23. data/bundler/lib/bundler/cli/doctor.rb +1 -1
  24. data/bundler/lib/bundler/cli/exec.rb +4 -13
  25. data/bundler/lib/bundler/cli/fund.rb +36 -0
  26. data/bundler/lib/bundler/cli/gem.rb +84 -11
  27. data/bundler/lib/bundler/cli/info.rb +15 -4
  28. data/bundler/lib/bundler/cli/init.rb +2 -2
  29. data/bundler/lib/bundler/cli/inject.rb +1 -1
  30. data/bundler/lib/bundler/cli/install.rb +12 -18
  31. data/bundler/lib/bundler/cli/issue.rb +2 -2
  32. data/bundler/lib/bundler/cli/list.rb +12 -10
  33. data/bundler/lib/bundler/cli/outdated.rb +89 -66
  34. data/bundler/lib/bundler/cli/plugin.rb +10 -0
  35. data/bundler/lib/bundler/cli/pristine.rb +5 -0
  36. data/bundler/lib/bundler/cli/show.rb +1 -1
  37. data/bundler/lib/bundler/cli/update.rb +2 -0
  38. data/bundler/lib/bundler/compact_index_client.rb +1 -1
  39. data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
  40. data/bundler/lib/bundler/definition.rb +51 -60
  41. data/bundler/lib/bundler/dep_proxy.rb +1 -1
  42. data/bundler/lib/bundler/dependency.rb +0 -9
  43. data/bundler/lib/bundler/dsl.rb +5 -9
  44. data/bundler/lib/bundler/endpoint_specification.rb +1 -1
  45. data/bundler/lib/bundler/environment_preserver.rb +26 -2
  46. data/bundler/lib/bundler/errors.rb +1 -0
  47. data/bundler/lib/bundler/feature_flag.rb +0 -2
  48. data/bundler/lib/bundler/fetcher.rb +4 -3
  49. data/bundler/lib/bundler/fetcher/base.rb +1 -1
  50. data/bundler/lib/bundler/fetcher/compact_index.rb +1 -1
  51. data/bundler/lib/bundler/fetcher/downloader.rb +1 -1
  52. data/bundler/lib/bundler/fetcher/index.rb +1 -1
  53. data/bundler/lib/bundler/friendly_errors.rb +7 -13
  54. data/bundler/lib/bundler/gem_helper.rb +33 -19
  55. data/bundler/lib/bundler/gem_helpers.rb +6 -1
  56. data/bundler/lib/bundler/gem_version_promoter.rb +2 -2
  57. data/bundler/lib/bundler/graph.rb +1 -1
  58. data/bundler/lib/bundler/index.rb +1 -1
  59. data/bundler/lib/bundler/injector.rb +15 -4
  60. data/bundler/lib/bundler/inline.rb +2 -2
  61. data/bundler/lib/bundler/installer.rb +30 -29
  62. data/bundler/lib/bundler/installer/gem_installer.rb +3 -3
  63. data/bundler/lib/bundler/installer/parallel_installer.rb +10 -10
  64. data/bundler/lib/bundler/installer/standalone.rb +2 -2
  65. data/bundler/lib/bundler/lazy_specification.rb +19 -6
  66. data/bundler/lib/bundler/lockfile_generator.rb +1 -1
  67. data/bundler/lib/bundler/lockfile_parser.rb +1 -1
  68. data/bundler/lib/bundler/mirror.rb +2 -2
  69. data/bundler/lib/bundler/plugin.rb +30 -5
  70. data/bundler/lib/bundler/plugin/index.rb +10 -1
  71. data/bundler/lib/bundler/plugin/installer.rb +1 -1
  72. data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
  73. data/bundler/lib/bundler/plugin/source_list.rb +1 -1
  74. data/bundler/lib/bundler/psyched_yaml.rb +0 -15
  75. data/bundler/lib/bundler/remote_specification.rb +5 -2
  76. data/bundler/lib/bundler/resolver.rb +32 -9
  77. data/bundler/lib/bundler/resolver/spec_group.rb +27 -6
  78. data/bundler/lib/bundler/retry.rb +1 -1
  79. data/bundler/lib/bundler/ruby_version.rb +1 -1
  80. data/bundler/lib/bundler/rubygems_ext.rb +53 -9
  81. data/bundler/lib/bundler/rubygems_gem_installer.rb +3 -9
  82. data/bundler/lib/bundler/rubygems_integration.rb +31 -54
  83. data/bundler/lib/bundler/runtime.rb +4 -14
  84. data/bundler/lib/bundler/settings.rb +49 -45
  85. data/bundler/lib/bundler/setup.rb +5 -0
  86. data/bundler/lib/bundler/shared_helpers.rb +2 -2
  87. data/bundler/lib/bundler/similarity_detector.rb +1 -1
  88. data/bundler/lib/bundler/source.rb +1 -1
  89. data/bundler/lib/bundler/source/git.rb +5 -5
  90. data/bundler/lib/bundler/source/git/git_proxy.rb +56 -59
  91. data/bundler/lib/bundler/source/path.rb +7 -3
  92. data/bundler/lib/bundler/source/path/installer.rb +8 -10
  93. data/bundler/lib/bundler/source/rubygems.rb +13 -16
  94. data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
  95. data/bundler/lib/bundler/source_list.rb +2 -2
  96. data/bundler/lib/bundler/spec_set.rb +1 -1
  97. data/bundler/lib/bundler/stub_specification.rb +17 -5
  98. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  99. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +9 -1
  100. data/bundler/lib/bundler/templates/newgem/README.md.tt +1 -1
  101. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +19 -5
  102. data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
  103. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
  104. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
  105. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
  106. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
  107. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +2 -0
  108. data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  109. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +8 -6
  110. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +10 -0
  111. data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
  112. data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
  113. data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
  114. data/bundler/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
  115. data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  116. data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  117. data/bundler/lib/bundler/ui/shell.rb +5 -5
  118. data/bundler/lib/bundler/uri_credentials_filter.rb +1 -1
  119. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +79 -212
  120. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +0 -7
  121. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
  122. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
  123. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  124. data/bundler/lib/bundler/vendored_persistent.rb +0 -7
  125. data/bundler/lib/bundler/version.rb +1 -1
  126. data/bundler/lib/bundler/worker.rb +1 -1
  127. data/bundler/lib/bundler/yaml_serializer.rb +1 -1
  128. data/bundler/man/bundle-add.1 +1 -1
  129. data/bundler/man/{bundle-add.ronn → bundle-add.1.ronn} +0 -0
  130. data/bundler/man/bundle-binstubs.1 +5 -3
  131. data/bundler/man/{bundle-binstubs.ronn → bundle-binstubs.1.ronn} +2 -4
  132. data/bundler/man/bundle-cache.1 +1 -1
  133. data/bundler/man/{bundle-cache.ronn → bundle-cache.1.ronn} +0 -0
  134. data/bundler/man/bundle-check.1 +1 -1
  135. data/bundler/man/{bundle-check.ronn → bundle-check.1.ronn} +0 -0
  136. data/bundler/man/bundle-clean.1 +1 -1
  137. data/bundler/man/{bundle-clean.ronn → bundle-clean.1.ronn} +0 -0
  138. data/bundler/man/bundle-config.1 +16 -22
  139. data/bundler/man/{bundle-config.ronn → bundle-config.1.ronn} +19 -22
  140. data/bundler/man/bundle-doctor.1 +1 -1
  141. data/bundler/man/{bundle-doctor.ronn → bundle-doctor.1.ronn} +0 -0
  142. data/bundler/man/bundle-exec.1 +1 -1
  143. data/bundler/man/{bundle-exec.ronn → bundle-exec.1.ronn} +0 -0
  144. data/bundler/man/bundle-gem.1 +25 -3
  145. data/bundler/man/{bundle-gem.ronn → bundle-gem.1.ronn} +30 -7
  146. data/bundler/man/bundle-info.1 +1 -1
  147. data/bundler/man/{bundle-info.ronn → bundle-info.1.ronn} +0 -0
  148. data/bundler/man/bundle-init.1 +1 -1
  149. data/bundler/man/{bundle-init.ronn → bundle-init.1.ronn} +0 -0
  150. data/bundler/man/bundle-inject.1 +1 -1
  151. data/bundler/man/{bundle-inject.ronn → bundle-inject.1.ronn} +0 -0
  152. data/bundler/man/bundle-install.1 +29 -2
  153. data/bundler/man/{bundle-install.ronn → bundle-install.1.ronn} +24 -2
  154. data/bundler/man/bundle-list.1 +7 -7
  155. data/bundler/man/{bundle-list.ronn → bundle-list.1.ronn} +6 -6
  156. data/bundler/man/bundle-lock.1 +1 -1
  157. data/bundler/man/{bundle-lock.ronn → bundle-lock.1.ronn} +0 -0
  158. data/bundler/man/bundle-open.1 +1 -1
  159. data/bundler/man/{bundle-open.ronn → bundle-open.1.ronn} +0 -0
  160. data/bundler/man/bundle-outdated.1 +1 -1
  161. data/bundler/man/{bundle-outdated.ronn → bundle-outdated.1.ronn} +0 -0
  162. data/bundler/man/bundle-platform.1 +1 -1
  163. data/bundler/man/{bundle-platform.ronn → bundle-platform.1.ronn} +0 -0
  164. data/bundler/man/bundle-pristine.1 +1 -1
  165. data/bundler/man/{bundle-pristine.ronn → bundle-pristine.1.ronn} +0 -0
  166. data/bundler/man/bundle-remove.1 +1 -1
  167. data/bundler/man/{bundle-remove.ronn → bundle-remove.1.ronn} +0 -0
  168. data/bundler/man/bundle-show.1 +1 -1
  169. data/bundler/man/{bundle-show.ronn → bundle-show.1.ronn} +0 -0
  170. data/bundler/man/bundle-update.1 +1 -1
  171. data/bundler/man/{bundle-update.ronn → bundle-update.1.ronn} +0 -0
  172. data/bundler/man/bundle-viz.1 +1 -1
  173. data/bundler/man/{bundle-viz.ronn → bundle-viz.1.ronn} +0 -0
  174. data/bundler/man/bundle.1 +1 -1
  175. data/bundler/man/{bundle.ronn → bundle.1.ronn} +0 -0
  176. data/bundler/man/gemfile.5 +4 -4
  177. data/bundler/man/gemfile.5.ronn +4 -4
  178. data/lib/rubygems.rb +133 -186
  179. data/lib/rubygems/available_set.rb +4 -6
  180. data/lib/rubygems/basic_specification.rb +12 -10
  181. data/lib/rubygems/bundler_version_finder.rb +14 -9
  182. data/lib/rubygems/command.rb +17 -17
  183. data/lib/rubygems/command_manager.rb +4 -5
  184. data/lib/rubygems/commands/build_command.rb +4 -1
  185. data/lib/rubygems/commands/cert_command.rb +1 -9
  186. data/lib/rubygems/commands/check_command.rb +0 -2
  187. data/lib/rubygems/commands/cleanup_command.rb +11 -7
  188. data/lib/rubygems/commands/contents_command.rb +4 -6
  189. data/lib/rubygems/commands/dependency_command.rb +6 -8
  190. data/lib/rubygems/commands/environment_command.rb +1 -3
  191. data/lib/rubygems/commands/fetch_command.rb +2 -4
  192. data/lib/rubygems/commands/generate_index_command.rb +0 -2
  193. data/lib/rubygems/commands/help_command.rb +2 -4
  194. data/lib/rubygems/commands/info_command.rb +8 -5
  195. data/lib/rubygems/commands/install_command.rb +3 -5
  196. data/lib/rubygems/commands/list_command.rb +8 -7
  197. data/lib/rubygems/commands/lock_command.rb +1 -3
  198. data/lib/rubygems/commands/mirror_command.rb +0 -2
  199. data/lib/rubygems/commands/open_command.rb +0 -4
  200. data/lib/rubygems/commands/outdated_command.rb +0 -2
  201. data/lib/rubygems/commands/owner_command.rb +0 -2
  202. data/lib/rubygems/commands/pristine_command.rb +10 -4
  203. data/lib/rubygems/commands/push_command.rb +4 -44
  204. data/lib/rubygems/commands/query_command.rb +6 -353
  205. data/lib/rubygems/commands/rdoc_command.rb +0 -2
  206. data/lib/rubygems/commands/search_command.rb +7 -7
  207. data/lib/rubygems/commands/server_command.rb +0 -2
  208. data/lib/rubygems/commands/setup_command.rb +156 -48
  209. data/lib/rubygems/commands/signin_command.rb +0 -2
  210. data/lib/rubygems/commands/signout_command.rb +0 -2
  211. data/lib/rubygems/commands/sources_command.rb +3 -5
  212. data/lib/rubygems/commands/specification_command.rb +2 -4
  213. data/lib/rubygems/commands/stale_command.rb +1 -3
  214. data/lib/rubygems/commands/uninstall_command.rb +2 -4
  215. data/lib/rubygems/commands/unpack_command.rb +1 -3
  216. data/lib/rubygems/commands/update_command.rb +59 -14
  217. data/lib/rubygems/commands/which_command.rb +0 -2
  218. data/lib/rubygems/commands/yank_command.rb +0 -2
  219. data/lib/rubygems/config_file.rb +11 -4
  220. data/lib/rubygems/core_ext/kernel_require.rb +26 -36
  221. data/lib/rubygems/core_ext/kernel_warn.rb +6 -6
  222. data/lib/rubygems/defaults.rb +99 -5
  223. data/lib/rubygems/dependency.rb +2 -7
  224. data/lib/rubygems/dependency_installer.rb +1 -75
  225. data/lib/rubygems/dependency_list.rb +7 -9
  226. data/lib/rubygems/deprecate.rb +46 -1
  227. data/lib/rubygems/doctor.rb +4 -4
  228. data/lib/rubygems/errors.rb +3 -14
  229. data/lib/rubygems/exceptions.rb +2 -33
  230. data/lib/rubygems/ext.rb +6 -6
  231. data/lib/rubygems/ext/build_error.rb +2 -0
  232. data/lib/rubygems/ext/builder.rb +4 -4
  233. data/lib/rubygems/ext/cmake_builder.rb +1 -3
  234. data/lib/rubygems/ext/configure_builder.rb +0 -2
  235. data/lib/rubygems/ext/ext_conf_builder.rb +6 -9
  236. data/lib/rubygems/ext/rake_builder.rb +0 -2
  237. data/lib/rubygems/gem_runner.rb +3 -10
  238. data/lib/rubygems/gemcutter_utilities.rb +1 -1
  239. data/lib/rubygems/indexer.rb +1 -21
  240. data/lib/rubygems/install_update_options.rb +5 -5
  241. data/lib/rubygems/installer.rb +47 -48
  242. data/lib/rubygems/installer_test_case.rb +18 -5
  243. data/lib/rubygems/installer_uninstaller_utils.rb +24 -0
  244. data/lib/rubygems/local_remote_options.rb +1 -1
  245. data/lib/rubygems/mock_gem_ui.rb +0 -6
  246. data/lib/rubygems/name_tuple.rb +2 -6
  247. data/lib/rubygems/openssl.rb +7 -0
  248. data/lib/rubygems/package.rb +11 -23
  249. data/lib/rubygems/package/digest_io.rb +0 -2
  250. data/lib/rubygems/package/file_source.rb +0 -2
  251. data/lib/rubygems/package/io_source.rb +0 -2
  252. data/lib/rubygems/package/old.rb +1 -3
  253. data/lib/rubygems/package/tar_header.rb +3 -5
  254. data/lib/rubygems/package/tar_reader.rb +0 -3
  255. data/lib/rubygems/package/tar_reader/entry.rb +0 -3
  256. data/lib/rubygems/package/tar_test_case.rb +1 -3
  257. data/lib/rubygems/package/tar_writer.rb +2 -12
  258. data/lib/rubygems/package_task.rb +1 -7
  259. data/lib/rubygems/path_support.rb +1 -3
  260. data/lib/rubygems/platform.rb +3 -5
  261. data/lib/rubygems/psych_tree.rb +0 -2
  262. data/lib/rubygems/query_utils.rb +362 -0
  263. data/lib/rubygems/rdoc.rb +0 -12
  264. data/lib/rubygems/remote_fetcher.rb +9 -25
  265. data/lib/rubygems/request.rb +1 -9
  266. data/lib/rubygems/request/connection_pools.rb +1 -5
  267. data/lib/rubygems/request/http_pool.rb +0 -2
  268. data/lib/rubygems/request/https_pool.rb +0 -2
  269. data/lib/rubygems/request_set.rb +5 -7
  270. data/lib/rubygems/request_set/gem_dependency_api.rb +2 -4
  271. data/lib/rubygems/request_set/lockfile.rb +8 -12
  272. data/lib/rubygems/request_set/lockfile/parser.rb +0 -2
  273. data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -3
  274. data/lib/rubygems/requirement.rb +20 -21
  275. data/lib/rubygems/resolver.rb +7 -10
  276. data/lib/rubygems/resolver/activation_request.rb +0 -2
  277. data/lib/rubygems/resolver/api_set.rb +4 -6
  278. data/lib/rubygems/resolver/api_specification.rb +16 -7
  279. data/lib/rubygems/resolver/best_set.rb +0 -2
  280. data/lib/rubygems/resolver/composed_set.rb +3 -5
  281. data/lib/rubygems/resolver/conflict.rb +1 -3
  282. data/lib/rubygems/resolver/current_set.rb +0 -2
  283. data/lib/rubygems/resolver/dependency_request.rb +0 -2
  284. data/lib/rubygems/resolver/git_set.rb +0 -2
  285. data/lib/rubygems/resolver/git_specification.rb +0 -2
  286. data/lib/rubygems/resolver/index_set.rb +1 -3
  287. data/lib/rubygems/resolver/index_specification.rb +0 -2
  288. data/lib/rubygems/resolver/installed_specification.rb +0 -2
  289. data/lib/rubygems/resolver/installer_set.rb +3 -5
  290. data/lib/rubygems/resolver/local_specification.rb +0 -2
  291. data/lib/rubygems/resolver/lock_set.rb +1 -3
  292. data/lib/rubygems/resolver/lock_specification.rb +0 -2
  293. data/lib/rubygems/resolver/requirement_list.rb +0 -2
  294. data/lib/rubygems/resolver/set.rb +0 -2
  295. data/lib/rubygems/resolver/source_set.rb +0 -2
  296. data/lib/rubygems/resolver/spec_specification.rb +0 -2
  297. data/lib/rubygems/resolver/specification.rb +0 -2
  298. data/lib/rubygems/resolver/stats.rb +0 -2
  299. data/lib/rubygems/resolver/vendor_set.rb +0 -2
  300. data/lib/rubygems/resolver/vendor_specification.rb +0 -2
  301. data/lib/rubygems/s3_uri_signer.rb +1 -7
  302. data/lib/rubygems/safe_yaml.rb +4 -4
  303. data/lib/rubygems/security.rb +26 -32
  304. data/lib/rubygems/security/policy.rb +3 -7
  305. data/lib/rubygems/security/signer.rb +4 -6
  306. data/lib/rubygems/security/trust_dir.rb +1 -3
  307. data/lib/rubygems/server.rb +9 -11
  308. data/lib/rubygems/source.rb +4 -4
  309. data/lib/rubygems/source/git.rb +7 -8
  310. data/lib/rubygems/source/installed.rb +0 -2
  311. data/lib/rubygems/source/local.rb +2 -4
  312. data/lib/rubygems/source/lock.rb +0 -2
  313. data/lib/rubygems/source/specific_file.rb +0 -2
  314. data/lib/rubygems/source/vendor.rb +0 -2
  315. data/lib/rubygems/source_list.rb +6 -7
  316. data/lib/rubygems/spec_fetcher.rb +18 -17
  317. data/lib/rubygems/specification.rb +107 -120
  318. data/lib/rubygems/specification_policy.rb +88 -30
  319. data/lib/rubygems/stub_specification.rb +0 -4
  320. data/lib/rubygems/syck_hack.rb +0 -2
  321. data/lib/rubygems/test_case.rb +122 -92
  322. data/lib/rubygems/test_utilities.rb +6 -14
  323. data/lib/rubygems/uninstaller.rb +35 -16
  324. data/lib/rubygems/uri_formatter.rb +0 -2
  325. data/lib/rubygems/uri_parser.rb +0 -2
  326. data/lib/rubygems/user_interaction.rb +1 -26
  327. data/lib/rubygems/util.rb +15 -3
  328. data/lib/rubygems/util/licenses.rb +4 -6
  329. data/lib/rubygems/util/list.rb +0 -2
  330. data/lib/rubygems/validator.rb +1 -3
  331. data/lib/rubygems/version.rb +5 -7
  332. data/rubygems-update.gemspec +2 -2
  333. data/setup.rb +2 -7
  334. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
  335. data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
  336. data/test/rubygems/rubygems_plugin.rb +0 -2
  337. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
  338. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
  339. data/test/rubygems/test_bundled_ca.rb +38 -45
  340. data/test/rubygems/test_config.rb +0 -2
  341. data/test/rubygems/test_deprecate.rb +40 -7
  342. data/test/rubygems/test_gem.rb +150 -103
  343. data/test/rubygems/test_gem_available_set.rb +3 -5
  344. data/test/rubygems/test_gem_bundler_version_finder.rb +19 -3
  345. data/test/rubygems/test_gem_command.rb +24 -7
  346. data/test/rubygems/test_gem_command_manager.rb +36 -5
  347. data/test/rubygems/test_gem_commands_build_command.rb +53 -10
  348. data/test/rubygems/test_gem_commands_cert_command.rb +2 -4
  349. data/test/rubygems/test_gem_commands_check_command.rb +0 -2
  350. data/test/rubygems/test_gem_commands_cleanup_command.rb +13 -4
  351. data/test/rubygems/test_gem_commands_contents_command.rb +48 -17
  352. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -2
  353. data/test/rubygems/test_gem_commands_environment_command.rb +21 -23
  354. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -2
  355. data/test/rubygems/test_gem_commands_generate_index_command.rb +1 -7
  356. data/test/rubygems/test_gem_commands_help_command.rb +0 -2
  357. data/test/rubygems/test_gem_commands_info_command.rb +6 -8
  358. data/test/rubygems/test_gem_commands_install_command.rb +31 -33
  359. data/test/rubygems/test_gem_commands_list_command.rb +0 -2
  360. data/test/rubygems/test_gem_commands_lock_command.rb +0 -2
  361. data/test/rubygems/test_gem_commands_mirror.rb +1 -3
  362. data/test/rubygems/test_gem_commands_open_command.rb +4 -6
  363. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -2
  364. data/test/rubygems/test_gem_commands_owner_command.rb +11 -5
  365. data/test/rubygems/test_gem_commands_pristine_command.rb +41 -10
  366. data/test/rubygems/test_gem_commands_push_command.rb +7 -4
  367. data/test/rubygems/test_gem_commands_query_command.rb +9 -9
  368. data/test/rubygems/test_gem_commands_search_command.rb +0 -2
  369. data/test/rubygems/test_gem_commands_server_command.rb +0 -2
  370. data/test/rubygems/test_gem_commands_setup_command.rb +210 -118
  371. data/test/rubygems/test_gem_commands_signin_command.rb +6 -6
  372. data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
  373. data/test/rubygems/test_gem_commands_sources_command.rb +39 -3
  374. data/test/rubygems/test_gem_commands_specification_command.rb +18 -20
  375. data/test/rubygems/test_gem_commands_stale_command.rb +0 -2
  376. data/test/rubygems/test_gem_commands_uninstall_command.rb +2 -3
  377. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -2
  378. data/test/rubygems/test_gem_commands_update_command.rb +116 -7
  379. data/test/rubygems/test_gem_commands_which_command.rb +3 -5
  380. data/test/rubygems/test_gem_commands_yank_command.rb +14 -8
  381. data/test/rubygems/test_gem_config_file.rb +7 -12
  382. data/test/rubygems/test_gem_dependency.rb +0 -2
  383. data/test/rubygems/test_gem_dependency_installer.rb +54 -191
  384. data/test/rubygems/test_gem_dependency_list.rb +8 -10
  385. data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -3
  386. data/test/rubygems/test_gem_doctor.rb +28 -2
  387. data/test/rubygems/test_gem_ext_builder.rb +16 -33
  388. data/test/rubygems/test_gem_ext_cmake_builder.rb +13 -14
  389. data/test/rubygems/test_gem_ext_configure_builder.rb +1 -11
  390. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -3
  391. data/test/rubygems/test_gem_ext_rake_builder.rb +9 -11
  392. data/test/rubygems/test_gem_gem_runner.rb +43 -1
  393. data/test/rubygems/test_gem_gemcutter_utilities.rb +5 -2
  394. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -2
  395. data/test/rubygems/test_gem_indexer.rb +9 -15
  396. data/test/rubygems/test_gem_install_update_options.rb +0 -2
  397. data/test/rubygems/test_gem_installer.rb +192 -71
  398. data/test/rubygems/test_gem_local_remote_options.rb +0 -2
  399. data/test/rubygems/test_gem_name_tuple.rb +0 -2
  400. data/test/rubygems/test_gem_package.rb +33 -31
  401. data/test/rubygems/test_gem_package_old.rb +0 -2
  402. data/test/rubygems/test_gem_package_tar_header.rb +18 -1
  403. data/test/rubygems/test_gem_package_tar_reader.rb +0 -2
  404. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -2
  405. data/test/rubygems/test_gem_package_tar_writer.rb +8 -5
  406. data/test/rubygems/test_gem_package_task.rb +46 -13
  407. data/test/rubygems/test_gem_path_support.rb +0 -2
  408. data/test/rubygems/test_gem_platform.rb +0 -2
  409. data/test/rubygems/test_gem_rdoc.rb +0 -2
  410. data/test/rubygems/test_gem_remote_fetcher.rb +156 -195
  411. data/test/rubygems/test_gem_request.rb +11 -15
  412. data/test/rubygems/test_gem_request_connection_pools.rb +0 -4
  413. data/test/rubygems/test_gem_request_set.rb +72 -22
  414. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +3 -5
  415. data/test/rubygems/test_gem_request_set_lockfile.rb +0 -2
  416. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -11
  417. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -120
  418. data/test/rubygems/test_gem_requirement.rb +10 -4
  419. data/test/rubygems/test_gem_resolver.rb +6 -8
  420. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -2
  421. data/test/rubygems/test_gem_resolver_api_set.rb +3 -5
  422. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -2
  423. data/test/rubygems/test_gem_resolver_best_set.rb +2 -4
  424. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -2
  425. data/test/rubygems/test_gem_resolver_conflict.rb +0 -2
  426. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -2
  427. data/test/rubygems/test_gem_resolver_git_set.rb +0 -2
  428. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -2
  429. data/test/rubygems/test_gem_resolver_index_set.rb +2 -4
  430. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -2
  431. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -2
  432. data/test/rubygems/test_gem_resolver_installer_set.rb +7 -9
  433. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -2
  434. data/test/rubygems/test_gem_resolver_lock_set.rb +3 -5
  435. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -2
  436. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -2
  437. data/test/rubygems/test_gem_resolver_specification.rb +0 -4
  438. data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -2
  439. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -2
  440. data/test/rubygems/test_gem_security.rb +20 -22
  441. data/test/rubygems/test_gem_security_policy.rb +5 -10
  442. data/test/rubygems/test_gem_security_signer.rb +8 -10
  443. data/test/rubygems/test_gem_security_trust_dir.rb +2 -4
  444. data/test/rubygems/test_gem_server.rb +10 -14
  445. data/test/rubygems/test_gem_silent_ui.rb +0 -2
  446. data/test/rubygems/test_gem_source.rb +12 -16
  447. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -2
  448. data/test/rubygems/test_gem_source_git.rb +12 -13
  449. data/test/rubygems/test_gem_source_installed.rb +7 -9
  450. data/test/rubygems/test_gem_source_list.rb +1 -2
  451. data/test/rubygems/test_gem_source_local.rb +8 -10
  452. data/test/rubygems/test_gem_source_lock.rb +10 -12
  453. data/test/rubygems/test_gem_source_specific_file.rb +7 -9
  454. data/test/rubygems/test_gem_source_vendor.rb +7 -9
  455. data/test/rubygems/test_gem_spec_fetcher.rb +11 -4
  456. data/test/rubygems/test_gem_specification.rb +179 -129
  457. data/test/rubygems/test_gem_stream_ui.rb +3 -3
  458. data/test/rubygems/test_gem_stub_specification.rb +4 -7
  459. data/test/rubygems/test_gem_text.rb +1 -3
  460. data/test/rubygems/test_gem_uninstaller.rb +133 -11
  461. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -2
  462. data/test/rubygems/test_gem_uri_formatter.rb +0 -2
  463. data/test/rubygems/test_gem_util.rb +7 -7
  464. data/test/rubygems/test_gem_validator.rb +0 -2
  465. data/test/rubygems/test_gem_version.rb +1 -3
  466. data/test/rubygems/test_gem_version_option.rb +0 -2
  467. data/test/rubygems/test_kernel.rb +25 -10
  468. data/test/rubygems/test_project_sanity.rb +7 -2
  469. data/test/rubygems/test_remote_fetch_error.rb +0 -2
  470. data/test/rubygems/test_require.rb +241 -47
  471. metadata +59 -96
  472. data/.bundle/config +0 -2
  473. data/.rubocop.yml +0 -91
  474. data/Gemfile +0 -8
  475. data/Gemfile.lock +0 -43
  476. data/bundler/CODE_OF_CONDUCT.md +0 -136
  477. data/bundler/man/bundle-add.1.txt +0 -58
  478. data/bundler/man/bundle-binstubs.1.txt +0 -48
  479. data/bundler/man/bundle-cache.1.txt +0 -78
  480. data/bundler/man/bundle-check.1.txt +0 -33
  481. data/bundler/man/bundle-clean.1.txt +0 -26
  482. data/bundler/man/bundle-config.1.txt +0 -528
  483. data/bundler/man/bundle-doctor.1.txt +0 -44
  484. data/bundler/man/bundle-exec.1.txt +0 -178
  485. data/bundler/man/bundle-gem.1.txt +0 -91
  486. data/bundler/man/bundle-info.1.txt +0 -21
  487. data/bundler/man/bundle-init.1.txt +0 -34
  488. data/bundler/man/bundle-inject.1.txt +0 -32
  489. data/bundler/man/bundle-install.1.txt +0 -401
  490. data/bundler/man/bundle-list.1.txt +0 -43
  491. data/bundler/man/bundle-lock.1.txt +0 -93
  492. data/bundler/man/bundle-open.1.txt +0 -29
  493. data/bundler/man/bundle-outdated.1.txt +0 -131
  494. data/bundler/man/bundle-platform.1.txt +0 -57
  495. data/bundler/man/bundle-pristine.1.txt +0 -44
  496. data/bundler/man/bundle-remove.1.txt +0 -34
  497. data/bundler/man/bundle-show.1.txt +0 -27
  498. data/bundler/man/bundle-update.1.txt +0 -390
  499. data/bundler/man/bundle-viz.1.txt +0 -39
  500. data/bundler/man/bundle.1.txt +0 -116
  501. data/bundler/man/gemfile.5.txt +0 -649
  502. data/bundler/man/index.txt +0 -25
  503. data/lib/rubygems/source_local.rb +0 -7
  504. data/lib/rubygems/source_specific_file.rb +0 -6
  505. data/lib/ubygems.rb +0 -14
  506. data/tmp/.keep +0 -0
  507. data/util/CL2notes +0 -55
  508. data/util/bisect +0 -10
  509. data/util/ci.sh +0 -62
  510. data/util/cops/deprecations.rb +0 -52
  511. data/util/create_certs.rb +0 -171
  512. data/util/create_certs.sh +0 -27
  513. data/util/create_encrypted_key.rb +0 -16
  514. data/util/generate_spdx_license_list.rb +0 -63
  515. data/util/patch_with_prs.rb +0 -77
  516. data/util/rubocop +0 -8
  517. data/util/update_bundled_ca_certificates.rb +0 -139
  518. data/util/update_changelog.rb +0 -67
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
+ require 'rubygems'
2
3
  require 'rubygems/source_list'
3
4
  require 'rubygems/test_case'
4
5
 
5
6
  class TestGemSourceList < Gem::TestCase
6
-
7
7
  def setup
8
8
  super
9
9
 
@@ -115,5 +115,4 @@ class TestGemSourceList < Gem::TestCase
115
115
  @sl.delete Gem::Source.new(@uri)
116
116
  assert_equal @sl.sources, []
117
117
  end
118
-
119
118
  end
@@ -5,7 +5,6 @@ require 'rubygems/source'
5
5
  require 'fileutils'
6
6
 
7
7
  class TestGemSourceLocal < Gem::TestCase
8
-
9
8
  def setup
10
9
  super
11
10
 
@@ -73,7 +72,7 @@ class TestGemSourceLocal < Gem::TestCase
73
72
 
74
73
  @sl.load_specs :released
75
74
 
76
- inner = [@a, @ap, @b].map { |t| t.name_tuple }.inspect
75
+ inner = [@a, @ap, @b].map {|t| t.name_tuple }.inspect
77
76
 
78
77
  assert_equal "#<Gem::Source::Local specs: #{inner}>", @sl.inspect
79
78
  end
@@ -93,16 +92,15 @@ class TestGemSourceLocal < Gem::TestCase
93
92
  installed = Gem::Source::Installed.new
94
93
  local = Gem::Source::Local.new
95
94
 
96
- assert_equal(0, local. <=>(local), 'local <=> local')
95
+ assert_equal(0, local.<=>(local), 'local <=> local')
97
96
 
98
- assert_equal(-1, remote. <=>(local), 'remote <=> local')
99
- assert_equal(1, local. <=>(remote), 'local <=> remote')
97
+ assert_equal(-1, remote.<=>(local), 'remote <=> local')
98
+ assert_equal(1, local.<=>(remote), 'local <=> remote')
100
99
 
101
- assert_equal(1, installed.<=>(local), 'installed <=> local')
102
- assert_equal(-1, local. <=>(installed), 'local <=> installed')
100
+ assert_equal(1, installed.<=>(local), 'installed <=> local')
101
+ assert_equal(-1, local.<=>(installed), 'local <=> installed')
103
102
 
104
- assert_equal(-1, specific. <=>(local), 'specific <=> local')
105
- assert_equal(1, local. <=>(specific), 'local <=> specific')
103
+ assert_equal(-1, specific.<=>(local), 'specific <=> local')
104
+ assert_equal(1, local.<=>(specific), 'local <=> specific')
106
105
  end
107
-
108
106
  end
@@ -2,7 +2,6 @@
2
2
  require 'rubygems/test_case'
3
3
 
4
4
  class TestGemSourceLock < Gem::TestCase
5
-
6
5
  def test_fetch_spec
7
6
  spec_fetcher do |fetcher|
8
7
  fetcher.spec 'a', 1
@@ -59,31 +58,31 @@ class TestGemSourceLock < Gem::TestCase
59
58
  lock = Gem::Source::Lock.new git
60
59
 
61
60
  assert_equal(1, lock.<=>(git), 'lock <=> git')
62
- assert_equal(-1, git .<=>(lock), 'git <=> lock')
61
+ assert_equal(-1, git.<=>(lock), 'git <=> lock')
63
62
  end
64
63
 
65
64
  def test_spaceship_installed
66
65
  installed = Gem::Source::Installed.new
67
66
  lock = Gem::Source::Lock.new installed
68
67
 
69
- assert_equal(1, lock. <=>(installed), 'lock <=> installed')
70
- assert_equal(-1, installed.<=>(lock), 'installed <=> lock')
68
+ assert_equal(1, lock.<=>(installed), 'lock <=> installed')
69
+ assert_equal(-1, installed.<=>(lock), 'installed <=> lock')
71
70
  end
72
71
 
73
72
  def test_spaceship_local
74
73
  local = Gem::Source::Local.new
75
74
  lock = Gem::Source::Lock.new local # nonsense
76
75
 
77
- assert_equal(1, lock. <=>(local), 'lock <=> local')
78
- assert_equal(-1, local.<=>(lock), 'local <=> lock')
76
+ assert_equal(1, lock.<=>(local), 'lock <=> local')
77
+ assert_equal(-1, local.<=>(lock), 'local <=> lock')
79
78
  end
80
79
 
81
80
  def test_spaceship_remote
82
81
  remote = Gem::Source.new @gem_repo
83
82
  lock = Gem::Source::Lock.new remote
84
83
 
85
- assert_equal(1, lock. <=>(remote), 'lock <=> remote')
86
- assert_equal(-1, remote.<=>(lock), 'remote <=> lock')
84
+ assert_equal(1, lock.<=>(remote), 'lock <=> remote')
85
+ assert_equal(-1, remote.<=>(lock), 'remote <=> lock')
87
86
  end
88
87
 
89
88
  def test_spaceship_specific_file
@@ -92,7 +91,7 @@ class TestGemSourceLock < Gem::TestCase
92
91
  specific = Gem::Source::SpecificFile.new gem
93
92
  lock = Gem::Source::Lock.new specific # nonsense
94
93
 
95
- assert_equal(1, lock .<=>(specific), 'lock <=> specific')
94
+ assert_equal(1, lock.<=>(specific), 'lock <=> specific')
96
95
  assert_equal(-1, specific.<=>(lock), 'specific <=> lock')
97
96
  end
98
97
 
@@ -100,8 +99,8 @@ class TestGemSourceLock < Gem::TestCase
100
99
  vendor = Gem::Source::Vendor.new 'vendor/a'
101
100
  lock = Gem::Source::Lock.new vendor
102
101
 
103
- assert_equal(1, lock. <=>(vendor), 'lock <=> vendor')
104
- assert_equal(-1, vendor.<=>(lock), 'vendor <=> lock')
102
+ assert_equal(1, lock.<=>(vendor), 'lock <=> vendor')
103
+ assert_equal(-1, vendor.<=>(lock), 'vendor <=> lock')
105
104
  end
106
105
 
107
106
  def test_uri
@@ -110,5 +109,4 @@ class TestGemSourceLock < Gem::TestCase
110
109
 
111
110
  assert_equal URI(@gem_repo), lock.uri
112
111
  end
113
-
114
112
  end
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/source'
4
4
 
5
5
  class TestGemSourceSpecificFile < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
9
8
 
@@ -46,16 +45,16 @@ class TestGemSourceSpecificFile < Gem::TestCase
46
45
  installed = Gem::Source::Installed.new
47
46
  local = Gem::Source::Local.new
48
47
 
49
- assert_equal(0, specific. <=>(specific), 'specific <=> specific')
48
+ assert_equal(0, specific.<=>(specific), 'specific <=> specific')
50
49
 
51
- assert_equal(-1, remote. <=>(specific), 'remote <=> specific')
52
- assert_equal(1, specific. <=>(remote), 'specific <=> remote')
50
+ assert_equal(-1, remote.<=>(specific), 'remote <=> specific')
51
+ assert_equal(1, specific.<=>(remote), 'specific <=> remote')
53
52
 
54
- assert_equal(-1, specific. <=>(local), 'specific <=> local')
55
- assert_equal(1, local. <=>(specific), 'local <=> specific')
53
+ assert_equal(-1, specific.<=>(local), 'specific <=> local')
54
+ assert_equal(1, local. <=>(specific), 'local <=> specific')
56
55
 
57
- assert_equal(-1, specific. <=>(installed), 'specific <=> installed')
58
- assert_equal(1, installed.<=>(specific), 'installed <=> specific')
56
+ assert_equal(-1, specific. <=>(installed), 'specific <=> installed')
57
+ assert_equal(1, installed.<=>(specific), 'installed <=> specific')
59
58
 
60
59
  a2 = quick_gem 'a', '2'
61
60
  util_build_gem a2
@@ -73,5 +72,4 @@ class TestGemSourceSpecificFile < Gem::TestCase
73
72
  assert_equal(0, a1_source.<=>(a1_source), 'a1_source <=> a1_source')
74
73
  assert_equal(1, a2_source.<=>(a1_source), 'a2_source <=> a1_source')
75
74
  end
76
-
77
75
  end
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/source'
4
4
 
5
5
  class TestGemSourceVendor < Gem::TestCase
6
-
7
6
  def test_initialize
8
7
  source = Gem::Source::Vendor.new 'vendor/foo'
9
8
 
@@ -16,16 +15,15 @@ class TestGemSourceVendor < Gem::TestCase
16
15
  git = Gem::Source::Git.new 'a', 'a', 'master'
17
16
  installed = Gem::Source::Installed.new
18
17
 
19
- assert_equal(0, vendor. <=>(vendor), 'vendor <=> vendor')
18
+ assert_equal(0, vendor.<=>(vendor), 'vendor <=> vendor')
20
19
 
21
- assert_equal(1, vendor. <=>(remote), 'vendor <=> remote')
22
- assert_equal(-1, remote. <=>(vendor), 'remote <=> vendor')
20
+ assert_equal(1, vendor.<=>(remote), 'vendor <=> remote')
21
+ assert_equal(-1, remote.<=>(vendor), 'remote <=> vendor')
23
22
 
24
- assert_equal(1, vendor. <=>(git), 'vendor <=> git')
25
- assert_equal(-1, git. <=>(vendor), 'git <=> vendor')
23
+ assert_equal(1, vendor.<=>(git), 'vendor <=> git')
24
+ assert_equal(-1, git.<=>(vendor), 'git <=> vendor')
26
25
 
27
- assert_equal(1, vendor. <=>(installed), 'vendor <=> installed')
28
- assert_equal(-1, installed.<=>(vendor), 'installed <=> vendor')
26
+ assert_equal(1, vendor.<=>(installed), 'vendor <=> installed')
27
+ assert_equal(-1, installed.<=>(vendor), 'installed <=> vendor')
29
28
  end
30
-
31
29
  end
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/spec_fetcher'
4
4
 
5
5
  class TestGemSpecFetcher < Gem::TestCase
6
-
7
6
  def tuple(*args)
8
7
  Gem::NameTuple.new(*args)
9
8
  end
@@ -173,10 +172,19 @@ class TestGemSpecFetcher < Gem::TestCase
173
172
  spec_fetcher do|fetcher|
174
173
  fetcher.spec 'example', 1
175
174
  fetcher.spec 'other-example', 1
175
+ fetcher.spec 'examp', 1
176
176
  end
177
177
 
178
- suggestions = @sf.suggest_gems_from_name('examplw')
178
+ suggestions = @sf.suggest_gems_from_name('examplw', :latest, 1)
179
179
  assert_equal ['example'], suggestions
180
+
181
+ suggestions = @sf.suggest_gems_from_name('other')
182
+ assert_equal ['other-example'], suggestions
183
+
184
+ suggestions = @sf.suggest_gems_from_name('exam')
185
+ assert suggestions.any? { ['examp'] }
186
+ assert suggestions.any? { ['example'] }
187
+ assert suggestions.any? { ['other-example'] }
180
188
  end
181
189
 
182
190
  def test_suggest_gems_from_name_prerelease
@@ -313,7 +321,7 @@ class TestGemSpecFetcher < Gem::TestCase
313
321
  specs, _ = @sf.available_specs(:prerelease)
314
322
 
315
323
  expected = Gem::NameTuple.from_list \
316
- [['a', v('2.a'), Gem::Platform::RUBY]]
324
+ [['a', v('2.a'), Gem::Platform::RUBY]]
317
325
 
318
326
  assert_equal expected, specs[@source]
319
327
  end
@@ -326,5 +334,4 @@ class TestGemSpecFetcher < Gem::TestCase
326
334
  assert_equal({}, specs)
327
335
  assert_kind_of Gem::SourceFetchProblem, errors.first
328
336
  end
329
-
330
337
  end
@@ -9,7 +9,6 @@ require 'rubygems/installer'
9
9
  require 'rubygems/platform'
10
10
 
11
11
  class TestGemSpecification < Gem::TestCase
12
-
13
12
  LEGACY_YAML_SPEC = <<-EOF.freeze
14
13
  --- !ruby/object:Gem::Specification
15
14
  rubygems_version: "1.0"
@@ -83,6 +82,11 @@ end
83
82
  def setup
84
83
  super
85
84
 
85
+ # Setting `@default_source_date_epoch` to `nil` effectively resets the
86
+ # value used for `Gem.source_date_epoch` whenever `$SOURCE_DATE_EPOCH`
87
+ # is not set.
88
+ Gem.instance_variable_set(:'@default_source_date_epoch', nil)
89
+
86
90
  @a1 = util_spec 'a', '1' do |s|
87
91
  s.executable = 'exec'
88
92
  s.test_file = 'test/suite.rb'
@@ -135,12 +139,12 @@ end
135
139
  install_specs c1, c2, b1, b2, a1
136
140
 
137
141
  a1.activate
138
- assert_equal %w(a-1), loaded_spec_names
142
+ assert_equal %w[a-1], loaded_spec_names
139
143
  assert_equal ["b (> 0)"], unresolved_names
140
144
 
141
145
  require "d#{$$}"
142
146
 
143
- assert_equal %w(a-1 b-2 c-2), loaded_spec_names
147
+ assert_equal %w[a-1 b-2 c-2], loaded_spec_names
144
148
  assert_equal [], unresolved_names
145
149
  end
146
150
  end
@@ -182,12 +186,12 @@ end
182
186
  install_specs c1, c2, b1, b2, a1
183
187
 
184
188
  a1.activate
185
- assert_equal %w(a-1), loaded_spec_names
189
+ assert_equal %w[a-1], loaded_spec_names
186
190
  assert_equal ["b (> 0)"], unresolved_names
187
191
 
188
192
  require "d#{$$}"
189
193
 
190
- assert_equal %w(a-1 b-2 c-2), loaded_spec_names
194
+ assert_equal %w[a-1 b-2 c-2], loaded_spec_names
191
195
  assert_equal [], unresolved_names
192
196
  end
193
197
  end
@@ -204,12 +208,12 @@ end
204
208
  install_specs c1, b1, a1, a2, c2, b2
205
209
 
206
210
  a2.activate
207
- assert_equal %w(a-2), loaded_spec_names
211
+ assert_equal %w[a-2], loaded_spec_names
208
212
  assert_equal ["b (> 0)"], unresolved_names
209
213
 
210
214
  require "d#{$$}"
211
215
 
212
- assert_equal %w(a-2 b-1 c-1), loaded_spec_names
216
+ assert_equal %w[a-2 b-1 c-1], loaded_spec_names
213
217
  assert_equal [], unresolved_names
214
218
  end
215
219
  end
@@ -226,12 +230,12 @@ end
226
230
  install_specs d1, c1, c2, b1, b2, a1
227
231
 
228
232
  a1.activate
229
- assert_equal %w(a-1), loaded_spec_names
233
+ assert_equal %w[a-1], loaded_spec_names
230
234
  assert_equal ["b (> 0)"], unresolved_names
231
235
 
232
236
  require "d#{$$}"
233
237
 
234
- assert_equal %w(a-1 d-1), loaded_spec_names
238
+ assert_equal %w[a-1 d-1], loaded_spec_names
235
239
  assert_equal ["b (> 0)"], unresolved_names
236
240
  end
237
241
  end
@@ -241,7 +245,7 @@ end
241
245
  a1 = util_spec "a", "1", "b" => "> 0"
242
246
  b1 = util_spec "b", "1", "c" => ">= 0" # unresolved
243
247
  b2 = util_spec "b", "2", "c" => ">= 0"
244
- c1 = util_spec "c", "1", nil, "lib/c#{$$}.rb" # 1st level
248
+ c1 = util_spec "c", "1", nil, "lib/c#{$$}.rb" # 1st level
245
249
  c2 = util_spec "c", "2", nil, "lib/c#{$$}.rb"
246
250
 
247
251
  install_specs c1, c2, b1, b2, a1
@@ -250,7 +254,7 @@ end
250
254
 
251
255
  require "c#{$$}"
252
256
 
253
- assert_equal %w(a-1 b-2 c-2), loaded_spec_names
257
+ assert_equal %w[a-1 b-2 c-2], loaded_spec_names
254
258
  end
255
259
  end
256
260
 
@@ -259,7 +263,7 @@ end
259
263
  a1 = util_spec "a", "1", "b" => "> 0"
260
264
  b1 = util_spec "b", "1", "c" => ">= 0" # unresolved
261
265
  b2 = util_spec "b", "2", "c" => ">= 0"
262
- c1 = util_spec "c", "1", "d" => ">= 0" # 1st level
266
+ c1 = util_spec "c", "1", "d" => ">= 0" # 1st level
263
267
  c2 = util_spec "c", "2", "d" => ">= 0"
264
268
  d1 = util_spec "d", "1", nil, "lib/d#{$$}.rb" # 2nd level
265
269
  d2 = util_spec "d", "2", nil, "lib/d#{$$}.rb"
@@ -270,7 +274,7 @@ end
270
274
 
271
275
  require "d#{$$}"
272
276
 
273
- assert_equal %w(a-1 b-2 c-2 d-2), loaded_spec_names
277
+ assert_equal %w[a-1 b-2 c-2 d-2], loaded_spec_names
274
278
  end
275
279
  end
276
280
 
@@ -291,7 +295,7 @@ end
291
295
 
292
296
  require "d#{$$}"
293
297
 
294
- assert_equal %w(a-1 b-2 c-2 d-2), loaded_spec_names
298
+ assert_equal %w[a-1 b-2 c-2 d-2], loaded_spec_names
295
299
  end
296
300
  end
297
301
 
@@ -313,7 +317,7 @@ end
313
317
 
314
318
  require "d#{$$}"
315
319
 
316
- assert_equal %w(a-1 b-2 c-2 d-2), loaded_spec_names
320
+ assert_equal %w[a-1 b-2 c-2 d-2], loaded_spec_names
317
321
  end
318
322
  end
319
323
 
@@ -331,12 +335,12 @@ end
331
335
  install_specs c1, c2, c3, b1, b2, a1, a2, base
332
336
 
333
337
  base.activate
334
- assert_equal %w(0-1), loaded_spec_names
338
+ assert_equal %w[0-1], loaded_spec_names
335
339
  assert_equal ["A (>= 1)"], unresolved_names
336
340
 
337
341
  require "d#{$$}"
338
342
 
339
- assert_equal %w(0-1 A-2 b-2 c-2), loaded_spec_names
343
+ assert_equal %w[0-1 A-2 b-2 c-2], loaded_spec_names
340
344
  assert_equal [], unresolved_names
341
345
  end
342
346
  end
@@ -359,7 +363,7 @@ end
359
363
 
360
364
  require "d#{$$}"
361
365
 
362
- assert_includes [%w(a-1 b-2 c-3 d-2),%w(a-1 b-2 d-2)], loaded_spec_names
366
+ assert_includes [%w[a-1 b-2 c-3 d-2],%w[a-1 b-2 d-2]], loaded_spec_names
363
367
  end
364
368
  end
365
369
 
@@ -381,7 +385,7 @@ end
381
385
 
382
386
  require "d#{$$}"
383
387
 
384
- assert_includes [%w(a-1 b-2 d-2 xc-3), %w(a-1 b-2 d-2)], loaded_spec_names
388
+ assert_includes [%w[a-1 b-2 d-2 xc-3], %w[a-1 b-2 d-2]], loaded_spec_names
385
389
  end
386
390
  end
387
391
 
@@ -510,16 +514,16 @@ end
510
514
  require "b/c"
511
515
  end
512
516
 
513
- assert_equal %w(a-1 b-1), loaded_spec_names
517
+ assert_equal %w[a-1 b-1], loaded_spec_names
514
518
  end
515
519
 
516
520
  def test_self_activate_via_require_wtf
517
521
  save_loaded_features do
518
- a1 = util_spec "a", "1", "b" => "> 0", "d" => "> 0" # this
522
+ a1 = util_spec "a", "1", "b" => "> 0", "d" => "> 0" # this
519
523
  b1 = util_spec "b", "1", { "c" => ">= 1" }, "lib/b#{$$}.rb"
520
524
  b2 = util_spec "b", "2", { "c" => ">= 2" }, "lib/b#{$$}.rb" # this
521
525
  c1 = util_spec "c", "1"
522
- c2 = util_spec "c", "2" # this
526
+ c2 = util_spec "c", "2" # this
523
527
  d1 = util_spec "d", "1", { "c" => "< 2" }, "lib/d#{$$}.rb"
524
528
  d2 = util_spec "d", "2", { "c" => "< 2" }, "lib/d#{$$}.rb" # this
525
529
 
@@ -527,7 +531,7 @@ end
527
531
 
528
532
  a1.activate
529
533
 
530
- assert_equal %w(a-1), loaded_spec_names
534
+ assert_equal %w[a-1], loaded_spec_names
531
535
  assert_equal ["b (> 0)", "d (> 0)"], unresolved_names
532
536
 
533
537
  require "b#{$$}"
@@ -538,7 +542,7 @@ end
538
542
 
539
543
  assert_equal "unable to find a version of 'd' to activate", e.message
540
544
 
541
- assert_equal %w(a-1 b-2 c-2), loaded_spec_names
545
+ assert_equal %w[a-1 b-2 c-2], loaded_spec_names
542
546
  assert_equal ["d (> 0)"], unresolved_names
543
547
  end
544
548
  end
@@ -553,7 +557,7 @@ end
553
557
  install_specs c1, c2, b1, b2, a1
554
558
 
555
559
  a1.activate
556
- assert_equal %w(a-1 b-1 c-1), loaded_spec_names
560
+ assert_equal %w[a-1 b-1 c-1], loaded_spec_names
557
561
  end
558
562
 
559
563
  def test_self_activate_loaded
@@ -715,7 +719,7 @@ end
715
719
  version
716
720
  ]
717
721
 
718
- actual_value = Gem::Specification.attribute_names.map { |a| a.to_s }.sort
722
+ actual_value = Gem::Specification.attribute_names.map {|a| a.to_s }.sort
719
723
 
720
724
  assert_equal expected_value, actual_value
721
725
  end
@@ -790,7 +794,7 @@ bindir:
790
794
  op = spec.dependencies.first.requirement.requirements.first.first
791
795
  refute_kind_of YAML::Syck::DefaultKey, op
792
796
 
793
- refute_match %r%DefaultKey%, spec.to_ruby
797
+ refute_match %r{DefaultKey}, spec.to_ruby
794
798
  end
795
799
 
796
800
  def test_self_from_yaml_cleans_up_defaultkey
@@ -824,7 +828,7 @@ bindir:
824
828
  op = spec.dependencies.first.requirement.requirements.first.first
825
829
  refute_kind_of YAML::Syck::DefaultKey, op
826
830
 
827
- refute_match %r%DefaultKey%, spec.to_ruby
831
+ refute_match %r{DefaultKey}, spec.to_ruby
828
832
  end
829
833
 
830
834
  def test_self_from_yaml_cleans_up_defaultkey_from_newer_192
@@ -858,7 +862,7 @@ bindir:
858
862
  op = spec.dependencies.first.requirement.requirements.first.first
859
863
  refute_kind_of YAML::Syck::DefaultKey, op
860
864
 
861
- refute_match %r%DefaultKey%, spec.to_ruby
865
+ refute_match %r{DefaultKey}, spec.to_ruby
862
866
  end
863
867
 
864
868
  def test_self_from_yaml_cleans_up_Date_objects
@@ -939,7 +943,7 @@ dependencies: []
939
943
  assert_equal File.join(@tempdir, 'a-2.gemspec'), spec.loaded_from
940
944
  end
941
945
 
942
- if RUBY_VERSION < '2.7'
946
+ if RUBY_ENGINE == 'ruby' and RUBY_VERSION < '2.7'
943
947
  def test_self_load_tainted
944
948
  full_path = @a2.spec_file
945
949
  write_file full_path do |io|
@@ -1108,13 +1112,13 @@ dependencies: []
1108
1112
  install_specs @a1
1109
1113
 
1110
1114
  assert_includes Gem::Specification.all_names, 'a-1'
1111
- assert_includes Gem::Specification.stubs.map { |s| s.full_name }, 'a-1'
1115
+ assert_includes Gem::Specification.stubs.map {|s| s.full_name }, 'a-1'
1112
1116
 
1113
1117
  uninstall_gem @a1
1114
1118
  Gem::Specification.reset
1115
1119
 
1116
1120
  refute_includes Gem::Specification.all_names, 'a-1'
1117
- refute_includes Gem::Specification.stubs.map { |s| s.full_name }, 'a-1'
1121
+ refute_includes Gem::Specification.stubs.map {|s| s.full_name }, 'a-1'
1118
1122
  end
1119
1123
 
1120
1124
  def test_self_remove_spec_removed
@@ -1129,48 +1133,30 @@ dependencies: []
1129
1133
  Gem::Specification.reset
1130
1134
 
1131
1135
  refute_includes Gem::Specification.all_names, 'a-1'
1132
- refute_includes Gem::Specification.stubs.map { |s| s.full_name }, 'a-1'
1133
- end
1134
-
1135
- def test_self_stubs
1136
- Gem.loaded_specs.clear
1137
- Gem::Specification.class_variable_set(:@@stubs, nil)
1138
-
1139
- dir_standard_specs = File.join Gem.dir, 'specifications'
1140
- dir_default_specs = Gem.default_specifications_dir
1141
-
1142
- # Create gemspecs in three locations used in stubs
1143
- loaded_spec = Gem::Specification.new 'a', '3'
1144
- Gem.loaded_specs['a'] = loaded_spec
1145
- save_gemspec 'a', '2', dir_default_specs
1146
- save_gemspec 'a', '1', dir_standard_specs
1147
-
1148
- full_names = ['a-3', 'a-2', 'a-1']
1149
- assert_equal full_names, Gem::Specification.stubs.map { |s| s.full_name }
1150
-
1151
- Gem.loaded_specs.delete 'a'
1152
- Gem::Specification.class_variable_set(:@@stubs, nil)
1136
+ refute_includes Gem::Specification.stubs.map {|s| s.full_name }, 'a-1'
1153
1137
  end
1154
1138
 
1155
- def test_self_stubs_for
1139
+ def test_self_stubs_for_lazy_loading
1156
1140
  Gem.loaded_specs.clear
1157
1141
  Gem::Specification.class_variable_set(:@@stubs, nil)
1158
1142
 
1159
1143
  dir_standard_specs = File.join Gem.dir, 'specifications'
1160
- dir_default_specs = Gem.default_specifications_dir
1161
-
1162
- # Create gemspecs in three locations used in stubs
1163
- loaded_spec = Gem::Specification.new 'a', '3'
1164
- Gem.loaded_specs['a'] = loaded_spec
1165
- save_gemspec('a-2', '2', dir_default_specs) { |s| s.name = 'a' }
1166
- save_gemspec('a-1', '1', dir_standard_specs) { |s| s.name = 'a' }
1167
1144
 
1168
- full_names = ['a-3', 'a-2', 'a-1']
1145
+ save_gemspec('a-1', '1', dir_standard_specs){|s| s.name = 'a' }
1146
+ save_gemspec('b-1', '1', dir_standard_specs){|s| s.name = 'b' }
1169
1147
 
1170
- assert_equal full_names, Gem::Specification.stubs_for('a').map { |s| s.full_name }
1148
+ assert_equal ['a-1'], Gem::Specification.stubs_for('a').map {|s| s.full_name }
1171
1149
  assert_equal 1, Gem::Specification.class_variable_get(:@@stubs_by_name).length
1150
+ assert_equal ['b-1'], Gem::Specification.stubs_for('b').map {|s| s.full_name }
1151
+ assert_equal 2, Gem::Specification.class_variable_get(:@@stubs_by_name).length
1152
+
1153
+ assert_equal(
1154
+ Gem::Specification.stubs_for('a').map {|s| s.object_id },
1155
+ Gem::Specification.stubs_for('a').map {|s| s.object_id }
1156
+ )
1172
1157
 
1173
1158
  Gem.loaded_specs.delete 'a'
1159
+ Gem.loaded_specs.delete 'b'
1174
1160
  Gem::Specification.class_variable_set(:@@stubs, nil)
1175
1161
  end
1176
1162
 
@@ -1182,7 +1168,7 @@ dependencies: []
1182
1168
 
1183
1169
  # create user spec
1184
1170
  user_spec_dir = File.join Gem.user_dir, 'specifications'
1185
- FileUtils.mkdir_p(user_spec_dir) unless Dir.exist? user_spec_dir
1171
+ FileUtils.mkdir_p(user_spec_dir) unless Dir.exist? user_spec_dir
1186
1172
  # dirs doesn't include user ?
1187
1173
  Gem::Specification.dirs << user_spec_dir
1188
1174
 
@@ -1192,7 +1178,7 @@ dependencies: []
1192
1178
 
1193
1179
  #create specs
1194
1180
  platforms.each do |plat|
1195
- spec = Gem::Specification.new(gem, v) { |s| s.platform = plat }
1181
+ spec = Gem::Specification.new(gem, v) {|s| s.platform = plat }
1196
1182
  File.open File.join(user_spec_dir, "#{gem}-#{v}-#{plat}.gemspec"), 'w' do |io|
1197
1183
  io.write spec.to_ruby
1198
1184
  end
@@ -1383,12 +1369,12 @@ dependencies: []
1383
1369
  awesome.add_dependency :gem_name
1384
1370
  end
1385
1371
 
1386
- assert_equal %w[true gem_name], gem.dependencies.map { |dep| dep.name }
1372
+ assert_equal %w[true gem_name], gem.dependencies.map {|dep| dep.name }
1387
1373
  end
1388
1374
 
1389
1375
  def test_add_dependency_from_existing_dependency
1390
1376
  dep = Gem::Dependency.new("existing_dep", Gem::Requirement.new('> 1'), :runtime)
1391
- spec = Gem::Specification.new { |s| s.add_dependency dep }
1377
+ spec = Gem::Specification.new {|s| s.add_dependency dep }
1392
1378
  assert_equal dep, spec.dependencies.first
1393
1379
  end
1394
1380
 
@@ -1397,7 +1383,7 @@ dependencies: []
1397
1383
  awesome.add_development_dependency "monkey"
1398
1384
  end
1399
1385
 
1400
- monkey = gem.dependencies.detect { |d| d.name == "monkey" }
1386
+ monkey = gem.dependencies.detect {|d| d.name == "monkey" }
1401
1387
  assert_equal(:development, monkey.type)
1402
1388
  end
1403
1389
 
@@ -1495,7 +1481,7 @@ dependencies: []
1495
1481
  default = new_default_spec 'default', 2
1496
1482
  install_default_gems default
1497
1483
 
1498
- stub = Gem::Specification.stubs.find { |s| s.name == 'default' }
1484
+ stub = Gem::Specification.stubs.find {|s| s.name == 'default' }
1499
1485
  assert_predicate stub, :default_gem?
1500
1486
 
1501
1487
  stub = Gem::Specification.find_all_by_name('default').first
@@ -1850,7 +1836,6 @@ dependencies: []
1850
1836
  RbConfig::CONFIG['ENABLE_SHARED'], 'no'
1851
1837
 
1852
1838
  class << Gem
1853
-
1854
1839
  alias orig_default_ext_dir_for default_ext_dir_for
1855
1840
 
1856
1841
  remove_method :default_ext_dir_for
@@ -1858,7 +1843,6 @@ dependencies: []
1858
1843
  def Gem.default_ext_dir_for(base_dir)
1859
1844
  'elsewhere'
1860
1845
  end
1861
-
1862
1846
  end
1863
1847
 
1864
1848
  ext_spec
@@ -1872,20 +1856,18 @@ dependencies: []
1872
1856
  RbConfig::CONFIG['ENABLE_SHARED'] = enable_shared
1873
1857
 
1874
1858
  class << Gem
1875
-
1876
1859
  remove_method :default_ext_dir_for
1877
1860
 
1878
1861
  alias default_ext_dir_for orig_default_ext_dir_for
1879
-
1880
1862
  end
1881
1863
  end
1882
1864
 
1883
1865
  def test_files
1884
- @a1.files = %w(files bin/common)
1885
- @a1.test_files = %w(test_files bin/common)
1886
- @a1.executables = %w(executables common)
1887
- @a1.extra_rdoc_files = %w(extra_rdoc_files bin/common)
1888
- @a1.extensions = %w(extensions bin/common)
1866
+ @a1.files = %w[files bin/common]
1867
+ @a1.test_files = %w[test_files bin/common]
1868
+ @a1.executables = %w[executables common]
1869
+ @a1.extra_rdoc_files = %w[extra_rdoc_files bin/common]
1870
+ @a1.extensions = %w[extensions bin/common]
1889
1871
 
1890
1872
  expected = %w[
1891
1873
  bin/common
@@ -1899,11 +1881,11 @@ dependencies: []
1899
1881
  end
1900
1882
 
1901
1883
  def test_files_append
1902
- @a1.files = %w(files bin/common)
1903
- @a1.test_files = %w(test_files bin/common)
1904
- @a1.executables = %w(executables common)
1905
- @a1.extra_rdoc_files = %w(extra_rdoc_files bin/common)
1906
- @a1.extensions = %w(extensions bin/common)
1884
+ @a1.files = %w[files bin/common]
1885
+ @a1.test_files = %w[test_files bin/common]
1886
+ @a1.executables = %w[executables common]
1887
+ @a1.extra_rdoc_files = %w[extra_rdoc_files bin/common]
1888
+ @a1.extensions = %w[extensions bin/common]
1907
1889
 
1908
1890
  expected = %w[
1909
1891
  bin/common
@@ -2166,11 +2148,9 @@ dependencies: []
2166
2148
 
2167
2149
  def test_require_paths_default_ext_dir_for
2168
2150
  class << Gem
2169
-
2170
2151
  send :alias_method, :orig_default_ext_dir_for, :default_ext_dir_for
2171
2152
 
2172
2153
  remove_method :default_ext_dir_for
2173
-
2174
2154
  end
2175
2155
 
2176
2156
  def Gem.default_ext_dir_for(base_dir)
@@ -2186,11 +2166,9 @@ dependencies: []
2186
2166
  end
2187
2167
  ensure
2188
2168
  class << Gem
2189
-
2190
2169
  send :remove_method, :default_ext_dir_for
2191
2170
  send :alias_method, :default_ext_dir_for, :orig_default_ext_dir_for
2192
2171
  send :remove_method, :orig_default_ext_dir_for
2193
-
2194
2172
  end
2195
2173
  end
2196
2174
 
@@ -2292,12 +2270,12 @@ dependencies: []
2292
2270
  install_specs a1 # , a2, b1, b2, c1, c2
2293
2271
 
2294
2272
  a1.activate
2295
- assert_equal %w(a-1), loaded_spec_names
2273
+ assert_equal %w[a-1], loaded_spec_names
2296
2274
  assert_equal [], unresolved_names
2297
2275
 
2298
2276
  assert require "d#{$$}"
2299
2277
 
2300
- assert_equal %w(a-1), loaded_spec_names
2278
+ assert_equal %w[a-1], loaded_spec_names
2301
2279
  assert_equal [], unresolved_names
2302
2280
  end
2303
2281
  end
@@ -2315,12 +2293,12 @@ dependencies: []
2315
2293
 
2316
2294
  a1.activate
2317
2295
  c1.activate
2318
- assert_equal %w(a-1 c-1), loaded_spec_names
2296
+ assert_equal %w[a-1 c-1], loaded_spec_names
2319
2297
  assert_equal ["b (> 0)"], unresolved_names
2320
2298
 
2321
2299
  assert require "d#{$$}"
2322
2300
 
2323
- assert_equal %w(a-1 c-1), loaded_spec_names
2301
+ assert_equal %w[a-1 c-1], loaded_spec_names
2324
2302
  assert_equal ["b (> 0)"], unresolved_names
2325
2303
  end
2326
2304
  end
@@ -2343,7 +2321,7 @@ dependencies: []
2343
2321
 
2344
2322
  expected = %w[rake jabber4r pqa]
2345
2323
 
2346
- assert_equal expected, @c1.runtime_dependencies.map { |d| d.name }
2324
+ assert_equal expected, @c1.runtime_dependencies.map {|d| d.name }
2347
2325
  end
2348
2326
 
2349
2327
  def test_spaceship_name
@@ -2453,6 +2431,9 @@ end
2453
2431
  end
2454
2432
 
2455
2433
  def test_to_ruby_with_rsa_key
2434
+ require 'rubygems/openssl'
2435
+ skip 'openssl is missing' unless defined?(OpenSSL::PKey::RSA)
2436
+
2456
2437
  rsa_key = OpenSSL::PKey::RSA.new(2048)
2457
2438
  @a2.signing_key = rsa_key
2458
2439
  ruby_code = @a2.to_ruby
@@ -2656,7 +2637,7 @@ end
2656
2637
  def test_to_yaml_platform_empty_string
2657
2638
  @a1.instance_variable_set :@original_platform, ''
2658
2639
 
2659
- assert_match %r|^platform: ruby$|, @a1.to_yaml
2640
+ assert_match %r{^platform: ruby$}, @a1.to_yaml
2660
2641
  end
2661
2642
 
2662
2643
  def test_to_yaml_platform_legacy
@@ -2674,7 +2655,7 @@ end
2674
2655
  def test_to_yaml_platform_nil
2675
2656
  @a1.instance_variable_set :@original_platform, nil
2676
2657
 
2677
- assert_match %r|^platform: ruby$|, @a1.to_yaml
2658
+ assert_match %r{^platform: ruby$}, @a1.to_yaml
2678
2659
  end
2679
2660
 
2680
2661
  def test_validate
@@ -2718,7 +2699,7 @@ end
2718
2699
  @a1.validate
2719
2700
  end
2720
2701
 
2721
- assert_equal %{"#{f}" or "#{t}" is not an author}, e.message
2702
+ assert_equal %("#{f}" or "#{t}" is not an author), e.message
2722
2703
 
2723
2704
  @a1.authors = ["#{t} (who is writing this software)"]
2724
2705
 
@@ -2726,7 +2707,7 @@ end
2726
2707
  @a1.validate
2727
2708
  end
2728
2709
 
2729
- assert_equal %{"#{f}" or "#{t}" is not an author}, e.message
2710
+ assert_equal %("#{f}" or "#{t}" is not an author), e.message
2730
2711
  end
2731
2712
  end
2732
2713
 
@@ -2784,7 +2765,7 @@ end
2784
2765
  add_runtime_dependency 'l', '~> 1.2', '> 1.2.3'
2785
2766
  #{w}: open-ended dependency on o (>= 0) is not recommended
2786
2767
  use a bounded requirement, such as '~> x.y'
2787
- #{w}: See http://guides.rubygems.org/specification-reference/ for help
2768
+ #{w}: See https://guides.rubygems.org/specification-reference/ for help
2788
2769
  EXPECTED
2789
2770
 
2790
2771
  assert_equal expected, @ui.error, 'warning'
@@ -2816,7 +2797,7 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2816
2797
  end
2817
2798
 
2818
2799
  assert_equal <<-EXPECTED, @ui.error
2819
- #{w}: See http://guides.rubygems.org/specification-reference/ for help
2800
+ #{w}: See https://guides.rubygems.org/specification-reference/ for help
2820
2801
  EXPECTED
2821
2802
  end
2822
2803
  end
@@ -2851,6 +2832,37 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2851
2832
  end
2852
2833
  end
2853
2834
 
2835
+ def test_validate_rake_extension_have_rake_dependency_warning
2836
+ util_setup_validate
2837
+
2838
+ Dir.chdir @tempdir do
2839
+ @a1.extensions = ['Rakefile']
2840
+ File.write File.join(@tempdir, 'Rakefile'), ''
2841
+
2842
+ use_ui @ui do
2843
+ @a1.validate
2844
+ end
2845
+
2846
+ assert_match(/add rake as a dependency/, @ui.error)
2847
+ end
2848
+ end
2849
+
2850
+ def test_validate_rake_extension_have_rake_dependency_no_warning
2851
+ util_setup_validate
2852
+
2853
+ Dir.chdir @tempdir do
2854
+ @a1.extensions = ['Rakefile']
2855
+ @a1.add_runtime_dependency 'rake'
2856
+ File.write File.join(@tempdir, 'Rakefile'), ''
2857
+
2858
+ use_ui @ui do
2859
+ @a1.validate
2860
+ end
2861
+
2862
+ refute_match(/add rake as a dependency/, @ui.error)
2863
+ end
2864
+ end
2865
+
2854
2866
  def test_validate_description
2855
2867
  util_setup_validate
2856
2868
 
@@ -2878,7 +2890,7 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2878
2890
  @a1.validate
2879
2891
  end
2880
2892
 
2881
- assert_equal %{"#{f}" or "#{t}" is not a description}, e.message
2893
+ assert_equal %("#{f}" or "#{t}" is not a description), e.message
2882
2894
 
2883
2895
  @a1.description = "#{t} (describe your package)"
2884
2896
 
@@ -2886,7 +2898,7 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2886
2898
  @a1.validate
2887
2899
  end
2888
2900
 
2889
- assert_equal %{"#{f}" or "#{t}" is not a description}, e.message
2901
+ assert_equal %("#{f}" or "#{t}" is not a description), e.message
2890
2902
  end
2891
2903
  end
2892
2904
 
@@ -2900,7 +2912,7 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2900
2912
  @a1.validate
2901
2913
  end
2902
2914
 
2903
- assert_equal %{"#{f}" or "#{t}" is not an email}, e.message
2915
+ assert_equal %("#{f}" or "#{t}" is not an email), e.message
2904
2916
 
2905
2917
  @a1.email = "#{t} (your e-mail)"
2906
2918
 
@@ -2908,7 +2920,7 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2908
2920
  @a1.validate
2909
2921
  end
2910
2922
 
2911
- assert_equal %{"#{f}" or "#{t}" is not an email}, e.message
2923
+ assert_equal %("#{f}" or "#{t}" is not an email), e.message
2912
2924
  end
2913
2925
  end
2914
2926
 
@@ -2927,7 +2939,7 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2927
2939
  end
2928
2940
  end
2929
2941
 
2930
- assert_match 'See http://guides.rubygems.org/specification-reference/ for help', @ui.error
2942
+ assert_match 'See https://guides.rubygems.org/specification-reference/ for help', @ui.error
2931
2943
  end
2932
2944
 
2933
2945
  def test_validate_executables
@@ -3022,8 +3034,8 @@ Please report a bug if this causes problems.
3022
3034
 
3023
3035
  specification.define_singleton_method(:find_all_by_name) do |dep_name|
3024
3036
  [
3025
- specification.new { |s| s.name = "z", s.version = Gem::Version.new("1") },
3026
- specification.new { |s| s.name = "z", s.version = Gem::Version.new("2") }
3037
+ specification.new {|s| s.name = "z", s.version = Gem::Version.new("1") },
3038
+ specification.new {|s| s.name = "z", s.version = Gem::Version.new("2") }
3027
3039
  ]
3028
3040
  end
3029
3041
 
@@ -3042,6 +3054,13 @@ Please report a bug if this causes problems.
3042
3054
  end
3043
3055
  end
3044
3056
 
3057
+ def test_duplicate_runtime_dependency
3058
+ expected = "WARNING: duplicated b dependency [\"~> 3.0\", \"~> 3.0\"]\n"
3059
+ assert_output nil, expected do
3060
+ @a1.add_runtime_dependency "b", "~> 3.0", "~> 3.0"
3061
+ end
3062
+ end
3063
+
3045
3064
  def set_orig(cls)
3046
3065
  s_cls = cls.singleton_class
3047
3066
  s_cls.send :alias_method, :orig_unresolved_deps , :unresolved_deps
@@ -3100,7 +3119,7 @@ Please report a bug if this causes problems.
3100
3119
 
3101
3120
  assert_equal '"ftp://rubygems.org" is not a valid HTTP URI', e.message
3102
3121
 
3103
- @a1.homepage = 'http://rubygems.org'
3122
+ @a1.homepage = 'https://rubygems.org/'
3104
3123
  assert_equal true, @a1.validate
3105
3124
 
3106
3125
  @a1.homepage = 'https://rubygems.org'
@@ -3117,10 +3136,36 @@ Please report a bug if this causes problems.
3117
3136
  @a1.validate
3118
3137
  end
3119
3138
 
3120
- assert_match <<-warning, @ui.error
3139
+ assert_match <<-WARNING, @ui.error
3121
3140
  WARNING: licenses is empty, but is recommended. Use a license identifier from
3122
3141
  http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3123
- warning
3142
+ WARNING
3143
+ end
3144
+
3145
+ def test_validate_license_in_a_non_packaging_context
3146
+ util_setup_validate
3147
+
3148
+ use_ui @ui do
3149
+ @a1.licenses.clear
3150
+ @a1.validate(false)
3151
+ end
3152
+
3153
+ assert_empty @ui.error
3154
+ end
3155
+
3156
+ def test_removed_methods
3157
+ assert_equal Gem::Specification::REMOVED_METHODS, [:rubyforge_project=]
3158
+ end
3159
+
3160
+ def test_validate_removed_rubyforge_project
3161
+ util_setup_validate
3162
+
3163
+ use_ui @ui do
3164
+ @a1.rubyforge_project = 'invalid-attribute'
3165
+ @a1.validate
3166
+ end
3167
+
3168
+ assert_match "rubyforge_project= is deprecated", @ui.error
3124
3169
  end
3125
3170
 
3126
3171
  def test_validate_license_values
@@ -3131,10 +3176,10 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3131
3176
  @a1.validate
3132
3177
  end
3133
3178
 
3134
- assert_match <<-warning, @ui.error
3179
+ assert_match <<-WARNING, @ui.error
3135
3180
  WARNING: license value 'BSD' is invalid. Use a license identifier from
3136
3181
  http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3137
- warning
3182
+ WARNING
3138
3183
  end
3139
3184
 
3140
3185
  def test_validate_license_values_plus
@@ -3178,14 +3223,14 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3178
3223
  @a1.validate
3179
3224
  end
3180
3225
 
3181
- assert_match <<-warning, @ui.error
3226
+ assert_match <<-WARNING, @ui.error
3182
3227
  WARNING: license value 'GPL-2.0+ FOO' is invalid. Use a license identifier from
3183
3228
  http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3184
- warning
3185
- assert_match <<-warning, @ui.error
3229
+ WARNING
3230
+ assert_match <<-WARNING, @ui.error
3186
3231
  WARNING: license value 'GPL-2.0 FOO' is invalid. Use a license identifier from
3187
3232
  http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3188
- warning
3233
+ WARNING
3189
3234
  end
3190
3235
 
3191
3236
  def test_validate_license_with_invalid_exception
@@ -3196,10 +3241,10 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3196
3241
  @a1.validate
3197
3242
  end
3198
3243
 
3199
- assert_match <<-warning, @ui.error
3244
+ assert_match <<-WARNING, @ui.error
3200
3245
  WARNING: license value 'GPL-2.0+ WITH Autocofn-exception-2.0' is invalid. Use a license identifier from
3201
3246
  http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3202
- warning
3247
+ WARNING
3203
3248
  end
3204
3249
 
3205
3250
  def test_validate_license_gives_suggestions
@@ -3210,11 +3255,11 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3210
3255
  @a1.validate
3211
3256
  end
3212
3257
 
3213
- assert_match <<-warning, @ui.error
3258
+ assert_match <<-WARNING, @ui.error
3214
3259
  WARNING: license value 'ruby' is invalid. Use a license identifier from
3215
3260
  http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3216
3261
  Did you mean 'Ruby'?
3217
- warning
3262
+ WARNING
3218
3263
  end
3219
3264
 
3220
3265
  def test_validate_empty_files
@@ -3310,7 +3355,7 @@ Did you mean 'Ruby'?
3310
3355
  spec.validate
3311
3356
  end
3312
3357
 
3313
- assert_match %r%^#{name}%, e.message
3358
+ assert_match %r{^#{name}}, e.message
3314
3359
  end
3315
3360
  end
3316
3361
  end
@@ -3410,7 +3455,7 @@ Did you mean 'Ruby'?
3410
3455
  @a1.validate
3411
3456
  end
3412
3457
 
3413
- assert_equal %{"#{f}" or "#{t}" is not a summary}, e.message
3458
+ assert_equal %("#{f}" or "#{t}" is not a summary), e.message
3414
3459
 
3415
3460
  @a1.summary = "#{t} (describe your package)"
3416
3461
 
@@ -3418,7 +3463,7 @@ Did you mean 'Ruby'?
3418
3463
  @a1.validate
3419
3464
  end
3420
3465
 
3421
- assert_equal %{"#{f}" or "#{t}" is not a summary}, e.message
3466
+ assert_equal %("#{f}" or "#{t}" is not a summary), e.message
3422
3467
  end
3423
3468
  end
3424
3469
 
@@ -3430,7 +3475,7 @@ Did you mean 'Ruby'?
3430
3475
  @a1.validate
3431
3476
  end
3432
3477
 
3433
- assert_match 'See http://guides.rubygems.org/specification-reference/ for help', @ui.error
3478
+ assert_match 'See https://guides.rubygems.org/specification-reference/ for help', @ui.error
3434
3479
  end
3435
3480
 
3436
3481
  def test_version
@@ -3532,7 +3577,8 @@ Did you mean 'Ruby'?
3532
3577
  s.metadata = {
3533
3578
  "one" => "two",
3534
3579
  "home" => "three",
3535
- "homepage_uri" => "https://example.com/user/repo"
3580
+ "homepage_uri" => "https://example.com/user/repo",
3581
+ "funding_uri" => "https://example.com/donate"
3536
3582
  }
3537
3583
  end
3538
3584
 
@@ -3817,12 +3863,17 @@ end
3817
3863
  FileUtils.mkdir_p "test"
3818
3864
  FileUtils.mkdir_p "bin"
3819
3865
 
3820
- FileUtils.touch File.join("ext", "a", "extconf.rb")
3821
- FileUtils.touch File.join("lib", "code.rb")
3822
- FileUtils.touch File.join("test", "suite.rb")
3866
+ begin
3867
+ umask_orig = File.umask(2)
3868
+ FileUtils.touch File.join("ext", "a", "extconf.rb")
3869
+ FileUtils.touch File.join("lib", "code.rb")
3870
+ FileUtils.touch File.join("test", "suite.rb")
3823
3871
 
3824
- File.open "bin/exec", "w", 0755 do |fp|
3825
- fp.puts "#!#{Gem.ruby}"
3872
+ File.open "bin/exec", "w", 0755 do |fp|
3873
+ fp.puts "#!#{Gem.ruby}"
3874
+ end
3875
+ ensure
3876
+ File.umask(umask_orig)
3826
3877
  end
3827
3878
  end
3828
3879
  end
@@ -3876,5 +3927,4 @@ end
3876
3927
  ensure
3877
3928
  $VERBOSE = old_verbose
3878
3929
  end
3879
-
3880
3930
  end