rubygems-update 3.0.6 → 3.2.14

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 (628) hide show
  1. checksums.yaml +4 -4
  2. data/{History.txt → CHANGELOG.md} +1100 -436
  3. data/CODE_OF_CONDUCT.md +55 -19
  4. data/CONTRIBUTING.md +37 -10
  5. data/MAINTAINERS.txt +1 -6
  6. data/Manifest.txt +104 -64
  7. data/POLICIES.md +6 -12
  8. data/README.md +6 -6
  9. data/Rakefile +121 -111
  10. data/bin/gem +0 -6
  11. data/bin/update_rubygems +2 -2
  12. data/bundler/CHANGELOG.md +1788 -1251
  13. data/bundler/LICENSE.md +18 -19
  14. data/bundler/README.md +9 -10
  15. data/bundler/UPGRADING.md +215 -0
  16. data/bundler/bundler.gemspec +9 -26
  17. data/bundler/exe/bundle +22 -3
  18. data/bundler/lib/bundler.rb +233 -94
  19. data/bundler/lib/bundler/build_metadata.rb +5 -13
  20. data/bundler/lib/bundler/capistrano.rb +4 -4
  21. data/bundler/lib/bundler/cli.rb +221 -148
  22. data/bundler/lib/bundler/cli/add.rb +28 -16
  23. data/bundler/lib/bundler/cli/binstubs.rb +6 -2
  24. data/bundler/lib/bundler/cli/cache.rb +24 -17
  25. data/bundler/lib/bundler/cli/clean.rb +1 -1
  26. data/bundler/lib/bundler/cli/common.rb +25 -12
  27. data/bundler/lib/bundler/cli/config.rb +161 -86
  28. data/bundler/lib/bundler/cli/console.rb +1 -1
  29. data/bundler/lib/bundler/cli/doctor.rb +5 -5
  30. data/bundler/lib/bundler/cli/exec.rb +8 -20
  31. data/bundler/lib/bundler/cli/fund.rb +36 -0
  32. data/bundler/lib/bundler/cli/gem.rb +125 -32
  33. data/bundler/lib/bundler/cli/info.rb +29 -6
  34. data/bundler/lib/bundler/cli/init.rb +2 -2
  35. data/bundler/lib/bundler/cli/inject.rb +1 -1
  36. data/bundler/lib/bundler/cli/install.rb +27 -23
  37. data/bundler/lib/bundler/cli/issue.rb +5 -5
  38. data/bundler/lib/bundler/cli/list.rb +12 -10
  39. data/bundler/lib/bundler/cli/open.rb +10 -6
  40. data/bundler/lib/bundler/cli/outdated.rb +134 -109
  41. data/bundler/lib/bundler/cli/plugin.rb +19 -2
  42. data/bundler/lib/bundler/cli/pristine.rb +6 -1
  43. data/bundler/lib/bundler/cli/show.rb +2 -2
  44. data/bundler/lib/bundler/cli/update.rb +34 -12
  45. data/bundler/lib/bundler/compact_index_client.rb +26 -10
  46. data/bundler/lib/bundler/compact_index_client/cache.rb +6 -14
  47. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
  48. data/bundler/lib/bundler/compact_index_client/updater.rb +8 -20
  49. data/bundler/lib/bundler/current_ruby.rb +9 -7
  50. data/bundler/lib/bundler/definition.rb +133 -132
  51. data/bundler/lib/bundler/dep_proxy.rb +16 -9
  52. data/bundler/lib/bundler/dependency.rb +19 -14
  53. data/bundler/lib/bundler/deployment.rb +1 -1
  54. data/bundler/lib/bundler/dsl.rb +54 -71
  55. data/bundler/lib/bundler/endpoint_specification.rb +1 -1
  56. data/bundler/lib/bundler/env.rb +9 -14
  57. data/bundler/lib/bundler/environment_preserver.rb +26 -3
  58. data/bundler/lib/bundler/errors.rb +1 -0
  59. data/bundler/lib/bundler/feature_flag.rb +19 -34
  60. data/bundler/lib/bundler/fetcher.rb +19 -16
  61. data/bundler/lib/bundler/fetcher/base.rb +1 -1
  62. data/bundler/lib/bundler/fetcher/compact_index.rb +27 -13
  63. data/bundler/lib/bundler/fetcher/dependency.rb +1 -1
  64. data/bundler/lib/bundler/fetcher/downloader.rb +6 -3
  65. data/bundler/lib/bundler/fetcher/index.rb +8 -7
  66. data/bundler/lib/bundler/friendly_errors.rb +27 -19
  67. data/bundler/lib/bundler/gem_helper.rb +68 -37
  68. data/bundler/lib/bundler/gem_helpers.rb +38 -29
  69. data/bundler/lib/bundler/gem_tasks.rb +1 -1
  70. data/bundler/lib/bundler/gem_version_promoter.rb +5 -5
  71. data/bundler/lib/bundler/graph.rb +3 -3
  72. data/bundler/lib/bundler/index.rb +12 -7
  73. data/bundler/lib/bundler/injector.rb +32 -12
  74. data/bundler/lib/bundler/inline.rb +41 -30
  75. data/bundler/lib/bundler/installer.rb +41 -60
  76. data/bundler/lib/bundler/installer/gem_installer.rb +8 -4
  77. data/bundler/lib/bundler/installer/parallel_installer.rb +20 -26
  78. data/bundler/lib/bundler/installer/standalone.rb +18 -4
  79. data/bundler/lib/bundler/lazy_specification.rb +41 -27
  80. data/bundler/lib/bundler/lockfile_generator.rb +1 -1
  81. data/bundler/lib/bundler/lockfile_parser.rb +16 -33
  82. data/bundler/lib/bundler/{ssl_certs → man}/.document +0 -0
  83. data/bundler/lib/bundler/man/bundle-add.1 +66 -0
  84. data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +7 -1
  85. data/bundler/lib/bundler/man/bundle-binstubs.1 +42 -0
  86. data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +3 -5
  87. data/bundler/lib/bundler/man/bundle-cache.1 +55 -0
  88. data/bundler/{man/bundle-package.ronn → lib/bundler/man/bundle-cache.1.ronn} +15 -15
  89. data/bundler/lib/bundler/man/bundle-check.1 +31 -0
  90. data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
  91. data/bundler/lib/bundler/man/bundle-clean.1 +24 -0
  92. data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
  93. data/bundler/lib/bundler/man/bundle-config.1 +488 -0
  94. data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +59 -67
  95. data/bundler/lib/bundler/man/bundle-doctor.1 +44 -0
  96. data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
  97. data/bundler/lib/bundler/man/bundle-exec.1 +165 -0
  98. data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +1 -1
  99. data/bundler/lib/bundler/man/bundle-gem.1 +102 -0
  100. data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
  101. data/bundler/lib/bundler/man/bundle-info.1 +20 -0
  102. data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
  103. data/bundler/lib/bundler/man/bundle-init.1 +25 -0
  104. data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +1 -1
  105. data/bundler/lib/bundler/man/bundle-inject.1 +33 -0
  106. data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
  107. data/bundler/lib/bundler/man/bundle-install.1 +338 -0
  108. data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +34 -7
  109. data/bundler/lib/bundler/man/bundle-list.1 +50 -0
  110. data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
  111. data/bundler/lib/bundler/man/bundle-lock.1 +84 -0
  112. data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
  113. data/bundler/lib/bundler/man/bundle-open.1 +32 -0
  114. data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
  115. data/bundler/lib/bundler/man/bundle-outdated.1 +155 -0
  116. data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
  117. data/bundler/lib/bundler/man/bundle-platform.1 +61 -0
  118. data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
  119. data/bundler/lib/bundler/man/bundle-pristine.1 +34 -0
  120. data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
  121. data/bundler/lib/bundler/man/bundle-remove.1 +31 -0
  122. data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
  123. data/bundler/lib/bundler/man/bundle-show.1 +23 -0
  124. data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
  125. data/bundler/lib/bundler/man/bundle-update.1 +394 -0
  126. data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +3 -3
  127. data/bundler/lib/bundler/man/bundle-viz.1 +39 -0
  128. data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
  129. data/bundler/lib/bundler/man/bundle.1 +136 -0
  130. data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +2 -2
  131. data/bundler/lib/bundler/man/gemfile.5 +686 -0
  132. data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +16 -20
  133. data/bundler/lib/bundler/man/index.txt +25 -0
  134. data/bundler/lib/bundler/match_platform.rb +1 -1
  135. data/bundler/lib/bundler/mirror.rb +5 -5
  136. data/bundler/lib/bundler/plugin.rb +75 -36
  137. data/bundler/lib/bundler/plugin/api.rb +1 -1
  138. data/bundler/lib/bundler/plugin/api/source.rb +12 -7
  139. data/bundler/lib/bundler/plugin/dsl.rb +1 -1
  140. data/bundler/lib/bundler/plugin/index.rb +24 -4
  141. data/bundler/lib/bundler/plugin/installer.rb +33 -22
  142. data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
  143. data/bundler/lib/bundler/plugin/source_list.rb +5 -1
  144. data/bundler/lib/bundler/psyched_yaml.rb +0 -15
  145. data/bundler/lib/bundler/remote_specification.rb +5 -4
  146. data/bundler/lib/bundler/resolver.rb +191 -87
  147. data/bundler/lib/bundler/resolver/spec_group.rb +76 -48
  148. data/bundler/lib/bundler/retry.rb +3 -3
  149. data/bundler/lib/bundler/ruby_version.rb +5 -20
  150. data/bundler/lib/bundler/rubygems_ext.rb +76 -72
  151. data/bundler/lib/bundler/rubygems_gem_installer.rb +47 -13
  152. data/bundler/lib/bundler/rubygems_integration.rb +159 -444
  153. data/bundler/lib/bundler/runtime.rb +6 -23
  154. data/bundler/lib/bundler/settings.rb +67 -93
  155. data/bundler/lib/bundler/setup.rb +11 -12
  156. data/bundler/lib/bundler/shared_helpers.rb +54 -80
  157. data/bundler/lib/bundler/similarity_detector.rb +3 -3
  158. data/bundler/lib/bundler/source.rb +12 -6
  159. data/bundler/lib/bundler/source/git.rb +47 -38
  160. data/bundler/lib/bundler/source/git/git_proxy.rb +101 -102
  161. data/bundler/lib/bundler/source/metadata.rb +7 -6
  162. data/bundler/lib/bundler/source/path.rb +20 -11
  163. data/bundler/lib/bundler/source/path/installer.rb +10 -10
  164. data/bundler/lib/bundler/source/rubygems.rb +56 -29
  165. data/bundler/lib/bundler/source/rubygems/remote.rb +3 -4
  166. data/bundler/lib/bundler/source_list.rb +32 -30
  167. data/bundler/lib/bundler/spec_set.rb +37 -25
  168. data/bundler/lib/bundler/stub_specification.rb +40 -34
  169. data/bundler/lib/bundler/templates/Executable.bundler +23 -14
  170. data/bundler/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
  171. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  172. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +16 -2
  173. data/bundler/lib/bundler/templates/newgem/README.md.tt +7 -5
  174. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +19 -5
  175. data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
  176. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
  177. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
  178. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
  179. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
  180. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
  181. data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  182. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +18 -31
  183. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
  184. data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
  185. data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
  186. data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
  187. data/bundler/lib/bundler/templates/newgem/test/minitest/test_helper.rb.tt +6 -0
  188. data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  189. data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  190. data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -1
  191. data/bundler/lib/bundler/ui.rb +3 -3
  192. data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
  193. data/bundler/lib/bundler/ui/shell.rb +7 -11
  194. data/bundler/lib/bundler/uri_credentials_filter.rb +10 -4
  195. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +161 -0
  196. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +66 -0
  197. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +176 -0
  198. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
  199. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +273 -147
  200. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +5 -6
  201. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +7 -0
  202. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +36 -4
  203. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
  204. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
  205. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
  206. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
  207. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +6 -6
  208. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
  209. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +3 -3
  210. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +39 -11
  211. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +4 -4
  212. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  213. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +11 -0
  214. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +53 -51
  215. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +2 -2
  216. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +302 -462
  217. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +40 -0
  218. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +53 -0
  219. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
  220. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +16 -9
  221. data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +28 -13
  222. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +1 -1
  223. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +3 -2
  224. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +7 -17
  225. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +20 -9
  226. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +19 -8
  227. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +63 -43
  228. data/bundler/lib/bundler/vendor/thor/lib/thor/command.rb +21 -14
  229. data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +78 -0
  230. data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +3 -3
  231. data/bundler/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -0
  232. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor.rb +2 -2
  233. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +1 -1
  234. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +6 -6
  235. data/bundler/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
  236. data/bundler/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
  237. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +7 -3
  238. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +20 -7
  239. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +21 -5
  240. data/bundler/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +1 -0
  241. data/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +15 -14
  242. data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +4 -4
  243. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +65 -8
  244. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +10 -2
  245. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +3 -3
  246. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +18 -2
  247. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  248. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
  249. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +104 -0
  250. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +744 -0
  251. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +94 -0
  252. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
  253. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1568 -0
  254. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +88 -0
  255. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +23 -0
  256. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +261 -0
  257. data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +21 -0
  258. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +294 -0
  259. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +546 -0
  260. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +125 -0
  261. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
  262. data/bundler/lib/bundler/vendored_fileutils.rb +1 -6
  263. data/bundler/lib/bundler/vendored_molinillo.rb +1 -1
  264. data/bundler/lib/bundler/vendored_persistent.rb +7 -12
  265. data/bundler/lib/bundler/vendored_thor.rb +2 -2
  266. data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
  267. data/bundler/lib/bundler/vendored_uri.rb +4 -0
  268. data/bundler/lib/bundler/version.rb +1 -20
  269. data/bundler/lib/bundler/version_ranges.rb +51 -5
  270. data/bundler/lib/bundler/vlad.rb +2 -2
  271. data/bundler/lib/bundler/worker.rb +2 -4
  272. data/bundler/lib/bundler/yaml_serializer.rb +3 -4
  273. data/lib/rubygems.rb +198 -222
  274. data/lib/rubygems/available_set.rb +4 -5
  275. data/lib/rubygems/basic_specification.rb +32 -19
  276. data/lib/rubygems/bundler_version_finder.rb +19 -9
  277. data/lib/rubygems/command.rb +73 -21
  278. data/lib/rubygems/command_manager.rb +5 -12
  279. data/lib/rubygems/commands/build_command.rb +51 -18
  280. data/lib/rubygems/commands/cert_command.rb +2 -11
  281. data/lib/rubygems/commands/check_command.rb +0 -2
  282. data/lib/rubygems/commands/cleanup_command.rb +17 -13
  283. data/lib/rubygems/commands/contents_command.rb +7 -9
  284. data/lib/rubygems/commands/dependency_command.rb +9 -10
  285. data/lib/rubygems/commands/environment_command.rb +1 -6
  286. data/lib/rubygems/commands/fetch_command.rb +2 -4
  287. data/lib/rubygems/commands/generate_index_command.rb +3 -2
  288. data/lib/rubygems/commands/help_command.rb +4 -4
  289. data/lib/rubygems/commands/info_command.rb +9 -4
  290. data/lib/rubygems/commands/install_command.rb +12 -54
  291. data/lib/rubygems/commands/list_command.rb +8 -7
  292. data/lib/rubygems/commands/lock_command.rb +3 -5
  293. data/lib/rubygems/commands/mirror_command.rb +0 -1
  294. data/lib/rubygems/commands/open_command.rb +1 -4
  295. data/lib/rubygems/commands/outdated_command.rb +0 -1
  296. data/lib/rubygems/commands/owner_command.rb +10 -10
  297. data/lib/rubygems/commands/pristine_command.rb +13 -9
  298. data/lib/rubygems/commands/push_command.rb +12 -51
  299. data/lib/rubygems/commands/query_command.rb +14 -330
  300. data/lib/rubygems/commands/rdoc_command.rb +0 -1
  301. data/lib/rubygems/commands/search_command.rb +7 -7
  302. data/lib/rubygems/commands/server_command.rb +3 -1
  303. data/lib/rubygems/commands/setup_command.rb +143 -101
  304. data/lib/rubygems/commands/signin_command.rb +0 -1
  305. data/lib/rubygems/commands/signout_command.rb +0 -2
  306. data/lib/rubygems/commands/sources_command.rb +22 -6
  307. data/lib/rubygems/commands/specification_command.rb +8 -3
  308. data/lib/rubygems/commands/stale_command.rb +1 -1
  309. data/lib/rubygems/commands/uninstall_command.rb +2 -3
  310. data/lib/rubygems/commands/unpack_command.rb +3 -32
  311. data/lib/rubygems/commands/update_command.rb +73 -28
  312. data/lib/rubygems/commands/which_command.rb +0 -1
  313. data/lib/rubygems/commands/yank_command.rb +10 -7
  314. data/lib/rubygems/compatibility.rb +4 -4
  315. data/lib/rubygems/config_file.rb +48 -27
  316. data/lib/rubygems/core_ext/kernel_gem.rb +7 -6
  317. data/lib/rubygems/core_ext/kernel_require.rb +44 -6
  318. data/lib/rubygems/core_ext/kernel_warn.rb +22 -13
  319. data/lib/rubygems/core_ext/tcpsocket_init.rb +52 -0
  320. data/lib/rubygems/defaults.rb +110 -23
  321. data/lib/rubygems/dependency.rb +28 -14
  322. data/lib/rubygems/dependency_installer.rb +11 -166
  323. data/lib/rubygems/dependency_list.rb +17 -18
  324. data/lib/rubygems/deprecate.rb +51 -6
  325. data/lib/rubygems/doctor.rb +4 -4
  326. data/lib/rubygems/errors.rb +5 -7
  327. data/lib/rubygems/exceptions.rb +2 -24
  328. data/lib/rubygems/ext.rb +6 -6
  329. data/lib/rubygems/ext/build_error.rb +2 -0
  330. data/lib/rubygems/ext/builder.rb +45 -82
  331. data/lib/rubygems/ext/cmake_builder.rb +6 -7
  332. data/lib/rubygems/ext/configure_builder.rb +5 -8
  333. data/lib/rubygems/ext/ext_conf_builder.rb +27 -23
  334. data/lib/rubygems/ext/rake_builder.rb +4 -6
  335. data/lib/rubygems/gem_runner.rb +3 -10
  336. data/lib/rubygems/gemcutter_utilities.rb +111 -37
  337. data/lib/rubygems/indexer.rb +9 -26
  338. data/lib/rubygems/install_update_options.rb +7 -7
  339. data/lib/rubygems/installer.rb +91 -98
  340. data/lib/rubygems/installer_test_case.rb +104 -42
  341. data/lib/rubygems/installer_uninstaller_utils.rb +29 -0
  342. data/lib/rubygems/local_remote_options.rb +1 -1
  343. data/lib/rubygems/mock_gem_ui.rb +1 -4
  344. data/lib/rubygems/name_tuple.rb +4 -7
  345. data/lib/rubygems/openssl.rb +7 -0
  346. data/lib/rubygems/package.rb +49 -32
  347. data/lib/rubygems/package/digest_io.rb +0 -2
  348. data/lib/rubygems/package/file_source.rb +0 -2
  349. data/lib/rubygems/package/io_source.rb +0 -2
  350. data/lib/rubygems/package/old.rb +1 -3
  351. data/lib/rubygems/package/tar_header.rb +4 -6
  352. data/lib/rubygems/package/tar_reader.rb +15 -12
  353. data/lib/rubygems/package/tar_reader/entry.rb +0 -3
  354. data/lib/rubygems/package/tar_test_case.rb +2 -4
  355. data/lib/rubygems/package/tar_writer.rb +6 -16
  356. data/lib/rubygems/package_task.rb +1 -7
  357. data/lib/rubygems/path_support.rb +2 -2
  358. data/lib/rubygems/platform.rb +22 -16
  359. data/lib/rubygems/query_utils.rb +353 -0
  360. data/lib/rubygems/rdoc.rb +0 -12
  361. data/lib/rubygems/remote_fetcher.rb +33 -59
  362. data/lib/rubygems/request.rb +11 -14
  363. data/lib/rubygems/request/connection_pools.rb +3 -7
  364. data/lib/rubygems/request/http_pool.rb +0 -1
  365. data/lib/rubygems/request_set.rb +10 -23
  366. data/lib/rubygems/request_set/gem_dependency_api.rb +9 -11
  367. data/lib/rubygems/request_set/lockfile.rb +13 -12
  368. data/lib/rubygems/request_set/lockfile/parser.rb +2 -2
  369. data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -1
  370. data/lib/rubygems/requirement.rb +36 -35
  371. data/lib/rubygems/resolver.rb +20 -16
  372. data/lib/rubygems/resolver/activation_request.rb +27 -51
  373. data/lib/rubygems/resolver/api_set.rb +31 -24
  374. data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
  375. data/lib/rubygems/resolver/api_specification.rb +24 -10
  376. data/lib/rubygems/resolver/best_set.rb +4 -6
  377. data/lib/rubygems/resolver/composed_set.rb +3 -5
  378. data/lib/rubygems/resolver/conflict.rb +2 -9
  379. data/lib/rubygems/resolver/current_set.rb +0 -2
  380. data/lib/rubygems/resolver/dependency_request.rb +1 -3
  381. data/lib/rubygems/resolver/git_set.rb +0 -2
  382. data/lib/rubygems/resolver/git_specification.rb +0 -2
  383. data/lib/rubygems/resolver/index_set.rb +1 -3
  384. data/lib/rubygems/resolver/index_specification.rb +32 -2
  385. data/lib/rubygems/resolver/installed_specification.rb +0 -2
  386. data/lib/rubygems/resolver/installer_set.rb +63 -16
  387. data/lib/rubygems/resolver/local_specification.rb +0 -2
  388. data/lib/rubygems/resolver/lock_set.rb +3 -5
  389. data/lib/rubygems/resolver/lock_specification.rb +2 -4
  390. data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
  391. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
  392. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +8 -0
  393. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +39 -6
  394. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
  395. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
  396. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
  397. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
  398. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
  399. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
  400. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
  401. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
  402. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +51 -12
  403. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +76 -8
  404. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
  405. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +12 -0
  406. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
  407. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +510 -165
  408. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
  409. data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
  410. data/lib/rubygems/resolver/requirement_list.rb +0 -1
  411. data/lib/rubygems/resolver/set.rb +0 -2
  412. data/lib/rubygems/resolver/source_set.rb +0 -2
  413. data/lib/rubygems/resolver/spec_specification.rb +14 -2
  414. data/lib/rubygems/resolver/specification.rb +13 -2
  415. data/lib/rubygems/resolver/vendor_set.rb +0 -2
  416. data/lib/rubygems/resolver/vendor_specification.rb +0 -2
  417. data/lib/rubygems/s3_uri_signer.rb +15 -13
  418. data/lib/rubygems/safe_yaml.rb +4 -4
  419. data/lib/rubygems/security.rb +27 -34
  420. data/lib/rubygems/security/policy.rb +4 -8
  421. data/lib/rubygems/security/signer.rb +8 -9
  422. data/lib/rubygems/security/trust_dir.rb +1 -3
  423. data/lib/rubygems/server.rb +20 -16
  424. data/lib/rubygems/source.rb +30 -13
  425. data/lib/rubygems/source/git.rb +7 -8
  426. data/lib/rubygems/source/installed.rb +0 -2
  427. data/lib/rubygems/source/local.rb +2 -4
  428. data/lib/rubygems/source/lock.rb +0 -2
  429. data/lib/rubygems/source/specific_file.rb +0 -2
  430. data/lib/rubygems/source/vendor.rb +0 -2
  431. data/lib/rubygems/source_list.rb +6 -6
  432. data/lib/rubygems/spec_fetcher.rb +22 -34
  433. data/lib/rubygems/specification.rb +207 -278
  434. data/lib/rubygems/specification_policy.rb +135 -57
  435. data/{bundler/lib/bundler/ssl_certs/index.rubygems.org → lib/rubygems/ssl_certs/rubygems.org}/GlobalSignRootCA.pem +0 -0
  436. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
  437. data/lib/rubygems/stub_specification.rb +4 -5
  438. data/lib/rubygems/test_case.rb +221 -341
  439. data/lib/rubygems/test_utilities.rb +22 -18
  440. data/lib/rubygems/text.rb +2 -3
  441. data/lib/rubygems/uninstaller.rb +49 -30
  442. data/lib/rubygems/uri_formatter.rb +2 -4
  443. data/lib/rubygems/uri_parser.rb +34 -0
  444. data/lib/rubygems/uri_parsing.rb +23 -0
  445. data/lib/rubygems/user_interaction.rb +3 -20
  446. data/lib/rubygems/util.rb +20 -44
  447. data/lib/rubygems/util/licenses.rb +400 -400
  448. data/lib/rubygems/validator.rb +9 -31
  449. data/lib/rubygems/version.rb +29 -21
  450. data/lib/rubygems/version_option.rb +6 -0
  451. data/rubygems-update.gemspec +4 -11
  452. data/setup.rb +2 -7
  453. data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
  454. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  455. data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
  456. data/test/rubygems/rubygems_plugin.rb +0 -2
  457. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
  458. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
  459. data/test/rubygems/test_bundled_ca.rb +42 -45
  460. data/test/rubygems/test_config.rb +0 -2
  461. data/test/rubygems/test_deprecate.rb +41 -5
  462. data/test/rubygems/test_gem.rb +405 -236
  463. data/test/rubygems/test_gem_available_set.rb +5 -6
  464. data/test/rubygems/test_gem_bundler_version_finder.rb +20 -2
  465. data/test/rubygems/test_gem_command.rb +144 -9
  466. data/test/rubygems/test_gem_command_manager.rb +40 -17
  467. data/test/rubygems/test_gem_commands_build_command.rb +386 -13
  468. data/test/rubygems/test_gem_commands_cert_command.rb +18 -6
  469. data/test/rubygems/test_gem_commands_check_command.rb +0 -2
  470. data/test/rubygems/test_gem_commands_cleanup_command.rb +35 -10
  471. data/test/rubygems/test_gem_commands_contents_command.rb +50 -19
  472. data/test/rubygems/test_gem_commands_dependency_command.rb +1 -3
  473. data/test/rubygems/test_gem_commands_environment_command.rb +21 -33
  474. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -2
  475. data/test/rubygems/test_gem_commands_generate_index_command.rb +32 -2
  476. data/test/rubygems/test_gem_commands_help_command.rb +16 -8
  477. data/test/rubygems/test_gem_commands_info_command.rb +6 -7
  478. data/test/rubygems/test_gem_commands_install_command.rb +368 -34
  479. data/test/rubygems/test_gem_commands_list_command.rb +0 -2
  480. data/test/rubygems/test_gem_commands_lock_command.rb +0 -2
  481. data/test/rubygems/test_gem_commands_mirror.rb +1 -2
  482. data/test/rubygems/test_gem_commands_open_command.rb +4 -6
  483. data/test/rubygems/test_gem_commands_outdated_command.rb +18 -1
  484. data/test/rubygems/test_gem_commands_owner_command.rb +62 -9
  485. data/test/rubygems/test_gem_commands_pristine_command.rb +148 -16
  486. data/test/rubygems/test_gem_commands_push_command.rb +94 -21
  487. data/test/rubygems/test_gem_commands_query_command.rb +35 -10
  488. data/test/rubygems/test_gem_commands_search_command.rb +0 -2
  489. data/test/rubygems/test_gem_commands_server_command.rb +6 -4
  490. data/test/rubygems/test_gem_commands_setup_command.rb +228 -128
  491. data/test/rubygems/test_gem_commands_signin_command.rb +36 -11
  492. data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
  493. data/test/rubygems/test_gem_commands_sources_command.rb +193 -9
  494. data/test/rubygems/test_gem_commands_specification_command.rb +46 -20
  495. data/test/rubygems/test_gem_commands_stale_command.rb +0 -2
  496. data/test/rubygems/test_gem_commands_uninstall_command.rb +108 -52
  497. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -2
  498. data/test/rubygems/test_gem_commands_update_command.rb +201 -29
  499. data/test/rubygems/test_gem_commands_which_command.rb +3 -5
  500. data/test/rubygems/test_gem_commands_yank_command.rb +86 -5
  501. data/test/rubygems/test_gem_config_file.rb +25 -13
  502. data/test/rubygems/test_gem_dependency.rb +6 -2
  503. data/test/rubygems/test_gem_dependency_installer.rb +169 -252
  504. data/test/rubygems/test_gem_dependency_list.rb +31 -26
  505. data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -3
  506. data/test/rubygems/test_gem_doctor.rb +28 -2
  507. data/test/rubygems/test_gem_ext_builder.rb +51 -44
  508. data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -23
  509. data/test/rubygems/test_gem_ext_configure_builder.rb +6 -14
  510. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +21 -29
  511. data/test/rubygems/test_gem_ext_rake_builder.rb +39 -22
  512. data/test/rubygems/test_gem_gem_runner.rb +47 -2
  513. data/test/rubygems/test_gem_gemcutter_utilities.rb +16 -13
  514. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -2
  515. data/test/rubygems/test_gem_indexer.rb +40 -55
  516. data/test/rubygems/test_gem_install_update_options.rb +45 -21
  517. data/test/rubygems/test_gem_installer.rb +661 -338
  518. data/test/rubygems/test_gem_local_remote_options.rb +0 -2
  519. data/test/rubygems/test_gem_name_tuple.rb +0 -2
  520. data/test/rubygems/test_gem_package.rb +132 -45
  521. data/test/rubygems/test_gem_package_old.rb +56 -55
  522. data/test/rubygems/test_gem_package_tar_header.rb +18 -1
  523. data/test/rubygems/test_gem_package_tar_reader.rb +0 -2
  524. data/test/rubygems/test_gem_package_tar_reader_entry.rb +6 -7
  525. data/test/rubygems/test_gem_package_tar_writer.rb +20 -12
  526. data/test/rubygems/test_gem_package_task.rb +46 -13
  527. data/test/rubygems/test_gem_path_support.rb +17 -13
  528. data/test/rubygems/test_gem_platform.rb +74 -7
  529. data/test/rubygems/test_gem_rdoc.rb +0 -1
  530. data/test/rubygems/test_gem_remote_fetcher.rb +223 -209
  531. data/test/rubygems/test_gem_request.rb +30 -19
  532. data/test/rubygems/test_gem_request_connection_pools.rb +2 -2
  533. data/test/rubygems/test_gem_request_set.rb +104 -29
  534. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +4 -6
  535. data/test/rubygems/test_gem_request_set_lockfile.rb +4 -5
  536. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -10
  537. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -118
  538. data/test/rubygems/test_gem_requirement.rb +50 -4
  539. data/test/rubygems/test_gem_resolver.rb +73 -31
  540. data/test/rubygems/test_gem_resolver_activation_request.rb +3 -34
  541. data/test/rubygems/test_gem_resolver_api_set.rb +60 -59
  542. data/test/rubygems/test_gem_resolver_api_specification.rb +3 -5
  543. data/test/rubygems/test_gem_resolver_best_set.rb +27 -6
  544. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -2
  545. data/test/rubygems/test_gem_resolver_conflict.rb +1 -7
  546. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -2
  547. data/test/rubygems/test_gem_resolver_git_set.rb +0 -2
  548. data/test/rubygems/test_gem_resolver_git_specification.rb +1 -2
  549. data/test/rubygems/test_gem_resolver_index_set.rb +2 -4
  550. data/test/rubygems/test_gem_resolver_index_specification.rb +7 -4
  551. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -3
  552. data/test/rubygems/test_gem_resolver_installer_set.rb +10 -10
  553. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -2
  554. data/test/rubygems/test_gem_resolver_lock_set.rb +3 -5
  555. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -2
  556. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -2
  557. data/test/rubygems/test_gem_resolver_specification.rb +0 -2
  558. data/test/rubygems/test_gem_resolver_vendor_set.rb +1 -3
  559. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -2
  560. data/test/rubygems/test_gem_security.rb +27 -25
  561. data/test/rubygems/test_gem_security_policy.rb +7 -12
  562. data/test/rubygems/test_gem_security_signer.rb +11 -12
  563. data/test/rubygems/test_gem_security_trust_dir.rb +4 -6
  564. data/test/rubygems/test_gem_server.rb +13 -12
  565. data/test/rubygems/test_gem_silent_ui.rb +0 -1
  566. data/test/rubygems/test_gem_source.rb +32 -17
  567. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -1
  568. data/test/rubygems/test_gem_source_git.rb +12 -18
  569. data/test/rubygems/test_gem_source_installed.rb +11 -13
  570. data/test/rubygems/test_gem_source_list.rb +1 -1
  571. data/test/rubygems/test_gem_source_local.rb +8 -9
  572. data/test/rubygems/test_gem_source_lock.rb +17 -19
  573. data/test/rubygems/test_gem_source_specific_file.rb +9 -10
  574. data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
  575. data/test/rubygems/test_gem_source_vendor.rb +7 -9
  576. data/test/rubygems/test_gem_spec_fetcher.rb +11 -4
  577. data/test/rubygems/test_gem_specification.rb +363 -245
  578. data/test/rubygems/test_gem_stream_ui.rb +3 -1
  579. data/test/rubygems/test_gem_stub_specification.rb +6 -7
  580. data/test/rubygems/test_gem_text.rb +1 -2
  581. data/test/rubygems/test_gem_uninstaller.rb +165 -22
  582. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -2
  583. data/test/rubygems/test_gem_uri_formatter.rb +0 -2
  584. data/test/rubygems/test_gem_util.rb +17 -15
  585. data/test/rubygems/test_gem_validator.rb +4 -7
  586. data/test/rubygems/test_gem_version.rb +23 -10
  587. data/test/rubygems/test_gem_version_option.rb +1 -3
  588. data/test/rubygems/test_kernel.rb +25 -9
  589. data/test/rubygems/test_project_sanity.rb +20 -0
  590. data/test/rubygems/test_remote_fetch_error.rb +1 -2
  591. data/test/rubygems/test_require.rb +394 -56
  592. data/test/test_changelog_generator.rb +17 -0
  593. metadata +109 -155
  594. data/.rubocop.yml +0 -67
  595. data/.travis.yml +0 -38
  596. data/appveyor.yml +0 -43
  597. data/bundler/CODE_OF_CONDUCT.md +0 -42
  598. data/bundler/CONTRIBUTING.md +0 -17
  599. data/bundler/exe/bundle_ruby +0 -60
  600. data/bundler/lib/bundler/cli/package.rb +0 -49
  601. data/bundler/lib/bundler/compatibility_guard.rb +0 -14
  602. data/bundler/lib/bundler/gem_remote_fetcher.rb +0 -43
  603. data/bundler/lib/bundler/ssl_certs/certificate_manager.rb +0 -66
  604. data/bundler/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  605. data/bundler/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
  606. data/bundler/lib/bundler/templates/newgem/test/test_helper.rb.tt +0 -4
  607. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
  608. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb +0 -27
  609. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb +0 -129
  610. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb +0 -12
  611. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb +0 -129
  612. data/lib/rubygems/source_local.rb +0 -7
  613. data/lib/rubygems/source_specific_file.rb +0 -6
  614. data/lib/rubygems/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +0 -21
  615. data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  616. data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
  617. data/lib/ubygems.rb +0 -14
  618. data/util/CL2notes +0 -55
  619. data/util/ci +0 -82
  620. data/util/cops/deprecations.rb +0 -52
  621. data/util/create_certs.rb +0 -171
  622. data/util/create_certs.sh +0 -27
  623. data/util/create_encrypted_key.rb +0 -16
  624. data/util/generate_spdx_license_list.rb +0 -61
  625. data/util/patch_with_prs.rb +0 -77
  626. data/util/rubocop +0 -8
  627. data/util/update_bundled_ca_certificates.rb +0 -139
  628. data/util/update_changelog.rb +0 -67
@@ -133,5 +133,4 @@ class TestGemRDoc < Gem::TestCase
133
133
  FileUtils.rm_r @a.doc_dir
134
134
  end
135
135
  end
136
-
137
136
  end
@@ -2,15 +2,10 @@
2
2
  require 'rubygems/test_case'
3
3
 
4
4
  require 'webrick'
5
- begin
6
- require 'webrick/https'
7
- rescue LoadError => e
8
- raise unless (e.respond_to?(:path) && e.path == 'openssl') ||
9
- e.message =~ / -- openssl$/
10
- end
5
+ require 'webrick/https' if Gem::HAVE_OPENSSL
11
6
 
12
- unless defined?(OpenSSL::SSL)
13
- warn 'Skipping Gem::Request tests. openssl not found.'
7
+ unless Gem::HAVE_OPENSSL
8
+ warn 'Skipping Gem::RemoteFetcher tests. openssl not found.'
14
9
  end
15
10
 
16
11
  require 'rubygems/remote_fetcher'
@@ -32,7 +27,6 @@ require 'minitest/mock'
32
27
  # proxy is configured.
33
28
 
34
29
  class TestGemRemoteFetcher < Gem::TestCase
35
-
36
30
  include Gem::DefaultUserInteraction
37
31
 
38
32
  SERVER_DATA = <<-EOY.freeze
@@ -53,7 +47,6 @@ gems:
53
47
  homepage: http://rake.rubyforge.org
54
48
  description: Rake is a Make-like program implemented in Ruby. Tasks and dependencies are specified in standard Ruby syntax.
55
49
  autorequire:
56
- default_executable: rake
57
50
  bindir: bin
58
51
  has_rdoc: true
59
52
  required_ruby_version: !ruby/object:Gem::Version::Requirement
@@ -79,12 +72,10 @@ gems:
79
72
 
80
73
  PROXY_DATA = SERVER_DATA.gsub(/0.4.11/, '0.4.2')
81
74
 
82
- DIR = File.expand_path(File.dirname(__FILE__))
83
-
84
75
  # Generated via:
85
76
  # x = OpenSSL::PKey::DH.new(2048) # wait a while...
86
77
  # x.to_s => pem
87
- TEST_KEY_DH2048 = OpenSSL::PKey::DH.new <<-_end_of_pem_
78
+ TEST_KEY_DH2048 = OpenSSL::PKey::DH.new <<-_END_OF_PEM_
88
79
  -----BEGIN DH PARAMETERS-----
89
80
  MIIBCAKCAQEA3Ze2EHSfYkZLUn557torAmjBgPsqzbodaRaGZtgK1gEU+9nNJaFV
90
81
  G1JKhmGUiEDyIW7idsBpe4sX/Wqjnp48Lr8IeI/SlEzLdoGpf05iRYXC8Cm9o8aM
@@ -93,7 +84,7 @@ cfmVgoSEAo9YLBpzoji2jHkO7Q5IPt4zxbTdlmmGFLc/GO9q7LGHhC+rcMcNTGsM
93
84
  NP0fuvVAIB158VnQ0liHSwcl6+9vE1mL0Jo/qEXQxl0+UdKDjaGfTsn6HIrwTnmJ
94
85
  PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
95
86
  -----END DH PARAMETERS-----
96
- _end_of_pem_
87
+ _END_OF_PEM_
97
88
 
98
89
  def setup
99
90
  @proxies = %w[https_proxy http_proxy HTTP_PROXY http_proxy_user HTTP_PROXY_USER http_proxy_pass HTTP_PROXY_PASS no_proxy NO_PROXY]
@@ -101,23 +92,23 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
101
92
  @proxies.each {|k| ENV[k] = nil }
102
93
 
103
94
  super
104
- self.class.start_servers
105
- self.class.enable_yaml = true
106
- self.class.enable_zip = false
95
+ start_servers
96
+ self.enable_yaml = true
97
+ self.enable_zip = false
107
98
 
108
- base_server_uri = "http://localhost:#{self.class.normal_server_port}"
109
- @proxy_uri = "http://localhost:#{self.class.proxy_server_port}"
99
+ base_server_uri = "http://localhost:#{normal_server_port}"
100
+ @proxy_uri = "http://localhost:#{proxy_server_port}"
110
101
 
111
102
  @server_uri = base_server_uri + "/yaml"
112
103
  @server_z_uri = base_server_uri + "/yaml.Z"
113
104
 
114
- # REFACTOR: copied from test_gem_dependency_installer.rb
115
- @gems_dir = File.join @tempdir, 'gems'
116
105
  @cache_dir = File.join @gemhome, "cache"
117
- FileUtils.mkdir @gems_dir
118
106
 
119
107
  # TODO: why does the remote fetcher need it written to disk?
120
- @a1, @a1_gem = util_gem 'a', '1' do |s| s.executables << 'a_bin' end
108
+ @a1, @a1_gem = util_gem 'a', '1' do |s|
109
+ s.executables << 'a_bin'
110
+ end
111
+
121
112
  @a1.loaded_from = File.join(@gemhome, 'specifications', @a1.full_name)
122
113
 
123
114
  Gem::RemoteFetcher.fetcher = nil
@@ -127,7 +118,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
127
118
 
128
119
  def teardown
129
120
  @fetcher.close_all
130
- self.class.stop_servers
121
+ stop_servers
131
122
  super
132
123
  Gem.configuration[:http_proxy] = nil
133
124
  @proxies.each_with_index {|k, i| ENV[k] = @old_proxies[i] }
@@ -151,36 +142,22 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
151
142
  assert_equal proxy_uri, fetcher.instance_variable_get(:@proxy).to_s
152
143
  end
153
144
 
154
- def test_fetch_size_bad_uri
145
+ def test_fetch_path_bad_uri
155
146
  fetcher = Gem::RemoteFetcher.new nil
156
147
  @fetcher = fetcher
157
148
 
158
149
  e = assert_raises ArgumentError do
159
- fetcher.fetch_size 'gems.example.com/yaml'
150
+ @fetcher.fetch_path("gems.example.com/yaml", nil, true)
160
151
  end
161
152
 
162
153
  assert_equal 'uri scheme is invalid: nil', e.message
163
154
  end
164
155
 
165
- def test_fetch_size_socket_error
166
- fetcher = Gem::RemoteFetcher.new nil
167
- @fetcher = fetcher
168
- def fetcher.request(uri, request_class, last_modified = nil)
169
- raise SocketError, "oops"
170
- end
171
-
172
- uri = 'http://gems.example.com/yaml'
173
- e = assert_raises Gem::RemoteFetcher::FetchError do
174
- fetcher.fetch_size uri
175
- end
176
-
177
- assert_equal "SocketError: oops (#{uri})", e.message
178
- end
179
-
180
156
  def test_no_proxy
181
157
  use_ui @stub_ui do
182
158
  assert_data_from_server @fetcher.fetch_path(@server_uri)
183
- assert_equal SERVER_DATA.size, @fetcher.fetch_size(@server_uri)
159
+ response = @fetcher.fetch_path(@server_uri, nil, true)
160
+ assert_equal SERVER_DATA.size, response['content-length'].to_i
184
161
  end
185
162
  end
186
163
 
@@ -228,7 +205,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
228
205
  @test_data
229
206
  end
230
207
 
231
- raise Gem::RemoteFetcher::FetchError.new("haha!", nil)
208
+ raise Gem::RemoteFetcher::FetchError.new("haha!", '')
232
209
  end
233
210
  end
234
211
 
@@ -340,6 +317,8 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
340
317
  local_path = File.join @tempdir, @a1.file_name
341
318
  inst = nil
342
319
  FileUtils.chmod 0555, @a1.cache_dir
320
+ FileUtils.mkdir_p File.join(Gem.user_dir, "cache") rescue nil
321
+ FileUtils.chmod 0555, File.join(Gem.user_dir, "cache")
343
322
 
344
323
  Dir.chdir @tempdir do
345
324
  inst = Gem::RemoteFetcher.fetcher
@@ -348,6 +327,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
348
327
  assert_equal(File.join(@tempdir, @a1.file_name),
349
328
  inst.download(@a1, local_path))
350
329
  ensure
330
+ FileUtils.chmod 0755, File.join(Gem.user_dir, "cache")
351
331
  FileUtils.chmod 0755, @a1.cache_dir
352
332
  end
353
333
 
@@ -511,7 +491,45 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
511
491
  fetcher.fetch_path url
512
492
  end
513
493
 
514
- assert_match %r|ECONNREFUSED:.*connect\(2\) \(#{Regexp.escape url}\)\z|,
494
+ assert_match %r{ECONNREFUSED:.*connect\(2\) \(#{Regexp.escape url}\)\z},
495
+ e.message
496
+ assert_equal url, e.uri
497
+ end
498
+
499
+ def test_fetch_path_timeout_error
500
+ fetcher = Gem::RemoteFetcher.new nil
501
+ @fetcher = fetcher
502
+
503
+ def fetcher.fetch_http(uri, mtime = nil, head = nil)
504
+ raise Timeout::Error, 'timed out'
505
+ end
506
+
507
+ url = 'http://example.com/uri'
508
+
509
+ e = assert_raises Gem::RemoteFetcher::FetchError do
510
+ fetcher.fetch_path url
511
+ end
512
+
513
+ assert_match %r{Timeout::Error: timed out \(#{Regexp.escape url}\)\z},
514
+ e.message
515
+ assert_equal url, e.uri
516
+ end
517
+
518
+ def test_fetch_path_getaddrinfo_error
519
+ fetcher = Gem::RemoteFetcher.new nil
520
+ @fetcher = fetcher
521
+
522
+ def fetcher.fetch_http(uri, mtime = nil, head = nil)
523
+ raise SocketError, 'getaddrinfo: nodename nor servname provided'
524
+ end
525
+
526
+ url = 'http://example.com/uri'
527
+
528
+ e = assert_raises Gem::RemoteFetcher::FetchError do
529
+ fetcher.fetch_path url
530
+ end
531
+
532
+ assert_match %r{SocketError: getaddrinfo: nodename nor servname provided \(#{Regexp.escape url}\)\z},
515
533
  e.message
516
534
  assert_equal url, e.uri
517
535
  end
@@ -683,7 +701,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
683
701
 
684
702
  def test_fetch_s3_config_creds
685
703
  Gem.configuration[:s3_source] = {
686
- 'my-bucket' => {:id => 'testuser', :secret => 'testpass'}
704
+ 'my-bucket' => {:id => 'testuser', :secret => 'testpass'},
687
705
  }
688
706
  url = 's3://my-bucket/gems/specs.4.8.gz'
689
707
  Time.stub :now, Time.at(1561353581) do
@@ -695,7 +713,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
695
713
 
696
714
  def test_fetch_s3_config_creds_with_region
697
715
  Gem.configuration[:s3_source] = {
698
- 'my-bucket' => {:id => 'testuser', :secret => 'testpass', :region => 'us-west-2'}
716
+ 'my-bucket' => {:id => 'testuser', :secret => 'testpass', :region => 'us-west-2'},
699
717
  }
700
718
  url = 's3://my-bucket/gems/specs.4.8.gz'
701
719
  Time.stub :now, Time.at(1561353581) do
@@ -707,7 +725,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
707
725
 
708
726
  def test_fetch_s3_config_creds_with_token
709
727
  Gem.configuration[:s3_source] = {
710
- 'my-bucket' => {:id => 'testuser', :secret => 'testpass', :security_token => 'testtoken'}
728
+ 'my-bucket' => {:id => 'testuser', :secret => 'testpass', :security_token => 'testtoken'},
711
729
  }
712
730
  url = 's3://my-bucket/gems/specs.4.8.gz'
713
731
  Time.stub :now, Time.at(1561353581) do
@@ -722,14 +740,14 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
722
740
  ENV['AWS_SECRET_ACCESS_KEY'] = 'testpass'
723
741
  ENV['AWS_SESSION_TOKEN'] = nil
724
742
  Gem.configuration[:s3_source] = {
725
- 'my-bucket' => {:provider => 'env'}
743
+ 'my-bucket' => {:provider => 'env'},
726
744
  }
727
745
  url = 's3://my-bucket/gems/specs.4.8.gz'
728
746
  Time.stub :now, Time.at(1561353581) do
729
747
  assert_fetch_s3 url, '20f974027db2f3cd6193565327a7c73457a138efb1a63ea248d185ce6827d41b'
730
748
  end
731
749
  ensure
732
- ENV.each_key {|key| ENV.delete(key) if key.start_with?('AWS')}
750
+ ENV.each_key {|key| ENV.delete(key) if key.start_with?('AWS') }
733
751
  Gem.configuration[:s3_source] = nil
734
752
  end
735
753
 
@@ -738,14 +756,14 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
738
756
  ENV['AWS_SECRET_ACCESS_KEY'] = 'testpass'
739
757
  ENV['AWS_SESSION_TOKEN'] = nil
740
758
  Gem.configuration[:s3_source] = {
741
- 'my-bucket' => {:provider => 'env', :region => 'us-west-2'}
759
+ 'my-bucket' => {:provider => 'env', :region => 'us-west-2'},
742
760
  }
743
761
  url = 's3://my-bucket/gems/specs.4.8.gz'
744
762
  Time.stub :now, Time.at(1561353581) do
745
763
  assert_fetch_s3 url, '4afc3010757f1fd143e769f1d1dabd406476a4fc7c120e9884fd02acbb8f26c9', nil, 'us-west-2'
746
764
  end
747
765
  ensure
748
- ENV.each_key {|key| ENV.delete(key) if key.start_with?('AWS')}
766
+ ENV.each_key {|key| ENV.delete(key) if key.start_with?('AWS') }
749
767
  Gem.configuration[:s3_source] = nil
750
768
  end
751
769
 
@@ -754,14 +772,14 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
754
772
  ENV['AWS_SECRET_ACCESS_KEY'] = 'testpass'
755
773
  ENV['AWS_SESSION_TOKEN'] = 'testtoken'
756
774
  Gem.configuration[:s3_source] = {
757
- 'my-bucket' => {:provider => 'env'}
775
+ 'my-bucket' => {:provider => 'env'},
758
776
  }
759
777
  url = 's3://my-bucket/gems/specs.4.8.gz'
760
778
  Time.stub :now, Time.at(1561353581) do
761
779
  assert_fetch_s3 url, '935160a427ef97e7630f799232b8f208c4a4e49aad07d0540572a2ad5fe9f93c', 'testtoken'
762
780
  end
763
781
  ensure
764
- ENV.each_key {|key| ENV.delete(key) if key.start_with?('AWS')}
782
+ ENV.each_key {|key| ENV.delete(key) if key.start_with?('AWS') }
765
783
  Gem.configuration[:s3_source] = nil
766
784
  end
767
785
 
@@ -774,7 +792,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
774
792
 
775
793
  def test_fetch_s3_instance_profile_creds
776
794
  Gem.configuration[:s3_source] = {
777
- 'my-bucket' => {:provider => 'instance_profile'}
795
+ 'my-bucket' => {:provider => 'instance_profile'},
778
796
  }
779
797
 
780
798
  url = 's3://my-bucket/gems/specs.4.8.gz'
@@ -788,7 +806,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
788
806
 
789
807
  def test_fetch_s3_instance_profile_creds_with_region
790
808
  Gem.configuration[:s3_source] = {
791
- 'my-bucket' => {:provider => 'instance_profile', :region => 'us-west-2'}
809
+ 'my-bucket' => {:provider => 'instance_profile', :region => 'us-west-2'},
792
810
  }
793
811
 
794
812
  url = 's3://my-bucket/gems/specs.4.8.gz'
@@ -802,7 +820,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
802
820
 
803
821
  def test_fetch_s3_instance_profile_creds_with_token
804
822
  Gem.configuration[:s3_source] = {
805
- 'my-bucket' => {:provider => 'instance_profile'}
823
+ 'my-bucket' => {:provider => 'instance_profile'},
806
824
  }
807
825
 
808
826
  url = 's3://my-bucket/gems/specs.4.8.gz'
@@ -832,7 +850,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
832
850
 
833
851
  def test_fetch_s3_no_host
834
852
  Gem.configuration[:s3_source] = {
835
- 'my-bucket' => {:id => 'testuser', :secret => 'testpass'}
853
+ 'my-bucket' => {:id => 'testuser', :secret => 'testpass'},
836
854
  }
837
855
 
838
856
  url = 's3://other-bucket/gems/specs.4.8.gz'
@@ -893,7 +911,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
893
911
 
894
912
  def test_yaml_error_on_size
895
913
  use_ui @stub_ui do
896
- self.class.enable_yaml = false
914
+ self.enable_yaml = false
897
915
  fetcher = Gem::RemoteFetcher.new nil
898
916
  @fetcher = fetcher
899
917
  assert_error { fetcher.size }
@@ -901,22 +919,20 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
901
919
  end
902
920
 
903
921
  def test_ssl_connection
904
- ssl_server = self.class.start_ssl_server
905
- temp_ca_cert = File.join(DIR, 'ca_cert.pem')
922
+ ssl_server = start_ssl_server
923
+ temp_ca_cert = File.join(__dir__, 'ca_cert.pem')
906
924
  with_configured_fetcher(":ssl_ca_cert: #{temp_ca_cert}") do |fetcher|
907
925
  fetcher.fetch_path("https://localhost:#{ssl_server.config[:Port]}/yaml")
908
926
  end
909
927
  end
910
928
 
911
929
  def test_ssl_client_cert_auth_connection
912
- skip 'openssl is missing' unless defined?(OpenSSL::SSL)
913
-
914
- ssl_server = self.class.start_ssl_server({
930
+ ssl_server = start_ssl_server({
915
931
  :SSLVerifyClient =>
916
- OpenSSL::SSL::VERIFY_PEER|OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT})
932
+ OpenSSL::SSL::VERIFY_PEER | OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT})
917
933
 
918
- temp_ca_cert = File.join(DIR, 'ca_cert.pem')
919
- temp_client_cert = File.join(DIR, 'client.pem')
934
+ temp_ca_cert = File.join(__dir__, 'ca_cert.pem')
935
+ temp_client_cert = File.join(__dir__, 'client.pem')
920
936
 
921
937
  with_configured_fetcher(
922
938
  ":ssl_ca_cert: #{temp_ca_cert}\n" +
@@ -926,14 +942,12 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
926
942
  end
927
943
 
928
944
  def test_do_not_allow_invalid_client_cert_auth_connection
929
- skip 'openssl is missing' unless defined?(OpenSSL::SSL)
930
-
931
- ssl_server = self.class.start_ssl_server({
945
+ ssl_server = start_ssl_server({
932
946
  :SSLVerifyClient =>
933
- OpenSSL::SSL::VERIFY_PEER|OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT})
947
+ OpenSSL::SSL::VERIFY_PEER | OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT})
934
948
 
935
- temp_ca_cert = File.join(DIR, 'ca_cert.pem')
936
- temp_client_cert = File.join(DIR, 'invalid_client.pem')
949
+ temp_ca_cert = File.join(__dir__, 'ca_cert.pem')
950
+ temp_client_cert = File.join(__dir__, 'invalid_client.pem')
937
951
 
938
952
  with_configured_fetcher(
939
953
  ":ssl_ca_cert: #{temp_ca_cert}\n" +
@@ -945,7 +959,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
945
959
  end
946
960
 
947
961
  def test_do_not_allow_insecure_ssl_connection_by_default
948
- ssl_server = self.class.start_ssl_server
962
+ ssl_server = start_ssl_server
949
963
  with_configured_fetcher do |fetcher|
950
964
  assert_raises Gem::RemoteFetcher::FetchError do
951
965
  fetcher.fetch_path("https://localhost:#{ssl_server.config[:Port]}/yaml")
@@ -954,15 +968,15 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
954
968
  end
955
969
 
956
970
  def test_ssl_connection_allow_verify_none
957
- ssl_server = self.class.start_ssl_server
971
+ ssl_server = start_ssl_server
958
972
  with_configured_fetcher(":ssl_verify_mode: 0") do |fetcher|
959
973
  fetcher.fetch_path("https://localhost:#{ssl_server.config[:Port]}/yaml")
960
974
  end
961
975
  end
962
976
 
963
977
  def test_do_not_follow_insecure_redirect
964
- ssl_server = self.class.start_ssl_server
965
- temp_ca_cert = File.join(DIR, 'ca_cert.pem')
978
+ ssl_server = start_ssl_server
979
+ temp_ca_cert = File.join(__dir__, 'ca_cert.pem')
966
980
  expected_error_message =
967
981
  "redirecting to non-https resource: #{@server_uri} (https://localhost:#{ssl_server.config[:Port]}/insecure_redirect?to=#{@server_uri})"
968
982
 
@@ -976,7 +990,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
976
990
  end
977
991
 
978
992
  def test_nil_ca_cert
979
- ssl_server = self.class.start_ssl_server
993
+ ssl_server = start_ssl_server
980
994
  temp_ca_cert = nil
981
995
 
982
996
  with_configured_fetcher(":ssl_ca_cert: #{temp_ca_cert}") do |fetcher|
@@ -986,6 +1000,12 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
986
1000
  end
987
1001
  end
988
1002
 
1003
+ def test_tcpsocketext_require
1004
+ with_configured_fetcher(":ipv4_fallback_enabled: true") do |fetcher|
1005
+ refute require('rubygems/core_ext/tcpsocket_init')
1006
+ end
1007
+ end
1008
+
989
1009
  def with_configured_fetcher(config_str = nil, &block)
990
1010
  if config_str
991
1011
  temp_conf = File.join @tempdir, '.gemrc'
@@ -1026,149 +1046,143 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
1026
1046
  end
1027
1047
  end
1028
1048
 
1029
- class << self
1030
- attr_reader :normal_server, :proxy_server
1031
- attr_accessor :enable_zip, :enable_yaml
1049
+ private
1050
+
1051
+ attr_reader :normal_server, :proxy_server
1052
+ attr_accessor :enable_zip, :enable_yaml
1032
1053
 
1033
- def start_servers
1034
- @normal_server ||= start_server(SERVER_DATA)
1035
- @proxy_server ||= start_server(PROXY_DATA)
1036
- @enable_yaml = true
1037
- @enable_zip = false
1054
+ def start_servers
1055
+ @normal_server ||= start_server(SERVER_DATA)
1056
+ @proxy_server ||= start_server(PROXY_DATA)
1057
+ @enable_yaml = true
1058
+ @enable_zip = false
1059
+ @ssl_server = nil
1060
+ @ssl_server_thread = nil
1061
+ end
1062
+
1063
+ def stop_servers
1064
+ if @normal_server
1065
+ @normal_server.kill.join
1066
+ @normal_server = nil
1067
+ end
1068
+ if @proxy_server
1069
+ @proxy_server.kill.join
1070
+ @proxy_server = nil
1071
+ end
1072
+ if @ssl_server
1073
+ @ssl_server.stop
1038
1074
  @ssl_server = nil
1075
+ end
1076
+ if @ssl_server_thread
1077
+ @ssl_server_thread.kill.join
1039
1078
  @ssl_server_thread = nil
1040
1079
  end
1080
+ utils = WEBrick::Utils # TimeoutHandler is since 1.9
1081
+ utils::TimeoutHandler.terminate if defined?(utils::TimeoutHandler.terminate)
1082
+ end
1041
1083
 
1042
- def stop_servers
1043
- if @normal_server
1044
- @normal_server.kill.join
1045
- @normal_server = nil
1046
- end
1047
- if @proxy_server
1048
- @proxy_server.kill.join
1049
- @proxy_server = nil
1050
- end
1051
- if @ssl_server
1052
- @ssl_server.stop
1053
- @ssl_server = nil
1054
- end
1055
- if @ssl_server_thread
1056
- @ssl_server_thread.kill.join
1057
- @ssl_server_thread = nil
1084
+ def normal_server_port
1085
+ @normal_server[:server].config[:Port]
1086
+ end
1087
+
1088
+ def proxy_server_port
1089
+ @proxy_server[:server].config[:Port]
1090
+ end
1091
+
1092
+ def start_ssl_server(config = {})
1093
+ skip "starting this test server fails randomly on jruby" if Gem.java_platform?
1094
+
1095
+ null_logger = NilLog.new
1096
+ server = WEBrick::HTTPServer.new({
1097
+ :Port => 0,
1098
+ :Logger => null_logger,
1099
+ :AccessLog => [],
1100
+ :SSLEnable => true,
1101
+ :SSLCACertificateFile => File.join(__dir__, 'ca_cert.pem'),
1102
+ :SSLCertificate => cert('ssl_cert.pem'),
1103
+ :SSLPrivateKey => key('ssl_key.pem'),
1104
+ :SSLVerifyClient => nil,
1105
+ :SSLCertName => nil,
1106
+ }.merge(config))
1107
+ server.mount_proc("/yaml") do |req, res|
1108
+ res.body = "--- true\n"
1109
+ end
1110
+ server.mount_proc("/insecure_redirect") do |req, res|
1111
+ res.set_redirect(WEBrick::HTTPStatus::MovedPermanently, req.query['to'])
1112
+ end
1113
+ server.ssl_context.tmp_dh_callback = proc { TEST_KEY_DH2048 }
1114
+ t = Thread.new do
1115
+ begin
1116
+ server.start
1117
+ rescue Exception => ex
1118
+ puts "ERROR during server thread: #{ex.message}"
1119
+ raise
1120
+ ensure
1121
+ server.shutdown
1058
1122
  end
1059
- utils = WEBrick::Utils # TimeoutHandler is since 1.9
1060
- utils::TimeoutHandler.terminate if defined?(utils::TimeoutHandler.terminate)
1061
- end
1062
-
1063
- def normal_server_port
1064
- @normal_server[:server].config[:Port]
1065
- end
1066
-
1067
- def proxy_server_port
1068
- @proxy_server[:server].config[:Port]
1069
- end
1070
-
1071
- DIR = File.expand_path(File.dirname(__FILE__))
1072
-
1073
- def start_ssl_server(config = {})
1074
- raise MiniTest::Skip, 'openssl not installed' unless
1075
- defined?(OpenSSL::SSL)
1076
-
1077
- null_logger = NilLog.new
1078
- server = WEBrick::HTTPServer.new({
1079
- :Port => 0,
1080
- :Logger => null_logger,
1081
- :AccessLog => [],
1082
- :SSLEnable => true,
1083
- :SSLCACertificateFile => File.join(DIR, 'ca_cert.pem'),
1084
- :SSLCertificate => cert('ssl_cert.pem'),
1085
- :SSLPrivateKey => key('ssl_key.pem'),
1086
- :SSLVerifyClient => nil,
1087
- :SSLCertName => nil
1088
- }.merge(config))
1089
- server.mount_proc("/yaml") { |req, res|
1090
- res.body = "--- true\n"
1091
- }
1092
- server.mount_proc("/insecure_redirect") { |req, res|
1093
- res.set_redirect(WEBrick::HTTPStatus::MovedPermanently, req.query['to'])
1094
- }
1095
- server.ssl_context.tmp_dh_callback = proc { TEST_KEY_DH2048 }
1096
- t = Thread.new do
1097
- begin
1098
- server.start
1099
- rescue Exception => ex
1100
- abort ex.message
1101
- puts "ERROR during server thread: #{ex.message}"
1102
- ensure
1103
- server.shutdown
1104
- end
1123
+ end
1124
+ while server.status != :Running
1125
+ sleep 0.1
1126
+ unless t.alive?
1127
+ t.join
1128
+ raise
1105
1129
  end
1106
- while server.status != :Running
1107
- sleep 0.1
1108
- unless t.alive?
1109
- t.join
1110
- raise
1111
- end
1130
+ end
1131
+ @ssl_server = server
1132
+ @ssl_server_thread = t
1133
+ server
1134
+ end
1135
+
1136
+ def start_server(data)
1137
+ null_logger = NilLog.new
1138
+ s = WEBrick::HTTPServer.new(
1139
+ :Port => 0,
1140
+ :DocumentRoot => nil,
1141
+ :Logger => null_logger,
1142
+ :AccessLog => null_logger
1143
+ )
1144
+ s.mount_proc("/kill") {|req, res| s.shutdown }
1145
+ s.mount_proc("/yaml") do |req, res|
1146
+ if req["X-Captain"]
1147
+ res.body = req["X-Captain"]
1148
+ elsif @enable_yaml
1149
+ res.body = data
1150
+ res['Content-Type'] = 'text/plain'
1151
+ res['content-length'] = data.size
1152
+ else
1153
+ res.status = "404"
1154
+ res.body = "<h1>NOT FOUND</h1>"
1155
+ res['Content-Type'] = 'text/html'
1112
1156
  end
1113
- @ssl_server = server
1114
- @ssl_server_thread = t
1115
- server
1116
- end
1117
-
1118
- private
1119
-
1120
- def start_server(data)
1121
- null_logger = NilLog.new
1122
- s = WEBrick::HTTPServer.new(
1123
- :Port => 0,
1124
- :DocumentRoot => nil,
1125
- :Logger => null_logger,
1126
- :AccessLog => null_logger
1127
- )
1128
- s.mount_proc("/kill") { |req, res| s.shutdown }
1129
- s.mount_proc("/yaml") { |req, res|
1130
- if req["X-Captain"]
1131
- res.body = req["X-Captain"]
1132
- elsif @enable_yaml
1133
- res.body = data
1134
- res['Content-Type'] = 'text/plain'
1135
- res['content-length'] = data.size
1136
- else
1137
- res.status = "404"
1138
- res.body = "<h1>NOT FOUND</h1>"
1139
- res['Content-Type'] = 'text/html'
1140
- end
1141
- }
1142
- s.mount_proc("/yaml.Z") { |req, res|
1143
- if @enable_zip
1144
- res.body = Zlib::Deflate.deflate(data)
1145
- res['Content-Type'] = 'text/plain'
1146
- else
1147
- res.status = "404"
1148
- res.body = "<h1>NOT FOUND</h1>"
1149
- res['Content-Type'] = 'text/html'
1150
- end
1151
- }
1152
- th = Thread.new do
1153
- begin
1154
- s.start
1155
- rescue Exception => ex
1156
- abort "ERROR during server thread: #{ex.message}"
1157
- ensure
1158
- s.shutdown
1159
- end
1157
+ end
1158
+ s.mount_proc("/yaml.Z") do |req, res|
1159
+ if @enable_zip
1160
+ res.body = Zlib::Deflate.deflate(data)
1161
+ res['Content-Type'] = 'text/plain'
1162
+ else
1163
+ res.status = "404"
1164
+ res.body = "<h1>NOT FOUND</h1>"
1165
+ res['Content-Type'] = 'text/html'
1160
1166
  end
1161
- th[:server] = s
1162
- th
1163
1167
  end
1164
-
1165
- def cert(filename)
1166
- OpenSSL::X509::Certificate.new(File.read(File.join(DIR, filename)))
1168
+ th = Thread.new do
1169
+ begin
1170
+ s.start
1171
+ rescue Exception => ex
1172
+ abort "ERROR during server thread: #{ex.message}"
1173
+ ensure
1174
+ s.shutdown
1175
+ end
1167
1176
  end
1177
+ th[:server] = s
1178
+ th
1179
+ end
1168
1180
 
1169
- def key(filename)
1170
- OpenSSL::PKey::RSA.new(File.read(File.join(DIR, filename)))
1171
- end
1181
+ def cert(filename)
1182
+ OpenSSL::X509::Certificate.new(File.read(File.join(__dir__, filename)))
1172
1183
  end
1173
1184
 
1174
- end if defined?(OpenSSL::SSL)
1185
+ def key(filename)
1186
+ OpenSSL::PKey::RSA.new(File.read(File.join(__dir__, filename)))
1187
+ end
1188
+ end if Gem::HAVE_OPENSSL