rubygems-update 3.1.2 → 3.2.3

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 (560) hide show
  1. checksums.yaml +4 -4
  2. data/CODE_OF_CONDUCT.md +55 -19
  3. data/CONTRIBUTING.md +25 -11
  4. data/History.txt +460 -232
  5. data/Manifest.txt +47 -77
  6. data/POLICIES.md +6 -12
  7. data/README.md +5 -5
  8. data/Rakefile +59 -83
  9. data/bin/update_rubygems +1 -1
  10. data/bundler/CHANGELOG.md +1598 -1421
  11. data/bundler/README.md +6 -8
  12. data/bundler/UPGRADING.md +18 -32
  13. data/bundler/bundler.gemspec +3 -3
  14. data/bundler/exe/bundle +3 -0
  15. data/bundler/lib/bundler.rb +32 -7
  16. data/bundler/lib/bundler/build_metadata.rb +4 -12
  17. data/bundler/lib/bundler/cli.rb +58 -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 +84 -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 -5
  43. data/bundler/lib/bundler/definition.rb +65 -76
  44. data/bundler/lib/bundler/dep_proxy.rb +1 -1
  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 +2 -2
  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/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +0 -0
  74. data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +2 -4
  75. data/bundler/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +0 -0
  76. data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
  77. data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
  78. data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +19 -30
  79. data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
  80. data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +0 -0
  81. data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
  82. data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
  83. data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +0 -0
  84. data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
  85. data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +25 -3
  86. data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
  87. data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
  88. data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
  89. data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
  90. data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
  91. data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
  92. data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
  93. data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
  94. data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +0 -0
  95. data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
  96. data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +0 -0
  97. data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +4 -4
  98. data/bundler/lib/bundler/mirror.rb +2 -2
  99. data/bundler/lib/bundler/plugin.rb +30 -5
  100. data/bundler/lib/bundler/plugin/api/source.rb +1 -1
  101. data/bundler/lib/bundler/plugin/dsl.rb +1 -1
  102. data/bundler/lib/bundler/plugin/index.rb +10 -1
  103. data/bundler/lib/bundler/plugin/installer.rb +1 -1
  104. data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
  105. data/bundler/lib/bundler/plugin/source_list.rb +1 -1
  106. data/bundler/lib/bundler/psyched_yaml.rb +0 -15
  107. data/bundler/lib/bundler/remote_specification.rb +5 -2
  108. data/bundler/lib/bundler/resolver.rb +37 -18
  109. data/bundler/lib/bundler/resolver/spec_group.rb +36 -21
  110. data/bundler/lib/bundler/retry.rb +1 -1
  111. data/bundler/lib/bundler/ruby_version.rb +1 -1
  112. data/bundler/lib/bundler/rubygems_ext.rb +53 -9
  113. data/bundler/lib/bundler/rubygems_gem_installer.rb +3 -9
  114. data/bundler/lib/bundler/rubygems_integration.rb +26 -61
  115. data/bundler/lib/bundler/runtime.rb +4 -14
  116. data/bundler/lib/bundler/settings.rb +49 -46
  117. data/bundler/lib/bundler/shared_helpers.rb +2 -2
  118. data/bundler/lib/bundler/similarity_detector.rb +1 -1
  119. data/bundler/lib/bundler/source.rb +1 -1
  120. data/bundler/lib/bundler/source/git.rb +5 -5
  121. data/bundler/lib/bundler/source/git/git_proxy.rb +57 -60
  122. data/bundler/lib/bundler/source/path.rb +7 -3
  123. data/bundler/lib/bundler/source/path/installer.rb +8 -10
  124. data/bundler/lib/bundler/source/rubygems.rb +13 -16
  125. data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
  126. data/bundler/lib/bundler/source_list.rb +2 -2
  127. data/bundler/lib/bundler/spec_set.rb +7 -9
  128. data/bundler/lib/bundler/stub_specification.rb +17 -7
  129. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  130. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +9 -1
  131. data/bundler/lib/bundler/templates/newgem/README.md.tt +1 -2
  132. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +19 -5
  133. data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
  134. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
  135. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
  136. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
  137. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
  138. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
  139. data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  140. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +14 -6
  141. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +10 -0
  142. data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
  143. data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
  144. data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
  145. data/bundler/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
  146. data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  147. data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  148. data/bundler/lib/bundler/ui/shell.rb +5 -5
  149. data/bundler/lib/bundler/uri_credentials_filter.rb +3 -1
  150. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -1
  151. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +34 -1
  152. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
  153. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
  154. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  155. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +38 -40
  156. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +79 -208
  157. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +0 -7
  158. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
  159. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
  160. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  161. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
  162. data/bundler/lib/bundler/vendored_persistent.rb +0 -7
  163. data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
  164. data/bundler/lib/bundler/version.rb +1 -1
  165. data/bundler/lib/bundler/worker.rb +1 -1
  166. data/bundler/lib/bundler/yaml_serializer.rb +1 -1
  167. data/bundler/man/bundle-add.1 +1 -1
  168. data/bundler/man/bundle-binstubs.1 +5 -3
  169. data/bundler/man/bundle-cache.1 +1 -1
  170. data/bundler/man/bundle-check.1 +1 -1
  171. data/bundler/man/bundle-clean.1 +1 -1
  172. data/bundler/man/bundle-config.1 +16 -25
  173. data/bundler/man/bundle-doctor.1 +1 -1
  174. data/bundler/man/bundle-exec.1 +1 -1
  175. data/bundler/man/bundle-gem.1 +25 -3
  176. data/bundler/man/bundle-info.1 +1 -1
  177. data/bundler/man/bundle-init.1 +1 -1
  178. data/bundler/man/bundle-inject.1 +1 -1
  179. data/bundler/man/bundle-install.1 +30 -3
  180. data/bundler/man/bundle-list.1 +7 -7
  181. data/bundler/man/bundle-lock.1 +1 -1
  182. data/bundler/man/bundle-open.1 +1 -1
  183. data/bundler/man/bundle-outdated.1 +1 -1
  184. data/bundler/man/bundle-platform.1 +1 -1
  185. data/bundler/man/bundle-pristine.1 +1 -1
  186. data/bundler/man/bundle-remove.1 +1 -1
  187. data/bundler/man/bundle-show.1 +1 -1
  188. data/bundler/man/bundle-update.1 +1 -1
  189. data/bundler/man/bundle-viz.1 +1 -1
  190. data/bundler/man/bundle.1 +1 -1
  191. data/bundler/man/gemfile.5 +4 -4
  192. data/lib/rubygems.rb +138 -187
  193. data/lib/rubygems/available_set.rb +4 -6
  194. data/lib/rubygems/basic_specification.rb +12 -10
  195. data/lib/rubygems/bundler_version_finder.rb +14 -9
  196. data/lib/rubygems/command.rb +17 -17
  197. data/lib/rubygems/command_manager.rb +5 -6
  198. data/lib/rubygems/commands/build_command.rb +40 -20
  199. data/lib/rubygems/commands/cert_command.rb +2 -10
  200. data/lib/rubygems/commands/check_command.rb +0 -2
  201. data/lib/rubygems/commands/cleanup_command.rb +11 -7
  202. data/lib/rubygems/commands/contents_command.rb +4 -6
  203. data/lib/rubygems/commands/dependency_command.rb +6 -8
  204. data/lib/rubygems/commands/environment_command.rb +1 -3
  205. data/lib/rubygems/commands/fetch_command.rb +2 -4
  206. data/lib/rubygems/commands/generate_index_command.rb +0 -2
  207. data/lib/rubygems/commands/help_command.rb +4 -4
  208. data/lib/rubygems/commands/info_command.rb +8 -5
  209. data/lib/rubygems/commands/install_command.rb +3 -5
  210. data/lib/rubygems/commands/list_command.rb +8 -7
  211. data/lib/rubygems/commands/lock_command.rb +1 -3
  212. data/lib/rubygems/commands/mirror_command.rb +0 -2
  213. data/lib/rubygems/commands/open_command.rb +0 -4
  214. data/lib/rubygems/commands/outdated_command.rb +0 -2
  215. data/lib/rubygems/commands/owner_command.rb +9 -4
  216. data/lib/rubygems/commands/pristine_command.rb +11 -5
  217. data/lib/rubygems/commands/push_command.rb +10 -47
  218. data/lib/rubygems/commands/query_command.rb +14 -344
  219. data/lib/rubygems/commands/rdoc_command.rb +0 -2
  220. data/lib/rubygems/commands/search_command.rb +7 -7
  221. data/lib/rubygems/commands/server_command.rb +3 -1
  222. data/lib/rubygems/commands/setup_command.rb +131 -58
  223. data/lib/rubygems/commands/signin_command.rb +0 -2
  224. data/lib/rubygems/commands/signout_command.rb +0 -2
  225. data/lib/rubygems/commands/sources_command.rb +9 -7
  226. data/lib/rubygems/commands/specification_command.rb +8 -4
  227. data/lib/rubygems/commands/stale_command.rb +1 -3
  228. data/lib/rubygems/commands/uninstall_command.rb +2 -4
  229. data/lib/rubygems/commands/unpack_command.rb +1 -3
  230. data/lib/rubygems/commands/update_command.rb +59 -14
  231. data/lib/rubygems/commands/which_command.rb +0 -2
  232. data/lib/rubygems/commands/yank_command.rb +4 -7
  233. data/lib/rubygems/config_file.rb +11 -4
  234. data/lib/rubygems/core_ext/kernel_require.rb +29 -36
  235. data/lib/rubygems/core_ext/kernel_warn.rb +12 -13
  236. data/lib/rubygems/defaults.rb +101 -7
  237. data/lib/rubygems/dependency.rb +3 -8
  238. data/lib/rubygems/dependency_installer.rb +6 -78
  239. data/lib/rubygems/dependency_list.rb +7 -9
  240. data/lib/rubygems/deprecate.rb +46 -1
  241. data/lib/rubygems/doctor.rb +4 -4
  242. data/lib/rubygems/errors.rb +3 -14
  243. data/lib/rubygems/exceptions.rb +2 -33
  244. data/lib/rubygems/ext.rb +6 -6
  245. data/lib/rubygems/ext/build_error.rb +2 -0
  246. data/lib/rubygems/ext/builder.rb +16 -35
  247. data/lib/rubygems/ext/cmake_builder.rb +5 -7
  248. data/lib/rubygems/ext/configure_builder.rb +4 -6
  249. data/lib/rubygems/ext/ext_conf_builder.rb +21 -19
  250. data/lib/rubygems/ext/rake_builder.rb +4 -6
  251. data/lib/rubygems/gem_runner.rb +3 -10
  252. data/lib/rubygems/gemcutter_utilities.rb +102 -21
  253. data/lib/rubygems/indexer.rb +1 -22
  254. data/lib/rubygems/install_update_options.rb +7 -7
  255. data/lib/rubygems/installer.rb +59 -80
  256. data/lib/rubygems/installer_test_case.rb +25 -11
  257. data/lib/rubygems/installer_uninstaller_utils.rb +24 -0
  258. data/lib/rubygems/local_remote_options.rb +1 -1
  259. data/lib/rubygems/mock_gem_ui.rb +0 -6
  260. data/lib/rubygems/name_tuple.rb +3 -7
  261. data/lib/rubygems/openssl.rb +7 -0
  262. data/lib/rubygems/package.rb +14 -25
  263. data/lib/rubygems/package/digest_io.rb +0 -2
  264. data/lib/rubygems/package/file_source.rb +0 -2
  265. data/lib/rubygems/package/io_source.rb +0 -2
  266. data/lib/rubygems/package/old.rb +1 -3
  267. data/lib/rubygems/package/tar_header.rb +4 -6
  268. data/lib/rubygems/package/tar_reader.rb +0 -3
  269. data/lib/rubygems/package/tar_reader/entry.rb +0 -3
  270. data/lib/rubygems/package/tar_test_case.rb +2 -4
  271. data/lib/rubygems/package/tar_writer.rb +2 -12
  272. data/lib/rubygems/package_task.rb +1 -7
  273. data/lib/rubygems/path_support.rb +1 -3
  274. data/lib/rubygems/platform.rb +21 -12
  275. data/lib/rubygems/psych_tree.rb +0 -2
  276. data/lib/rubygems/query_utils.rb +353 -0
  277. data/lib/rubygems/rdoc.rb +0 -12
  278. data/lib/rubygems/remote_fetcher.rb +11 -28
  279. data/lib/rubygems/request.rb +4 -11
  280. data/lib/rubygems/request/connection_pools.rb +1 -5
  281. data/lib/rubygems/request/http_pool.rb +0 -2
  282. data/lib/rubygems/request/https_pool.rb +0 -2
  283. data/lib/rubygems/request_set.rb +7 -20
  284. data/lib/rubygems/request_set/gem_dependency_api.rb +6 -8
  285. data/lib/rubygems/request_set/lockfile.rb +8 -12
  286. data/lib/rubygems/request_set/lockfile/parser.rb +0 -2
  287. data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -3
  288. data/lib/rubygems/requirement.rb +20 -21
  289. data/lib/rubygems/resolver.rb +14 -12
  290. data/lib/rubygems/resolver/activation_request.rb +9 -3
  291. data/lib/rubygems/resolver/api_set.rb +31 -24
  292. data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
  293. data/lib/rubygems/resolver/api_specification.rb +24 -10
  294. data/lib/rubygems/resolver/best_set.rb +1 -3
  295. data/lib/rubygems/resolver/composed_set.rb +3 -5
  296. data/lib/rubygems/resolver/conflict.rb +2 -4
  297. data/lib/rubygems/resolver/current_set.rb +0 -2
  298. data/lib/rubygems/resolver/dependency_request.rb +1 -3
  299. data/lib/rubygems/resolver/git_set.rb +0 -2
  300. data/lib/rubygems/resolver/git_specification.rb +0 -2
  301. data/lib/rubygems/resolver/index_set.rb +1 -3
  302. data/lib/rubygems/resolver/index_specification.rb +26 -2
  303. data/lib/rubygems/resolver/installed_specification.rb +0 -2
  304. data/lib/rubygems/resolver/installer_set.rb +60 -13
  305. data/lib/rubygems/resolver/local_specification.rb +0 -2
  306. data/lib/rubygems/resolver/lock_set.rb +2 -4
  307. data/lib/rubygems/resolver/lock_specification.rb +0 -2
  308. data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
  309. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
  310. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +1 -0
  311. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +39 -5
  312. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
  313. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
  314. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
  315. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
  316. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
  317. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
  318. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
  319. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
  320. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +43 -10
  321. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +75 -7
  322. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
  323. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +1 -0
  324. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
  325. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +506 -165
  326. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
  327. data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
  328. data/lib/rubygems/resolver/requirement_list.rb +0 -2
  329. data/lib/rubygems/resolver/set.rb +0 -2
  330. data/lib/rubygems/resolver/source_set.rb +0 -2
  331. data/lib/rubygems/resolver/spec_specification.rb +14 -2
  332. data/lib/rubygems/resolver/specification.rb +13 -3
  333. data/lib/rubygems/resolver/stats.rb +0 -2
  334. data/lib/rubygems/resolver/vendor_set.rb +0 -2
  335. data/lib/rubygems/resolver/vendor_specification.rb +0 -2
  336. data/lib/rubygems/s3_uri_signer.rb +2 -8
  337. data/lib/rubygems/safe_yaml.rb +4 -4
  338. data/lib/rubygems/security.rb +27 -34
  339. data/lib/rubygems/security/policy.rb +4 -8
  340. data/lib/rubygems/security/signer.rb +5 -7
  341. data/lib/rubygems/security/trust_dir.rb +1 -3
  342. data/lib/rubygems/server.rb +16 -13
  343. data/lib/rubygems/source.rb +23 -12
  344. data/lib/rubygems/source/git.rb +7 -8
  345. data/lib/rubygems/source/installed.rb +0 -2
  346. data/lib/rubygems/source/local.rb +2 -4
  347. data/lib/rubygems/source/lock.rb +0 -2
  348. data/lib/rubygems/source/specific_file.rb +0 -2
  349. data/lib/rubygems/source/vendor.rb +0 -2
  350. data/lib/rubygems/source_list.rb +4 -7
  351. data/lib/rubygems/spec_fetcher.rb +19 -18
  352. data/lib/rubygems/specification.rb +113 -126
  353. data/lib/rubygems/specification_policy.rb +88 -30
  354. data/lib/rubygems/ssl_certs/{index.rubygems.org → rubygems.org}/GlobalSignRootCA.pem +0 -0
  355. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
  356. data/lib/rubygems/stub_specification.rb +1 -5
  357. data/lib/rubygems/syck_hack.rb +0 -2
  358. data/lib/rubygems/test_case.rb +105 -132
  359. data/lib/rubygems/test_utilities.rb +12 -19
  360. data/lib/rubygems/uninstaller.rb +35 -16
  361. data/lib/rubygems/uri_formatter.rb +2 -3
  362. data/lib/rubygems/uri_parser.rb +0 -2
  363. data/lib/rubygems/user_interaction.rb +1 -26
  364. data/lib/rubygems/util.rb +15 -3
  365. data/lib/rubygems/util/licenses.rb +4 -6
  366. data/lib/rubygems/util/list.rb +0 -2
  367. data/lib/rubygems/validator.rb +1 -3
  368. data/lib/rubygems/version.rb +5 -7
  369. data/lib/rubygems/version_option.rb +6 -0
  370. data/rubygems-update.gemspec +2 -2
  371. data/setup.rb +2 -7
  372. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
  373. data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
  374. data/test/rubygems/rubygems_plugin.rb +0 -2
  375. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
  376. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
  377. data/test/rubygems/test_bundled_ca.rb +42 -45
  378. data/test/rubygems/test_config.rb +0 -2
  379. data/test/rubygems/test_deprecate.rb +40 -7
  380. data/test/rubygems/test_gem.rb +151 -99
  381. data/test/rubygems/test_gem_available_set.rb +3 -5
  382. data/test/rubygems/test_gem_bundler_version_finder.rb +19 -3
  383. data/test/rubygems/test_gem_command.rb +24 -7
  384. data/test/rubygems/test_gem_command_manager.rb +36 -5
  385. data/test/rubygems/test_gem_commands_build_command.rb +250 -15
  386. data/test/rubygems/test_gem_commands_cert_command.rb +4 -6
  387. data/test/rubygems/test_gem_commands_check_command.rb +0 -2
  388. data/test/rubygems/test_gem_commands_cleanup_command.rb +14 -5
  389. data/test/rubygems/test_gem_commands_contents_command.rb +50 -19
  390. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -2
  391. data/test/rubygems/test_gem_commands_environment_command.rb +21 -23
  392. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -2
  393. data/test/rubygems/test_gem_commands_generate_index_command.rb +1 -7
  394. data/test/rubygems/test_gem_commands_help_command.rb +15 -4
  395. data/test/rubygems/test_gem_commands_info_command.rb +6 -8
  396. data/test/rubygems/test_gem_commands_install_command.rb +163 -34
  397. data/test/rubygems/test_gem_commands_list_command.rb +0 -2
  398. data/test/rubygems/test_gem_commands_lock_command.rb +0 -2
  399. data/test/rubygems/test_gem_commands_mirror.rb +1 -3
  400. data/test/rubygems/test_gem_commands_open_command.rb +4 -6
  401. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -2
  402. data/test/rubygems/test_gem_commands_owner_command.rb +59 -5
  403. data/test/rubygems/test_gem_commands_pristine_command.rb +43 -12
  404. data/test/rubygems/test_gem_commands_push_command.rb +77 -9
  405. data/test/rubygems/test_gem_commands_query_command.rb +12 -12
  406. data/test/rubygems/test_gem_commands_search_command.rb +0 -2
  407. data/test/rubygems/test_gem_commands_server_command.rb +0 -2
  408. data/test/rubygems/test_gem_commands_setup_command.rb +165 -124
  409. data/test/rubygems/test_gem_commands_signin_command.rb +33 -9
  410. data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
  411. data/test/rubygems/test_gem_commands_sources_command.rb +99 -3
  412. data/test/rubygems/test_gem_commands_specification_command.rb +46 -20
  413. data/test/rubygems/test_gem_commands_stale_command.rb +0 -2
  414. data/test/rubygems/test_gem_commands_uninstall_command.rb +2 -3
  415. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -2
  416. data/test/rubygems/test_gem_commands_update_command.rb +116 -7
  417. data/test/rubygems/test_gem_commands_which_command.rb +3 -5
  418. data/test/rubygems/test_gem_commands_yank_command.rb +44 -8
  419. data/test/rubygems/test_gem_config_file.rb +7 -12
  420. data/test/rubygems/test_gem_dependency.rb +0 -2
  421. data/test/rubygems/test_gem_dependency_installer.rb +90 -193
  422. data/test/rubygems/test_gem_dependency_list.rb +10 -12
  423. data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -3
  424. data/test/rubygems/test_gem_doctor.rb +28 -2
  425. data/test/rubygems/test_gem_ext_builder.rb +26 -47
  426. data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -23
  427. data/test/rubygems/test_gem_ext_configure_builder.rb +4 -20
  428. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +9 -29
  429. data/test/rubygems/test_gem_ext_rake_builder.rb +39 -24
  430. data/test/rubygems/test_gem_gem_runner.rb +44 -1
  431. data/test/rubygems/test_gem_gemcutter_utilities.rb +8 -5
  432. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -2
  433. data/test/rubygems/test_gem_indexer.rb +9 -15
  434. data/test/rubygems/test_gem_install_update_options.rb +14 -4
  435. data/test/rubygems/test_gem_installer.rb +258 -115
  436. data/test/rubygems/test_gem_local_remote_options.rb +0 -2
  437. data/test/rubygems/test_gem_name_tuple.rb +0 -2
  438. data/test/rubygems/test_gem_package.rb +41 -39
  439. data/test/rubygems/test_gem_package_old.rb +4 -6
  440. data/test/rubygems/test_gem_package_tar_header.rb +18 -1
  441. data/test/rubygems/test_gem_package_tar_reader.rb +0 -2
  442. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -2
  443. data/test/rubygems/test_gem_package_tar_writer.rb +9 -6
  444. data/test/rubygems/test_gem_package_task.rb +46 -13
  445. data/test/rubygems/test_gem_path_support.rb +0 -2
  446. data/test/rubygems/test_gem_platform.rb +63 -6
  447. data/test/rubygems/test_gem_rdoc.rb +0 -2
  448. data/test/rubygems/test_gem_remote_fetcher.rb +168 -211
  449. data/test/rubygems/test_gem_request.rb +13 -17
  450. data/test/rubygems/test_gem_request_connection_pools.rb +0 -4
  451. data/test/rubygems/test_gem_request_set.rb +72 -22
  452. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +3 -5
  453. data/test/rubygems/test_gem_request_set_lockfile.rb +4 -6
  454. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -11
  455. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -120
  456. data/test/rubygems/test_gem_requirement.rb +10 -4
  457. data/test/rubygems/test_gem_resolver.rb +6 -8
  458. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -2
  459. data/test/rubygems/test_gem_resolver_api_set.rb +60 -59
  460. data/test/rubygems/test_gem_resolver_api_specification.rb +3 -5
  461. data/test/rubygems/test_gem_resolver_best_set.rb +5 -7
  462. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -2
  463. data/test/rubygems/test_gem_resolver_conflict.rb +1 -3
  464. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -2
  465. data/test/rubygems/test_gem_resolver_git_set.rb +0 -2
  466. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -2
  467. data/test/rubygems/test_gem_resolver_index_set.rb +2 -4
  468. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -2
  469. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -2
  470. data/test/rubygems/test_gem_resolver_installer_set.rb +7 -9
  471. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -2
  472. data/test/rubygems/test_gem_resolver_lock_set.rb +3 -5
  473. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -2
  474. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -2
  475. data/test/rubygems/test_gem_resolver_specification.rb +0 -4
  476. data/test/rubygems/test_gem_resolver_vendor_set.rb +1 -3
  477. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -2
  478. data/test/rubygems/test_gem_security.rb +22 -24
  479. data/test/rubygems/test_gem_security_policy.rb +7 -12
  480. data/test/rubygems/test_gem_security_signer.rb +10 -12
  481. data/test/rubygems/test_gem_security_trust_dir.rb +4 -6
  482. data/test/rubygems/test_gem_server.rb +10 -14
  483. data/test/rubygems/test_gem_silent_ui.rb +0 -2
  484. data/test/rubygems/test_gem_source.rb +19 -18
  485. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -2
  486. data/test/rubygems/test_gem_source_git.rb +12 -13
  487. data/test/rubygems/test_gem_source_installed.rb +7 -9
  488. data/test/rubygems/test_gem_source_list.rb +1 -2
  489. data/test/rubygems/test_gem_source_local.rb +8 -10
  490. data/test/rubygems/test_gem_source_lock.rb +10 -12
  491. data/test/rubygems/test_gem_source_specific_file.rb +7 -9
  492. data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
  493. data/test/rubygems/test_gem_source_vendor.rb +7 -9
  494. data/test/rubygems/test_gem_spec_fetcher.rb +11 -4
  495. data/test/rubygems/test_gem_specification.rb +182 -131
  496. data/test/rubygems/test_gem_stream_ui.rb +3 -3
  497. data/test/rubygems/test_gem_stub_specification.rb +4 -7
  498. data/test/rubygems/test_gem_text.rb +1 -3
  499. data/test/rubygems/test_gem_uninstaller.rb +134 -12
  500. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -2
  501. data/test/rubygems/test_gem_uri_formatter.rb +0 -2
  502. data/test/rubygems/test_gem_util.rb +7 -7
  503. data/test/rubygems/test_gem_validator.rb +1 -3
  504. data/test/rubygems/test_gem_version.rb +1 -3
  505. data/test/rubygems/test_gem_version_option.rb +1 -3
  506. data/test/rubygems/test_kernel.rb +25 -10
  507. data/test/rubygems/test_project_sanity.rb +7 -2
  508. data/test/rubygems/test_remote_fetch_error.rb +0 -2
  509. data/test/rubygems/test_require.rb +291 -56
  510. data/test/test_changelog_generator.rb +17 -0
  511. metadata +65 -96
  512. data/.bundle/config +0 -2
  513. data/.rubocop.yml +0 -91
  514. data/Gemfile +0 -8
  515. data/Gemfile.lock +0 -43
  516. data/bundler/CODE_OF_CONDUCT.md +0 -136
  517. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
  518. data/bundler/man/bundle-add.1.txt +0 -58
  519. data/bundler/man/bundle-binstubs.1.txt +0 -48
  520. data/bundler/man/bundle-cache.1.txt +0 -78
  521. data/bundler/man/bundle-check.1.txt +0 -33
  522. data/bundler/man/bundle-clean.1.txt +0 -26
  523. data/bundler/man/bundle-config.1.txt +0 -528
  524. data/bundler/man/bundle-doctor.1.txt +0 -44
  525. data/bundler/man/bundle-exec.1.txt +0 -178
  526. data/bundler/man/bundle-gem.1.txt +0 -91
  527. data/bundler/man/bundle-info.1.txt +0 -21
  528. data/bundler/man/bundle-init.1.txt +0 -34
  529. data/bundler/man/bundle-inject.1.txt +0 -32
  530. data/bundler/man/bundle-install.1.txt +0 -401
  531. data/bundler/man/bundle-list.1.txt +0 -43
  532. data/bundler/man/bundle-lock.1.txt +0 -93
  533. data/bundler/man/bundle-open.1.txt +0 -29
  534. data/bundler/man/bundle-outdated.1.txt +0 -131
  535. data/bundler/man/bundle-platform.1.txt +0 -57
  536. data/bundler/man/bundle-pristine.1.txt +0 -44
  537. data/bundler/man/bundle-remove.1.txt +0 -34
  538. data/bundler/man/bundle-show.1.txt +0 -27
  539. data/bundler/man/bundle-update.1.txt +0 -390
  540. data/bundler/man/bundle-viz.1.txt +0 -39
  541. data/bundler/man/bundle.1.txt +0 -116
  542. data/bundler/man/gemfile.5.txt +0 -649
  543. data/lib/rubygems/source_local.rb +0 -7
  544. data/lib/rubygems/source_specific_file.rb +0 -6
  545. data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  546. data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
  547. data/lib/ubygems.rb +0 -14
  548. data/tmp/.keep +0 -0
  549. data/util/CL2notes +0 -55
  550. data/util/bisect +0 -10
  551. data/util/ci.sh +0 -62
  552. data/util/cops/deprecations.rb +0 -52
  553. data/util/create_certs.rb +0 -171
  554. data/util/create_certs.sh +0 -27
  555. data/util/create_encrypted_key.rb +0 -16
  556. data/util/generate_spdx_license_list.rb +0 -63
  557. data/util/patch_with_prs.rb +0 -77
  558. data/util/rubocop +0 -8
  559. data/util/update_bundled_ca_certificates.rb +0 -139
  560. data/util/update_changelog.rb +0 -67
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require "bundler/setup"
4
5
  require "<%= config[:namespaced_path] %>"
@@ -0,0 +1,13 @@
1
+ version: 2.1
2
+ jobs:
3
+ build:
4
+ docker:
5
+ - image: ruby:<%= RUBY_VERSION %>
6
+ steps:
7
+ - checkout
8
+ - run:
9
+ name: Run the default task
10
+ command: |
11
+ gem install bundler -v <%= Bundler::VERSION %>
12
+ bundle install
13
+ bundle exec rake
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "mkmf"
2
4
 
3
5
  create_makefile(<%= config[:makefile_path].inspect %>)
@@ -0,0 +1,18 @@
1
+ name: Ruby
2
+
3
+ on: [push,pull_request]
4
+
5
+ jobs:
6
+ build:
7
+ runs-on: ubuntu-latest
8
+ steps:
9
+ - uses: actions/checkout@v2
10
+ - name: Set up Ruby
11
+ uses: ruby/setup-ruby@v1
12
+ with:
13
+ ruby-version: <%= RUBY_VERSION %>
14
+ - name: Run the default task
15
+ run: |
16
+ gem install bundler -v <%= Bundler::VERSION %>
17
+ bundle install
18
+ bundle exec rake
@@ -0,0 +1,9 @@
1
+ image: ruby:<%= RUBY_VERSION %>
2
+
3
+ before_script:
4
+ - gem install bundler -v <%= Bundler::VERSION %>
5
+ - bundle install
6
+
7
+ example_job:
8
+ script:
9
+ - bundle exec rake
@@ -1,6 +1,8 @@
1
- require "<%= config[:namespaced_path] %>/version"
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "<%= File.basename(config[:namespaced_path]) %>/version"
2
4
  <%- if config[:ext] -%>
3
- require "<%= config[:namespaced_path] %>/<%= config[:underscored_name] %>"
5
+ require_relative "<%= File.basename(config[:namespaced_path]) %>/<%= config[:underscored_name] %>"
4
6
  <%- end -%>
5
7
 
6
8
  <%- config[:constant_array].each_with_index do |c, i| -%>
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  <%- config[:constant_array].each_with_index do |c, i| -%>
2
4
  <%= " " * i %>module <%= c %>
3
5
  <%- end -%>
@@ -1,4 +1,6 @@
1
- require_relative 'lib/<%=config[:namespaced_path]%>/version'
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "lib/<%=config[:namespaced_path]%>/version"
2
4
 
3
5
  Gem::Specification.new do |spec|
4
6
  spec.name = <%= config[:name].inspect %>
@@ -6,8 +8,8 @@ Gem::Specification.new do |spec|
6
8
  spec.authors = [<%= config[:author].inspect %>]
7
9
  spec.email = [<%= config[:email].inspect %>]
8
10
 
9
- spec.summary = %q{TODO: Write a short summary, because RubyGems requires one.}
10
- spec.description = %q{TODO: Write a longer description or delete this line.}
11
+ spec.summary = "TODO: Write a short summary, because RubyGems requires one."
12
+ spec.description = "TODO: Write a longer description or delete this line."
11
13
  spec.homepage = "TODO: Put your gem's website or public repo URL here."
12
14
  <%- if config[:mit] -%>
13
15
  spec.license = "MIT"
@@ -22,13 +24,19 @@ Gem::Specification.new do |spec|
22
24
 
23
25
  # Specify which files should be added to the gem when it is released.
24
26
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
25
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
26
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
27
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
28
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
27
29
  end
28
30
  spec.bindir = "exe"
29
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
31
+ spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
30
32
  spec.require_paths = ["lib"]
31
33
  <%- if config[:ext] -%>
32
34
  spec.extensions = ["ext/<%= config[:underscored_name] %>/extconf.rb"]
33
35
  <%- end -%>
36
+
37
+ # Uncomment to register a new dependency of your gem
38
+ # spec.add_dependency "example-gem", "~> 1.0"
39
+
40
+ # For more information and examples about making a new gem, checkout our
41
+ # guide at: https://bundler.io/guides/creating_gem.html
34
42
  end
@@ -0,0 +1,10 @@
1
+ Style/StringLiterals:
2
+ Enabled: true
3
+ EnforcedStyle: double_quotes
4
+
5
+ Style/StringLiteralsInInterpolation:
6
+ Enabled: true
7
+ EnforcedStyle: double_quotes
8
+
9
+ Layout/LineLength:
10
+ Max: 120
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RSpec.describe <%= config[:constant_name] %> do
2
4
  it "has a version number" do
3
5
  expect(<%= config[:constant_name] %>::VERSION).not_to be nil
@@ -1,4 +1,5 @@
1
- require "bundler/setup"
1
+ # frozen_string_literal: true
2
+
2
3
  require "<%= config[:namespaced_path] %>"
3
4
 
4
5
  RSpec.configure do |config|
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "test_helper"
2
4
 
3
5
  class <%= config[:constant_name] %>Test < Minitest::Test
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  $LOAD_PATH.unshift File.expand_path("../lib", __dir__)
2
4
  require "<%= config[:namespaced_path] %>"
3
5
 
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ class <%= config[:constant_name] %>Test < Test::Unit::TestCase
6
+ test "VERSION" do
7
+ assert do
8
+ ::<%= config[:constant_name] %>.const_defined?(:VERSION)
9
+ end
10
+ end
11
+
12
+ test "something useful" do
13
+ assert_equal("expected", "actual")
14
+ end
15
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.unshift File.expand_path("../lib", __dir__)
4
+ require "<%= config[:namespaced_path] %>"
5
+
6
+ require "test-unit"
@@ -28,17 +28,17 @@ module Bundler
28
28
  tell_me(msg, :green, newline) if level("confirm")
29
29
  end
30
30
 
31
- def warn(msg, newline = nil)
31
+ def warn(msg, newline = nil, color = :yellow)
32
32
  return unless level("warn")
33
33
  return if @warning_history.include? msg
34
34
  @warning_history << msg
35
35
 
36
- tell_err(msg, :yellow, newline)
36
+ tell_err(msg, color, newline)
37
37
  end
38
38
 
39
- def error(msg, newline = nil)
39
+ def error(msg, newline = nil, color = :red)
40
40
  return unless level("error")
41
- tell_err(msg, :red, newline)
41
+ tell_err(msg, color, newline)
42
42
  end
43
43
 
44
44
  def debug(msg, newline = nil)
@@ -92,7 +92,7 @@ module Bundler
92
92
  []
93
93
  end
94
94
 
95
- private
95
+ private
96
96
 
97
97
  # valimism
98
98
  def tell_me(msg, color = nil, newline = nil)
@@ -2,12 +2,14 @@
2
2
 
3
3
  module Bundler
4
4
  module URICredentialsFilter
5
- module_function
5
+ module_function
6
6
 
7
7
  def credential_filtered_uri(uri_to_anonymize)
8
8
  return uri_to_anonymize if uri_to_anonymize.nil?
9
9
  uri = uri_to_anonymize.dup
10
10
  if uri.is_a?(String)
11
+ return uri if File.exist?(uri)
12
+
11
13
  require_relative "vendored_uri"
12
14
  uri = Bundler::URI(uri)
13
15
  end
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'molinillo/compatibility'
4
3
  require_relative 'molinillo/gem_metadata'
5
4
  require_relative 'molinillo/errors'
6
5
  require_relative 'molinillo/resolver'
@@ -124,6 +124,7 @@ module Bundler::Molinillo
124
124
  dot.join("\n")
125
125
  end
126
126
 
127
+ # @param [DependencyGraph] other
127
128
  # @return [Boolean] whether the two dependency graphs are equal, determined
128
129
  # by a recursive traversal of each {#root_vertices} and its
129
130
  # {Vertex#successors}
@@ -190,7 +191,7 @@ module Bundler::Molinillo
190
191
  # @return [Edge] the added edge
191
192
  def add_edge(origin, destination, requirement)
192
193
  if destination.path_to?(origin)
193
- raise CircularDependencyError.new([origin, destination])
194
+ raise CircularDependencyError.new(path(destination, origin))
194
195
  end
195
196
  add_edge_no_circular(origin, destination, requirement)
196
197
  end
@@ -219,5 +220,37 @@ module Bundler::Molinillo
219
220
  def add_edge_no_circular(origin, destination, requirement)
220
221
  log.add_edge_no_circular(self, origin.name, destination.name, requirement)
221
222
  end
223
+
224
+ # Returns the path between two vertices
225
+ # @raise [ArgumentError] if there is no path between the vertices
226
+ # @param [Vertex] from
227
+ # @param [Vertex] to
228
+ # @return [Array<Vertex>] the shortest path from `from` to `to`
229
+ def path(from, to)
230
+ distances = Hash.new(vertices.size + 1)
231
+ distances[from.name] = 0
232
+ predecessors = {}
233
+ each do |vertex|
234
+ vertex.successors.each do |successor|
235
+ if distances[successor.name] > distances[vertex.name] + 1
236
+ distances[successor.name] = distances[vertex.name] + 1
237
+ predecessors[successor] = vertex
238
+ end
239
+ end
240
+ end
241
+
242
+ path = [to]
243
+ while before = predecessors[to]
244
+ path << before
245
+ to = before
246
+ break if to == from
247
+ end
248
+
249
+ unless path.last.equal?(from)
250
+ raise ArgumentError, "There is no path from #{from.name} to #{to.name}"
251
+ end
252
+
253
+ path.reverse
254
+ end
222
255
  end
223
256
  end
@@ -14,11 +14,11 @@ module Bundler::Molinillo
14
14
  end
15
15
 
16
16
  # (see Action#up)
17
- def up(_graph)
17
+ def up(graph)
18
18
  end
19
19
 
20
20
  # (see Action#down)
21
- def down(_graph)
21
+ def down(graph)
22
22
  end
23
23
 
24
24
  # @!group Tag
@@ -65,7 +65,7 @@ module Bundler::Molinillo
65
65
  # @param [SpecificationProvider] specification_provider see {#specification_provider}
66
66
  def initialize(conflicts, specification_provider)
67
67
  pairs = []
68
- Compatibility.flat_map(conflicts.values.flatten, &:requirements).each do |conflicting|
68
+ conflicts.values.flat_map(&:requirements).each do |conflicting|
69
69
  conflicting.each do |source, conflict_requirements|
70
70
  conflict_requirements.each do |c|
71
71
  pairs << [c, source]
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Bundler::Molinillo
4
4
  # The version of Bundler::Molinillo.
5
- VERSION = '0.6.6'.freeze
5
+ VERSION = '0.7.0'.freeze
6
6
  end
@@ -207,7 +207,7 @@ module Bundler::Molinillo
207
207
  def start_resolution
208
208
  @started_at = Time.now
209
209
 
210
- handle_missing_or_push_dependency_state(initial_state)
210
+ push_initial_state
211
211
 
212
212
  debug { "Starting resolution (#{@started_at})\nUser-requested dependencies: #{original_requested}" }
213
213
  resolver_ui.before_resolution
@@ -273,10 +273,10 @@ module Bundler::Molinillo
273
273
  states.last
274
274
  end
275
275
 
276
- # Creates the initial state for the resolution, based upon the
276
+ # Creates and pushes the initial state for the resolution, based upon the
277
277
  # {#requested} dependencies
278
- # @return [DependencyState] the initial state for the resolution
279
- def initial_state
278
+ # @return [void]
279
+ def push_initial_state
280
280
  graph = DependencyGraph.new.tap do |dg|
281
281
  original_requested.each do |requested|
282
282
  vertex = dg.add_vertex(name_for(requested), nil, true)
@@ -285,18 +285,7 @@ module Bundler::Molinillo
285
285
  dg.tag(:initial_state)
286
286
  end
287
287
 
288
- requirements = sort_dependencies(original_requested, graph, {})
289
- initial_requirement = requirements.shift
290
- DependencyState.new(
291
- initial_requirement && name_for(initial_requirement),
292
- requirements,
293
- graph,
294
- initial_requirement,
295
- possibilities_for_requirement(initial_requirement, graph),
296
- 0,
297
- {},
298
- []
299
- )
288
+ push_state_for_requirements(original_requested, true, graph)
300
289
  end
301
290
 
302
291
  # Unwinds the states stack because a conflict has been encountered
@@ -361,7 +350,7 @@ module Bundler::Molinillo
361
350
  current_detail
362
351
  end
363
352
 
364
- # @param [Array<Object>] array of requirements that combine to create a conflict
353
+ # @param [Array<Object>] binding_requirements array of requirements that combine to create a conflict
365
354
  # @return [Array<UnwindDetails>] array of UnwindDetails that have a chance
366
355
  # of resolving the passed requirements
367
356
  def unwind_options_for_requirements(binding_requirements)
@@ -429,7 +418,7 @@ module Bundler::Molinillo
429
418
  end
430
419
 
431
420
  # @param [DependencyState] state
432
- # @param [Array] array of requirements
421
+ # @param [Array] binding_requirements array of requirements
433
422
  # @return [Boolean] whether or not the given state has any possibilities
434
423
  # that could satisfy the given requirements
435
424
  def conflict_fixing_possibilities?(state, binding_requirements)
@@ -444,7 +433,8 @@ module Bundler::Molinillo
444
433
 
445
434
  # Filter's a state's possibilities to remove any that would not fix the
446
435
  # conflict we've just rewound from
447
- # @param [UnwindDetails] details of the conflict just unwound from
436
+ # @param [UnwindDetails] unwind_details details of the conflict just
437
+ # unwound from
448
438
  # @return [void]
449
439
  def filter_possibilities_after_unwind(unwind_details)
450
440
  return unless state && !state.possibilities.empty?
@@ -458,7 +448,7 @@ module Bundler::Molinillo
458
448
 
459
449
  # Filter's a state's possibilities to remove any that would not satisfy
460
450
  # the requirements in the conflict we've just rewound from
461
- # @param [UnwindDetails] details of the conflict just unwound from
451
+ # @param [UnwindDetails] unwind_details details of the conflict just unwound from
462
452
  # @return [void]
463
453
  def filter_possibilities_for_primary_unwind(unwind_details)
464
454
  unwinds_to_state = unused_unwind_options.select { |uw| uw.state_index == unwind_details.state_index }
@@ -491,7 +481,7 @@ module Bundler::Molinillo
491
481
 
492
482
  # Filter's a state's possibilities to remove any that would (eventually)
493
483
  # create a requirement in the conflict we've just rewound from
494
- # @param [UnwindDetails] details of the conflict just unwound from
484
+ # @param [UnwindDetails] unwind_details details of the conflict just unwound from
495
485
  # @return [void]
496
486
  def filter_possibilities_for_parent_unwind(unwind_details)
497
487
  unwinds_to_state = unused_unwind_options.select { |uw| uw.state_index == unwind_details.state_index }
@@ -500,7 +490,7 @@ module Bundler::Molinillo
500
490
  primary_unwinds = unwinds_to_state.select(&:unwinding_to_primary_requirement?).uniq
501
491
  parent_unwinds = unwinds_to_state.uniq - primary_unwinds
502
492
 
503
- allowed_possibility_sets = Compatibility.flat_map(primary_unwinds) do |unwind|
493
+ allowed_possibility_sets = primary_unwinds.flat_map do |unwind|
504
494
  states[unwind.state_index].possibilities.select do |possibility_set|
505
495
  possibility_set.possibilities.any? do |poss|
506
496
  possibility_satisfies_requirements?(poss, unwind.conflicting_requirements)
@@ -508,7 +498,7 @@ module Bundler::Molinillo
508
498
  end
509
499
  end
510
500
 
511
- requirements_to_avoid = Compatibility.flat_map(parent_unwinds, &:sub_dependencies_to_avoid)
501
+ requirements_to_avoid = parent_unwinds.flat_map(&:sub_dependencies_to_avoid)
512
502
 
513
503
  state.possibilities.reject! do |possibility_set|
514
504
  !allowed_possibility_sets.include?(possibility_set) &&
@@ -524,12 +514,12 @@ module Bundler::Molinillo
524
514
 
525
515
  possible_binding_requirements = conflict.requirements.values.flatten(1).uniq
526
516
 
527
- # When theres a `CircularDependency` error the conflicting requirement
528
- # (the one causing the circular) wont be `conflict.requirement`
529
- # (which wont be for the right state, because we wont have created it,
530
- # because its circular).
531
- # We need to make sure we have that requirement in the conflicts list,
532
- # otherwise we wont be able to unwind properly, so we just return all
517
+ # When there's a `CircularDependency` error the conflicting requirement
518
+ # (the one causing the circular) won't be `conflict.requirement`
519
+ # (which won't be for the right state, because we won't have created it,
520
+ # because it's circular).
521
+ # We need to make sure we have that requirement in the conflict's list,
522
+ # otherwise we won't be able to unwind properly, so we just return all
533
523
  # the requirements for the conflict.
534
524
  return possible_binding_requirements if conflict.underlying_error
535
525
 
@@ -558,8 +548,8 @@ module Bundler::Molinillo
558
548
  end
559
549
 
560
550
  # @param [Object] requirement we wish to check
561
- # @param [Array] array of requirements
562
- # @param [Array] array of possibilities the requirements will be used to filter
551
+ # @param [Array] possible_binding_requirements array of requirements
552
+ # @param [Array] possibilities array of possibilities the requirements will be used to filter
563
553
  # @return [Boolean] whether or not the given requirement is required to filter
564
554
  # out all elements of the array of possibilities.
565
555
  def binding_requirement_in_set?(requirement, possible_binding_requirements, possibilities)
@@ -568,6 +558,7 @@ module Bundler::Molinillo
568
558
  end
569
559
  end
570
560
 
561
+ # @param [Object] requirement
571
562
  # @return [Object] the requirement that led to `requirement` being added
572
563
  # to the list of requirements.
573
564
  def parent_of(requirement)
@@ -577,6 +568,7 @@ module Bundler::Molinillo
577
568
  parent_state.requirement
578
569
  end
579
570
 
571
+ # @param [String] name
580
572
  # @return [Object] the requirement that led to a version of a possibility
581
573
  # with the given name being activated.
582
574
  def requirement_for_existing_name(name)
@@ -585,6 +577,7 @@ module Bundler::Molinillo
585
577
  states.find { |s| s.name == name }.requirement
586
578
  end
587
579
 
580
+ # @param [Object] requirement
588
581
  # @return [ResolutionState] the state whose `requirement` is the given
589
582
  # `requirement`.
590
583
  def find_state_for(requirement)
@@ -592,6 +585,7 @@ module Bundler::Molinillo
592
585
  states.find { |i| requirement == i.requirement }
593
586
  end
594
587
 
588
+ # @param [Object] underlying_error
595
589
  # @return [Conflict] a {Conflict} that reflects the failure to activate
596
590
  # the {#possibility} in conjunction with the current {#state}
597
591
  def create_conflict(underlying_error = nil)
@@ -628,6 +622,7 @@ module Bundler::Molinillo
628
622
  vertex.requirements.map { |r| requirement_tree_for(r) }
629
623
  end
630
624
 
625
+ # @param [Object] requirement
631
626
  # @return [Array<Object>] the list of requirements that led to
632
627
  # `requirement` being required.
633
628
  def requirement_tree_for(requirement)
@@ -673,9 +668,8 @@ module Bundler::Molinillo
673
668
  attempt_to_filter_existing_spec(existing_vertex)
674
669
  else
675
670
  latest = possibility.latest_version
676
- # use reject!(!satisfied) for 1.8.7 compatibility
677
- possibility.possibilities.reject! do |possibility|
678
- !requirement_satisfied_by?(requirement, activated, possibility)
671
+ possibility.possibilities.select! do |possibility|
672
+ requirement_satisfied_by?(requirement, activated, possibility)
679
673
  end
680
674
  if possibility.latest_version.nil?
681
675
  # ensure there's a possibility for better error messages
@@ -705,7 +699,7 @@ module Bundler::Molinillo
705
699
 
706
700
  # Generates a filtered version of the existing vertex's `PossibilitySet` using the
707
701
  # current state's `requirement`
708
- # @param [Object] existing vertex
702
+ # @param [Object] vertex existing vertex
709
703
  # @return [PossibilitySet] filtered possibility set
710
704
  def filtered_possibility_set(vertex)
711
705
  PossibilitySet.new(vertex.payload.dependencies, vertex.payload.possibilities & possibility.possibilities)
@@ -730,7 +724,7 @@ module Bundler::Molinillo
730
724
  end
731
725
 
732
726
  # Requires the dependencies that the recently activated spec has
733
- # @param [Object] activated_possibility the PossibilitySet that has just been
727
+ # @param [Object] possibility_set the PossibilitySet that has just been
734
728
  # activated
735
729
  # @return [void]
736
730
  def require_nested_dependencies_for(possibility_set)
@@ -749,6 +743,8 @@ module Bundler::Molinillo
749
743
  # Pushes a new {DependencyState} that encapsulates both existing and new
750
744
  # requirements
751
745
  # @param [Array] new_requirements
746
+ # @param [Boolean] requires_sort
747
+ # @param [Object] new_activated
752
748
  # @return [void]
753
749
  def push_state_for_requirements(new_requirements, requires_sort = true, new_activated = activated)
754
750
  new_requirements = sort_dependencies(new_requirements.uniq, new_activated, conflicts) if requires_sort
@@ -767,7 +763,8 @@ module Bundler::Molinillo
767
763
 
768
764
  # Checks a proposed requirement with any existing locked requirement
769
765
  # before generating an array of possibilities for it.
770
- # @param [Object] the proposed requirement
766
+ # @param [Object] requirement the proposed requirement
767
+ # @param [Object] activated
771
768
  # @return [Array] possibilities
772
769
  def possibilities_for_requirement(requirement, activated = self.activated)
773
770
  return [] unless requirement
@@ -778,7 +775,8 @@ module Bundler::Molinillo
778
775
  group_possibilities(search_for(requirement))
779
776
  end
780
777
 
781
- # @param [Object] the proposed requirement
778
+ # @param [Object] requirement the proposed requirement
779
+ # @param [Object] activated
782
780
  # @return [Array] possibility set containing only the locked requirement, if any
783
781
  def locked_requirement_possibility_set(requirement, activated = self.activated)
784
782
  all_possibilities = search_for(requirement)
@@ -797,8 +795,8 @@ module Bundler::Molinillo
797
795
  # Build an array of PossibilitySets, with each element representing a group of
798
796
  # dependency versions that all have the same sub-dependency version constraints
799
797
  # and are contiguous.
800
- # @param [Array] an array of possibilities
801
- # @return [Array] an array of possibility sets
798
+ # @param [Array] possibilities an array of possibilities
799
+ # @return [Array<PossibilitySet>] an array of possibility sets
802
800
  def group_possibilities(possibilities)
803
801
  possibility_sets = []
804
802
  current_possibility_set = nil