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
@@ -4,7 +4,6 @@ require 'rubygems/local_remote_options'
4
4
  require 'rubygems/command'
5
5
 
6
6
  class TestGemLocalRemoteOptions < Gem::TestCase
7
-
8
7
  def setup
9
8
  super
10
9
 
@@ -130,5 +129,4 @@ class TestGemLocalRemoteOptions < Gem::TestCase
130
129
 
131
130
  assert_equal [@gem_repo], Gem.sources
132
131
  end
133
-
134
132
  end
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/name_tuple'
4
4
 
5
5
  class TestGemNameTuple < Gem::TestCase
6
-
7
6
  def test_full_name
8
7
  n = Gem::NameTuple.new "a", Gem::Version.new(0), "ruby"
9
8
  assert_equal "a-0", n.full_name
@@ -40,5 +39,4 @@ class TestGemNameTuple < Gem::TestCase
40
39
 
41
40
  assert_equal 1, a_p.<=>(a)
42
41
  end
43
-
44
42
  end
@@ -1,11 +1,9 @@
1
- # coding: utf-8
2
1
  # frozen_string_literal: true
3
2
 
4
3
  require 'rubygems/package/tar_test_case'
5
4
  require 'digest'
6
5
 
7
6
  class TestGemPackage < Gem::Package::TarTestCase
8
-
9
7
  def setup
10
8
  super
11
9
 
@@ -93,20 +91,17 @@ class TestGemPackage < Gem::Package::TarTestCase
93
91
  'SHA512' => {
94
92
  'metadata.gz' => metadata_sha512,
95
93
  'data.tar.gz' => Digest::SHA512.hexdigest(tar),
96
- }
97
- }
98
-
99
- if defined?(OpenSSL::Digest)
100
- expected['SHA256'] = {
94
+ },
95
+ 'SHA256' => {
101
96
  'metadata.gz' => metadata_sha256,
102
97
  'data.tar.gz' => Digest::SHA256.hexdigest(tar),
103
- }
104
- end
98
+ },
99
+ }
105
100
 
106
101
  assert_equal expected, YAML.load(checksums)
107
102
  end
108
103
 
109
- def test_build_time_source_date_epoch
104
+ def test_build_time_uses_source_date_epoch
110
105
  epoch = ENV["SOURCE_DATE_EPOCH"]
111
106
  ENV["SOURCE_DATE_EPOCH"] = "123456789"
112
107
 
@@ -124,12 +119,10 @@ class TestGemPackage < Gem::Package::TarTestCase
124
119
  ENV["SOURCE_DATE_EPOCH"] = epoch
125
120
  end
126
121
 
127
- def test_build_time_source_date_epoch_automatically_set
122
+ def test_build_time_without_source_date_epoch
128
123
  epoch = ENV["SOURCE_DATE_EPOCH"]
129
124
  ENV["SOURCE_DATE_EPOCH"] = nil
130
125
 
131
- start_time = Time.now.utc.to_i
132
-
133
126
  spec = Gem::Specification.new 'build', '1'
134
127
  spec.summary = 'build'
135
128
  spec.authors = 'build'
@@ -138,14 +131,11 @@ class TestGemPackage < Gem::Package::TarTestCase
138
131
 
139
132
  package = Gem::Package.new spec.file_name
140
133
 
141
- end_time = Time.now.utc.to_i
142
-
143
134
  assert_kind_of Time, package.build_time
144
135
 
145
136
  build_time = package.build_time.to_i
146
137
 
147
- assert_operator(start_time, :<=, build_time)
148
- assert_operator(build_time, :<=, end_time)
138
+ assert_equal Gem.source_date_epoch.to_i, build_time
149
139
  ensure
150
140
  ENV["SOURCE_DATE_EPOCH"] = epoch
151
141
  end
@@ -156,7 +146,7 @@ class TestGemPackage < Gem::Package::TarTestCase
156
146
 
157
147
  FileUtils.mkdir_p 'lib/empty'
158
148
 
159
- File.open 'lib/code.rb', 'w' do |io|
149
+ File.open 'lib/code.rb', 'w' do |io|
160
150
  io.write '# lib/code.rb'
161
151
  end
162
152
 
@@ -190,7 +180,7 @@ class TestGemPackage < Gem::Package::TarTestCase
190
180
 
191
181
  FileUtils.mkdir_p 'lib'
192
182
 
193
- File.open 'lib/code.rb', 'w' do |io|
183
+ File.open 'lib/code.rb', 'w' do |io|
194
184
  io.write '# lib/code.rb'
195
185
  end
196
186
 
@@ -262,7 +252,7 @@ class TestGemPackage < Gem::Package::TarTestCase
262
252
  end
263
253
 
264
254
  def test_build_auto_signed
265
- skip 'openssl is missing' unless defined?(OpenSSL::SSL)
255
+ skip 'openssl is missing' unless Gem::HAVE_OPENSSL
266
256
 
267
257
  FileUtils.mkdir_p File.join(Gem.user_home, '.gem')
268
258
 
@@ -305,7 +295,7 @@ class TestGemPackage < Gem::Package::TarTestCase
305
295
  end
306
296
 
307
297
  def test_build_auto_signed_encrypted_key
308
- skip 'openssl is missing' unless defined?(OpenSSL::SSL)
298
+ skip 'openssl is missing' unless Gem::HAVE_OPENSSL
309
299
 
310
300
  FileUtils.mkdir_p File.join(Gem.user_home, '.gem')
311
301
 
@@ -374,7 +364,7 @@ class TestGemPackage < Gem::Package::TarTestCase
374
364
  end
375
365
 
376
366
  def test_build_signed
377
- skip 'openssl is missing' unless defined?(OpenSSL::SSL)
367
+ skip 'openssl is missing' unless Gem::HAVE_OPENSSL
378
368
 
379
369
  spec = Gem::Specification.new 'build', '1'
380
370
  spec.summary = 'build'
@@ -411,7 +401,7 @@ class TestGemPackage < Gem::Package::TarTestCase
411
401
  end
412
402
 
413
403
  def test_build_signed_encrypted_key
414
- skip 'openssl is missing' unless defined?(OpenSSL::SSL)
404
+ skip 'openssl is missing' unless Gem::HAVE_OPENSSL
415
405
 
416
406
  spec = Gem::Specification.new 'build', '1'
417
407
  spec.summary = 'build'
@@ -448,7 +438,7 @@ class TestGemPackage < Gem::Package::TarTestCase
448
438
  end
449
439
 
450
440
  def test_raw_spec
451
- data_tgz = util_tar_gz { }
441
+ data_tgz = util_tar_gz {}
452
442
 
453
443
  gem = util_tar do |tar|
454
444
  tar.add_file 'data.tar.gz', 0644 do |io|
@@ -495,7 +485,7 @@ class TestGemPackage < Gem::Package::TarTestCase
495
485
  end
496
486
 
497
487
  def test_extract_files_empty
498
- data_tgz = util_tar_gz { }
488
+ data_tgz = util_tar_gz {}
499
489
 
500
490
  gem = util_tar do |tar|
501
491
  tar.add_file 'data.tar.gz', 0644 do |io|
@@ -541,11 +531,11 @@ class TestGemPackage < Gem::Package::TarTestCase
541
531
  package = Gem::Package.new @gem
542
532
 
543
533
  tgz_io = util_tar_gz do |tar|
544
- tar.add_file 'relative.rb', 0644 do |io|
534
+ tar.add_file 'relative.rb', 0644 do |io|
545
535
  io.write 'hi'
546
536
  end
547
537
 
548
- tar.mkdir 'lib', 0755
538
+ tar.mkdir 'lib', 0755
549
539
  tar.add_symlink 'lib/foo.rb', '../relative.rb', 0644
550
540
  end
551
541
 
@@ -611,6 +601,8 @@ class TestGemPackage < Gem::Package::TarTestCase
611
601
  destination_user_subdir = File.join destination_user_dir, 'dir'
612
602
  FileUtils.mkdir_p destination_user_subdir
613
603
 
604
+ skip "TMPDIR seems too long to add it as symlink into tar" if destination_user_dir.size > 90
605
+
614
606
  tgz_io = util_tar_gz do |tar|
615
607
  tar.add_symlink 'link', destination_user_dir, 16877
616
608
  tar.add_symlink 'link/dir', '.', 16877
@@ -640,7 +632,7 @@ class TestGemPackage < Gem::Package::TarTestCase
640
632
  tar.add_file 'lib/foo.rb', 0644 do |io|
641
633
  io.write 'hi'
642
634
  end
643
- tar.mkdir 'lib/foo', 0755
635
+ tar.mkdir 'lib/foo', 0755
644
636
  end
645
637
 
646
638
  package.extract_tar_gz tgz_io, @destination
@@ -934,8 +926,8 @@ class TestGemPackage < Gem::Package::TarTestCase
934
926
  package.verify
935
927
  end
936
928
 
937
- assert_match %r%^No such file or directory%, e.message
938
- assert_match %r%nonexistent.gem$%, e.message
929
+ assert_match %r{^No such file or directory}, e.message
930
+ assert_match %r{nonexistent.gem$}, e.message
939
931
  end
940
932
 
941
933
  def test_verify_duplicate_file
@@ -965,7 +957,7 @@ class TestGemPackage < Gem::Package::TarTestCase
965
957
  end
966
958
 
967
959
  def test_verify_security_policy
968
- skip 'openssl is missing' unless defined?(OpenSSL::SSL)
960
+ skip 'openssl is missing' unless Gem::HAVE_OPENSSL
969
961
 
970
962
  package = Gem::Package.new @gem
971
963
  package.security_policy = Gem::Security::HighSecurity
@@ -982,7 +974,7 @@ class TestGemPackage < Gem::Package::TarTestCase
982
974
  end
983
975
 
984
976
  def test_verify_security_policy_low_security
985
- skip 'openssl is missing' unless defined?(OpenSSL::SSL)
977
+ skip 'openssl is missing' unless Gem::HAVE_OPENSSL
986
978
 
987
979
  @spec.cert_chain = [PUBLIC_CERT.to_pem]
988
980
  @spec.signing_key = PRIVATE_KEY
@@ -1002,7 +994,7 @@ class TestGemPackage < Gem::Package::TarTestCase
1002
994
  end
1003
995
 
1004
996
  def test_verify_security_policy_checksum_missing
1005
- skip 'openssl is missing' unless defined?(OpenSSL::SSL)
997
+ skip 'openssl is missing' unless Gem::HAVE_OPENSSL
1006
998
 
1007
999
  @spec.cert_chain = [PUBLIC_CERT.to_pem]
1008
1000
  @spec.signing_key = PRIVATE_KEY
@@ -1023,7 +1015,7 @@ class TestGemPackage < Gem::Package::TarTestCase
1023
1015
  bogus_data = Gem::Util.gzip 'hello'
1024
1016
  fake_signer = Class.new do
1025
1017
  def digest_name; 'SHA512'; end
1026
- def digest_algorithm; Digest(:SHA512); end
1018
+ def digest_algorithm; Digest(:SHA512).new; end
1027
1019
  def key; 'key'; end
1028
1020
  def sign(*); 'fake_sig'; end
1029
1021
  end
@@ -1073,11 +1065,22 @@ class TestGemPackage < Gem::Package::TarTestCase
1073
1065
 
1074
1066
  package = Gem::Package.new @gem
1075
1067
 
1076
- e = assert_raises Gem::Package::FormatError do
1077
- package.verify_entry entry
1068
+ _, err = use_ui @ui do
1069
+ e = nil
1070
+
1071
+ out_err = capture_io do
1072
+ e = assert_raises ArgumentError do
1073
+ package.verify_entry entry
1074
+ end
1075
+ end
1076
+
1077
+ assert_equal "whatever", e.message
1078
+ assert_equal "full_name", e.backtrace_locations.first.label
1079
+
1080
+ out_err
1078
1081
  end
1079
1082
 
1080
- assert_equal "package is corrupt, exception while verifying: whatever (ArgumentError) in #{@gem}", e.message
1083
+ assert_equal "Exception while verifying #{@gem}\n", err
1081
1084
 
1082
1085
  valid_metadata = ["metadata", "metadata.gz"]
1083
1086
  valid_metadata.each do |vm|
@@ -1102,7 +1105,7 @@ class TestGemPackage < Gem::Package::TarTestCase
1102
1105
  $bad_name = vm
1103
1106
 
1104
1107
  entry = Object.new
1105
- def entry.full_name() $bad_name end
1108
+ def entry.full_name() $bad_name end
1106
1109
 
1107
1110
  package = Gem::Package.new(@gem)
1108
1111
  package.instance_variable_set(:@files, [])
@@ -1166,5 +1169,4 @@ class TestGemPackage < Gem::Package::TarTestCase
1166
1169
 
1167
1170
  StringIO.new tgz_io.string
1168
1171
  end
1169
-
1170
1172
  end
@@ -5,7 +5,6 @@ unless Gem.java_platform? # jruby can't require the simple_gem file
5
5
  require 'rubygems/simple_gem'
6
6
 
7
7
  class TestGemPackageOld < Gem::TestCase
8
-
9
8
  def setup
10
9
  super
11
10
 
@@ -24,7 +23,7 @@ unless Gem.java_platform? # jruby can't require the simple_gem file
24
23
  end
25
24
 
26
25
  def test_contents_security_policy
27
- skip 'openssl is missing' unless defined?(OpenSSL::SSL)
26
+ skip 'openssl is missing' unless Gem::HAVE_OPENSSL
28
27
 
29
28
  @package.security_policy = Gem::Security::AlmostNoSecurity
30
29
 
@@ -45,7 +44,7 @@ unless Gem.java_platform? # jruby can't require the simple_gem file
45
44
  end
46
45
 
47
46
  def test_extract_files_security_policy
48
- skip 'openssl is missing' unless defined?(OpenSSL::SSL)
47
+ skip 'openssl is missing' unless Gem::HAVE_OPENSSL
49
48
 
50
49
  @package.security_policy = Gem::Security::AlmostNoSecurity
51
50
 
@@ -59,7 +58,7 @@ unless Gem.java_platform? # jruby can't require the simple_gem file
59
58
  end
60
59
 
61
60
  def test_spec_security_policy
62
- skip 'openssl is missing' unless defined?(OpenSSL::SSL)
61
+ skip 'openssl is missing' unless Gem::HAVE_OPENSSL
63
62
 
64
63
  @package.security_policy = Gem::Security::AlmostNoSecurity
65
64
 
@@ -69,7 +68,7 @@ unless Gem.java_platform? # jruby can't require the simple_gem file
69
68
  end
70
69
 
71
70
  def test_verify
72
- skip 'openssl is missing' unless defined?(OpenSSL::SSL)
71
+ skip 'openssl is missing' unless Gem::HAVE_OPENSSL
73
72
 
74
73
  assert @package.verify
75
74
 
@@ -87,6 +86,5 @@ unless Gem.java_platform? # jruby can't require the simple_gem file
87
86
  'and cannot be verified',
88
87
  e.message
89
88
  end
90
-
91
89
  end
92
90
  end
@@ -3,7 +3,6 @@ require 'rubygems/package/tar_test_case'
3
3
  require 'rubygems/package'
4
4
 
5
5
  class TestGemPackageTarHeader < Gem::Package::TarTestCase
6
-
7
6
  def setup
8
7
  super
9
8
 
@@ -205,4 +204,22 @@ tjmather\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
205
204
  assert_equal 6932, tar_header.checksum
206
205
  end
207
206
 
207
+ def test_spaces_in_headers
208
+ stream = StringIO.new(
209
+ <<-EOF.dup.force_encoding('binary').split("\n").join
210
+ Access_Points_09202018.csv
211
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
212
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
213
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
214
+ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
215
+ \x00\x00100777 \x00 0 \x00 0 \x00 4357 13545040367 104501
216
+ \x000
217
+ EOF
218
+ )
219
+
220
+ tar_header = Gem::Package::TarHeader.from stream
221
+
222
+ assert_equal 0, tar_header.uid
223
+ assert_equal 0, tar_header.gid
224
+ end
208
225
  end
@@ -3,7 +3,6 @@ require 'rubygems/package/tar_test_case'
3
3
  require 'rubygems/package'
4
4
 
5
5
  class TestGemPackageTarReader < Gem::Package::TarTestCase
6
-
7
6
  def test_each_entry
8
7
  tar = tar_dir_header "foo", "bar", 0, Time.now
9
8
  tar << tar_file_header("bar", "baz", 0, 0, Time.now)
@@ -85,5 +84,4 @@ class TestGemPackageTarReader < Gem::Package::TarTestCase
85
84
  ensure
86
85
  io.close!
87
86
  end
88
-
89
87
  end
@@ -3,7 +3,6 @@ require 'rubygems/package/tar_test_case'
3
3
  require 'rubygems/package'
4
4
 
5
5
  class TestGemPackageTarReaderEntry < Gem::Package::TarTestCase
6
-
7
6
  def setup
8
7
  super
9
8
 
@@ -150,5 +149,4 @@ class TestGemPackageTarReaderEntry < Gem::Package::TarTestCase
150
149
 
151
150
  assert_equal char, @entry.getc
152
151
  end
153
-
154
152
  end
@@ -4,10 +4,14 @@ require 'rubygems/package/tar_writer'
4
4
  require 'minitest/mock'
5
5
 
6
6
  class TestGemPackageTarWriter < Gem::Package::TarTestCase
7
-
8
7
  def setup
9
8
  super
10
9
 
10
+ # Setting `@default_source_date_epoch` to `nil` effectively resets the
11
+ # value used for `Gem.source_date_epoch` whenever `$SOURCE_DATE_EPOCH`
12
+ # is not set.
13
+ Gem.instance_variable_set(:'@default_source_date_epoch', nil)
14
+
11
15
  @data = 'abcde12345'
12
16
  @io = TempIO.new
13
17
  @tar_writer = Gem::Package::TarWriter.new @io
@@ -67,7 +71,7 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
67
71
  end
68
72
 
69
73
  def test_add_file_digest
70
- digest_algorithms = Digest::SHA1, Digest::SHA512
74
+ digest_algorithms = Digest::SHA1.new, Digest::SHA512.new
71
75
 
72
76
  Time.stub :now, Time.at(1458518157) do
73
77
  digests = @tar_writer.add_file_digest 'x', 0644, digest_algorithms do |io|
@@ -90,7 +94,7 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
90
94
  end
91
95
 
92
96
  def test_add_file_digest_multiple
93
- digest_algorithms = [Digest::SHA1, Digest::SHA512]
97
+ digest_algorithms = [Digest::SHA1.new, Digest::SHA512.new]
94
98
 
95
99
  Time.stub :now, Time.at(1458518157) do
96
100
  digests = @tar_writer.add_file_digest 'x', 0644, digest_algorithms do |io|
@@ -113,7 +117,7 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
113
117
  end
114
118
 
115
119
  def test_add_file_signer
116
- skip 'openssl is missing' unless defined?(OpenSSL::SSL)
120
+ skip 'openssl is missing' unless Gem::HAVE_OPENSSL
117
121
 
118
122
  signer = Gem::Security::Signer.new PRIVATE_KEY, [PUBLIC_CERT]
119
123
 
@@ -197,7 +201,7 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
197
201
  end
198
202
 
199
203
  def test_add_file_simple_data
200
- @tar_writer.add_file_simple("lib/foo/bar", 0, 10) { |f| f.write @data }
204
+ @tar_writer.add_file_simple("lib/foo/bar", 0, 10) {|f| f.write @data }
201
205
  @tar_writer.flush
202
206
 
203
207
  assert_equal @data + ("\0" * (512 - @data.size)),
@@ -325,5 +329,4 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
325
329
  end
326
330
  assert_includes exception.message, name
327
331
  end
328
-
329
332
  end
@@ -1,22 +1,22 @@
1
1
  # frozen_string_literal: true
2
2
  require 'rubygems/test_case'
3
3
  require 'rubygems'
4
- require 'bundler/errors'
4
+
5
5
  begin
6
6
  require 'rubygems/package_task'
7
- rescue LoadError, Bundler::GemfileNotFound
7
+ rescue LoadError => e
8
+ raise unless e.path == 'rake/packagetask'
8
9
  end
9
10
 
10
- class TestGemPackageTask < Gem::TestCase
11
-
12
- def setup
13
- super
11
+ unless defined?(Rake::PackageTask)
12
+ warn 'Skipping Gem::PackageTask tests. rake not found.'
13
+ end
14
14
 
15
- Rake.application = Rake::Application.new
15
+ class TestGemPackageTask < Gem::TestCase
16
+ def test_gem_package
17
+ original_rake_fileutils_verbosity = RakeFileUtils.verbose_flag
16
18
  RakeFileUtils.verbose_flag = false
17
- end
18
19
 
19
- def test_gem_package
20
20
  gem = Gem::Specification.new do |g|
21
21
  g.name = "pkgr"
22
22
  g.version = "1.2.3"
@@ -26,7 +26,9 @@ class TestGemPackageTask < Gem::TestCase
26
26
  g.summary = 'summary'
27
27
  end
28
28
 
29
- pkg = Gem::PackageTask.new(gem) do |p|
29
+ Rake.application = Rake::Application.new
30
+
31
+ pkg = Gem::PackageTask.new(gem) do |p|
30
32
  p.package_files << "y"
31
33
  end
32
34
 
@@ -40,6 +42,38 @@ class TestGemPackageTask < Gem::TestCase
40
42
 
41
43
  assert_path_exists 'pkg/pkgr-1.2.3.gem'
42
44
  end
45
+ ensure
46
+ RakeFileUtils.verbose_flag = original_rake_fileutils_verbosity
47
+ end
48
+
49
+ def test_gem_package_prints_to_stdout_by_default
50
+ gem = Gem::Specification.new do |g|
51
+ g.name = "pkgr"
52
+ g.version = "1.2.3"
53
+
54
+ g.authors = %w[author]
55
+ g.files = %w[x]
56
+ g.summary = 'summary'
57
+ end
58
+
59
+ _, err = capture_io do
60
+ Rake.application = Rake::Application.new
61
+
62
+ pkg = Gem::PackageTask.new(gem) do |p|
63
+ p.package_files << "y"
64
+ end
65
+
66
+ assert_equal %w[x y], pkg.package_files
67
+
68
+ Dir.chdir @tempdir do
69
+ FileUtils.touch 'x'
70
+ FileUtils.touch 'y'
71
+
72
+ Rake.application['package'].invoke
73
+ end
74
+ end
75
+
76
+ assert_empty err
43
77
  end
44
78
 
45
79
  def test_gem_package_with_current_platform
@@ -49,7 +83,7 @@ class TestGemPackageTask < Gem::TestCase
49
83
  g.files = Rake::FileList["x"].resolve
50
84
  g.platform = Gem::Platform::CURRENT
51
85
  end
52
- pkg = Gem::PackageTask.new(gem) do |p|
86
+ pkg = Gem::PackageTask.new(gem) do |p|
53
87
  p.package_files << "y"
54
88
  end
55
89
  assert_equal ["x", "y"], pkg.package_files
@@ -62,7 +96,7 @@ class TestGemPackageTask < Gem::TestCase
62
96
  g.files = Rake::FileList["x"].resolve
63
97
  g.platform = Gem::Platform::RUBY
64
98
  end
65
- pkg = Gem::PackageTask.new(gem) do |p|
99
+ pkg = Gem::PackageTask.new(gem) do |p|
66
100
  p.package_files << "y"
67
101
  end
68
102
  assert_equal ["x", "y"], pkg.package_files
@@ -80,5 +114,4 @@ class TestGemPackageTask < Gem::TestCase
80
114
 
81
115
  assert_equal 'pkg/nokogiri-1.5.0-java', pkg.package_dir_path
82
116
  end
83
-
84
117
  end if defined?(Rake::PackageTask)