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
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/dependency_list'
4
4
 
5
5
  class TestGemDependencyList < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
9
8
 
@@ -53,7 +52,7 @@ class TestGemDependencyList < Gem::TestCase
53
52
 
54
53
  order = @deplist.dependency_order
55
54
 
56
- assert_equal %w[d-1 c-1 b-1 a-1], order.map { |s| s.full_name }
55
+ assert_equal %w[d-1 c-1 b-1 a-1], order.map {|s| s.full_name }
57
56
  end
58
57
 
59
58
  def test_dependency_order_circle
@@ -62,7 +61,7 @@ class TestGemDependencyList < Gem::TestCase
62
61
 
63
62
  order = @deplist.dependency_order
64
63
 
65
- assert_equal %w[b-1 c-1 a-1], order.map { |s| s.full_name }
64
+ assert_equal %w[b-1 c-1 a-1], order.map {|s| s.full_name }
66
65
  end
67
66
 
68
67
  def test_dependency_order_development
@@ -80,7 +79,7 @@ class TestGemDependencyList < Gem::TestCase
80
79
 
81
80
  order = deplist.dependency_order
82
81
 
83
- assert_equal %w[g-1 a-1 f-1 e-1], order.map { |s| s.full_name },
82
+ assert_equal %w[g-1 a-1 f-1 e-1], order.map {|s| s.full_name },
84
83
  'development on'
85
84
 
86
85
  deplist2 = Gem::DependencyList.new
@@ -88,7 +87,7 @@ class TestGemDependencyList < Gem::TestCase
88
87
 
89
88
  order = deplist2.dependency_order
90
89
 
91
- assert_equal %w[a-1 g-1 f-1 e-1], order.map { |s| s.full_name },
90
+ assert_equal %w[a-1 g-1 f-1 e-1], order.map {|s| s.full_name },
92
91
  'development off'
93
92
  end
94
93
 
@@ -100,7 +99,7 @@ class TestGemDependencyList < Gem::TestCase
100
99
 
101
100
  order = @deplist.dependency_order
102
101
 
103
- assert_equal %w[d-1 c-2 b-1 a-2 e-1], order.map { |s| s.full_name },
102
+ assert_equal %w[d-1 c-2 b-1 a-2 e-1], order.map {|s| s.full_name },
104
103
  'deps of trimmed specs not included'
105
104
  end
106
105
 
@@ -109,7 +108,7 @@ class TestGemDependencyList < Gem::TestCase
109
108
 
110
109
  order = @deplist.dependency_order
111
110
 
112
- assert_equal %w[c-2 a-1], order.map { |s| s.full_name }
111
+ assert_equal %w[c-2 a-1], order.map {|s| s.full_name }
113
112
  end
114
113
 
115
114
  def test_find_name
@@ -134,14 +133,14 @@ class TestGemDependencyList < Gem::TestCase
134
133
  end
135
134
 
136
135
  def test_why_not_ok_eh
137
- assert_equal({}, @deplist.why_not_ok?)
136
+ assert_equal({}, @deplist.why_not_ok?)
138
137
 
139
138
  @deplist.add @b2
140
139
 
141
140
  exp = {
142
141
  "b" => [
143
- Gem::Dependency.new("a", ">= 1")
144
- ]
142
+ Gem::Dependency.new("a", ">= 1"),
143
+ ],
145
144
  }
146
145
 
147
146
  assert_equal exp, @deplist.why_not_ok?
@@ -162,7 +161,7 @@ class TestGemDependencyList < Gem::TestCase
162
161
 
163
162
  @deplist.add a, b0, b1
164
163
 
165
- assert_equal({}, @deplist.why_not_ok?)
164
+ assert_equal({}, @deplist.why_not_ok?)
166
165
  end
167
166
 
168
167
  def test_ok_eh_mismatch
@@ -262,5 +261,4 @@ class TestGemDependencyList < Gem::TestCase
262
261
 
263
262
  @deplist.add @a1, @a2, @b1, @c2, @d1
264
263
  end
265
-
266
264
  end
@@ -2,7 +2,6 @@
2
2
  require 'rubygems/test_case'
3
3
 
4
4
  class TestGemDependencyResolutionError < Gem::TestCase
5
-
6
5
  def setup
7
6
  super
8
7
 
@@ -21,8 +20,7 @@ class TestGemDependencyResolutionError < Gem::TestCase
21
20
  end
22
21
 
23
22
  def test_message
24
- assert_match %r%^conflicting dependencies a \(= 1\) and a \(= 2\)$%,
23
+ assert_match %r{^conflicting dependencies a \(= 1\) and a \(= 2\)$},
25
24
  @error.message
26
25
  end
27
-
28
26
  end
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/doctor'
4
4
 
5
5
  class TestGemDoctor < Gem::TestCase
6
-
7
6
  def gem(name)
8
7
  spec = quick_gem name do |gem|
9
8
  gem.files = %W[lib/#{name}.rb Rakefile]
@@ -153,6 +152,34 @@ This directory does not appear to be a RubyGems repository, skipping
153
152
  assert true # count
154
153
  end
155
154
 
155
+ def test_doctor_badly_named_plugins
156
+ gem 'a'
157
+
158
+ Gem.use_paths @gemhome.to_s
159
+
160
+ FileUtils.mkdir_p Gem.plugindir
161
+ bad_plugin = File.join(Gem.plugindir, "a_badly_named_file.rb")
162
+ write_file bad_plugin
163
+
164
+ doctor = Gem::Doctor.new @gemhome
165
+
166
+ capture_io do
167
+ use_ui @ui do
168
+ doctor.doctor
169
+ end
170
+ end
171
+
172
+ # refute_path_exists bad_plugin
173
+
174
+ expected = <<-OUTPUT
175
+ Checking #{@gemhome}
176
+ Removed file plugins/a_badly_named_file.rb
177
+
178
+ OUTPUT
179
+
180
+ assert_equal expected, @ui.output
181
+ end
182
+
156
183
  def test_gem_repository_eh
157
184
  doctor = Gem::Doctor.new @gemhome
158
185
 
@@ -164,5 +191,4 @@ This directory does not appear to be a RubyGems repository, skipping
164
191
 
165
192
  assert doctor.gem_repository?, 'gems installed'
166
193
  end
167
-
168
194
  end
@@ -4,7 +4,6 @@ require 'rubygems/ext'
4
4
  require 'rubygems/installer'
5
5
 
6
6
  class TestGemExtBuilder < Gem::TestCase
7
-
8
7
  def setup
9
8
  super
10
9
 
@@ -31,9 +30,8 @@ class TestGemExtBuilder < Gem::TestCase
31
30
  ENV['DESTDIR'] = 'destination'
32
31
  results = []
33
32
 
34
- Dir.chdir @ext do
35
- File.open 'Makefile', 'w' do |io|
36
- io.puts <<-MAKEFILE
33
+ File.open File.join(@ext, 'Makefile'), 'w' do |io|
34
+ io.puts <<-MAKEFILE
37
35
  all:
38
36
  \t@#{Gem.ruby} -e "puts %Q{all: \#{ENV['DESTDIR']}}"
39
37
 
@@ -42,22 +40,21 @@ clean:
42
40
 
43
41
  install:
44
42
  \t@#{Gem.ruby} -e "puts %Q{install: \#{ENV['DESTDIR']}}"
45
- MAKEFILE
46
- end
47
-
48
- Gem::Ext::Builder.make @dest_path, results
43
+ MAKEFILE
49
44
  end
50
45
 
51
- results = results.join "\n"
46
+ Gem::Ext::Builder.make @dest_path, results, @ext
47
+
48
+ results = results.join("\n").b
52
49
 
53
- assert_match %r%"DESTDIR=#{ENV['DESTDIR']}" clean$%, results
54
- assert_match %r%"DESTDIR=#{ENV['DESTDIR']}"$%, results
55
- assert_match %r%"DESTDIR=#{ENV['DESTDIR']}" install$%, results
50
+ assert_match %r{"DESTDIR=#{ENV['DESTDIR']}" clean$}, results
51
+ assert_match %r{"DESTDIR=#{ENV['DESTDIR']}"$}, results
52
+ assert_match %r{"DESTDIR=#{ENV['DESTDIR']}" install$}, results
56
53
 
57
54
  if /nmake/ !~ results
58
- assert_match %r%^clean: destination$%, results
59
- assert_match %r%^all: destination$%, results
60
- assert_match %r%^install: destination$%, results
55
+ assert_match %r{^clean: destination$}, results
56
+ assert_match %r{^all: destination$}, results
57
+ assert_match %r{^install: destination$}, results
61
58
  end
62
59
  end
63
60
 
@@ -65,25 +62,23 @@ install:
65
62
  ENV['DESTDIR'] = 'destination'
66
63
  results = []
67
64
 
68
- Dir.chdir @ext do
69
- File.open 'Makefile', 'w' do |io|
70
- io.puts <<-MAKEFILE
65
+ File.open File.join(@ext, 'Makefile'), 'w' do |io|
66
+ io.puts <<-MAKEFILE
71
67
  all:
72
68
  \t@#{Gem.ruby} -e "puts %Q{all: \#{ENV['DESTDIR']}}"
73
69
 
74
70
  install:
75
71
  \t@#{Gem.ruby} -e "puts %Q{install: \#{ENV['DESTDIR']}}"
76
- MAKEFILE
77
- end
78
-
79
- Gem::Ext::Builder.make @dest_path, results
72
+ MAKEFILE
80
73
  end
81
74
 
82
- results = results.join "\n"
75
+ Gem::Ext::Builder.make @dest_path, results, @ext
83
76
 
84
- assert_match %r%"DESTDIR=#{ENV['DESTDIR']}" clean$%, results
85
- assert_match %r%"DESTDIR=#{ENV['DESTDIR']}"$%, results
86
- assert_match %r%"DESTDIR=#{ENV['DESTDIR']}" install$%, results
77
+ results = results.join("\n").b
78
+
79
+ assert_match %r{"DESTDIR=#{ENV['DESTDIR']}" clean$}, results
80
+ assert_match %r{"DESTDIR=#{ENV['DESTDIR']}"$}, results
81
+ assert_match %r{"DESTDIR=#{ENV['DESTDIR']}" install$}, results
87
82
  end
88
83
 
89
84
  def test_build_extensions
@@ -134,7 +129,6 @@ install:
134
129
 
135
130
  def test_build_extensions_install_ext_only
136
131
  class << Gem
137
-
138
132
  alias orig_install_extension_in_lib install_extension_in_lib
139
133
 
140
134
  remove_method :install_extension_in_lib
@@ -142,7 +136,6 @@ install:
142
136
  def Gem.install_extension_in_lib
143
137
  false
144
138
  end
145
-
146
139
  end
147
140
 
148
141
  @spec.extensions << 'ext/extconf.rb'
@@ -179,11 +172,9 @@ install:
179
172
  refute_path_exists File.join @spec.gem_dir, 'lib', 'a', 'b.rb'
180
173
  ensure
181
174
  class << Gem
182
-
183
175
  remove_method :install_extension_in_lib
184
176
 
185
177
  alias install_extension_in_lib orig_install_extension_in_lib
186
-
187
178
  end
188
179
  end
189
180
 
@@ -227,26 +218,17 @@ install:
227
218
  end
228
219
 
229
220
  assert_match(/\AERROR: Failed to build gem native extension.$/, e.message)
230
-
231
- assert_equal "Building native extensions. This could take a while...\n",
232
- @ui.output
221
+ assert_equal "Building native extensions. This could take a while...\n", @ui.output
233
222
  assert_equal '', @ui.error
234
223
 
235
224
  gem_make_out = File.join @spec.extension_dir, 'gem_make.out'
225
+ cmd_make_out = File.read(gem_make_out)
236
226
 
237
- assert_match %r%#{Regexp.escape Gem.ruby}.* extconf\.rb%,
238
- File.read(gem_make_out)
239
- assert_match %r%: No such file%,
240
- File.read(gem_make_out)
227
+ assert_match %r{#{Regexp.escape Gem.ruby} .* extconf\.rb}, cmd_make_out
228
+ assert_match %r{: No such file}, cmd_make_out
241
229
 
242
230
  refute_path_exists @spec.gem_build_complete_path
243
231
 
244
- skip "Gem.ruby is not the name of the binary being run in the end" \
245
- unless File.read(gem_make_out).include? "#{Gem.ruby}:"
246
-
247
- assert_match %r%#{Regexp.escape Gem.ruby}: No such file%,
248
- File.read(gem_make_out)
249
-
250
232
  assert_equal cwd, Dir.pwd
251
233
  end
252
234
 
@@ -262,9 +244,7 @@ install:
262
244
  end
263
245
 
264
246
  assert_match(/^\s*No builder for extension ''$/, e.message)
265
-
266
- assert_equal "Building native extensions. This could take a while...\n",
267
- @ui.output
247
+ assert_equal "Building native extensions. This could take a while...\n", @ui.output
268
248
  assert_equal '', @ui.error
269
249
 
270
250
  assert_equal "No builder for extension ''\n", File.read(gem_make_out)
@@ -328,5 +308,4 @@ install:
328
308
 
329
309
  assert_equal %w[--with-foo-dir=/nonexistent], builder.build_args
330
310
  end
331
-
332
311
  end unless Gem.java_platform?
@@ -3,18 +3,18 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/ext'
4
4
 
5
5
  class TestGemExtCmakeBuilder < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
9
8
 
10
9
  # Details: https://github.com/rubygems/rubygems/issues/1270#issuecomment-177368340
11
10
  skip "CmakeBuilder doesn't work on Windows." if Gem.win_platform?
12
11
 
13
- skip "CmakeBuilder doesn't work on JRuby." if Gem.java_platform? && ENV["CI"]
14
-
15
- system('cmake', out: IO::NULL, err: [:child, :out])
16
-
17
- skip 'cmake not present' unless $?.success?
12
+ begin
13
+ _, status = Open3.capture2e('cmake')
14
+ skip 'cmake not present' unless status.success?
15
+ rescue Errno::ENOENT
16
+ skip 'cmake not present'
17
+ end
18
18
 
19
19
  @ext = File.join @tempdir, 'ext'
20
20
  @dest_path = File.join @tempdir, 'prefix'
@@ -25,38 +25,34 @@ class TestGemExtCmakeBuilder < Gem::TestCase
25
25
 
26
26
  def test_self_build
27
27
  File.open File.join(@ext, 'CMakeLists.txt'), 'w' do |cmakelists|
28
- cmakelists.write <<-eo_cmake
28
+ cmakelists.write <<-EO_CMAKE
29
29
  cmake_minimum_required(VERSION 2.6)
30
30
  project(self_build NONE)
31
31
  install (FILES test.txt DESTINATION bin)
32
- eo_cmake
32
+ EO_CMAKE
33
33
  end
34
34
 
35
35
  FileUtils.touch File.join(@ext, 'test.txt')
36
36
 
37
37
  output = []
38
38
 
39
- Dir.chdir @ext do
40
- Gem::Ext::CmakeBuilder.build nil, @dest_path, output
41
- end
39
+ Gem::Ext::CmakeBuilder.build nil, @dest_path, output, [], nil, @ext
42
40
 
43
41
  output = output.join "\n"
44
42
 
45
43
  assert_match \
46
- %r%^cmake \. -DCMAKE_INSTALL_PREFIX=#{Regexp.escape @dest_path}%, output
47
- assert_match %r%#{Regexp.escape @ext}%, output
44
+ %r{^cmake \. -DCMAKE_INSTALL_PREFIX=#{Regexp.escape @dest_path}}, output
45
+ assert_match %r{#{Regexp.escape @ext}}, output
48
46
  assert_contains_make_command '', output
49
47
  assert_contains_make_command 'install', output
50
- assert_match %r%test\.txt%, output
48
+ assert_match %r{test\.txt}, output
51
49
  end
52
50
 
53
51
  def test_self_build_fail
54
52
  output = []
55
53
 
56
54
  error = assert_raises Gem::InstallError do
57
- Dir.chdir @ext do
58
- Gem::Ext::CmakeBuilder.build nil, @dest_path, output
59
- end
55
+ Gem::Ext::CmakeBuilder.build nil, @dest_path, output, [], nil, @ext
60
56
  end
61
57
 
62
58
  output = output.join "\n"
@@ -66,8 +62,8 @@ install (FILES test.txt DESTINATION bin)
66
62
 
67
63
  assert_match 'cmake failed', error.message
68
64
 
69
- assert_match %r%^#{sh_prefix_cmake}#{Regexp.escape @dest_path}%, output
70
- assert_match %r%#{shell_error_msg}%, output
65
+ assert_match %r{^#{sh_prefix_cmake}#{Regexp.escape @dest_path}}, output
66
+ assert_match %r{#{shell_error_msg}}, output
71
67
  end
72
68
 
73
69
  def test_self_build_has_makefile
@@ -77,14 +73,11 @@ install (FILES test.txt DESTINATION bin)
77
73
 
78
74
  output = []
79
75
 
80
- Dir.chdir @ext do
81
- Gem::Ext::CmakeBuilder.build nil, @dest_path, output
82
- end
76
+ Gem::Ext::CmakeBuilder.build nil, @dest_path, output, [], nil, @ext
83
77
 
84
78
  output = output.join "\n"
85
79
 
86
80
  assert_contains_make_command '', output
87
81
  assert_contains_make_command 'install', output
88
82
  end
89
-
90
83
  end
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/ext'
4
4
 
5
5
  class TestGemExtConfigureBuilder < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
9
8
 
@@ -18,10 +17,6 @@ class TestGemExtConfigureBuilder < Gem::TestCase
18
17
  end
19
18
 
20
19
  def test_self_build
21
- if java_platform? && ENV["CI"]
22
- skip("failing on jruby")
23
- end
24
-
25
20
  skip("test_self_build skipped on MS Windows (VC++)") if vc_windows?
26
21
 
27
22
  File.open File.join(@ext, './configure'), 'w' do |configure|
@@ -30,9 +25,7 @@ class TestGemExtConfigureBuilder < Gem::TestCase
30
25
 
31
26
  output = []
32
27
 
33
- Dir.chdir @ext do
34
- Gem::Ext::ConfigureBuilder.build nil, @dest_path, output
35
- end
28
+ Gem::Ext::ConfigureBuilder.build nil, @dest_path, output, [], nil, @ext
36
29
 
37
30
  assert_match(/^current directory:/, output.shift)
38
31
  assert_equal "sh ./configure --prefix=#{@dest_path}", output.shift
@@ -49,17 +42,11 @@ class TestGemExtConfigureBuilder < Gem::TestCase
49
42
  end
50
43
 
51
44
  def test_self_build_fail
52
- if java_platform? && ENV["CI"]
53
- skip("failing on jruby")
54
- end
55
-
56
45
  skip("test_self_build_fail skipped on MS Windows (VC++)") if vc_windows?
57
46
  output = []
58
47
 
59
48
  error = assert_raises Gem::InstallError do
60
- Dir.chdir @ext do
61
- Gem::Ext::ConfigureBuilder.build nil, @dest_path, output
62
- end
49
+ Gem::Ext::ConfigureBuilder.build nil, @dest_path, output, [], nil, @ext
63
50
  end
64
51
 
65
52
  shell_error_msg = %r{(\./configure: .*)|((?:[Cc]an't|cannot) open '?\./configure'?(?:: No such file or directory)?)}
@@ -69,7 +56,7 @@ class TestGemExtConfigureBuilder < Gem::TestCase
69
56
 
70
57
  assert_match(/^current directory:/, output.shift)
71
58
  assert_equal "#{sh_prefix_configure}#{@dest_path}", output.shift
72
- assert_match %r(#{shell_error_msg}), output.shift
59
+ assert_match %r{#{shell_error_msg}}, output.shift
73
60
  assert_equal true, output.empty?
74
61
  end
75
62
 
@@ -83,13 +70,10 @@ class TestGemExtConfigureBuilder < Gem::TestCase
83
70
  end
84
71
 
85
72
  output = []
86
- Dir.chdir @ext do
87
- Gem::Ext::ConfigureBuilder.build nil, @dest_path, output
88
- end
73
+ Gem::Ext::ConfigureBuilder.build nil, @dest_path, output, [], nil, @ext
89
74
 
90
75
  assert_contains_make_command 'clean', output[1]
91
76
  assert_contains_make_command '', output[4]
92
77
  assert_contains_make_command 'install', output[7]
93
78
  end
94
-
95
79
  end