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,7 @@
2
2
  require 'rubygems/test_case'
3
3
  require 'rubygems/security'
4
4
 
5
- unless defined?(OpenSSL::SSL)
5
+ unless Gem::HAVE_OPENSSL
6
6
  warn 'Skipping Gem::Security tests. openssl not found.'
7
7
  end
8
8
 
@@ -11,7 +11,6 @@ if Gem.java_platform?
11
11
  end
12
12
 
13
13
  class TestGemSecurity < Gem::TestCase
14
-
15
14
  CHILD_KEY = load_key 'child'
16
15
 
17
16
  ALTERNATE_CERT = load_cert 'child'
@@ -40,16 +39,16 @@ class TestGemSecurity < Gem::TestCase
40
39
  assert_equal name.to_s, cert.subject.to_s
41
40
 
42
41
  assert_equal 3, cert.extensions.length,
43
- cert.extensions.map { |e| e.to_a.first }
42
+ cert.extensions.map {|e| e.to_a.first }
44
43
 
45
- constraints = cert.extensions.find { |ext| ext.oid == 'basicConstraints' }
44
+ constraints = cert.extensions.find {|ext| ext.oid == 'basicConstraints' }
46
45
  assert_equal 'CA:FALSE', constraints.value
47
46
 
48
- key_usage = cert.extensions.find { |ext| ext.oid == 'keyUsage' }
47
+ key_usage = cert.extensions.find {|ext| ext.oid == 'keyUsage' }
49
48
  assert_equal 'Digital Signature, Key Encipherment, Data Encipherment',
50
49
  key_usage.value
51
50
 
52
- key_ident = cert.extensions.find { |ext| ext.oid == 'subjectKeyIdentifier' }
51
+ key_ident = cert.extensions.find {|ext| ext.oid == 'subjectKeyIdentifier' }
53
52
  assert_equal 59, key_ident.value.length
54
53
  assert_equal '5F:43:6E:F6:9A:8E:45:25:E9:22:E3:7D:37:5E:A4:D5:36:02:85:1B',
55
54
  key_ident.value
@@ -85,19 +84,19 @@ class TestGemSecurity < Gem::TestCase
85
84
  assert_equal name.to_s, cert.issuer.to_s
86
85
 
87
86
  assert_equal 5, cert.extensions.length,
88
- cert.extensions.map { |e| e.to_a.first }
87
+ cert.extensions.map {|e| e.to_a.first }
89
88
 
90
- constraints = cert.extensions.find { |ext| ext.oid == 'subjectAltName' }
89
+ constraints = cert.extensions.find {|ext| ext.oid == 'subjectAltName' }
91
90
  assert_equal 'email:nobody@example', constraints.value
92
91
 
93
- constraints = cert.extensions.find { |ext| ext.oid == 'basicConstraints' }
92
+ constraints = cert.extensions.find {|ext| ext.oid == 'basicConstraints' }
94
93
  assert_equal 'CA:FALSE', constraints.value
95
94
 
96
- key_usage = cert.extensions.find { |ext| ext.oid == 'keyUsage' }
95
+ key_usage = cert.extensions.find {|ext| ext.oid == 'keyUsage' }
97
96
  assert_equal 'Digital Signature, Key Encipherment, Data Encipherment',
98
97
  key_usage.value
99
98
 
100
- key_ident = cert.extensions.find { |ext| ext.oid == 'subjectKeyIdentifier' }
99
+ key_ident = cert.extensions.find {|ext| ext.oid == 'subjectKeyIdentifier' }
101
100
  assert_equal 59, key_ident.value.length
102
101
  assert_equal '5F:43:6E:F6:9A:8E:45:25:E9:22:E3:7D:37:5E:A4:D5:36:02:85:1B',
103
102
  key_ident.value
@@ -188,20 +187,20 @@ class TestGemSecurity < Gem::TestCase
188
187
  assert_in_delta Time.now + 60, signed.not_after, 10
189
188
 
190
189
  assert_equal 4, signed.extensions.length,
191
- signed.extensions.map { |e| e.to_a.first }
190
+ signed.extensions.map {|e| e.to_a.first }
192
191
 
193
- constraints = signed.extensions.find { |ext| ext.oid == 'issuerAltName' }
192
+ constraints = signed.extensions.find {|ext| ext.oid == 'issuerAltName' }
194
193
  assert_equal 'email:nobody@example', constraints.value, 'issuerAltName'
195
194
 
196
- constraints = signed.extensions.find { |ext| ext.oid == 'basicConstraints' }
195
+ constraints = signed.extensions.find {|ext| ext.oid == 'basicConstraints' }
197
196
  assert_equal 'CA:FALSE', constraints.value
198
197
 
199
- key_usage = signed.extensions.find { |ext| ext.oid == 'keyUsage' }
198
+ key_usage = signed.extensions.find {|ext| ext.oid == 'keyUsage' }
200
199
  assert_equal 'Digital Signature, Key Encipherment, Data Encipherment',
201
200
  key_usage.value
202
201
 
203
202
  key_ident =
204
- signed.extensions.find { |ext| ext.oid == 'subjectKeyIdentifier' }
203
+ signed.extensions.find {|ext| ext.oid == 'subjectKeyIdentifier' }
205
204
  assert_equal 59, key_ident.value.length
206
205
  assert_equal '5F:43:6E:F6:9A:8E:45:25:E9:22:E3:7D:37:5E:A4:D5:36:02:85:1B',
207
206
  key_ident.value
@@ -227,23 +226,23 @@ class TestGemSecurity < Gem::TestCase
227
226
  assert_equal "sha256WithRSAEncryption", signed.signature_algorithm
228
227
 
229
228
  assert_equal 5, signed.extensions.length,
230
- signed.extensions.map { |e| e.to_a.first }
229
+ signed.extensions.map {|e| e.to_a.first }
231
230
 
232
- constraints = signed.extensions.find { |ext| ext.oid == 'issuerAltName' }
231
+ constraints = signed.extensions.find {|ext| ext.oid == 'issuerAltName' }
233
232
  assert_equal 'email:nobody@example', constraints.value, 'issuerAltName'
234
233
 
235
- constraints = signed.extensions.find { |ext| ext.oid == 'subjectAltName' }
234
+ constraints = signed.extensions.find {|ext| ext.oid == 'subjectAltName' }
236
235
  assert_equal 'email:signee@example', constraints.value, 'subjectAltName'
237
236
 
238
- constraints = signed.extensions.find { |ext| ext.oid == 'basicConstraints' }
237
+ constraints = signed.extensions.find {|ext| ext.oid == 'basicConstraints' }
239
238
  assert_equal 'CA:FALSE', constraints.value
240
239
 
241
- key_usage = signed.extensions.find { |ext| ext.oid == 'keyUsage' }
240
+ key_usage = signed.extensions.find {|ext| ext.oid == 'keyUsage' }
242
241
  assert_equal 'Digital Signature, Key Encipherment, Data Encipherment',
243
242
  key_usage.value
244
243
 
245
244
  key_ident =
246
- signed.extensions.find { |ext| ext.oid == 'subjectKeyIdentifier' }
245
+ signed.extensions.find {|ext| ext.oid == 'subjectKeyIdentifier' }
247
246
  assert_equal 59, key_ident.value.length
248
247
  assert_equal '5F:43:6E:F6:9A:8E:45:25:E9:22:E3:7D:37:5E:A4:D5:36:02:85:1B',
249
248
  key_ident.value
@@ -310,5 +309,4 @@ class TestGemSecurity < Gem::TestCase
310
309
 
311
310
  assert_equal key.to_pem, key_from_file.to_pem
312
311
  end
313
-
314
- end if defined?(OpenSSL::SSL) && !Gem.java_platform?
312
+ end if Gem::HAVE_OPENSSL && !Gem.java_platform?
@@ -1,14 +1,12 @@
1
- # coding: utf-8
2
1
  # frozen_string_literal: true
3
2
 
4
3
  require 'rubygems/test_case'
5
4
 
6
- unless defined?(OpenSSL::SSL)
5
+ unless Gem::HAVE_OPENSSL
7
6
  warn 'Skipping Gem::Security::Policy tests. openssl not found.'
8
7
  end
9
8
 
10
9
  class TestGemSecurityPolicy < Gem::TestCase
11
-
12
10
  ALTERNATE_KEY = load_key 'alternate'
13
11
  INVALID_KEY = load_key 'invalid'
14
12
  CHILD_KEY = load_key 'child'
@@ -34,7 +32,7 @@ class TestGemSecurityPolicy < Gem::TestCase
34
32
  s.files = %w[lib/code.rb]
35
33
  end
36
34
 
37
- @digest = Gem::Security::DIGEST_ALGORITHM
35
+ @digest = OpenSSL::Digest.new Gem::Security::DIGEST_NAME
38
36
  @trust_dir = Gem::Security.trust_dir.dir # HACK use the object
39
37
 
40
38
  @no = Gem::Security::NoSecurity
@@ -397,13 +395,11 @@ class TestGemSecurityPolicy < Gem::TestCase
397
395
  def test_verify_wrong_digest_type
398
396
  Gem::Security.trust_dir.trust_cert PUBLIC_CERT
399
397
 
400
- sha512 = OpenSSL::Digest::SHA512
401
-
402
- data = sha512.new
398
+ data = OpenSSL::Digest.new('SHA512')
403
399
  data << 'hello'
404
400
 
405
401
  digests = { 'SHA512' => { 0 => data } }
406
- signature = PRIVATE_KEY.sign sha512.new, data.digest
402
+ signature = PRIVATE_KEY.sign 'sha512', data.digest
407
403
  signatures = { 0 => signature }
408
404
 
409
405
  e = assert_raises Gem::Security::Exception do
@@ -482,7 +478,7 @@ class TestGemSecurityPolicy < Gem::TestCase
482
478
  def s.full_name() 'metadata.gz' end
483
479
 
484
480
  digests = package.digest s
485
- digests[Gem::Security::DIGEST_NAME]['data.tar.gz'] = @digest.new 'hello'
481
+ digests[Gem::Security::DIGEST_NAME]['data.tar.gz'] = @digest.hexdigest 'hello'
486
482
 
487
483
  metadata_gz_digest = digests[Gem::Security::DIGEST_NAME]['metadata.gz']
488
484
 
@@ -511,7 +507,7 @@ class TestGemSecurityPolicy < Gem::TestCase
511
507
  def s.full_name() 'metadata.gz' end
512
508
 
513
509
  digests = package.digest s
514
- digests[Gem::Security::DIGEST_NAME]['data.tar.gz'] = @digest.new 'hello'
510
+ digests[Gem::Security::DIGEST_NAME]['data.tar.gz'] = @digest.hexdigest 'hello'
515
511
 
516
512
  assert_raises Gem::Security::Exception do
517
513
  @high.verify_signatures @spec, digests, {}
@@ -536,5 +532,4 @@ class TestGemSecurityPolicy < Gem::TestCase
536
532
 
537
533
  return digests, signatures
538
534
  end
539
-
540
- end if defined?(OpenSSL::SSL)
535
+ end if Gem::HAVE_OPENSSL
@@ -1,12 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
  require 'rubygems/test_case'
3
3
 
4
- unless defined?(OpenSSL::SSL)
4
+ unless Gem::HAVE_OPENSSL
5
5
  warn 'Skipping Gem::Security::Signer tests. openssl not found.'
6
6
  end
7
7
 
8
8
  class TestGemSecuritySigner < Gem::TestCase
9
-
10
9
  ALTERNATE_KEY = load_key 'alternate'
11
10
  CHILD_KEY = load_key 'child'
12
11
  GRANDCHILD_KEY = load_key 'grandchild'
@@ -37,8 +36,8 @@ class TestGemSecuritySigner < Gem::TestCase
37
36
  def test_initialize_cert_chain_mixed
38
37
  signer = Gem::Security::Signer.new nil, [@cert_file, CHILD_CERT]
39
38
 
40
- assert_equal [PUBLIC_CERT, CHILD_CERT].map { |c| c.to_pem },
41
- signer.cert_chain.map { |c| c.to_pem }
39
+ assert_equal [PUBLIC_CERT, CHILD_CERT].map {|c| c.to_pem },
40
+ signer.cert_chain.map {|c| c.to_pem }
42
41
  end
43
42
 
44
43
  def test_initialize_cert_chain_invalid
@@ -50,8 +49,8 @@ class TestGemSecuritySigner < Gem::TestCase
50
49
  def test_initialize_cert_chain_path
51
50
  signer = Gem::Security::Signer.new nil, [@cert_file]
52
51
 
53
- assert_equal [PUBLIC_CERT].map { |c| c.to_pem },
54
- signer.cert_chain.map { |c| c.to_pem }
52
+ assert_equal [PUBLIC_CERT].map {|c| c.to_pem },
53
+ signer.cert_chain.map {|c| c.to_pem }
55
54
  end
56
55
 
57
56
  def test_initialize_default
@@ -66,7 +65,7 @@ class TestGemSecuritySigner < Gem::TestCase
66
65
  signer = Gem::Security::Signer.new nil, nil
67
66
 
68
67
  assert_equal PRIVATE_KEY.to_pem, signer.key.to_pem
69
- assert_equal [PUBLIC_CERT.to_pem], signer.cert_chain.map { |c| c.to_pem }
68
+ assert_equal [PUBLIC_CERT.to_pem], signer.cert_chain.map {|c| c.to_pem }
70
69
  end
71
70
 
72
71
  def test_initialize_key_path
@@ -100,7 +99,7 @@ class TestGemSecuritySigner < Gem::TestCase
100
99
  signer.load_cert_chain
101
100
 
102
101
  assert_equal [PUBLIC_CERT.to_pem, CHILD_CERT.to_pem],
103
- signer.cert_chain.map { |c| c.to_pem }
102
+ signer.cert_chain.map {|c| c.to_pem }
104
103
  end
105
104
 
106
105
  def test_load_cert_chain_broken
@@ -112,7 +111,7 @@ class TestGemSecuritySigner < Gem::TestCase
112
111
  signer.load_cert_chain
113
112
 
114
113
  assert_equal [CHILD_CERT.to_pem, GRANDCHILD_CERT.to_pem],
115
- signer.cert_chain.map { |c| c.to_pem }
114
+ signer.cert_chain.map {|c| c.to_pem }
116
115
  end
117
116
 
118
117
  def test_sign
@@ -191,7 +190,7 @@ toqvglr0kdbknSRRjBVLK6tsgr07aLT9gNP7mTW2PA==
191
190
  signer.sign 'hello'
192
191
  end
193
192
 
194
- assert_match %r%certificate /CN=nobody/DC=example not valid%, e.message
193
+ assert_match %r{certificate /CN=nobody/DC=example not valid}, e.message
195
194
  end
196
195
 
197
196
  def test_sign_no_key
@@ -215,5 +214,4 @@ toqvglr0kdbknSRRjBVLK6tsgr07aLT9gNP7mTW2PA==
215
214
  signer.sign 'hello'
216
215
  end
217
216
  end
218
-
219
- end if defined?(OpenSSL::SSL)
217
+ end if Gem::HAVE_OPENSSL
@@ -1,12 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
  require 'rubygems/test_case'
3
3
 
4
- unless defined?(OpenSSL::SSL)
4
+ unless Gem::HAVE_OPENSSL
5
5
  warn 'Skipping Gem::Security::TrustDir tests. openssl not found.'
6
6
  end
7
7
 
8
8
  class TestGemSecurityTrustDir < Gem::TestCase
9
-
10
9
  CHILD_CERT = load_cert 'child'
11
10
 
12
11
  def setup
@@ -18,7 +17,7 @@ class TestGemSecurityTrustDir < Gem::TestCase
18
17
  end
19
18
 
20
19
  def test_cert_path
21
- digest = Gem::Security::DIGEST_ALGORITHM.hexdigest PUBLIC_CERT.subject.to_s
20
+ digest = OpenSSL::Digest.hexdigest Gem::Security::DIGEST_NAME, PUBLIC_CERT.subject.to_s
22
21
 
23
22
  expected = File.join @dest_dir, "cert-#{digest}.pem"
24
23
 
@@ -42,7 +41,7 @@ class TestGemSecurityTrustDir < Gem::TestCase
42
41
  end
43
42
 
44
43
  def test_name_path
45
- digest = Gem::Security::DIGEST_ALGORITHM.hexdigest PUBLIC_CERT.subject.to_s
44
+ digest = OpenSSL::Digest.hexdigest Gem::Security::DIGEST_NAME, PUBLIC_CERT.subject.to_s
46
45
 
47
46
  expected = File.join @dest_dir, "cert-#{digest}.pem"
48
47
 
@@ -96,5 +95,4 @@ class TestGemSecurityTrustDir < Gem::TestCase
96
95
 
97
96
  assert_equal mask, File.stat(@dest_dir).mode unless win_platform?
98
97
  end
99
-
100
- end if defined?(OpenSSL::SSL)
98
+ end if Gem::HAVE_OPENSSL
@@ -4,13 +4,10 @@ require 'rubygems/server'
4
4
  require 'stringio'
5
5
 
6
6
  class Gem::Server
7
-
8
7
  attr_reader :server
9
-
10
8
  end
11
9
 
12
10
  class TestGemServer < Gem::TestCase
13
-
14
11
  def process_based_port
15
12
  0
16
13
  end
@@ -88,7 +85,7 @@ class TestGemServer < Gem::TestCase
88
85
  end
89
86
 
90
87
  assert_equal 200, @res.status, @res.body
91
- assert_match %r| \d\d:\d\d:\d\d |, @res['date']
88
+ assert_match %r{ \d\d:\d\d:\d\d }, @res['date']
92
89
  assert_equal 'application/octet-stream', @res['content-type']
93
90
  assert_equal [['a', Gem::Version.new(2), Gem::Platform::RUBY]],
94
91
  Marshal.load(@res.body)
@@ -127,7 +124,7 @@ class TestGemServer < Gem::TestCase
127
124
  end
128
125
 
129
126
  assert_equal 200, @res.status, @res.body
130
- assert_match %r| \d\d:\d\d:\d\d |, @res['date']
127
+ assert_match %r{ \d\d:\d\d:\d\d }, @res['date']
131
128
  assert_equal 'application/x-gzip', @res['content-type']
132
129
  assert_equal [['a', Gem::Version.new(2), Gem::Platform::RUBY]],
133
130
  Marshal.load(Gem::Util.gunzip(@res.body))
@@ -162,7 +159,7 @@ class TestGemServer < Gem::TestCase
162
159
  end
163
160
 
164
161
  assert_equal 200, @res.status, @res.body
165
- assert_match %r| \d\d:\d\d:\d\d |, @res['date']
162
+ assert_match %r{ \d\d:\d\d:\d\d }, @res['date']
166
163
  assert_equal 'application/octet-stream', @res['content-type']
167
164
  assert_equal [['a', v('3.a'), Gem::Platform::RUBY]],
168
165
  Marshal.load(@res.body)
@@ -177,7 +174,7 @@ class TestGemServer < Gem::TestCase
177
174
  end
178
175
 
179
176
  assert_equal 200, @res.status, @res.body
180
- assert_match %r| \d\d:\d\d:\d\d |, @res['date']
177
+ assert_match %r{ \d\d:\d\d:\d\d }, @res['date']
181
178
  assert_equal 'application/x-gzip', @res['content-type']
182
179
  assert_equal [['a', v('3.a'), Gem::Platform::RUBY]],
183
180
  Marshal.load(Gem::Util.gunzip(@res.body))
@@ -223,7 +220,7 @@ class TestGemServer < Gem::TestCase
223
220
  @server.quick @req, @res
224
221
 
225
222
  assert_equal 404, @res.status, @res.body
226
- assert_match %r| \d\d:\d\d:\d\d |, @res['date']
223
+ assert_match %r{ \d\d:\d\d:\d\d }, @res['date']
227
224
  assert_equal 'text/plain', @res['content-type']
228
225
  assert_equal 'No gems found matching "z-9"', @res.body
229
226
  assert_equal 404, @res.status
@@ -320,7 +317,7 @@ class TestGemServer < Gem::TestCase
320
317
  @server.rdoc @req, @res
321
318
 
322
319
  assert_equal 200, @res.status, @res.body
323
- assert_match %r|No documentation found|, @res.body
320
+ assert_match %r{No documentation found}, @res.body
324
321
  assert_equal 'text/html', @res['content-type']
325
322
  end
326
323
 
@@ -331,7 +328,7 @@ class TestGemServer < Gem::TestCase
331
328
  @server.root @req, @res
332
329
 
333
330
  assert_equal 200, @res.status, @res.body
334
- assert_match %r| \d\d:\d\d:\d\d |, @res['date']
331
+ assert_match %r{ \d\d:\d\d:\d\d }, @res['date']
335
332
  assert_equal 'text/html', @res['content-type']
336
333
  end
337
334
 
@@ -529,7 +526,7 @@ class TestGemServer < Gem::TestCase
529
526
  @server.specs @req, @res
530
527
 
531
528
  assert_equal 200, @res.status, @res.body
532
- assert_match %r| \d\d:\d\d:\d\d |, @res['date']
529
+ assert_match %r{ \d\d:\d\d:\d\d }, @res['date']
533
530
  assert_equal 'application/octet-stream', @res['content-type']
534
531
 
535
532
  assert_equal [['a', Gem::Version.new(1), Gem::Platform::RUBY],
@@ -569,7 +566,7 @@ class TestGemServer < Gem::TestCase
569
566
  @server.specs @req, @res
570
567
 
571
568
  assert_equal 200, @res.status, @res.body
572
- assert_match %r| \d\d:\d\d:\d\d |, @res['date']
569
+ assert_match %r{ \d\d:\d\d:\d\d }, @res['date']
573
570
  assert_equal 'application/x-gzip', @res['content-type']
574
571
 
575
572
  assert_equal [['a', Gem::Version.new(1), Gem::Platform::RUBY],
@@ -591,7 +588,7 @@ class TestGemServer < Gem::TestCase
591
588
 
592
589
  @server.root @req, @res
593
590
 
594
- refute_match %r|%3A%2F%2F|, @res.body
591
+ refute_match %r{%3A%2F%2F}, @res.body
595
592
  end
596
593
 
597
594
  def util_listen
@@ -608,5 +605,4 @@ class TestGemServer < Gem::TestCase
608
605
 
609
606
  @server.instance_variable_set :@server, webrick
610
607
  end
611
-
612
608
  end
@@ -4,7 +4,6 @@ require 'rubygems/user_interaction'
4
4
  require 'timeout'
5
5
 
6
6
  class TestGemSilentUI < Gem::TestCase
7
-
8
7
  def setup
9
8
  super
10
9
  @sui = Gem::SilentUI.new
@@ -114,5 +113,4 @@ class TestGemSilentUI < Gem::TestCase
114
113
  assert_empty out, 'No output'
115
114
  assert_empty err, 'No output'
116
115
  end
117
-
118
116
  end
@@ -4,7 +4,6 @@ require 'rubygems/source'
4
4
  require 'rubygems/indexer'
5
5
 
6
6
  class TestGemSource < Gem::TestCase
7
-
8
7
  def tuple(*args)
9
8
  Gem::NameTuple.new(*args)
10
9
  end
@@ -45,9 +44,9 @@ class TestGemSource < Gem::TestCase
45
44
 
46
45
  def test_dependency_resolver_set_bundler_api
47
46
  response = Net::HTTPResponse.new '1.1', 200, 'OK'
48
- response.uri = URI('http://example') if response.respond_to? :uri
47
+ response.uri = URI('http://example')
49
48
 
50
- @fetcher.data["#{@gem_repo}api/v1/dependencies"] = response
49
+ @fetcher.data[@gem_repo] = response
51
50
 
52
51
  set = @source.dependency_resolver_set
53
52
 
@@ -55,8 +54,6 @@ class TestGemSource < Gem::TestCase
55
54
  end
56
55
 
57
56
  def test_dependency_resolver_set_file_uri
58
- skip 'install builder gem' unless defined? Builder::XChar
59
-
60
57
  Gem::Indexer.new(@tempdir).generate_index
61
58
 
62
59
  source = Gem::Source.new "file://#{@tempdir}/"
@@ -125,7 +122,7 @@ class TestGemSource < Gem::TestCase
125
122
  end
126
123
 
127
124
  def test_load_specs
128
- released = @source.load_specs(:released).map { |spec| spec.full_name }
125
+ released = @source.load_specs(:released).map {|spec| spec.full_name }
129
126
  assert_equal %W[a-2 a-1 b-2], released
130
127
 
131
128
  cache_dir = File.join Gem.spec_cache_dir, 'gems.example.com%80'
@@ -199,30 +196,30 @@ class TestGemSource < Gem::TestCase
199
196
  installed = Gem::Source::Installed.new
200
197
  local = Gem::Source::Local.new
201
198
 
202
- assert_equal(0, remote. <=>(remote), 'remote <=> remote')
199
+ assert_equal(0, remote.<=>(remote), 'remote <=> remote')
203
200
 
204
- assert_equal(-1, remote. <=>(specific), 'remote <=> specific')
205
- assert_equal(1, specific. <=>(remote), 'specific <=> remote')
201
+ assert_equal(-1, remote.<=>(specific), 'remote <=> specific')
202
+ assert_equal(1, specific.<=>(remote), 'specific <=> remote')
206
203
 
207
- assert_equal(-1, remote. <=>(local), 'remote <=> local')
208
- assert_equal(1, local. <=>(remote), 'local <=> remote')
204
+ assert_equal(-1, remote.<=>(local), 'remote <=> local')
205
+ assert_equal(1, local.<=>(remote), 'local <=> remote')
209
206
 
210
- assert_equal(-1, remote. <=>(installed), 'remote <=> installed')
211
- assert_equal(1, installed.<=>(remote), 'installed <=> remote')
207
+ assert_equal(-1, remote.<=>(installed), 'remote <=> installed')
208
+ assert_equal(1, installed.<=>(remote), 'installed <=> remote')
212
209
 
213
210
  no_uri = @source.dup
214
211
  no_uri.instance_variable_set :@uri, nil
215
212
 
216
- assert_equal(-1, remote. <=>(no_uri), 'remote <=> no_uri')
213
+ assert_equal(-1, remote.<=>(no_uri), 'remote <=> no_uri')
217
214
  end
218
215
 
219
216
  def test_spaceship_order_is_preserved_when_uri_differs
220
217
  sourceA = Gem::Source.new "http://example.com/a"
221
218
  sourceB = Gem::Source.new "http://example.com/b"
222
219
 
223
- assert_equal(0, sourceA. <=>(sourceA), 'sourceA <=> sourceA')
224
- assert_equal(1, sourceA. <=>(sourceB), 'sourceA <=> sourceB')
225
- assert_equal(1, sourceB. <=>(sourceA), 'sourceB <=> sourceA')
220
+ assert_equal(0, sourceA.<=>(sourceA), 'sourceA <=> sourceA')
221
+ assert_equal(1, sourceA.<=>(sourceB), 'sourceA <=> sourceB')
222
+ assert_equal(1, sourceB.<=>(sourceA), 'sourceB <=> sourceA')
226
223
  end
227
224
 
228
225
  def test_update_cache_eh
@@ -243,10 +240,14 @@ class TestGemSource < Gem::TestCase
243
240
  refute rubygems_source.typo_squatting?("rubysertgems.org")
244
241
  end
245
242
 
243
+ def test_typo_squatting_false_positive
244
+ rubygems_source = Gem::Source.new("https://rubygems.org")
245
+ refute rubygems_source.typo_squatting?("rubygems.org")
246
+ end
247
+
246
248
  def test_typo_squatting_custom_distance_threshold
247
249
  rubygems_source = Gem::Source.new("https://rubgems.org")
248
250
  distance_threshold = 5
249
251
  assert rubygems_source.typo_squatting?("rubysertgems.org", distance_threshold)
250
252
  end
251
-
252
253
  end