rubygems-update 3.1.2 → 3.2.6

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 (562) hide show
  1. checksums.yaml +4 -4
  2. data/{History.txt → CHANGELOG.md} +756 -489
  3. data/CODE_OF_CONDUCT.md +55 -19
  4. data/CONTRIBUTING.md +25 -11
  5. data/Manifest.txt +75 -104
  6. data/POLICIES.md +6 -12
  7. data/README.md +5 -5
  8. data/Rakefile +64 -92
  9. data/bin/update_rubygems +1 -1
  10. data/bundler/CHANGELOG.md +1636 -1422
  11. data/bundler/README.md +6 -8
  12. data/bundler/UPGRADING.md +18 -32
  13. data/bundler/bundler.gemspec +4 -4
  14. data/bundler/exe/bundle +3 -0
  15. data/bundler/lib/bundler.rb +32 -8
  16. data/bundler/lib/bundler/build_metadata.rb +4 -12
  17. data/bundler/lib/bundler/cli.rb +55 -21
  18. data/bundler/lib/bundler/cli/add.rb +1 -1
  19. data/bundler/lib/bundler/cli/binstubs.rb +6 -2
  20. data/bundler/lib/bundler/cli/cache.rb +1 -7
  21. data/bundler/lib/bundler/cli/clean.rb +1 -1
  22. data/bundler/lib/bundler/cli/common.rb +14 -0
  23. data/bundler/lib/bundler/cli/console.rb +1 -1
  24. data/bundler/lib/bundler/cli/doctor.rb +1 -1
  25. data/bundler/lib/bundler/cli/exec.rb +4 -4
  26. data/bundler/lib/bundler/cli/fund.rb +36 -0
  27. data/bundler/lib/bundler/cli/gem.rb +86 -11
  28. data/bundler/lib/bundler/cli/info.rb +15 -4
  29. data/bundler/lib/bundler/cli/init.rb +2 -2
  30. data/bundler/lib/bundler/cli/inject.rb +1 -1
  31. data/bundler/lib/bundler/cli/install.rb +16 -13
  32. data/bundler/lib/bundler/cli/issue.rb +2 -2
  33. data/bundler/lib/bundler/cli/list.rb +12 -10
  34. data/bundler/lib/bundler/cli/outdated.rb +87 -66
  35. data/bundler/lib/bundler/cli/plugin.rb +10 -0
  36. data/bundler/lib/bundler/cli/pristine.rb +5 -0
  37. data/bundler/lib/bundler/cli/show.rb +1 -1
  38. data/bundler/lib/bundler/cli/update.rb +3 -1
  39. data/bundler/lib/bundler/compact_index_client.rb +1 -1
  40. data/bundler/lib/bundler/compact_index_client/cache.rb +6 -14
  41. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
  42. data/bundler/lib/bundler/compact_index_client/updater.rb +5 -13
  43. data/bundler/lib/bundler/definition.rb +66 -82
  44. data/bundler/lib/bundler/dep_proxy.rb +16 -9
  45. data/bundler/lib/bundler/dependency.rb +3 -10
  46. data/bundler/lib/bundler/dsl.rb +5 -9
  47. data/bundler/lib/bundler/endpoint_specification.rb +1 -1
  48. data/bundler/lib/bundler/env.rb +1 -1
  49. data/bundler/lib/bundler/environment_preserver.rb +26 -2
  50. data/bundler/lib/bundler/errors.rb +1 -0
  51. data/bundler/lib/bundler/feature_flag.rb +0 -3
  52. data/bundler/lib/bundler/fetcher.rb +4 -3
  53. data/bundler/lib/bundler/fetcher/base.rb +1 -1
  54. data/bundler/lib/bundler/fetcher/compact_index.rb +1 -1
  55. data/bundler/lib/bundler/fetcher/downloader.rb +1 -1
  56. data/bundler/lib/bundler/fetcher/index.rb +3 -4
  57. data/bundler/lib/bundler/friendly_errors.rb +22 -13
  58. data/bundler/lib/bundler/gem_helper.rb +33 -19
  59. data/bundler/lib/bundler/gem_helpers.rb +36 -25
  60. data/bundler/lib/bundler/gem_version_promoter.rb +4 -4
  61. data/bundler/lib/bundler/graph.rb +1 -1
  62. data/bundler/lib/bundler/index.rb +6 -2
  63. data/bundler/lib/bundler/injector.rb +22 -4
  64. data/bundler/lib/bundler/inline.rb +2 -2
  65. data/bundler/lib/bundler/installer.rb +35 -32
  66. data/bundler/lib/bundler/installer/gem_installer.rb +3 -3
  67. data/bundler/lib/bundler/installer/parallel_installer.rb +10 -10
  68. data/bundler/lib/bundler/installer/standalone.rb +2 -2
  69. data/bundler/lib/bundler/lazy_specification.rb +35 -11
  70. data/bundler/lib/bundler/lockfile_generator.rb +1 -1
  71. data/bundler/lib/bundler/lockfile_parser.rb +1 -1
  72. data/bundler/lib/bundler/man/.document +1 -0
  73. data/bundler/{man → lib/bundler/man}/bundle-add.1 +1 -1
  74. data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +0 -0
  75. data/bundler/{man → lib/bundler/man}/bundle-binstubs.1 +5 -3
  76. data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +2 -4
  77. data/bundler/{man → lib/bundler/man}/bundle-cache.1 +1 -1
  78. data/bundler/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +0 -0
  79. data/bundler/{man → lib/bundler/man}/bundle-check.1 +1 -1
  80. data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
  81. data/bundler/{man → lib/bundler/man}/bundle-clean.1 +1 -1
  82. data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
  83. data/bundler/{man → lib/bundler/man}/bundle-config.1 +16 -25
  84. data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +19 -30
  85. data/bundler/{man → lib/bundler/man}/bundle-doctor.1 +1 -1
  86. data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
  87. data/bundler/{man → lib/bundler/man}/bundle-exec.1 +1 -1
  88. data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +0 -0
  89. data/bundler/{man → lib/bundler/man}/bundle-gem.1 +25 -3
  90. data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
  91. data/bundler/{man → lib/bundler/man}/bundle-info.1 +1 -1
  92. data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
  93. data/bundler/{man → lib/bundler/man}/bundle-init.1 +1 -1
  94. data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +0 -0
  95. data/bundler/{man → lib/bundler/man}/bundle-inject.1 +1 -1
  96. data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
  97. data/bundler/{man → lib/bundler/man}/bundle-install.1 +30 -3
  98. data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +25 -3
  99. data/bundler/{man → lib/bundler/man}/bundle-list.1 +7 -7
  100. data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
  101. data/bundler/{man → lib/bundler/man}/bundle-lock.1 +1 -1
  102. data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
  103. data/bundler/{man → lib/bundler/man}/bundle-open.1 +1 -1
  104. data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
  105. data/bundler/{man → lib/bundler/man}/bundle-outdated.1 +1 -1
  106. data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
  107. data/bundler/{man → lib/bundler/man}/bundle-platform.1 +1 -1
  108. data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
  109. data/bundler/{man → lib/bundler/man}/bundle-pristine.1 +1 -1
  110. data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
  111. data/bundler/{man → lib/bundler/man}/bundle-remove.1 +1 -1
  112. data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
  113. data/bundler/{man → lib/bundler/man}/bundle-show.1 +1 -1
  114. data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
  115. data/bundler/{man → lib/bundler/man}/bundle-update.1 +1 -1
  116. data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +0 -0
  117. data/bundler/{man → lib/bundler/man}/bundle-viz.1 +1 -1
  118. data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
  119. data/bundler/{man → lib/bundler/man}/bundle.1 +1 -1
  120. data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +0 -0
  121. data/bundler/{man → lib/bundler/man}/gemfile.5 +4 -4
  122. data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +4 -4
  123. data/bundler/{man → lib/bundler/man}/index.txt +0 -0
  124. data/bundler/lib/bundler/mirror.rb +2 -2
  125. data/bundler/lib/bundler/plugin.rb +30 -5
  126. data/bundler/lib/bundler/plugin/api/source.rb +1 -1
  127. data/bundler/lib/bundler/plugin/dsl.rb +1 -1
  128. data/bundler/lib/bundler/plugin/index.rb +10 -1
  129. data/bundler/lib/bundler/plugin/installer.rb +1 -1
  130. data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
  131. data/bundler/lib/bundler/plugin/source_list.rb +1 -1
  132. data/bundler/lib/bundler/psyched_yaml.rb +0 -15
  133. data/bundler/lib/bundler/remote_specification.rb +5 -2
  134. data/bundler/lib/bundler/resolver.rb +43 -19
  135. data/bundler/lib/bundler/resolver/spec_group.rb +39 -24
  136. data/bundler/lib/bundler/retry.rb +1 -1
  137. data/bundler/lib/bundler/ruby_version.rb +1 -1
  138. data/bundler/lib/bundler/rubygems_ext.rb +69 -9
  139. data/bundler/lib/bundler/rubygems_gem_installer.rb +3 -9
  140. data/bundler/lib/bundler/rubygems_integration.rb +26 -61
  141. data/bundler/lib/bundler/runtime.rb +4 -14
  142. data/bundler/lib/bundler/settings.rb +49 -46
  143. data/bundler/lib/bundler/shared_helpers.rb +2 -2
  144. data/bundler/lib/bundler/similarity_detector.rb +1 -1
  145. data/bundler/lib/bundler/source.rb +1 -1
  146. data/bundler/lib/bundler/source/git.rb +23 -21
  147. data/bundler/lib/bundler/source/git/git_proxy.rb +82 -80
  148. data/bundler/lib/bundler/source/path.rb +7 -3
  149. data/bundler/lib/bundler/source/path/installer.rb +10 -10
  150. data/bundler/lib/bundler/source/rubygems.rb +23 -17
  151. data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
  152. data/bundler/lib/bundler/source_list.rb +2 -2
  153. data/bundler/lib/bundler/spec_set.rb +8 -10
  154. data/bundler/lib/bundler/stub_specification.rb +17 -7
  155. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  156. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +9 -1
  157. data/bundler/lib/bundler/templates/newgem/README.md.tt +1 -2
  158. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +19 -5
  159. data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
  160. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
  161. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
  162. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
  163. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
  164. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
  165. data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  166. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +15 -7
  167. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
  168. data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
  169. data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
  170. data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
  171. data/bundler/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
  172. data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  173. data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  174. data/bundler/lib/bundler/ui/shell.rb +5 -5
  175. data/bundler/lib/bundler/uri_credentials_filter.rb +3 -1
  176. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -1
  177. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +34 -1
  178. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
  179. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
  180. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  181. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +48 -46
  182. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +79 -208
  183. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +0 -7
  184. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
  185. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
  186. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  187. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
  188. data/bundler/lib/bundler/vendored_persistent.rb +0 -7
  189. data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
  190. data/bundler/lib/bundler/version.rb +1 -1
  191. data/bundler/lib/bundler/worker.rb +1 -1
  192. data/bundler/lib/bundler/yaml_serializer.rb +1 -1
  193. data/lib/rubygems.rb +138 -187
  194. data/lib/rubygems/available_set.rb +4 -6
  195. data/lib/rubygems/basic_specification.rb +12 -10
  196. data/lib/rubygems/bundler_version_finder.rb +14 -9
  197. data/lib/rubygems/command.rb +17 -17
  198. data/lib/rubygems/command_manager.rb +5 -6
  199. data/lib/rubygems/commands/build_command.rb +40 -20
  200. data/lib/rubygems/commands/cert_command.rb +2 -10
  201. data/lib/rubygems/commands/check_command.rb +0 -2
  202. data/lib/rubygems/commands/cleanup_command.rb +11 -7
  203. data/lib/rubygems/commands/contents_command.rb +4 -6
  204. data/lib/rubygems/commands/dependency_command.rb +6 -8
  205. data/lib/rubygems/commands/environment_command.rb +1 -3
  206. data/lib/rubygems/commands/fetch_command.rb +2 -4
  207. data/lib/rubygems/commands/generate_index_command.rb +0 -2
  208. data/lib/rubygems/commands/help_command.rb +4 -4
  209. data/lib/rubygems/commands/info_command.rb +8 -5
  210. data/lib/rubygems/commands/install_command.rb +3 -5
  211. data/lib/rubygems/commands/list_command.rb +8 -7
  212. data/lib/rubygems/commands/lock_command.rb +1 -3
  213. data/lib/rubygems/commands/mirror_command.rb +0 -2
  214. data/lib/rubygems/commands/open_command.rb +0 -4
  215. data/lib/rubygems/commands/outdated_command.rb +0 -2
  216. data/lib/rubygems/commands/owner_command.rb +9 -4
  217. data/lib/rubygems/commands/pristine_command.rb +11 -5
  218. data/lib/rubygems/commands/push_command.rb +10 -47
  219. data/lib/rubygems/commands/query_command.rb +14 -344
  220. data/lib/rubygems/commands/rdoc_command.rb +0 -2
  221. data/lib/rubygems/commands/search_command.rb +7 -7
  222. data/lib/rubygems/commands/server_command.rb +3 -1
  223. data/lib/rubygems/commands/setup_command.rb +101 -74
  224. data/lib/rubygems/commands/signin_command.rb +0 -2
  225. data/lib/rubygems/commands/signout_command.rb +0 -2
  226. data/lib/rubygems/commands/sources_command.rb +9 -7
  227. data/lib/rubygems/commands/specification_command.rb +8 -4
  228. data/lib/rubygems/commands/stale_command.rb +1 -3
  229. data/lib/rubygems/commands/uninstall_command.rb +2 -4
  230. data/lib/rubygems/commands/unpack_command.rb +1 -3
  231. data/lib/rubygems/commands/update_command.rb +59 -14
  232. data/lib/rubygems/commands/which_command.rb +0 -2
  233. data/lib/rubygems/commands/yank_command.rb +4 -7
  234. data/lib/rubygems/config_file.rb +11 -4
  235. data/lib/rubygems/core_ext/kernel_require.rb +29 -36
  236. data/lib/rubygems/core_ext/kernel_warn.rb +12 -13
  237. data/lib/rubygems/defaults.rb +101 -7
  238. data/lib/rubygems/dependency.rb +3 -8
  239. data/lib/rubygems/dependency_installer.rb +6 -78
  240. data/lib/rubygems/dependency_list.rb +7 -9
  241. data/lib/rubygems/deprecate.rb +46 -1
  242. data/lib/rubygems/doctor.rb +4 -4
  243. data/lib/rubygems/errors.rb +3 -14
  244. data/lib/rubygems/exceptions.rb +2 -33
  245. data/lib/rubygems/ext.rb +6 -6
  246. data/lib/rubygems/ext/build_error.rb +2 -0
  247. data/lib/rubygems/ext/builder.rb +21 -39
  248. data/lib/rubygems/ext/cmake_builder.rb +6 -9
  249. data/lib/rubygems/ext/configure_builder.rb +5 -8
  250. data/lib/rubygems/ext/ext_conf_builder.rb +21 -19
  251. data/lib/rubygems/ext/rake_builder.rb +4 -6
  252. data/lib/rubygems/gem_runner.rb +3 -10
  253. data/lib/rubygems/gemcutter_utilities.rb +102 -21
  254. data/lib/rubygems/indexer.rb +1 -22
  255. data/lib/rubygems/install_update_options.rb +7 -7
  256. data/lib/rubygems/installer.rb +59 -80
  257. data/lib/rubygems/installer_test_case.rb +25 -11
  258. data/lib/rubygems/installer_uninstaller_utils.rb +24 -0
  259. data/lib/rubygems/local_remote_options.rb +1 -1
  260. data/lib/rubygems/mock_gem_ui.rb +0 -6
  261. data/lib/rubygems/name_tuple.rb +3 -7
  262. data/lib/rubygems/openssl.rb +7 -0
  263. data/lib/rubygems/package.rb +14 -25
  264. data/lib/rubygems/package/digest_io.rb +0 -2
  265. data/lib/rubygems/package/file_source.rb +0 -2
  266. data/lib/rubygems/package/io_source.rb +0 -2
  267. data/lib/rubygems/package/old.rb +1 -3
  268. data/lib/rubygems/package/tar_header.rb +4 -6
  269. data/lib/rubygems/package/tar_reader.rb +0 -3
  270. data/lib/rubygems/package/tar_reader/entry.rb +0 -3
  271. data/lib/rubygems/package/tar_test_case.rb +2 -4
  272. data/lib/rubygems/package/tar_writer.rb +2 -12
  273. data/lib/rubygems/package_task.rb +1 -7
  274. data/lib/rubygems/path_support.rb +1 -3
  275. data/lib/rubygems/platform.rb +21 -16
  276. data/lib/rubygems/psych_tree.rb +0 -2
  277. data/lib/rubygems/query_utils.rb +353 -0
  278. data/lib/rubygems/rdoc.rb +0 -12
  279. data/lib/rubygems/remote_fetcher.rb +14 -29
  280. data/lib/rubygems/request.rb +4 -11
  281. data/lib/rubygems/request/connection_pools.rb +1 -5
  282. data/lib/rubygems/request/http_pool.rb +0 -2
  283. data/lib/rubygems/request/https_pool.rb +0 -2
  284. data/lib/rubygems/request_set.rb +7 -20
  285. data/lib/rubygems/request_set/gem_dependency_api.rb +6 -8
  286. data/lib/rubygems/request_set/lockfile.rb +8 -12
  287. data/lib/rubygems/request_set/lockfile/parser.rb +0 -2
  288. data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -3
  289. data/lib/rubygems/requirement.rb +21 -22
  290. data/lib/rubygems/resolver.rb +14 -12
  291. data/lib/rubygems/resolver/activation_request.rb +9 -3
  292. data/lib/rubygems/resolver/api_set.rb +31 -24
  293. data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
  294. data/lib/rubygems/resolver/api_specification.rb +24 -10
  295. data/lib/rubygems/resolver/best_set.rb +2 -4
  296. data/lib/rubygems/resolver/composed_set.rb +3 -5
  297. data/lib/rubygems/resolver/conflict.rb +2 -4
  298. data/lib/rubygems/resolver/current_set.rb +0 -2
  299. data/lib/rubygems/resolver/dependency_request.rb +1 -3
  300. data/lib/rubygems/resolver/git_set.rb +0 -2
  301. data/lib/rubygems/resolver/git_specification.rb +0 -2
  302. data/lib/rubygems/resolver/index_set.rb +1 -3
  303. data/lib/rubygems/resolver/index_specification.rb +29 -2
  304. data/lib/rubygems/resolver/installed_specification.rb +0 -2
  305. data/lib/rubygems/resolver/installer_set.rb +60 -13
  306. data/lib/rubygems/resolver/local_specification.rb +0 -2
  307. data/lib/rubygems/resolver/lock_set.rb +2 -4
  308. data/lib/rubygems/resolver/lock_specification.rb +0 -2
  309. data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
  310. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
  311. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +1 -0
  312. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +39 -5
  313. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
  314. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
  315. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
  316. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
  317. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
  318. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
  319. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
  320. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
  321. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +43 -10
  322. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +75 -7
  323. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
  324. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +1 -0
  325. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
  326. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +506 -165
  327. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
  328. data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
  329. data/lib/rubygems/resolver/requirement_list.rb +0 -2
  330. data/lib/rubygems/resolver/set.rb +0 -2
  331. data/lib/rubygems/resolver/source_set.rb +0 -2
  332. data/lib/rubygems/resolver/spec_specification.rb +14 -2
  333. data/lib/rubygems/resolver/specification.rb +13 -3
  334. data/lib/rubygems/resolver/stats.rb +0 -2
  335. data/lib/rubygems/resolver/vendor_set.rb +0 -2
  336. data/lib/rubygems/resolver/vendor_specification.rb +0 -2
  337. data/lib/rubygems/s3_uri_signer.rb +2 -8
  338. data/lib/rubygems/safe_yaml.rb +4 -4
  339. data/lib/rubygems/security.rb +27 -34
  340. data/lib/rubygems/security/policy.rb +4 -8
  341. data/lib/rubygems/security/signer.rb +5 -7
  342. data/lib/rubygems/security/trust_dir.rb +1 -3
  343. data/lib/rubygems/server.rb +16 -13
  344. data/lib/rubygems/source.rb +23 -12
  345. data/lib/rubygems/source/git.rb +7 -8
  346. data/lib/rubygems/source/installed.rb +0 -2
  347. data/lib/rubygems/source/local.rb +2 -4
  348. data/lib/rubygems/source/lock.rb +0 -2
  349. data/lib/rubygems/source/specific_file.rb +0 -2
  350. data/lib/rubygems/source/vendor.rb +0 -2
  351. data/lib/rubygems/source_list.rb +4 -7
  352. data/lib/rubygems/spec_fetcher.rb +19 -18
  353. data/lib/rubygems/specification.rb +122 -131
  354. data/lib/rubygems/specification_policy.rb +88 -30
  355. data/lib/rubygems/ssl_certs/{index.rubygems.org → rubygems.org}/GlobalSignRootCA.pem +0 -0
  356. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
  357. data/lib/rubygems/stub_specification.rb +1 -5
  358. data/lib/rubygems/syck_hack.rb +0 -2
  359. data/lib/rubygems/test_case.rb +120 -134
  360. data/lib/rubygems/test_utilities.rb +12 -19
  361. data/lib/rubygems/uninstaller.rb +35 -16
  362. data/lib/rubygems/uri_formatter.rb +2 -3
  363. data/lib/rubygems/uri_parser.rb +0 -2
  364. data/lib/rubygems/user_interaction.rb +1 -26
  365. data/lib/rubygems/util.rb +15 -3
  366. data/lib/rubygems/util/licenses.rb +4 -6
  367. data/lib/rubygems/util/list.rb +0 -2
  368. data/lib/rubygems/validator.rb +1 -3
  369. data/lib/rubygems/version.rb +5 -7
  370. data/lib/rubygems/version_option.rb +6 -0
  371. data/rubygems-update.gemspec +3 -3
  372. data/setup.rb +2 -7
  373. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  374. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
  375. data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
  376. data/test/rubygems/rubygems_plugin.rb +0 -2
  377. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
  378. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
  379. data/test/rubygems/test_bundled_ca.rb +42 -45
  380. data/test/rubygems/test_config.rb +0 -2
  381. data/test/rubygems/test_deprecate.rb +40 -7
  382. data/test/rubygems/test_gem.rb +156 -99
  383. data/test/rubygems/test_gem_available_set.rb +3 -5
  384. data/test/rubygems/test_gem_bundler_version_finder.rb +19 -3
  385. data/test/rubygems/test_gem_command.rb +24 -7
  386. data/test/rubygems/test_gem_command_manager.rb +36 -5
  387. data/test/rubygems/test_gem_commands_build_command.rb +250 -15
  388. data/test/rubygems/test_gem_commands_cert_command.rb +4 -6
  389. data/test/rubygems/test_gem_commands_check_command.rb +0 -2
  390. data/test/rubygems/test_gem_commands_cleanup_command.rb +14 -5
  391. data/test/rubygems/test_gem_commands_contents_command.rb +50 -19
  392. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -2
  393. data/test/rubygems/test_gem_commands_environment_command.rb +21 -23
  394. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -2
  395. data/test/rubygems/test_gem_commands_generate_index_command.rb +1 -7
  396. data/test/rubygems/test_gem_commands_help_command.rb +15 -4
  397. data/test/rubygems/test_gem_commands_info_command.rb +6 -8
  398. data/test/rubygems/test_gem_commands_install_command.rb +163 -34
  399. data/test/rubygems/test_gem_commands_list_command.rb +0 -2
  400. data/test/rubygems/test_gem_commands_lock_command.rb +0 -2
  401. data/test/rubygems/test_gem_commands_mirror.rb +1 -3
  402. data/test/rubygems/test_gem_commands_open_command.rb +4 -6
  403. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -2
  404. data/test/rubygems/test_gem_commands_owner_command.rb +59 -5
  405. data/test/rubygems/test_gem_commands_pristine_command.rb +43 -12
  406. data/test/rubygems/test_gem_commands_push_command.rb +77 -9
  407. data/test/rubygems/test_gem_commands_query_command.rb +12 -12
  408. data/test/rubygems/test_gem_commands_search_command.rb +0 -2
  409. data/test/rubygems/test_gem_commands_server_command.rb +0 -2
  410. data/test/rubygems/test_gem_commands_setup_command.rb +160 -135
  411. data/test/rubygems/test_gem_commands_signin_command.rb +33 -9
  412. data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
  413. data/test/rubygems/test_gem_commands_sources_command.rb +99 -3
  414. data/test/rubygems/test_gem_commands_specification_command.rb +46 -20
  415. data/test/rubygems/test_gem_commands_stale_command.rb +0 -2
  416. data/test/rubygems/test_gem_commands_uninstall_command.rb +2 -3
  417. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -2
  418. data/test/rubygems/test_gem_commands_update_command.rb +116 -7
  419. data/test/rubygems/test_gem_commands_which_command.rb +3 -5
  420. data/test/rubygems/test_gem_commands_yank_command.rb +44 -8
  421. data/test/rubygems/test_gem_config_file.rb +7 -12
  422. data/test/rubygems/test_gem_dependency.rb +0 -2
  423. data/test/rubygems/test_gem_dependency_installer.rb +116 -239
  424. data/test/rubygems/test_gem_dependency_list.rb +10 -12
  425. data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -3
  426. data/test/rubygems/test_gem_doctor.rb +28 -2
  427. data/test/rubygems/test_gem_ext_builder.rb +50 -47
  428. data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -25
  429. data/test/rubygems/test_gem_ext_configure_builder.rb +6 -22
  430. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +9 -29
  431. data/test/rubygems/test_gem_ext_rake_builder.rb +39 -24
  432. data/test/rubygems/test_gem_gem_runner.rb +44 -1
  433. data/test/rubygems/test_gem_gemcutter_utilities.rb +8 -5
  434. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -2
  435. data/test/rubygems/test_gem_indexer.rb +9 -15
  436. data/test/rubygems/test_gem_install_update_options.rb +14 -4
  437. data/test/rubygems/test_gem_installer.rb +258 -115
  438. data/test/rubygems/test_gem_local_remote_options.rb +0 -2
  439. data/test/rubygems/test_gem_name_tuple.rb +0 -2
  440. data/test/rubygems/test_gem_package.rb +41 -39
  441. data/test/rubygems/test_gem_package_old.rb +4 -6
  442. data/test/rubygems/test_gem_package_tar_header.rb +18 -1
  443. data/test/rubygems/test_gem_package_tar_reader.rb +0 -2
  444. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -2
  445. data/test/rubygems/test_gem_package_tar_writer.rb +9 -6
  446. data/test/rubygems/test_gem_package_task.rb +46 -13
  447. data/test/rubygems/test_gem_path_support.rb +0 -2
  448. data/test/rubygems/test_gem_platform.rb +71 -6
  449. data/test/rubygems/test_gem_rdoc.rb +0 -2
  450. data/test/rubygems/test_gem_remote_fetcher.rb +169 -212
  451. data/test/rubygems/test_gem_request.rb +13 -17
  452. data/test/rubygems/test_gem_request_connection_pools.rb +0 -4
  453. data/test/rubygems/test_gem_request_set.rb +72 -22
  454. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +3 -5
  455. data/test/rubygems/test_gem_request_set_lockfile.rb +4 -6
  456. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -11
  457. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -120
  458. data/test/rubygems/test_gem_requirement.rb +43 -3
  459. data/test/rubygems/test_gem_resolver.rb +6 -8
  460. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -2
  461. data/test/rubygems/test_gem_resolver_api_set.rb +60 -59
  462. data/test/rubygems/test_gem_resolver_api_specification.rb +3 -5
  463. data/test/rubygems/test_gem_resolver_best_set.rb +27 -6
  464. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -2
  465. data/test/rubygems/test_gem_resolver_conflict.rb +1 -3
  466. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -2
  467. data/test/rubygems/test_gem_resolver_git_set.rb +0 -2
  468. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -2
  469. data/test/rubygems/test_gem_resolver_index_set.rb +2 -4
  470. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -2
  471. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -2
  472. data/test/rubygems/test_gem_resolver_installer_set.rb +7 -9
  473. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -2
  474. data/test/rubygems/test_gem_resolver_lock_set.rb +3 -5
  475. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -2
  476. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -2
  477. data/test/rubygems/test_gem_resolver_specification.rb +0 -4
  478. data/test/rubygems/test_gem_resolver_vendor_set.rb +1 -3
  479. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -2
  480. data/test/rubygems/test_gem_security.rb +22 -24
  481. data/test/rubygems/test_gem_security_policy.rb +7 -12
  482. data/test/rubygems/test_gem_security_signer.rb +10 -12
  483. data/test/rubygems/test_gem_security_trust_dir.rb +4 -6
  484. data/test/rubygems/test_gem_server.rb +10 -14
  485. data/test/rubygems/test_gem_silent_ui.rb +0 -2
  486. data/test/rubygems/test_gem_source.rb +19 -18
  487. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -2
  488. data/test/rubygems/test_gem_source_git.rb +12 -13
  489. data/test/rubygems/test_gem_source_installed.rb +7 -9
  490. data/test/rubygems/test_gem_source_list.rb +1 -2
  491. data/test/rubygems/test_gem_source_local.rb +8 -10
  492. data/test/rubygems/test_gem_source_lock.rb +10 -12
  493. data/test/rubygems/test_gem_source_specific_file.rb +7 -9
  494. data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
  495. data/test/rubygems/test_gem_source_vendor.rb +7 -9
  496. data/test/rubygems/test_gem_spec_fetcher.rb +11 -4
  497. data/test/rubygems/test_gem_specification.rb +188 -131
  498. data/test/rubygems/test_gem_stream_ui.rb +3 -3
  499. data/test/rubygems/test_gem_stub_specification.rb +4 -7
  500. data/test/rubygems/test_gem_text.rb +1 -3
  501. data/test/rubygems/test_gem_uninstaller.rb +134 -12
  502. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -2
  503. data/test/rubygems/test_gem_uri_formatter.rb +0 -2
  504. data/test/rubygems/test_gem_util.rb +7 -7
  505. data/test/rubygems/test_gem_validator.rb +1 -3
  506. data/test/rubygems/test_gem_version.rb +1 -3
  507. data/test/rubygems/test_gem_version_option.rb +1 -3
  508. data/test/rubygems/test_kernel.rb +25 -10
  509. data/test/rubygems/test_project_sanity.rb +7 -2
  510. data/test/rubygems/test_remote_fetch_error.rb +0 -2
  511. data/test/rubygems/test_require.rb +291 -56
  512. data/test/test_changelog_generator.rb +17 -0
  513. metadata +79 -133
  514. data/.bundle/config +0 -2
  515. data/.rubocop.yml +0 -91
  516. data/Gemfile +0 -8
  517. data/Gemfile.lock +0 -43
  518. data/bundler/CODE_OF_CONDUCT.md +0 -136
  519. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
  520. data/bundler/man/bundle-add.1.txt +0 -58
  521. data/bundler/man/bundle-binstubs.1.txt +0 -48
  522. data/bundler/man/bundle-cache.1.txt +0 -78
  523. data/bundler/man/bundle-check.1.txt +0 -33
  524. data/bundler/man/bundle-clean.1.txt +0 -26
  525. data/bundler/man/bundle-config.1.txt +0 -528
  526. data/bundler/man/bundle-doctor.1.txt +0 -44
  527. data/bundler/man/bundle-exec.1.txt +0 -178
  528. data/bundler/man/bundle-gem.1.txt +0 -91
  529. data/bundler/man/bundle-info.1.txt +0 -21
  530. data/bundler/man/bundle-init.1.txt +0 -34
  531. data/bundler/man/bundle-inject.1.txt +0 -32
  532. data/bundler/man/bundle-install.1.txt +0 -401
  533. data/bundler/man/bundle-list.1.txt +0 -43
  534. data/bundler/man/bundle-lock.1.txt +0 -93
  535. data/bundler/man/bundle-open.1.txt +0 -29
  536. data/bundler/man/bundle-outdated.1.txt +0 -131
  537. data/bundler/man/bundle-platform.1.txt +0 -57
  538. data/bundler/man/bundle-pristine.1.txt +0 -44
  539. data/bundler/man/bundle-remove.1.txt +0 -34
  540. data/bundler/man/bundle-show.1.txt +0 -27
  541. data/bundler/man/bundle-update.1.txt +0 -390
  542. data/bundler/man/bundle-viz.1.txt +0 -39
  543. data/bundler/man/bundle.1.txt +0 -116
  544. data/bundler/man/gemfile.5.txt +0 -649
  545. data/lib/rubygems/source_local.rb +0 -7
  546. data/lib/rubygems/source_specific_file.rb +0 -6
  547. data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  548. data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
  549. data/lib/ubygems.rb +0 -14
  550. data/tmp/.keep +0 -0
  551. data/util/CL2notes +0 -55
  552. data/util/bisect +0 -10
  553. data/util/ci.sh +0 -62
  554. data/util/cops/deprecations.rb +0 -52
  555. data/util/create_certs.rb +0 -171
  556. data/util/create_certs.sh +0 -27
  557. data/util/create_encrypted_key.rb +0 -16
  558. data/util/generate_spdx_license_list.rb +0 -63
  559. data/util/patch_with_prs.rb +0 -77
  560. data/util/rubocop +0 -8
  561. data/util/update_bundled_ca_certificates.rb +0 -139
  562. data/util/update_changelog.rb +0 -67
@@ -2,7 +2,6 @@
2
2
  require 'rubygems/test_case'
3
3
 
4
4
  class TestGemSourceFetchProblem < Gem::TestCase
5
-
6
5
  def test_exception
7
6
  source = Gem::Source.new @gem_repo
8
7
  error = RuntimeError.new 'test'
@@ -24,5 +23,4 @@ class TestGemSourceFetchProblem < Gem::TestCase
24
23
 
25
24
  refute_match sf.wordy, 'secret'
26
25
  end
27
-
28
26
  end
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/source'
4
4
 
5
5
  class TestGemSourceGit < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
9
8
 
@@ -69,8 +68,9 @@ class TestGemSourceGit < Gem::TestCase
69
68
  git_gem 'b'
70
69
 
71
70
  Dir.chdir 'git/a' do
72
- Gem::Util.silent_system @git, 'submodule', '--quiet',
73
- 'add', File.expand_path('../b'), 'b'
71
+ output, status = Open3.capture2e(@git, 'submodule', '--quiet', 'add', File.expand_path('../b'), 'b')
72
+ assert status.success?, output
73
+
74
74
  system @git, 'commit', '--quiet', '-m', 'add submodule b'
75
75
  end
76
76
 
@@ -187,7 +187,7 @@ class TestGemSourceGit < Gem::TestCase
187
187
  source.cache
188
188
 
189
189
  e = assert_raises Gem::Exception do
190
- capture_subprocess_io {source.rev_parse}
190
+ capture_subprocess_io { source.rev_parse }
191
191
  end
192
192
 
193
193
  assert_equal "unable to find reference nonexistent in #{@repository}",
@@ -208,16 +208,16 @@ class TestGemSourceGit < Gem::TestCase
208
208
  installed = Gem::Source::Installed.new
209
209
  vendor = Gem::Source::Vendor.new 'vendor/foo'
210
210
 
211
- assert_equal(0, git. <=>(git), 'git <=> git')
211
+ assert_equal(0, git.<=>(git), 'git <=> git')
212
212
 
213
- assert_equal(1, git. <=>(remote), 'git <=> remote')
214
- assert_equal(-1, remote. <=>(git), 'remote <=> git')
213
+ assert_equal(1, git.<=>(remote), 'git <=> remote')
214
+ assert_equal(-1, remote.<=>(git), 'remote <=> git')
215
215
 
216
- assert_equal(1, git. <=>(installed), 'git <=> installed')
217
- assert_equal(-1, installed.<=>(git), 'installed <=> git')
216
+ assert_equal(1, git.<=>(installed), 'git <=> installed')
217
+ assert_equal(-1, installed.<=>(git), 'installed <=> git')
218
218
 
219
- assert_equal(-1, git. <=>(vendor), 'git <=> vendor')
220
- assert_equal(1, vendor. <=>(git), 'vendor <=> git')
219
+ assert_equal(-1, git.<=>(vendor), 'git <=> vendor')
220
+ assert_equal(1, vendor.<=>(git), 'vendor <=> git')
221
221
  end
222
222
 
223
223
  def test_specs
@@ -244,7 +244,7 @@ class TestGemSourceGit < Gem::TestCase
244
244
  specs = source.specs
245
245
  end
246
246
 
247
- assert_equal %w[a-1 b-1], specs.map { |spec| spec.full_name }
247
+ assert_equal %w[a-1 b-1], specs.map {|spec| spec.full_name }
248
248
 
249
249
  a_spec = specs.shift
250
250
 
@@ -299,5 +299,4 @@ class TestGemSourceGit < Gem::TestCase
299
299
  assert_equal '291c4caac7feba8bb64c297987028acb3dde6cfe',
300
300
  source.uri_hash
301
301
  end
302
-
303
302
  end
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/source'
4
4
 
5
5
  class TestGemSourceInstalled < Gem::TestCase
6
-
7
6
  def test_spaceship
8
7
  a1 = quick_gem 'a', '1'
9
8
  util_build_gem a1
@@ -17,20 +16,19 @@ class TestGemSourceInstalled < Gem::TestCase
17
16
 
18
17
  assert_equal(0, installed.<=>(installed), 'installed <=> installed')
19
18
 
20
- assert_equal(-1, remote. <=>(installed), 'remote <=> installed')
19
+ assert_equal(-1, remote.<=>(installed), 'remote <=> installed')
21
20
  assert_equal(1, installed.<=>(remote), 'installed <=> remote')
22
21
 
23
22
  assert_equal(1, installed.<=>(local), 'installed <=> local')
24
- assert_equal(-1, local. <=>(installed), 'local <=> installed')
23
+ assert_equal(-1, local.<=>(installed), 'local <=> installed')
25
24
 
26
- assert_equal(-1, specific. <=>(installed), 'specific <=> installed')
25
+ assert_equal(-1, specific.<=>(installed), 'specific <=> installed')
27
26
  assert_equal(1, installed.<=>(specific), 'installed <=> specific')
28
27
 
29
- assert_equal(1, git. <=>(installed), 'git <=> installed')
30
- assert_equal(-1, installed.<=>(git), 'installed <=> git')
28
+ assert_equal(1, git. <=>(installed), 'git <=> installed')
29
+ assert_equal(-1, installed.<=>(git), 'installed <=> git')
31
30
 
32
- assert_equal(1, vendor. <=>(installed), 'vendor <=> installed')
33
- assert_equal(-1, installed.<=>(vendor), 'installed <=> vendor')
31
+ assert_equal(1, vendor.<=>(installed), 'vendor <=> installed')
32
+ assert_equal(-1, installed.<=>(vendor), 'installed <=> vendor')
34
33
  end
35
-
36
34
  end
@@ -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
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+ require 'rubygems/test_case'
3
+ require 'rubygems/source'
4
+
5
+ class TestGemSourceSubpathProblem < Gem::TestCase
6
+ def tuple(*args)
7
+ Gem::NameTuple.new(*args)
8
+ end
9
+
10
+ def setup
11
+ super
12
+
13
+ @gem_repo = "http://gems.example.com/private"
14
+
15
+ spec_fetcher
16
+
17
+ @source = Gem::Source.new(@gem_repo)
18
+
19
+ util_make_gems
20
+ end
21
+
22
+ def test_dependency_resolver_set
23
+ response = Net::HTTPResponse.new '1.1', 200, 'OK'
24
+ response.uri = URI('http://example')
25
+
26
+ @fetcher.data["#{@gem_repo}/"] = response
27
+
28
+ set = @source.dependency_resolver_set
29
+
30
+ assert_kind_of Gem::Resolver::APISet, set
31
+ end
32
+
33
+ def test_fetch_spec
34
+ @fetcher.data["#{@gem_repo}/#{Gem::MARSHAL_SPEC_DIR}#{@a1.spec_name}.rz"] = Zlib::Deflate.deflate(Marshal.dump(@a1))
35
+
36
+ spec = @source.fetch_spec tuple('a', Gem::Version.new(1), 'ruby')
37
+ assert_equal @a1.full_name, spec.full_name
38
+ end
39
+
40
+ def test_load_specs
41
+ @fetcher.data["#{@gem_repo}/latest_specs.#{Gem.marshal_version}.gz"] = util_gzip(Marshal.dump([
42
+ Gem::NameTuple.new(@a1.name, @a1.version, 'ruby'),
43
+ Gem::NameTuple.new(@b2.name, @b2.version, 'ruby'),
44
+ ]))
45
+
46
+ released = @source.load_specs(:latest).map {|spec| spec.full_name }
47
+ assert_equal %W[a-1 b-2], released
48
+ end
49
+ 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
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  require 'benchmark'
3
3
  require 'rubygems/test_case'
4
+ require 'date'
4
5
  require 'pathname'
5
6
  require 'stringio'
6
7
  require 'rubygems/ext'
@@ -9,7 +10,6 @@ require 'rubygems/installer'
9
10
  require 'rubygems/platform'
10
11
 
11
12
  class TestGemSpecification < Gem::TestCase
12
-
13
13
  LEGACY_YAML_SPEC = <<-EOF.freeze
14
14
  --- !ruby/object:Gem::Specification
15
15
  rubygems_version: "1.0"
@@ -83,6 +83,11 @@ end
83
83
  def setup
84
84
  super
85
85
 
86
+ # Setting `@default_source_date_epoch` to `nil` effectively resets the
87
+ # value used for `Gem.source_date_epoch` whenever `$SOURCE_DATE_EPOCH`
88
+ # is not set.
89
+ Gem.instance_variable_set(:'@default_source_date_epoch', nil)
90
+
86
91
  @a1 = util_spec 'a', '1' do |s|
87
92
  s.executable = 'exec'
88
93
  s.test_file = 'test/suite.rb'
@@ -135,12 +140,12 @@ end
135
140
  install_specs c1, c2, b1, b2, a1
136
141
 
137
142
  a1.activate
138
- assert_equal %w(a-1), loaded_spec_names
143
+ assert_equal %w[a-1], loaded_spec_names
139
144
  assert_equal ["b (> 0)"], unresolved_names
140
145
 
141
146
  require "d#{$$}"
142
147
 
143
- assert_equal %w(a-1 b-2 c-2), loaded_spec_names
148
+ assert_equal %w[a-1 b-2 c-2], loaded_spec_names
144
149
  assert_equal [], unresolved_names
145
150
  end
146
151
  end
@@ -182,12 +187,12 @@ end
182
187
  install_specs c1, c2, b1, b2, a1
183
188
 
184
189
  a1.activate
185
- assert_equal %w(a-1), loaded_spec_names
190
+ assert_equal %w[a-1], loaded_spec_names
186
191
  assert_equal ["b (> 0)"], unresolved_names
187
192
 
188
193
  require "d#{$$}"
189
194
 
190
- assert_equal %w(a-1 b-2 c-2), loaded_spec_names
195
+ assert_equal %w[a-1 b-2 c-2], loaded_spec_names
191
196
  assert_equal [], unresolved_names
192
197
  end
193
198
  end
@@ -204,12 +209,12 @@ end
204
209
  install_specs c1, b1, a1, a2, c2, b2
205
210
 
206
211
  a2.activate
207
- assert_equal %w(a-2), loaded_spec_names
212
+ assert_equal %w[a-2], loaded_spec_names
208
213
  assert_equal ["b (> 0)"], unresolved_names
209
214
 
210
215
  require "d#{$$}"
211
216
 
212
- assert_equal %w(a-2 b-1 c-1), loaded_spec_names
217
+ assert_equal %w[a-2 b-1 c-1], loaded_spec_names
213
218
  assert_equal [], unresolved_names
214
219
  end
215
220
  end
@@ -226,12 +231,12 @@ end
226
231
  install_specs d1, c1, c2, b1, b2, a1
227
232
 
228
233
  a1.activate
229
- assert_equal %w(a-1), loaded_spec_names
234
+ assert_equal %w[a-1], loaded_spec_names
230
235
  assert_equal ["b (> 0)"], unresolved_names
231
236
 
232
237
  require "d#{$$}"
233
238
 
234
- assert_equal %w(a-1 d-1), loaded_spec_names
239
+ assert_equal %w[a-1 d-1], loaded_spec_names
235
240
  assert_equal ["b (> 0)"], unresolved_names
236
241
  end
237
242
  end
@@ -241,7 +246,7 @@ end
241
246
  a1 = util_spec "a", "1", "b" => "> 0"
242
247
  b1 = util_spec "b", "1", "c" => ">= 0" # unresolved
243
248
  b2 = util_spec "b", "2", "c" => ">= 0"
244
- c1 = util_spec "c", "1", nil, "lib/c#{$$}.rb" # 1st level
249
+ c1 = util_spec "c", "1", nil, "lib/c#{$$}.rb" # 1st level
245
250
  c2 = util_spec "c", "2", nil, "lib/c#{$$}.rb"
246
251
 
247
252
  install_specs c1, c2, b1, b2, a1
@@ -250,7 +255,7 @@ end
250
255
 
251
256
  require "c#{$$}"
252
257
 
253
- assert_equal %w(a-1 b-2 c-2), loaded_spec_names
258
+ assert_equal %w[a-1 b-2 c-2], loaded_spec_names
254
259
  end
255
260
  end
256
261
 
@@ -259,7 +264,7 @@ end
259
264
  a1 = util_spec "a", "1", "b" => "> 0"
260
265
  b1 = util_spec "b", "1", "c" => ">= 0" # unresolved
261
266
  b2 = util_spec "b", "2", "c" => ">= 0"
262
- c1 = util_spec "c", "1", "d" => ">= 0" # 1st level
267
+ c1 = util_spec "c", "1", "d" => ">= 0" # 1st level
263
268
  c2 = util_spec "c", "2", "d" => ">= 0"
264
269
  d1 = util_spec "d", "1", nil, "lib/d#{$$}.rb" # 2nd level
265
270
  d2 = util_spec "d", "2", nil, "lib/d#{$$}.rb"
@@ -270,7 +275,7 @@ end
270
275
 
271
276
  require "d#{$$}"
272
277
 
273
- assert_equal %w(a-1 b-2 c-2 d-2), loaded_spec_names
278
+ assert_equal %w[a-1 b-2 c-2 d-2], loaded_spec_names
274
279
  end
275
280
  end
276
281
 
@@ -291,7 +296,7 @@ end
291
296
 
292
297
  require "d#{$$}"
293
298
 
294
- assert_equal %w(a-1 b-2 c-2 d-2), loaded_spec_names
299
+ assert_equal %w[a-1 b-2 c-2 d-2], loaded_spec_names
295
300
  end
296
301
  end
297
302
 
@@ -313,7 +318,7 @@ end
313
318
 
314
319
  require "d#{$$}"
315
320
 
316
- assert_equal %w(a-1 b-2 c-2 d-2), loaded_spec_names
321
+ assert_equal %w[a-1 b-2 c-2 d-2], loaded_spec_names
317
322
  end
318
323
  end
319
324
 
@@ -331,12 +336,12 @@ end
331
336
  install_specs c1, c2, c3, b1, b2, a1, a2, base
332
337
 
333
338
  base.activate
334
- assert_equal %w(0-1), loaded_spec_names
339
+ assert_equal %w[0-1], loaded_spec_names
335
340
  assert_equal ["A (>= 1)"], unresolved_names
336
341
 
337
342
  require "d#{$$}"
338
343
 
339
- assert_equal %w(0-1 A-2 b-2 c-2), loaded_spec_names
344
+ assert_equal %w[0-1 A-2 b-2 c-2], loaded_spec_names
340
345
  assert_equal [], unresolved_names
341
346
  end
342
347
  end
@@ -359,7 +364,7 @@ end
359
364
 
360
365
  require "d#{$$}"
361
366
 
362
- assert_includes [%w(a-1 b-2 c-3 d-2),%w(a-1 b-2 d-2)], loaded_spec_names
367
+ assert_includes [%w[a-1 b-2 c-3 d-2],%w[a-1 b-2 d-2]], loaded_spec_names
363
368
  end
364
369
  end
365
370
 
@@ -381,7 +386,7 @@ end
381
386
 
382
387
  require "d#{$$}"
383
388
 
384
- assert_includes [%w(a-1 b-2 d-2 xc-3), %w(a-1 b-2 d-2)], loaded_spec_names
389
+ assert_includes [%w[a-1 b-2 d-2 xc-3], %w[a-1 b-2 d-2]], loaded_spec_names
385
390
  end
386
391
  end
387
392
 
@@ -510,16 +515,16 @@ end
510
515
  require "b/c"
511
516
  end
512
517
 
513
- assert_equal %w(a-1 b-1), loaded_spec_names
518
+ assert_equal %w[a-1 b-1], loaded_spec_names
514
519
  end
515
520
 
516
521
  def test_self_activate_via_require_wtf
517
522
  save_loaded_features do
518
- a1 = util_spec "a", "1", "b" => "> 0", "d" => "> 0" # this
523
+ a1 = util_spec "a", "1", "b" => "> 0", "d" => "> 0" # this
519
524
  b1 = util_spec "b", "1", { "c" => ">= 1" }, "lib/b#{$$}.rb"
520
525
  b2 = util_spec "b", "2", { "c" => ">= 2" }, "lib/b#{$$}.rb" # this
521
526
  c1 = util_spec "c", "1"
522
- c2 = util_spec "c", "2" # this
527
+ c2 = util_spec "c", "2" # this
523
528
  d1 = util_spec "d", "1", { "c" => "< 2" }, "lib/d#{$$}.rb"
524
529
  d2 = util_spec "d", "2", { "c" => "< 2" }, "lib/d#{$$}.rb" # this
525
530
 
@@ -527,7 +532,7 @@ end
527
532
 
528
533
  a1.activate
529
534
 
530
- assert_equal %w(a-1), loaded_spec_names
535
+ assert_equal %w[a-1], loaded_spec_names
531
536
  assert_equal ["b (> 0)", "d (> 0)"], unresolved_names
532
537
 
533
538
  require "b#{$$}"
@@ -538,7 +543,7 @@ end
538
543
 
539
544
  assert_equal "unable to find a version of 'd' to activate", e.message
540
545
 
541
- assert_equal %w(a-1 b-2 c-2), loaded_spec_names
546
+ assert_equal %w[a-1 b-2 c-2], loaded_spec_names
542
547
  assert_equal ["d (> 0)"], unresolved_names
543
548
  end
544
549
  end
@@ -553,7 +558,7 @@ end
553
558
  install_specs c1, c2, b1, b2, a1
554
559
 
555
560
  a1.activate
556
- assert_equal %w(a-1 b-1 c-1), loaded_spec_names
561
+ assert_equal %w[a-1 b-1 c-1], loaded_spec_names
557
562
  end
558
563
 
559
564
  def test_self_activate_loaded
@@ -715,7 +720,7 @@ end
715
720
  version
716
721
  ]
717
722
 
718
- actual_value = Gem::Specification.attribute_names.map { |a| a.to_s }.sort
723
+ actual_value = Gem::Specification.attribute_names.map {|a| a.to_s }.sort
719
724
 
720
725
  assert_equal expected_value, actual_value
721
726
  end
@@ -790,7 +795,7 @@ bindir:
790
795
  op = spec.dependencies.first.requirement.requirements.first.first
791
796
  refute_kind_of YAML::Syck::DefaultKey, op
792
797
 
793
- refute_match %r%DefaultKey%, spec.to_ruby
798
+ refute_match %r{DefaultKey}, spec.to_ruby
794
799
  end
795
800
 
796
801
  def test_self_from_yaml_cleans_up_defaultkey
@@ -824,7 +829,7 @@ bindir:
824
829
  op = spec.dependencies.first.requirement.requirements.first.first
825
830
  refute_kind_of YAML::Syck::DefaultKey, op
826
831
 
827
- refute_match %r%DefaultKey%, spec.to_ruby
832
+ refute_match %r{DefaultKey}, spec.to_ruby
828
833
  end
829
834
 
830
835
  def test_self_from_yaml_cleans_up_defaultkey_from_newer_192
@@ -858,7 +863,7 @@ bindir:
858
863
  op = spec.dependencies.first.requirement.requirements.first.first
859
864
  refute_kind_of YAML::Syck::DefaultKey, op
860
865
 
861
- refute_match %r%DefaultKey%, spec.to_ruby
866
+ refute_match %r{DefaultKey}, spec.to_ruby
862
867
  end
863
868
 
864
869
  def test_self_from_yaml_cleans_up_Date_objects
@@ -939,7 +944,7 @@ dependencies: []
939
944
  assert_equal File.join(@tempdir, 'a-2.gemspec'), spec.loaded_from
940
945
  end
941
946
 
942
- if RUBY_VERSION < '2.7'
947
+ if RUBY_ENGINE == 'ruby' and RUBY_VERSION < '2.7'
943
948
  def test_self_load_tainted
944
949
  full_path = @a2.spec_file
945
950
  write_file full_path do |io|
@@ -1108,13 +1113,13 @@ dependencies: []
1108
1113
  install_specs @a1
1109
1114
 
1110
1115
  assert_includes Gem::Specification.all_names, 'a-1'
1111
- assert_includes Gem::Specification.stubs.map { |s| s.full_name }, 'a-1'
1116
+ assert_includes Gem::Specification.stubs.map {|s| s.full_name }, 'a-1'
1112
1117
 
1113
1118
  uninstall_gem @a1
1114
1119
  Gem::Specification.reset
1115
1120
 
1116
1121
  refute_includes Gem::Specification.all_names, 'a-1'
1117
- refute_includes Gem::Specification.stubs.map { |s| s.full_name }, 'a-1'
1122
+ refute_includes Gem::Specification.stubs.map {|s| s.full_name }, 'a-1'
1118
1123
  end
1119
1124
 
1120
1125
  def test_self_remove_spec_removed
@@ -1129,49 +1134,39 @@ dependencies: []
1129
1134
  Gem::Specification.reset
1130
1135
 
1131
1136
  refute_includes Gem::Specification.all_names, 'a-1'
1132
- refute_includes Gem::Specification.stubs.map { |s| s.full_name }, 'a-1'
1137
+ refute_includes Gem::Specification.stubs.map {|s| s.full_name }, 'a-1'
1133
1138
  end
1134
1139
 
1135
- def test_self_stubs
1140
+ def test_self_stubs_for_lazy_loading
1136
1141
  Gem.loaded_specs.clear
1137
1142
  Gem::Specification.class_variable_set(:@@stubs, nil)
1138
1143
 
1139
1144
  dir_standard_specs = File.join Gem.dir, 'specifications'
1140
- dir_default_specs = Gem.default_specifications_dir
1141
1145
 
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
1146
+ save_gemspec('a-1', '1', dir_standard_specs){|s| s.name = 'a' }
1147
+ save_gemspec('b-1', '1', dir_standard_specs){|s| s.name = 'b' }
1147
1148
 
1148
- full_names = ['a-3', 'a-2', 'a-1']
1149
- assert_equal full_names, Gem::Specification.stubs.map { |s| s.full_name }
1149
+ assert_equal ['a-1'], Gem::Specification.stubs_for('a').map {|s| s.full_name }
1150
+ assert_equal 1, Gem::Specification.class_variable_get(:@@stubs_by_name).length
1151
+ assert_equal ['b-1'], Gem::Specification.stubs_for('b').map {|s| s.full_name }
1152
+ assert_equal 2, Gem::Specification.class_variable_get(:@@stubs_by_name).length
1153
+
1154
+ assert_equal(
1155
+ Gem::Specification.stubs_for('a').map {|s| s.object_id },
1156
+ Gem::Specification.stubs_for('a').map {|s| s.object_id }
1157
+ )
1150
1158
 
1151
1159
  Gem.loaded_specs.delete 'a'
1160
+ Gem.loaded_specs.delete 'b'
1152
1161
  Gem::Specification.class_variable_set(:@@stubs, nil)
1153
1162
  end
1154
1163
 
1155
- def test_self_stubs_for
1156
- Gem.loaded_specs.clear
1157
- Gem::Specification.class_variable_set(:@@stubs, nil)
1158
-
1159
- 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' }
1164
+ def test_self_stubs_for_no_lazy_loading_after_all_specs_setup
1165
+ Gem::Specification.all = [util_spec('a', '1')]
1167
1166
 
1168
- full_names = ['a-3', 'a-2', 'a-1']
1167
+ save_gemspec('b-1', '1', File.join(Gem.dir, 'specifications')){|s| s.name = 'b' }
1169
1168
 
1170
- assert_equal full_names, Gem::Specification.stubs_for('a').map { |s| s.full_name }
1171
- assert_equal 1, Gem::Specification.class_variable_get(:@@stubs_by_name).length
1172
-
1173
- Gem.loaded_specs.delete 'a'
1174
- Gem::Specification.class_variable_set(:@@stubs, nil)
1169
+ assert_equal [], Gem::Specification.stubs_for('b').map {|s| s.full_name }
1175
1170
  end
1176
1171
 
1177
1172
  def test_self_stubs_for_mult_platforms
@@ -1182,7 +1177,7 @@ dependencies: []
1182
1177
 
1183
1178
  # create user spec
1184
1179
  user_spec_dir = File.join Gem.user_dir, 'specifications'
1185
- FileUtils.mkdir_p(user_spec_dir) unless Dir.exist? user_spec_dir
1180
+ FileUtils.mkdir_p(user_spec_dir) unless Dir.exist? user_spec_dir
1186
1181
  # dirs doesn't include user ?
1187
1182
  Gem::Specification.dirs << user_spec_dir
1188
1183
 
@@ -1192,7 +1187,7 @@ dependencies: []
1192
1187
 
1193
1188
  #create specs
1194
1189
  platforms.each do |plat|
1195
- spec = Gem::Specification.new(gem, v) { |s| s.platform = plat }
1190
+ spec = Gem::Specification.new(gem, v) {|s| s.platform = plat }
1196
1191
  File.open File.join(user_spec_dir, "#{gem}-#{v}-#{plat}.gemspec"), 'w' do |io|
1197
1192
  io.write spec.to_ruby
1198
1193
  end
@@ -1213,10 +1208,8 @@ dependencies: []
1213
1208
  Gem.platforms = orig_platform
1214
1209
  end
1215
1210
 
1216
- DATA_PATH = File.expand_path "../data", __FILE__
1217
-
1218
1211
  def test_handles_private_null_type
1219
- path = File.join DATA_PATH, "null-type.gemspec.rz"
1212
+ path = File.expand_path "../data/null-type.gemspec.rz", __FILE__
1220
1213
 
1221
1214
  data = Marshal.load Gem::Util.inflate(Gem.read_binary(path))
1222
1215
 
@@ -1383,12 +1376,12 @@ dependencies: []
1383
1376
  awesome.add_dependency :gem_name
1384
1377
  end
1385
1378
 
1386
- assert_equal %w[true gem_name], gem.dependencies.map { |dep| dep.name }
1379
+ assert_equal %w[true gem_name], gem.dependencies.map {|dep| dep.name }
1387
1380
  end
1388
1381
 
1389
1382
  def test_add_dependency_from_existing_dependency
1390
1383
  dep = Gem::Dependency.new("existing_dep", Gem::Requirement.new('> 1'), :runtime)
1391
- spec = Gem::Specification.new { |s| s.add_dependency dep }
1384
+ spec = Gem::Specification.new {|s| s.add_dependency dep }
1392
1385
  assert_equal dep, spec.dependencies.first
1393
1386
  end
1394
1387
 
@@ -1397,7 +1390,7 @@ dependencies: []
1397
1390
  awesome.add_development_dependency "monkey"
1398
1391
  end
1399
1392
 
1400
- monkey = gem.dependencies.detect { |d| d.name == "monkey" }
1393
+ monkey = gem.dependencies.detect {|d| d.name == "monkey" }
1401
1394
  assert_equal(:development, monkey.type)
1402
1395
  end
1403
1396
 
@@ -1495,7 +1488,7 @@ dependencies: []
1495
1488
  default = new_default_spec 'default', 2
1496
1489
  install_default_gems default
1497
1490
 
1498
- stub = Gem::Specification.stubs.find { |s| s.name == 'default' }
1491
+ stub = Gem::Specification.stubs.find {|s| s.name == 'default' }
1499
1492
  assert_predicate stub, :default_gem?
1500
1493
 
1501
1494
  stub = Gem::Specification.find_all_by_name('default').first
@@ -1850,7 +1843,6 @@ dependencies: []
1850
1843
  RbConfig::CONFIG['ENABLE_SHARED'], 'no'
1851
1844
 
1852
1845
  class << Gem
1853
-
1854
1846
  alias orig_default_ext_dir_for default_ext_dir_for
1855
1847
 
1856
1848
  remove_method :default_ext_dir_for
@@ -1858,7 +1850,6 @@ dependencies: []
1858
1850
  def Gem.default_ext_dir_for(base_dir)
1859
1851
  'elsewhere'
1860
1852
  end
1861
-
1862
1853
  end
1863
1854
 
1864
1855
  ext_spec
@@ -1872,20 +1863,18 @@ dependencies: []
1872
1863
  RbConfig::CONFIG['ENABLE_SHARED'] = enable_shared
1873
1864
 
1874
1865
  class << Gem
1875
-
1876
1866
  remove_method :default_ext_dir_for
1877
1867
 
1878
1868
  alias default_ext_dir_for orig_default_ext_dir_for
1879
-
1880
1869
  end
1881
1870
  end
1882
1871
 
1883
1872
  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)
1873
+ @a1.files = %w[files bin/common]
1874
+ @a1.test_files = %w[test_files bin/common]
1875
+ @a1.executables = %w[executables common]
1876
+ @a1.extra_rdoc_files = %w[extra_rdoc_files bin/common]
1877
+ @a1.extensions = %w[extensions bin/common]
1889
1878
 
1890
1879
  expected = %w[
1891
1880
  bin/common
@@ -1899,11 +1888,11 @@ dependencies: []
1899
1888
  end
1900
1889
 
1901
1890
  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)
1891
+ @a1.files = %w[files bin/common]
1892
+ @a1.test_files = %w[test_files bin/common]
1893
+ @a1.executables = %w[executables common]
1894
+ @a1.extra_rdoc_files = %w[extra_rdoc_files bin/common]
1895
+ @a1.extensions = %w[extensions bin/common]
1907
1896
 
1908
1897
  expected = %w[
1909
1898
  bin/common
@@ -2017,7 +2006,7 @@ dependencies: []
2017
2006
  test_cases = {
2018
2007
  'i386-mswin32' => 'a-1-x86-mswin32-60',
2019
2008
  'i386-mswin32_80' => 'a-1-x86-mswin32-80',
2020
- 'i386-mingw32' => 'a-1-x86-mingw32'
2009
+ 'i386-mingw32' => 'a-1-x86-mingw32',
2021
2010
  }
2022
2011
 
2023
2012
  test_cases.each do |arch, expected|
@@ -2166,11 +2155,9 @@ dependencies: []
2166
2155
 
2167
2156
  def test_require_paths_default_ext_dir_for
2168
2157
  class << Gem
2169
-
2170
2158
  send :alias_method, :orig_default_ext_dir_for, :default_ext_dir_for
2171
2159
 
2172
2160
  remove_method :default_ext_dir_for
2173
-
2174
2161
  end
2175
2162
 
2176
2163
  def Gem.default_ext_dir_for(base_dir)
@@ -2186,11 +2173,9 @@ dependencies: []
2186
2173
  end
2187
2174
  ensure
2188
2175
  class << Gem
2189
-
2190
2176
  send :remove_method, :default_ext_dir_for
2191
2177
  send :alias_method, :default_ext_dir_for, :orig_default_ext_dir_for
2192
2178
  send :remove_method, :orig_default_ext_dir_for
2193
-
2194
2179
  end
2195
2180
  end
2196
2181
 
@@ -2292,12 +2277,12 @@ dependencies: []
2292
2277
  install_specs a1 # , a2, b1, b2, c1, c2
2293
2278
 
2294
2279
  a1.activate
2295
- assert_equal %w(a-1), loaded_spec_names
2280
+ assert_equal %w[a-1], loaded_spec_names
2296
2281
  assert_equal [], unresolved_names
2297
2282
 
2298
2283
  assert require "d#{$$}"
2299
2284
 
2300
- assert_equal %w(a-1), loaded_spec_names
2285
+ assert_equal %w[a-1], loaded_spec_names
2301
2286
  assert_equal [], unresolved_names
2302
2287
  end
2303
2288
  end
@@ -2315,12 +2300,12 @@ dependencies: []
2315
2300
 
2316
2301
  a1.activate
2317
2302
  c1.activate
2318
- assert_equal %w(a-1 c-1), loaded_spec_names
2303
+ assert_equal %w[a-1 c-1], loaded_spec_names
2319
2304
  assert_equal ["b (> 0)"], unresolved_names
2320
2305
 
2321
2306
  assert require "d#{$$}"
2322
2307
 
2323
- assert_equal %w(a-1 c-1), loaded_spec_names
2308
+ assert_equal %w[a-1 c-1], loaded_spec_names
2324
2309
  assert_equal ["b (> 0)"], unresolved_names
2325
2310
  end
2326
2311
  end
@@ -2343,7 +2328,7 @@ dependencies: []
2343
2328
 
2344
2329
  expected = %w[rake jabber4r pqa]
2345
2330
 
2346
- assert_equal expected, @c1.runtime_dependencies.map { |d| d.name }
2331
+ assert_equal expected, @c1.runtime_dependencies.map {|d| d.name }
2347
2332
  end
2348
2333
 
2349
2334
  def test_spaceship_name
@@ -2453,6 +2438,9 @@ end
2453
2438
  end
2454
2439
 
2455
2440
  def test_to_ruby_with_rsa_key
2441
+ require 'rubygems/openssl'
2442
+ skip 'openssl is missing' unless defined?(OpenSSL::PKey::RSA)
2443
+
2456
2444
  rsa_key = OpenSSL::PKey::RSA.new(2048)
2457
2445
  @a2.signing_key = rsa_key
2458
2446
  ruby_code = @a2.to_ruby
@@ -2656,7 +2644,7 @@ end
2656
2644
  def test_to_yaml_platform_empty_string
2657
2645
  @a1.instance_variable_set :@original_platform, ''
2658
2646
 
2659
- assert_match %r|^platform: ruby$|, @a1.to_yaml
2647
+ assert_match %r{^platform: ruby$}, @a1.to_yaml
2660
2648
  end
2661
2649
 
2662
2650
  def test_to_yaml_platform_legacy
@@ -2674,7 +2662,7 @@ end
2674
2662
  def test_to_yaml_platform_nil
2675
2663
  @a1.instance_variable_set :@original_platform, nil
2676
2664
 
2677
- assert_match %r|^platform: ruby$|, @a1.to_yaml
2665
+ assert_match %r{^platform: ruby$}, @a1.to_yaml
2678
2666
  end
2679
2667
 
2680
2668
  def test_validate
@@ -2718,7 +2706,7 @@ end
2718
2706
  @a1.validate
2719
2707
  end
2720
2708
 
2721
- assert_equal %{"#{f}" or "#{t}" is not an author}, e.message
2709
+ assert_equal %("#{f}" or "#{t}" is not an author), e.message
2722
2710
 
2723
2711
  @a1.authors = ["#{t} (who is writing this software)"]
2724
2712
 
@@ -2726,7 +2714,7 @@ end
2726
2714
  @a1.validate
2727
2715
  end
2728
2716
 
2729
- assert_equal %{"#{f}" or "#{t}" is not an author}, e.message
2717
+ assert_equal %("#{f}" or "#{t}" is not an author), e.message
2730
2718
  end
2731
2719
  end
2732
2720
 
@@ -2784,7 +2772,7 @@ end
2784
2772
  add_runtime_dependency 'l', '~> 1.2', '> 1.2.3'
2785
2773
  #{w}: open-ended dependency on o (>= 0) is not recommended
2786
2774
  use a bounded requirement, such as '~> x.y'
2787
- #{w}: See http://guides.rubygems.org/specification-reference/ for help
2775
+ #{w}: See https://guides.rubygems.org/specification-reference/ for help
2788
2776
  EXPECTED
2789
2777
 
2790
2778
  assert_equal expected, @ui.error, 'warning'
@@ -2816,7 +2804,7 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2816
2804
  end
2817
2805
 
2818
2806
  assert_equal <<-EXPECTED, @ui.error
2819
- #{w}: See http://guides.rubygems.org/specification-reference/ for help
2807
+ #{w}: See https://guides.rubygems.org/specification-reference/ for help
2820
2808
  EXPECTED
2821
2809
  end
2822
2810
  end
@@ -2851,6 +2839,37 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2851
2839
  end
2852
2840
  end
2853
2841
 
2842
+ def test_validate_rake_extension_have_rake_dependency_warning
2843
+ util_setup_validate
2844
+
2845
+ Dir.chdir @tempdir do
2846
+ @a1.extensions = ['Rakefile']
2847
+ File.write File.join(@tempdir, 'Rakefile'), ''
2848
+
2849
+ use_ui @ui do
2850
+ @a1.validate
2851
+ end
2852
+
2853
+ assert_match(/add rake as a dependency/, @ui.error)
2854
+ end
2855
+ end
2856
+
2857
+ def test_validate_rake_extension_have_rake_dependency_no_warning
2858
+ util_setup_validate
2859
+
2860
+ Dir.chdir @tempdir do
2861
+ @a1.extensions = ['Rakefile']
2862
+ @a1.add_runtime_dependency 'rake'
2863
+ File.write File.join(@tempdir, 'Rakefile'), ''
2864
+
2865
+ use_ui @ui do
2866
+ @a1.validate
2867
+ end
2868
+
2869
+ refute_match(/add rake as a dependency/, @ui.error)
2870
+ end
2871
+ end
2872
+
2854
2873
  def test_validate_description
2855
2874
  util_setup_validate
2856
2875
 
@@ -2878,7 +2897,7 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2878
2897
  @a1.validate
2879
2898
  end
2880
2899
 
2881
- assert_equal %{"#{f}" or "#{t}" is not a description}, e.message
2900
+ assert_equal %("#{f}" or "#{t}" is not a description), e.message
2882
2901
 
2883
2902
  @a1.description = "#{t} (describe your package)"
2884
2903
 
@@ -2886,7 +2905,7 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2886
2905
  @a1.validate
2887
2906
  end
2888
2907
 
2889
- assert_equal %{"#{f}" or "#{t}" is not a description}, e.message
2908
+ assert_equal %("#{f}" or "#{t}" is not a description), e.message
2890
2909
  end
2891
2910
  end
2892
2911
 
@@ -2900,7 +2919,7 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2900
2919
  @a1.validate
2901
2920
  end
2902
2921
 
2903
- assert_equal %{"#{f}" or "#{t}" is not an email}, e.message
2922
+ assert_equal %("#{f}" or "#{t}" is not an email), e.message
2904
2923
 
2905
2924
  @a1.email = "#{t} (your e-mail)"
2906
2925
 
@@ -2908,7 +2927,7 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2908
2927
  @a1.validate
2909
2928
  end
2910
2929
 
2911
- assert_equal %{"#{f}" or "#{t}" is not an email}, e.message
2930
+ assert_equal %("#{f}" or "#{t}" is not an email), e.message
2912
2931
  end
2913
2932
  end
2914
2933
 
@@ -2927,7 +2946,7 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2927
2946
  end
2928
2947
  end
2929
2948
 
2930
- assert_match 'See http://guides.rubygems.org/specification-reference/ for help', @ui.error
2949
+ assert_match 'See https://guides.rubygems.org/specification-reference/ for help', @ui.error
2931
2950
  end
2932
2951
 
2933
2952
  def test_validate_executables
@@ -3022,8 +3041,8 @@ Please report a bug if this causes problems.
3022
3041
 
3023
3042
  specification.define_singleton_method(:find_all_by_name) do |dep_name|
3024
3043
  [
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") }
3044
+ specification.new {|s| s.name = "z", s.version = Gem::Version.new("1") },
3045
+ specification.new {|s| s.name = "z", s.version = Gem::Version.new("2") },
3027
3046
  ]
3028
3047
  end
3029
3048
 
@@ -3042,6 +3061,13 @@ Please report a bug if this causes problems.
3042
3061
  end
3043
3062
  end
3044
3063
 
3064
+ def test_duplicate_runtime_dependency
3065
+ expected = "WARNING: duplicated b dependency [\"~> 3.0\", \"~> 3.0\"]\n"
3066
+ assert_output nil, expected do
3067
+ @a1.add_runtime_dependency "b", "~> 3.0", "~> 3.0"
3068
+ end
3069
+ end
3070
+
3045
3071
  def set_orig(cls)
3046
3072
  s_cls = cls.singleton_class
3047
3073
  s_cls.send :alias_method, :orig_unresolved_deps , :unresolved_deps
@@ -3100,7 +3126,7 @@ Please report a bug if this causes problems.
3100
3126
 
3101
3127
  assert_equal '"ftp://rubygems.org" is not a valid HTTP URI', e.message
3102
3128
 
3103
- @a1.homepage = 'http://rubygems.org'
3129
+ @a1.homepage = 'https://rubygems.org/'
3104
3130
  assert_equal true, @a1.validate
3105
3131
 
3106
3132
  @a1.homepage = 'https://rubygems.org'
@@ -3117,10 +3143,36 @@ Please report a bug if this causes problems.
3117
3143
  @a1.validate
3118
3144
  end
3119
3145
 
3120
- assert_match <<-warning, @ui.error
3146
+ assert_match <<-WARNING, @ui.error
3121
3147
  WARNING: licenses is empty, but is recommended. Use a license identifier from
3122
3148
  http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3123
- warning
3149
+ WARNING
3150
+ end
3151
+
3152
+ def test_validate_license_in_a_non_packaging_context
3153
+ util_setup_validate
3154
+
3155
+ use_ui @ui do
3156
+ @a1.licenses.clear
3157
+ @a1.validate(false)
3158
+ end
3159
+
3160
+ assert_empty @ui.error
3161
+ end
3162
+
3163
+ def test_removed_methods
3164
+ assert_equal Gem::Specification::REMOVED_METHODS, [:rubyforge_project=]
3165
+ end
3166
+
3167
+ def test_validate_removed_rubyforge_project
3168
+ util_setup_validate
3169
+
3170
+ use_ui @ui do
3171
+ @a1.rubyforge_project = 'invalid-attribute'
3172
+ @a1.validate
3173
+ end
3174
+
3175
+ assert_match "rubyforge_project= is deprecated", @ui.error
3124
3176
  end
3125
3177
 
3126
3178
  def test_validate_license_values
@@ -3131,10 +3183,10 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3131
3183
  @a1.validate
3132
3184
  end
3133
3185
 
3134
- assert_match <<-warning, @ui.error
3186
+ assert_match <<-WARNING, @ui.error
3135
3187
  WARNING: license value 'BSD' is invalid. Use a license identifier from
3136
3188
  http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3137
- warning
3189
+ WARNING
3138
3190
  end
3139
3191
 
3140
3192
  def test_validate_license_values_plus
@@ -3178,14 +3230,14 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3178
3230
  @a1.validate
3179
3231
  end
3180
3232
 
3181
- assert_match <<-warning, @ui.error
3233
+ assert_match <<-WARNING, @ui.error
3182
3234
  WARNING: license value 'GPL-2.0+ FOO' is invalid. Use a license identifier from
3183
3235
  http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3184
- warning
3185
- assert_match <<-warning, @ui.error
3236
+ WARNING
3237
+ assert_match <<-WARNING, @ui.error
3186
3238
  WARNING: license value 'GPL-2.0 FOO' is invalid. Use a license identifier from
3187
3239
  http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3188
- warning
3240
+ WARNING
3189
3241
  end
3190
3242
 
3191
3243
  def test_validate_license_with_invalid_exception
@@ -3196,10 +3248,10 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3196
3248
  @a1.validate
3197
3249
  end
3198
3250
 
3199
- assert_match <<-warning, @ui.error
3251
+ assert_match <<-WARNING, @ui.error
3200
3252
  WARNING: license value 'GPL-2.0+ WITH Autocofn-exception-2.0' is invalid. Use a license identifier from
3201
3253
  http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3202
- warning
3254
+ WARNING
3203
3255
  end
3204
3256
 
3205
3257
  def test_validate_license_gives_suggestions
@@ -3210,11 +3262,11 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3210
3262
  @a1.validate
3211
3263
  end
3212
3264
 
3213
- assert_match <<-warning, @ui.error
3265
+ assert_match <<-WARNING, @ui.error
3214
3266
  WARNING: license value 'ruby' is invalid. Use a license identifier from
3215
3267
  http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3216
3268
  Did you mean 'Ruby'?
3217
- warning
3269
+ WARNING
3218
3270
  end
3219
3271
 
3220
3272
  def test_validate_empty_files
@@ -3310,7 +3362,7 @@ Did you mean 'Ruby'?
3310
3362
  spec.validate
3311
3363
  end
3312
3364
 
3313
- assert_match %r%^#{name}%, e.message
3365
+ assert_match %r{^#{name}}, e.message
3314
3366
  end
3315
3367
  end
3316
3368
  end
@@ -3410,7 +3462,7 @@ Did you mean 'Ruby'?
3410
3462
  @a1.validate
3411
3463
  end
3412
3464
 
3413
- assert_equal %{"#{f}" or "#{t}" is not a summary}, e.message
3465
+ assert_equal %("#{f}" or "#{t}" is not a summary), e.message
3414
3466
 
3415
3467
  @a1.summary = "#{t} (describe your package)"
3416
3468
 
@@ -3418,7 +3470,7 @@ Did you mean 'Ruby'?
3418
3470
  @a1.validate
3419
3471
  end
3420
3472
 
3421
- assert_equal %{"#{f}" or "#{t}" is not a summary}, e.message
3473
+ assert_equal %("#{f}" or "#{t}" is not a summary), e.message
3422
3474
  end
3423
3475
  end
3424
3476
 
@@ -3430,7 +3482,7 @@ Did you mean 'Ruby'?
3430
3482
  @a1.validate
3431
3483
  end
3432
3484
 
3433
- assert_match 'See http://guides.rubygems.org/specification-reference/ for help', @ui.error
3485
+ assert_match 'See https://guides.rubygems.org/specification-reference/ for help', @ui.error
3434
3486
  end
3435
3487
 
3436
3488
  def test_version
@@ -3532,7 +3584,8 @@ Did you mean 'Ruby'?
3532
3584
  s.metadata = {
3533
3585
  "one" => "two",
3534
3586
  "home" => "three",
3535
- "homepage_uri" => "https://example.com/user/repo"
3587
+ "homepage_uri" => "https://example.com/user/repo",
3588
+ "funding_uri" => "https://example.com/donate",
3536
3589
  }
3537
3590
  end
3538
3591
 
@@ -3792,7 +3845,7 @@ end
3792
3845
 
3793
3846
  default_gem_spec = new_default_spec("default", "2.0.0.0",
3794
3847
  nil, "default/gem.rb")
3795
- spec_path = File.join(@default_spec_dir, default_gem_spec.spec_name)
3848
+ spec_path = File.join(@gemhome, "specifications", "default", default_gem_spec.spec_name)
3796
3849
  write_file(spec_path) do |file|
3797
3850
  file.print(default_gem_spec.to_ruby)
3798
3851
  end
@@ -3817,12 +3870,17 @@ end
3817
3870
  FileUtils.mkdir_p "test"
3818
3871
  FileUtils.mkdir_p "bin"
3819
3872
 
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")
3873
+ begin
3874
+ umask_orig = File.umask(2)
3875
+ FileUtils.touch File.join("ext", "a", "extconf.rb")
3876
+ FileUtils.touch File.join("lib", "code.rb")
3877
+ FileUtils.touch File.join("test", "suite.rb")
3823
3878
 
3824
- File.open "bin/exec", "w", 0755 do |fp|
3825
- fp.puts "#!#{Gem.ruby}"
3879
+ File.open "bin/exec", "w", 0755 do |fp|
3880
+ fp.puts "#!#{Gem.ruby}"
3881
+ end
3882
+ ensure
3883
+ File.umask(umask_orig)
3826
3884
  end
3827
3885
  end
3828
3886
  end
@@ -3876,5 +3934,4 @@ end
3876
3934
  ensure
3877
3935
  $VERBOSE = old_verbose
3878
3936
  end
3879
-
3880
3937
  end