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
@@ -2,7 +2,6 @@
2
2
  require 'rubygems/test_case'
3
3
 
4
4
  class TestGemResolverVendorSet < Gem::TestCase
5
-
6
5
  def setup
7
6
  super
8
7
 
@@ -52,7 +51,7 @@ class TestGemResolverVendorSet < Gem::TestCase
52
51
  source = Gem::Source::Vendor.new directory
53
52
 
54
53
  expected = [
55
- Gem::Resolver::VendorSpecification.new(@set, spec, source)
54
+ Gem::Resolver::VendorSpecification.new(@set, spec, source),
56
55
  ]
57
56
 
58
57
  assert_equal expected, found
@@ -79,5 +78,4 @@ class TestGemResolverVendorSet < Gem::TestCase
79
78
  @set.load_spec 'b', v(1), Gem::Platform::RUBY, nil
80
79
  end
81
80
  end
82
-
83
81
  end
@@ -2,7 +2,6 @@
2
2
  require 'rubygems/test_case'
3
3
 
4
4
  class TestGemResolverVendorSpecification < Gem::TestCase
5
-
6
5
  def setup
7
6
  super
8
7
 
@@ -79,5 +78,4 @@ class TestGemResolverVendorSpecification < Gem::TestCase
79
78
 
80
79
  assert_equal v(1), v_spec.version
81
80
  end
82
-
83
81
  end
@@ -2,12 +2,15 @@
2
2
  require 'rubygems/test_case'
3
3
  require 'rubygems/security'
4
4
 
5
- unless defined?(OpenSSL::SSL)
5
+ unless Gem::HAVE_OPENSSL
6
6
  warn 'Skipping Gem::Security tests. openssl not found.'
7
7
  end
8
8
 
9
- class TestGemSecurity < Gem::TestCase
9
+ if Gem.java_platform?
10
+ warn 'Skipping Gem::Security tests on jruby.'
11
+ end
10
12
 
13
+ class TestGemSecurity < Gem::TestCase
11
14
  CHILD_KEY = load_key 'child'
12
15
 
13
16
  ALTERNATE_CERT = load_cert 'child'
@@ -36,16 +39,16 @@ class TestGemSecurity < Gem::TestCase
36
39
  assert_equal name.to_s, cert.subject.to_s
37
40
 
38
41
  assert_equal 3, cert.extensions.length,
39
- cert.extensions.map { |e| e.to_a.first }
42
+ cert.extensions.map {|e| e.to_a.first }
40
43
 
41
- constraints = cert.extensions.find { |ext| ext.oid == 'basicConstraints' }
44
+ constraints = cert.extensions.find {|ext| ext.oid == 'basicConstraints' }
42
45
  assert_equal 'CA:FALSE', constraints.value
43
46
 
44
- key_usage = cert.extensions.find { |ext| ext.oid == 'keyUsage' }
47
+ key_usage = cert.extensions.find {|ext| ext.oid == 'keyUsage' }
45
48
  assert_equal 'Digital Signature, Key Encipherment, Data Encipherment',
46
49
  key_usage.value
47
50
 
48
- key_ident = cert.extensions.find { |ext| ext.oid == 'subjectKeyIdentifier' }
51
+ key_ident = cert.extensions.find {|ext| ext.oid == 'subjectKeyIdentifier' }
49
52
  assert_equal 59, key_ident.value.length
50
53
  assert_equal '5F:43:6E:F6:9A:8E:45:25:E9:22:E3:7D:37:5E:A4:D5:36:02:85:1B',
51
54
  key_ident.value
@@ -81,19 +84,19 @@ class TestGemSecurity < Gem::TestCase
81
84
  assert_equal name.to_s, cert.issuer.to_s
82
85
 
83
86
  assert_equal 5, cert.extensions.length,
84
- cert.extensions.map { |e| e.to_a.first }
87
+ cert.extensions.map {|e| e.to_a.first }
85
88
 
86
- constraints = cert.extensions.find { |ext| ext.oid == 'subjectAltName' }
89
+ constraints = cert.extensions.find {|ext| ext.oid == 'subjectAltName' }
87
90
  assert_equal 'email:nobody@example', constraints.value
88
91
 
89
- constraints = cert.extensions.find { |ext| ext.oid == 'basicConstraints' }
92
+ constraints = cert.extensions.find {|ext| ext.oid == 'basicConstraints' }
90
93
  assert_equal 'CA:FALSE', constraints.value
91
94
 
92
- key_usage = cert.extensions.find { |ext| ext.oid == 'keyUsage' }
95
+ key_usage = cert.extensions.find {|ext| ext.oid == 'keyUsage' }
93
96
  assert_equal 'Digital Signature, Key Encipherment, Data Encipherment',
94
97
  key_usage.value
95
98
 
96
- key_ident = cert.extensions.find { |ext| ext.oid == 'subjectKeyIdentifier' }
99
+ key_ident = cert.extensions.find {|ext| ext.oid == 'subjectKeyIdentifier' }
97
100
  assert_equal 59, key_ident.value.length
98
101
  assert_equal '5F:43:6E:F6:9A:8E:45:25:E9:22:E3:7D:37:5E:A4:D5:36:02:85:1B',
99
102
  key_ident.value
@@ -184,20 +187,20 @@ class TestGemSecurity < Gem::TestCase
184
187
  assert_in_delta Time.now + 60, signed.not_after, 10
185
188
 
186
189
  assert_equal 4, signed.extensions.length,
187
- signed.extensions.map { |e| e.to_a.first }
190
+ signed.extensions.map {|e| e.to_a.first }
188
191
 
189
- constraints = signed.extensions.find { |ext| ext.oid == 'issuerAltName' }
192
+ constraints = signed.extensions.find {|ext| ext.oid == 'issuerAltName' }
190
193
  assert_equal 'email:nobody@example', constraints.value, 'issuerAltName'
191
194
 
192
- constraints = signed.extensions.find { |ext| ext.oid == 'basicConstraints' }
195
+ constraints = signed.extensions.find {|ext| ext.oid == 'basicConstraints' }
193
196
  assert_equal 'CA:FALSE', constraints.value
194
197
 
195
- key_usage = signed.extensions.find { |ext| ext.oid == 'keyUsage' }
198
+ key_usage = signed.extensions.find {|ext| ext.oid == 'keyUsage' }
196
199
  assert_equal 'Digital Signature, Key Encipherment, Data Encipherment',
197
200
  key_usage.value
198
201
 
199
202
  key_ident =
200
- signed.extensions.find { |ext| ext.oid == 'subjectKeyIdentifier' }
203
+ signed.extensions.find {|ext| ext.oid == 'subjectKeyIdentifier' }
201
204
  assert_equal 59, key_ident.value.length
202
205
  assert_equal '5F:43:6E:F6:9A:8E:45:25:E9:22:E3:7D:37:5E:A4:D5:36:02:85:1B',
203
206
  key_ident.value
@@ -223,23 +226,23 @@ class TestGemSecurity < Gem::TestCase
223
226
  assert_equal "sha256WithRSAEncryption", signed.signature_algorithm
224
227
 
225
228
  assert_equal 5, signed.extensions.length,
226
- signed.extensions.map { |e| e.to_a.first }
229
+ signed.extensions.map {|e| e.to_a.first }
227
230
 
228
- constraints = signed.extensions.find { |ext| ext.oid == 'issuerAltName' }
231
+ constraints = signed.extensions.find {|ext| ext.oid == 'issuerAltName' }
229
232
  assert_equal 'email:nobody@example', constraints.value, 'issuerAltName'
230
233
 
231
- constraints = signed.extensions.find { |ext| ext.oid == 'subjectAltName' }
234
+ constraints = signed.extensions.find {|ext| ext.oid == 'subjectAltName' }
232
235
  assert_equal 'email:signee@example', constraints.value, 'subjectAltName'
233
236
 
234
- constraints = signed.extensions.find { |ext| ext.oid == 'basicConstraints' }
237
+ constraints = signed.extensions.find {|ext| ext.oid == 'basicConstraints' }
235
238
  assert_equal 'CA:FALSE', constraints.value
236
239
 
237
- key_usage = signed.extensions.find { |ext| ext.oid == 'keyUsage' }
240
+ key_usage = signed.extensions.find {|ext| ext.oid == 'keyUsage' }
238
241
  assert_equal 'Digital Signature, Key Encipherment, Data Encipherment',
239
242
  key_usage.value
240
243
 
241
244
  key_ident =
242
- signed.extensions.find { |ext| ext.oid == 'subjectKeyIdentifier' }
245
+ signed.extensions.find {|ext| ext.oid == 'subjectKeyIdentifier' }
243
246
  assert_equal 59, key_ident.value.length
244
247
  assert_equal '5F:43:6E:F6:9A:8E:45:25:E9:22:E3:7D:37:5E:A4:D5:36:02:85:1B',
245
248
  key_ident.value
@@ -280,7 +283,7 @@ class TestGemSecurity < Gem::TestCase
280
283
 
281
284
  assert_path_exists path
282
285
 
283
- key_from_file = OpenSSL::PKey::RSA.new File.read(path), passphrase
286
+ key_from_file = OpenSSL::PKey::RSA.new File.read(path), passphrase
284
287
 
285
288
  assert_equal key.to_pem, key_from_file.to_pem
286
289
  end
@@ -306,5 +309,4 @@ class TestGemSecurity < Gem::TestCase
306
309
 
307
310
  assert_equal key.to_pem, key_from_file.to_pem
308
311
  end
309
-
310
- end if defined?(OpenSSL::SSL)
312
+ end if Gem::HAVE_OPENSSL && !Gem.java_platform?
@@ -1,14 +1,12 @@
1
- # coding: utf-8
2
1
  # frozen_string_literal: true
3
2
 
4
3
  require 'rubygems/test_case'
5
4
 
6
- unless defined?(OpenSSL::SSL)
5
+ unless Gem::HAVE_OPENSSL
7
6
  warn 'Skipping Gem::Security::Policy tests. openssl not found.'
8
7
  end
9
8
 
10
9
  class TestGemSecurityPolicy < Gem::TestCase
11
-
12
10
  ALTERNATE_KEY = load_key 'alternate'
13
11
  INVALID_KEY = load_key 'invalid'
14
12
  CHILD_KEY = load_key 'child'
@@ -34,7 +32,7 @@ class TestGemSecurityPolicy < Gem::TestCase
34
32
  s.files = %w[lib/code.rb]
35
33
  end
36
34
 
37
- @digest = Gem::Security::DIGEST_ALGORITHM
35
+ @digest = OpenSSL::Digest.new Gem::Security::DIGEST_NAME
38
36
  @trust_dir = Gem::Security.trust_dir.dir # HACK use the object
39
37
 
40
38
  @no = Gem::Security::NoSecurity
@@ -397,13 +395,11 @@ class TestGemSecurityPolicy < Gem::TestCase
397
395
  def test_verify_wrong_digest_type
398
396
  Gem::Security.trust_dir.trust_cert PUBLIC_CERT
399
397
 
400
- sha512 = OpenSSL::Digest::SHA512
401
-
402
- data = sha512.new
398
+ data = OpenSSL::Digest.new('SHA512')
403
399
  data << 'hello'
404
400
 
405
401
  digests = { 'SHA512' => { 0 => data } }
406
- signature = PRIVATE_KEY.sign sha512.new, data.digest
402
+ signature = PRIVATE_KEY.sign 'sha512', data.digest
407
403
  signatures = { 0 => signature }
408
404
 
409
405
  e = assert_raises Gem::Security::Exception do
@@ -482,7 +478,7 @@ class TestGemSecurityPolicy < Gem::TestCase
482
478
  def s.full_name() 'metadata.gz' end
483
479
 
484
480
  digests = package.digest s
485
- digests[Gem::Security::DIGEST_NAME]['data.tar.gz'] = @digest.new 'hello'
481
+ digests[Gem::Security::DIGEST_NAME]['data.tar.gz'] = @digest.hexdigest 'hello'
486
482
 
487
483
  metadata_gz_digest = digests[Gem::Security::DIGEST_NAME]['metadata.gz']
488
484
 
@@ -511,7 +507,7 @@ class TestGemSecurityPolicy < Gem::TestCase
511
507
  def s.full_name() 'metadata.gz' end
512
508
 
513
509
  digests = package.digest s
514
- digests[Gem::Security::DIGEST_NAME]['data.tar.gz'] = @digest.new 'hello'
510
+ digests[Gem::Security::DIGEST_NAME]['data.tar.gz'] = @digest.hexdigest 'hello'
515
511
 
516
512
  assert_raises Gem::Security::Exception do
517
513
  @high.verify_signatures @spec, digests, {}
@@ -536,5 +532,4 @@ class TestGemSecurityPolicy < Gem::TestCase
536
532
 
537
533
  return digests, signatures
538
534
  end
539
-
540
- end if defined?(OpenSSL::SSL)
535
+ end if Gem::HAVE_OPENSSL
@@ -1,12 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
  require 'rubygems/test_case'
3
3
 
4
- unless defined?(OpenSSL::SSL)
4
+ unless Gem::HAVE_OPENSSL
5
5
  warn 'Skipping Gem::Security::Signer tests. openssl not found.'
6
6
  end
7
7
 
8
8
  class TestGemSecuritySigner < Gem::TestCase
9
-
10
9
  ALTERNATE_KEY = load_key 'alternate'
11
10
  CHILD_KEY = load_key 'child'
12
11
  GRANDCHILD_KEY = load_key 'grandchild'
@@ -37,8 +36,8 @@ class TestGemSecuritySigner < Gem::TestCase
37
36
  def test_initialize_cert_chain_mixed
38
37
  signer = Gem::Security::Signer.new nil, [@cert_file, CHILD_CERT]
39
38
 
40
- assert_equal [PUBLIC_CERT, CHILD_CERT].map { |c| c.to_pem },
41
- signer.cert_chain.map { |c| c.to_pem }
39
+ assert_equal [PUBLIC_CERT, CHILD_CERT].map {|c| c.to_pem },
40
+ signer.cert_chain.map {|c| c.to_pem }
42
41
  end
43
42
 
44
43
  def test_initialize_cert_chain_invalid
@@ -50,8 +49,8 @@ class TestGemSecuritySigner < Gem::TestCase
50
49
  def test_initialize_cert_chain_path
51
50
  signer = Gem::Security::Signer.new nil, [@cert_file]
52
51
 
53
- assert_equal [PUBLIC_CERT].map { |c| c.to_pem },
54
- signer.cert_chain.map { |c| c.to_pem }
52
+ assert_equal [PUBLIC_CERT].map {|c| c.to_pem },
53
+ signer.cert_chain.map {|c| c.to_pem }
55
54
  end
56
55
 
57
56
  def test_initialize_default
@@ -66,7 +65,7 @@ class TestGemSecuritySigner < Gem::TestCase
66
65
  signer = Gem::Security::Signer.new nil, nil
67
66
 
68
67
  assert_equal PRIVATE_KEY.to_pem, signer.key.to_pem
69
- assert_equal [PUBLIC_CERT.to_pem], signer.cert_chain.map { |c| c.to_pem }
68
+ assert_equal [PUBLIC_CERT.to_pem], signer.cert_chain.map {|c| c.to_pem }
70
69
  end
71
70
 
72
71
  def test_initialize_key_path
@@ -100,7 +99,7 @@ class TestGemSecuritySigner < Gem::TestCase
100
99
  signer.load_cert_chain
101
100
 
102
101
  assert_equal [PUBLIC_CERT.to_pem, CHILD_CERT.to_pem],
103
- signer.cert_chain.map { |c| c.to_pem }
102
+ signer.cert_chain.map {|c| c.to_pem }
104
103
  end
105
104
 
106
105
  def test_load_cert_chain_broken
@@ -112,7 +111,7 @@ class TestGemSecuritySigner < Gem::TestCase
112
111
  signer.load_cert_chain
113
112
 
114
113
  assert_equal [CHILD_CERT.to_pem, GRANDCHILD_CERT.to_pem],
115
- signer.cert_chain.map { |c| c.to_pem }
114
+ signer.cert_chain.map {|c| c.to_pem }
116
115
  end
117
116
 
118
117
  def test_sign
@@ -143,6 +142,7 @@ toqvglr0kdbknSRRjBVLK6tsgr07aLT9gNP7mTW2PA==
143
142
  end
144
143
 
145
144
  def test_sign_expired_auto_update
145
+ skip if Gem.java_platform?
146
146
  FileUtils.mkdir_p File.join(Gem.user_home, '.gem'), :mode => 0700
147
147
 
148
148
  private_key_path = File.join(Gem.user_home, '.gem', 'gem-private_key.pem')
@@ -190,7 +190,7 @@ toqvglr0kdbknSRRjBVLK6tsgr07aLT9gNP7mTW2PA==
190
190
  signer.sign 'hello'
191
191
  end
192
192
 
193
- assert_match %r%certificate /CN=nobody/DC=example not valid%, e.message
193
+ assert_match %r{certificate /CN=nobody/DC=example not valid}, e.message
194
194
  end
195
195
 
196
196
  def test_sign_no_key
@@ -214,5 +214,4 @@ toqvglr0kdbknSRRjBVLK6tsgr07aLT9gNP7mTW2PA==
214
214
  signer.sign 'hello'
215
215
  end
216
216
  end
217
-
218
- end if defined?(OpenSSL::SSL)
217
+ end if Gem::HAVE_OPENSSL
@@ -1,12 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
  require 'rubygems/test_case'
3
3
 
4
- unless defined?(OpenSSL::SSL)
4
+ unless Gem::HAVE_OPENSSL
5
5
  warn 'Skipping Gem::Security::TrustDir tests. openssl not found.'
6
6
  end
7
7
 
8
8
  class TestGemSecurityTrustDir < Gem::TestCase
9
-
10
9
  CHILD_CERT = load_cert 'child'
11
10
 
12
11
  def setup
@@ -18,7 +17,7 @@ class TestGemSecurityTrustDir < Gem::TestCase
18
17
  end
19
18
 
20
19
  def test_cert_path
21
- digest = Gem::Security::DIGEST_ALGORITHM.hexdigest PUBLIC_CERT.subject.to_s
20
+ digest = OpenSSL::Digest.hexdigest Gem::Security::DIGEST_NAME, PUBLIC_CERT.subject.to_s
22
21
 
23
22
  expected = File.join @dest_dir, "cert-#{digest}.pem"
24
23
 
@@ -42,7 +41,7 @@ class TestGemSecurityTrustDir < Gem::TestCase
42
41
  end
43
42
 
44
43
  def test_name_path
45
- digest = Gem::Security::DIGEST_ALGORITHM.hexdigest PUBLIC_CERT.subject.to_s
44
+ digest = OpenSSL::Digest.hexdigest Gem::Security::DIGEST_NAME, PUBLIC_CERT.subject.to_s
46
45
 
47
46
  expected = File.join @dest_dir, "cert-#{digest}.pem"
48
47
 
@@ -96,5 +95,4 @@ class TestGemSecurityTrustDir < Gem::TestCase
96
95
 
97
96
  assert_equal mask, File.stat(@dest_dir).mode unless win_platform?
98
97
  end
99
-
100
- end if defined?(OpenSSL::SSL)
98
+ end if Gem::HAVE_OPENSSL
@@ -85,7 +85,7 @@ class TestGemServer < Gem::TestCase
85
85
  end
86
86
 
87
87
  assert_equal 200, @res.status, @res.body
88
- assert_match %r| \d\d:\d\d:\d\d |, @res['date']
88
+ assert_match %r{ \d\d:\d\d:\d\d }, @res['date']
89
89
  assert_equal 'application/octet-stream', @res['content-type']
90
90
  assert_equal [['a', Gem::Version.new(2), Gem::Platform::RUBY]],
91
91
  Marshal.load(@res.body)
@@ -124,7 +124,7 @@ class TestGemServer < Gem::TestCase
124
124
  end
125
125
 
126
126
  assert_equal 200, @res.status, @res.body
127
- assert_match %r| \d\d:\d\d:\d\d |, @res['date']
127
+ assert_match %r{ \d\d:\d\d:\d\d }, @res['date']
128
128
  assert_equal 'application/x-gzip', @res['content-type']
129
129
  assert_equal [['a', Gem::Version.new(2), Gem::Platform::RUBY]],
130
130
  Marshal.load(Gem::Util.gunzip(@res.body))
@@ -159,7 +159,7 @@ class TestGemServer < Gem::TestCase
159
159
  end
160
160
 
161
161
  assert_equal 200, @res.status, @res.body
162
- assert_match %r| \d\d:\d\d:\d\d |, @res['date']
162
+ assert_match %r{ \d\d:\d\d:\d\d }, @res['date']
163
163
  assert_equal 'application/octet-stream', @res['content-type']
164
164
  assert_equal [['a', v('3.a'), Gem::Platform::RUBY]],
165
165
  Marshal.load(@res.body)
@@ -174,7 +174,7 @@ class TestGemServer < Gem::TestCase
174
174
  end
175
175
 
176
176
  assert_equal 200, @res.status, @res.body
177
- assert_match %r| \d\d:\d\d:\d\d |, @res['date']
177
+ assert_match %r{ \d\d:\d\d:\d\d }, @res['date']
178
178
  assert_equal 'application/x-gzip', @res['content-type']
179
179
  assert_equal [['a', v('3.a'), Gem::Platform::RUBY]],
180
180
  Marshal.load(Gem::Util.gunzip(@res.body))
@@ -220,7 +220,7 @@ class TestGemServer < Gem::TestCase
220
220
  @server.quick @req, @res
221
221
 
222
222
  assert_equal 404, @res.status, @res.body
223
- assert_match %r| \d\d:\d\d:\d\d |, @res['date']
223
+ assert_match %r{ \d\d:\d\d:\d\d }, @res['date']
224
224
  assert_equal 'text/plain', @res['content-type']
225
225
  assert_equal 'No gems found matching "z-9"', @res.body
226
226
  assert_equal 404, @res.status
@@ -242,7 +242,9 @@ class TestGemServer < Gem::TestCase
242
242
  end
243
243
 
244
244
  def test_quick_marshal_a_1_mswin32_gemspec_rz
245
- quick_gem 'a', '1' do |s| s.platform = Gem::Platform.local end
245
+ quick_gem 'a', '1' do |s|
246
+ s.platform = Gem::Platform.local
247
+ end
246
248
 
247
249
  data = StringIO.new "GET /quick/Marshal.#{Gem.marshal_version}/a-1-#{Gem::Platform.local}.gemspec.rz HTTP/1.0\r\n\r\n"
248
250
  @req.parse data
@@ -315,7 +317,7 @@ class TestGemServer < Gem::TestCase
315
317
  @server.rdoc @req, @res
316
318
 
317
319
  assert_equal 200, @res.status, @res.body
318
- assert_match %r|No documentation found|, @res.body
320
+ assert_match %r{No documentation found}, @res.body
319
321
  assert_equal 'text/html', @res['content-type']
320
322
  end
321
323
 
@@ -326,7 +328,7 @@ class TestGemServer < Gem::TestCase
326
328
  @server.root @req, @res
327
329
 
328
330
  assert_equal 200, @res.status, @res.body
329
- assert_match %r| \d\d:\d\d:\d\d |, @res['date']
331
+ assert_match %r{ \d\d:\d\d:\d\d }, @res['date']
330
332
  assert_equal 'text/html', @res['content-type']
331
333
  end
332
334
 
@@ -353,7 +355,6 @@ class TestGemServer < Gem::TestCase
353
355
  assert_match 'z 9', @res.body
354
356
  end
355
357
 
356
-
357
358
  def test_xss_homepage_fix_289313
358
359
  data = StringIO.new "GET / HTTP/1.0\r\n\r\n"
359
360
  dir = "#{@gemhome}2"
@@ -525,7 +526,7 @@ class TestGemServer < Gem::TestCase
525
526
  @server.specs @req, @res
526
527
 
527
528
  assert_equal 200, @res.status, @res.body
528
- assert_match %r| \d\d:\d\d:\d\d |, @res['date']
529
+ assert_match %r{ \d\d:\d\d:\d\d }, @res['date']
529
530
  assert_equal 'application/octet-stream', @res['content-type']
530
531
 
531
532
  assert_equal [['a', Gem::Version.new(1), Gem::Platform::RUBY],
@@ -565,7 +566,7 @@ class TestGemServer < Gem::TestCase
565
566
  @server.specs @req, @res
566
567
 
567
568
  assert_equal 200, @res.status, @res.body
568
- assert_match %r| \d\d:\d\d:\d\d |, @res['date']
569
+ assert_match %r{ \d\d:\d\d:\d\d }, @res['date']
569
570
  assert_equal 'application/x-gzip', @res['content-type']
570
571
 
571
572
  assert_equal [['a', Gem::Version.new(1), Gem::Platform::RUBY],
@@ -587,7 +588,7 @@ class TestGemServer < Gem::TestCase
587
588
 
588
589
  @server.root @req, @res
589
590
 
590
- refute_match %r|%3A%2F%2F|, @res.body
591
+ refute_match %r{%3A%2F%2F}, @res.body
591
592
  end
592
593
 
593
594
  def util_listen