rubygems-update 3.1.6 → 3.3.22

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 (703) hide show
  1. checksums.yaml +4 -4
  2. data/{History.txt → CHANGELOG.md} +1452 -514
  3. data/CODE_OF_CONDUCT.md +55 -19
  4. data/CONTRIBUTING.md +74 -27
  5. data/Manifest.txt +154 -117
  6. data/POLICIES.md +27 -19
  7. data/README.md +10 -8
  8. data/UPGRADING.md +5 -81
  9. data/bin/gem +3 -8
  10. data/bin/update_rubygems +5 -5
  11. data/bundler/CHANGELOG.md +2358 -1430
  12. data/bundler/README.md +7 -9
  13. data/bundler/UPGRADING.md +27 -34
  14. data/bundler/bundler.gemspec +8 -11
  15. data/bundler/exe/bundle +10 -8
  16. data/bundler/exe/bundler +1 -1
  17. data/bundler/lib/bundler/.document +1 -0
  18. data/bundler/lib/bundler/build_metadata.rb +4 -12
  19. data/bundler/lib/bundler/cli/add.rb +1 -1
  20. data/bundler/lib/bundler/cli/binstubs.rb +6 -2
  21. data/bundler/lib/bundler/cli/cache.rb +3 -8
  22. data/bundler/lib/bundler/cli/check.rb +4 -2
  23. data/bundler/lib/bundler/cli/clean.rb +1 -1
  24. data/bundler/lib/bundler/cli/common.rb +31 -3
  25. data/bundler/lib/bundler/cli/config.rb +10 -1
  26. data/bundler/lib/bundler/cli/console.rb +1 -1
  27. data/bundler/lib/bundler/cli/doctor.rb +25 -6
  28. data/bundler/lib/bundler/cli/exec.rb +5 -10
  29. data/bundler/lib/bundler/cli/fund.rb +36 -0
  30. data/bundler/lib/bundler/cli/gem.rb +219 -28
  31. data/bundler/lib/bundler/cli/info.rb +38 -6
  32. data/bundler/lib/bundler/cli/init.rb +3 -3
  33. data/bundler/lib/bundler/cli/inject.rb +1 -1
  34. data/bundler/lib/bundler/cli/install.rb +25 -54
  35. data/bundler/lib/bundler/cli/issue.rb +5 -4
  36. data/bundler/lib/bundler/cli/list.rb +19 -11
  37. data/bundler/lib/bundler/cli/lock.rb +5 -1
  38. data/bundler/lib/bundler/cli/open.rb +1 -2
  39. data/bundler/lib/bundler/cli/outdated.rb +105 -76
  40. data/bundler/lib/bundler/cli/platform.rb +2 -2
  41. data/bundler/lib/bundler/cli/plugin.rb +10 -0
  42. data/bundler/lib/bundler/cli/pristine.rb +5 -0
  43. data/bundler/lib/bundler/cli/remove.rb +1 -2
  44. data/bundler/lib/bundler/cli/show.rb +2 -2
  45. data/bundler/lib/bundler/cli/update.rb +20 -9
  46. data/bundler/lib/bundler/cli.rb +106 -83
  47. data/bundler/lib/bundler/compact_index_client/cache.rb +6 -23
  48. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
  49. data/bundler/lib/bundler/compact_index_client/updater.rb +29 -25
  50. data/bundler/lib/bundler/compact_index_client.rb +3 -9
  51. data/bundler/lib/bundler/current_ruby.rb +17 -6
  52. data/bundler/lib/bundler/definition.rb +297 -396
  53. data/bundler/lib/bundler/dep_proxy.rb +16 -9
  54. data/bundler/lib/bundler/dependency.rb +22 -77
  55. data/bundler/lib/bundler/digest.rb +71 -0
  56. data/bundler/lib/bundler/dsl.rb +76 -83
  57. data/bundler/lib/bundler/endpoint_specification.rb +16 -14
  58. data/bundler/lib/bundler/env.rb +2 -2
  59. data/bundler/lib/bundler/environment_preserver.rb +29 -2
  60. data/bundler/lib/bundler/errors.rb +30 -3
  61. data/bundler/lib/bundler/feature_flag.rb +0 -9
  62. data/bundler/lib/bundler/fetcher/base.rb +7 -9
  63. data/bundler/lib/bundler/fetcher/compact_index.rb +11 -16
  64. data/bundler/lib/bundler/fetcher/downloader.rb +10 -7
  65. data/bundler/lib/bundler/fetcher/index.rb +2 -30
  66. data/bundler/lib/bundler/fetcher.rb +24 -25
  67. data/bundler/lib/bundler/friendly_errors.rb +46 -47
  68. data/bundler/lib/bundler/gem_helper.rb +53 -31
  69. data/bundler/lib/bundler/gem_helpers.rb +43 -24
  70. data/bundler/lib/bundler/gem_version_promoter.rb +10 -20
  71. data/bundler/lib/bundler/graph.rb +1 -1
  72. data/bundler/lib/bundler/index.rb +19 -25
  73. data/bundler/lib/bundler/injector.rb +38 -6
  74. data/bundler/lib/bundler/inline.rb +4 -13
  75. data/bundler/lib/bundler/installer/gem_installer.rb +19 -24
  76. data/bundler/lib/bundler/installer/parallel_installer.rb +46 -25
  77. data/bundler/lib/bundler/installer/standalone.rb +58 -11
  78. data/bundler/lib/bundler/installer.rb +51 -81
  79. data/bundler/lib/bundler/lazy_specification.rb +79 -36
  80. data/bundler/lib/bundler/lockfile_generator.rb +3 -3
  81. data/bundler/lib/bundler/lockfile_parser.rb +19 -44
  82. data/bundler/lib/bundler/man/.document +1 -0
  83. data/bundler/{man → lib/bundler/man}/bundle-add.1 +21 -5
  84. data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +16 -4
  85. data/bundler/{man → lib/bundler/man}/bundle-binstubs.1 +5 -3
  86. data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +2 -4
  87. data/bundler/{man → lib/bundler/man}/bundle-cache.1 +7 -1
  88. data/bundler/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +7 -0
  89. data/bundler/{man → lib/bundler/man}/bundle-check.1 +1 -1
  90. data/bundler/{man → lib/bundler/man}/bundle-clean.1 +1 -1
  91. data/bundler/{man → lib/bundler/man}/bundle-config.1 +65 -47
  92. data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +74 -65
  93. data/bundler/lib/bundler/man/bundle-console.1 +53 -0
  94. data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
  95. data/bundler/{man → lib/bundler/man}/bundle-doctor.1 +1 -1
  96. data/bundler/{man → lib/bundler/man}/bundle-exec.1 +2 -2
  97. data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +1 -1
  98. data/bundler/{man → lib/bundler/man}/bundle-gem.1 +38 -3
  99. data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +46 -7
  100. data/bundler/lib/bundler/man/bundle-help.1 +13 -0
  101. data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
  102. data/bundler/{man → lib/bundler/man}/bundle-info.1 +1 -1
  103. data/bundler/{man → lib/bundler/man}/bundle-init.1 +1 -1
  104. data/bundler/{man → lib/bundler/man}/bundle-inject.1 +5 -2
  105. data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +3 -1
  106. data/bundler/{man → lib/bundler/man}/bundle-install.1 +35 -4
  107. data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +33 -5
  108. data/bundler/{man → lib/bundler/man}/bundle-list.1 +7 -7
  109. data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
  110. data/bundler/{man → lib/bundler/man}/bundle-lock.1 +1 -1
  111. data/bundler/{man → lib/bundler/man}/bundle-open.1 +1 -1
  112. data/bundler/{man → lib/bundler/man}/bundle-outdated.1 +3 -10
  113. data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +1 -10
  114. data/bundler/{man → lib/bundler/man}/bundle-platform.1 +16 -6
  115. data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +14 -7
  116. data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
  117. data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
  118. data/bundler/{man → lib/bundler/man}/bundle-pristine.1 +1 -1
  119. data/bundler/{man → lib/bundler/man}/bundle-remove.1 +1 -1
  120. data/bundler/{man → lib/bundler/man}/bundle-show.1 +1 -1
  121. data/bundler/{man → lib/bundler/man}/bundle-update.1 +5 -5
  122. data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +5 -4
  123. data/bundler/lib/bundler/man/bundle-version.1 +35 -0
  124. data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
  125. data/bundler/{man → lib/bundler/man}/bundle-viz.1 +4 -1
  126. data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +2 -0
  127. data/bundler/{man → lib/bundler/man}/bundle.1 +15 -10
  128. data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +12 -7
  129. data/bundler/{man → lib/bundler/man}/gemfile.5 +106 -80
  130. data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +94 -83
  131. data/bundler/{man → lib/bundler/man}/index.txt +4 -0
  132. data/bundler/lib/bundler/match_metadata.rb +13 -0
  133. data/bundler/lib/bundler/match_platform.rb +0 -1
  134. data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
  135. data/bundler/lib/bundler/mirror.rb +2 -2
  136. data/bundler/lib/bundler/plugin/api/source.rb +25 -9
  137. data/bundler/lib/bundler/plugin/dsl.rb +1 -1
  138. data/bundler/lib/bundler/plugin/index.rb +13 -1
  139. data/bundler/lib/bundler/plugin/installer/git.rb +0 -4
  140. data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -5
  141. data/bundler/lib/bundler/plugin/installer.rb +11 -11
  142. data/bundler/lib/bundler/plugin/source_list.rb +5 -1
  143. data/bundler/lib/bundler/plugin.rb +58 -11
  144. data/bundler/lib/bundler/process_lock.rb +1 -1
  145. data/bundler/lib/bundler/remote_specification.rb +11 -6
  146. data/bundler/lib/bundler/resolver/base.rb +50 -0
  147. data/bundler/lib/bundler/resolver/spec_group.rb +64 -57
  148. data/bundler/lib/bundler/resolver.rb +234 -230
  149. data/bundler/lib/bundler/retry.rb +2 -2
  150. data/bundler/lib/bundler/ruby_dsl.rb +1 -1
  151. data/bundler/lib/bundler/ruby_version.rb +6 -19
  152. data/bundler/lib/bundler/rubygems_ext.rb +194 -33
  153. data/bundler/lib/bundler/rubygems_gem_installer.rb +87 -16
  154. data/bundler/lib/bundler/rubygems_integration.rb +71 -153
  155. data/bundler/lib/bundler/runtime.rb +22 -26
  156. data/bundler/lib/bundler/self_manager.rb +168 -0
  157. data/bundler/lib/bundler/settings.rb +145 -66
  158. data/bundler/lib/bundler/setup.rb +2 -2
  159. data/bundler/lib/bundler/shared_helpers.rb +17 -32
  160. data/bundler/lib/bundler/similarity_detector.rb +1 -1
  161. data/bundler/lib/bundler/source/git/git_proxy.rb +88 -84
  162. data/bundler/lib/bundler/source/git.rb +50 -32
  163. data/bundler/lib/bundler/source/metadata.rb +3 -7
  164. data/bundler/lib/bundler/source/path/installer.rb +10 -10
  165. data/bundler/lib/bundler/source/path.rb +10 -4
  166. data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
  167. data/bundler/lib/bundler/source/rubygems.rb +201 -179
  168. data/bundler/lib/bundler/source/rubygems_aggregate.rb +68 -0
  169. data/bundler/lib/bundler/source.rb +25 -5
  170. data/bundler/lib/bundler/source_list.rb +105 -63
  171. data/bundler/lib/bundler/source_map.rb +71 -0
  172. data/bundler/lib/bundler/spec_set.rb +62 -57
  173. data/bundler/lib/bundler/stub_specification.rb +30 -10
  174. data/bundler/lib/bundler/templates/Executable +2 -4
  175. data/bundler/lib/bundler/templates/Executable.bundler +8 -8
  176. data/bundler/lib/bundler/templates/Executable.standalone +2 -4
  177. data/bundler/lib/bundler/templates/Gemfile +0 -2
  178. data/bundler/lib/bundler/templates/gems.rb +0 -3
  179. data/bundler/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
  180. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  181. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +12 -1
  182. data/bundler/lib/bundler/templates/newgem/README.md.tt +9 -14
  183. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +32 -5
  184. data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
  185. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
  186. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
  187. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +27 -0
  188. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
  189. data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  190. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
  191. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +27 -17
  192. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
  193. data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
  194. data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
  195. data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
  196. data/bundler/lib/bundler/templates/newgem/standard.yml.tt +3 -0
  197. data/bundler/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
  198. data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/test_newgem.rb.tt} +3 -1
  199. data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  200. data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  201. data/bundler/lib/bundler/ui/shell.rb +6 -6
  202. data/bundler/lib/bundler/uri_credentials_filter.rb +3 -1
  203. data/bundler/lib/bundler/vendor/.document +1 -0
  204. data/bundler/lib/bundler/vendor/connection_pool/LICENSE +20 -0
  205. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +19 -21
  206. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  207. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +57 -0
  208. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +39 -74
  209. data/bundler/lib/bundler/vendor/fileutils/LICENSE.txt +22 -0
  210. data/bundler/lib/bundler/vendor/molinillo/LICENSE +9 -0
  211. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +7 -0
  212. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
  213. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +11 -5
  214. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +37 -5
  215. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +34 -28
  216. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  217. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +12 -1
  218. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +49 -47
  219. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -1
  220. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
  221. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +82 -189
  222. data/bundler/lib/bundler/vendor/thor/LICENSE.md +20 -0
  223. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
  224. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +9 -7
  225. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -2
  226. data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +7 -3
  227. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
  228. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +6 -0
  229. data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +10 -5
  230. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +5 -1
  231. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +28 -9
  232. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +27 -6
  233. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +5 -1
  234. data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
  235. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
  236. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  237. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +5 -13
  238. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
  239. data/bundler/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
  240. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +452 -0
  241. data/bundler/lib/bundler/vendor/uri/LICENSE.txt +22 -0
  242. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +17 -80
  243. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +0 -1
  244. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +5 -6
  245. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +0 -1
  246. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +0 -1
  247. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
  248. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +0 -1
  249. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +1 -14
  250. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +1 -12
  251. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  252. data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +84 -0
  253. data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +22 -0
  254. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +0 -1
  255. data/bundler/lib/bundler/vendored_persistent.rb +0 -7
  256. data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
  257. data/bundler/lib/bundler/vendored_tsort.rb +4 -0
  258. data/bundler/lib/bundler/version.rb +1 -1
  259. data/bundler/lib/bundler/worker.rb +20 -5
  260. data/bundler/lib/bundler/yaml_serializer.rb +1 -1
  261. data/bundler/lib/bundler.rb +79 -47
  262. data/hide_lib_for_update/note.txt +0 -4
  263. data/lib/rubygems/available_set.rb +7 -9
  264. data/lib/rubygems/basic_specification.rb +23 -21
  265. data/lib/rubygems/bundler_version_finder.rb +26 -53
  266. data/lib/rubygems/command.rb +48 -45
  267. data/lib/rubygems/command_manager.rb +20 -14
  268. data/lib/rubygems/commands/build_command.rb +47 -27
  269. data/lib/rubygems/commands/cert_command.rb +78 -75
  270. data/lib/rubygems/commands/check_command.rb +20 -22
  271. data/lib/rubygems/commands/cleanup_command.rb +30 -26
  272. data/lib/rubygems/commands/contents_command.rb +16 -18
  273. data/lib/rubygems/commands/dependency_command.rb +39 -51
  274. data/lib/rubygems/commands/environment_command.rb +11 -10
  275. data/lib/rubygems/commands/fetch_command.rb +33 -16
  276. data/lib/rubygems/commands/generate_index_command.rb +17 -19
  277. data/lib/rubygems/commands/help_command.rb +6 -6
  278. data/lib/rubygems/commands/info_command.rb +10 -7
  279. data/lib/rubygems/commands/install_command.rb +29 -27
  280. data/lib/rubygems/commands/list_command.rb +9 -8
  281. data/lib/rubygems/commands/lock_command.rb +5 -7
  282. data/lib/rubygems/commands/mirror_command.rb +3 -5
  283. data/lib/rubygems/commands/open_command.rb +10 -14
  284. data/lib/rubygems/commands/outdated_command.rb +5 -7
  285. data/lib/rubygems/commands/owner_command.rb +26 -16
  286. data/lib/rubygems/commands/pristine_command.rb +61 -49
  287. data/lib/rubygems/commands/push_command.rb +22 -59
  288. data/lib/rubygems/commands/query_command.rb +21 -351
  289. data/lib/rubygems/commands/rdoc_command.rb +23 -25
  290. data/lib/rubygems/commands/search_command.rb +8 -8
  291. data/lib/rubygems/commands/server_command.rb +16 -77
  292. data/lib/rubygems/commands/setup_command.rb +255 -229
  293. data/lib/rubygems/commands/signin_command.rb +9 -11
  294. data/lib/rubygems/commands/signout_command.rb +7 -9
  295. data/lib/rubygems/commands/sources_command.rb +27 -25
  296. data/lib/rubygems/commands/specification_command.rb +25 -21
  297. data/lib/rubygems/commands/stale_command.rb +3 -5
  298. data/lib/rubygems/commands/uninstall_command.rb +41 -43
  299. data/lib/rubygems/commands/unpack_command.rb +13 -15
  300. data/lib/rubygems/commands/update_command.rb +132 -74
  301. data/lib/rubygems/commands/which_command.rb +7 -9
  302. data/lib/rubygems/commands/yank_command.rb +16 -19
  303. data/lib/rubygems/compatibility.rb +4 -2
  304. data/lib/rubygems/config_file.rb +42 -26
  305. data/lib/rubygems/core_ext/kernel_gem.rb +1 -1
  306. data/lib/rubygems/core_ext/kernel_require.rb +6 -3
  307. data/lib/rubygems/core_ext/kernel_warn.rb +12 -13
  308. data/lib/rubygems/core_ext/tcpsocket_init.rb +52 -0
  309. data/lib/rubygems/defaults.rb +108 -32
  310. data/lib/rubygems/dependency.rb +21 -22
  311. data/lib/rubygems/dependency_installer.rb +19 -91
  312. data/lib/rubygems/dependency_list.rb +13 -15
  313. data/lib/rubygems/deprecate.rb +102 -8
  314. data/lib/rubygems/doctor.rb +22 -22
  315. data/lib/rubygems/errors.rb +6 -21
  316. data/lib/rubygems/exceptions.rb +33 -34
  317. data/lib/rubygems/ext/build_error.rb +2 -0
  318. data/lib/rubygems/ext/builder.rb +48 -54
  319. data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +23 -0
  320. data/lib/rubygems/ext/cargo_builder.rb +321 -0
  321. data/lib/rubygems/ext/cmake_builder.rb +6 -9
  322. data/lib/rubygems/ext/configure_builder.rb +5 -8
  323. data/lib/rubygems/ext/ext_conf_builder.rb +42 -66
  324. data/lib/rubygems/ext/rake_builder.rb +7 -10
  325. data/lib/rubygems/ext.rb +7 -6
  326. data/lib/rubygems/gem_runner.rb +15 -26
  327. data/lib/rubygems/gemcutter_utilities.rb +153 -32
  328. data/lib/rubygems/indexer.rb +30 -49
  329. data/lib/rubygems/install_default_message.rb +2 -2
  330. data/lib/rubygems/install_message.rb +2 -2
  331. data/lib/rubygems/install_update_options.rb +73 -64
  332. data/lib/rubygems/installer.rb +194 -151
  333. data/lib/rubygems/installer_uninstaller_utils.rb +29 -0
  334. data/lib/rubygems/local_remote_options.rb +22 -24
  335. data/lib/rubygems/mock_gem_ui.rb +2 -8
  336. data/lib/rubygems/name_tuple.rb +9 -14
  337. data/lib/rubygems/openssl.rb +7 -0
  338. data/lib/rubygems/optparse/.document +1 -0
  339. data/lib/rubygems/optparse/COPYING +56 -0
  340. data/lib/rubygems/optparse/lib/optionparser.rb +2 -0
  341. data/lib/rubygems/optparse/lib/optparse/ac.rb +54 -0
  342. data/lib/rubygems/optparse/lib/optparse/date.rb +18 -0
  343. data/lib/rubygems/optparse/lib/optparse/kwargs.rb +22 -0
  344. data/lib/rubygems/optparse/lib/optparse/shellwords.rb +7 -0
  345. data/lib/rubygems/optparse/lib/optparse/time.rb +11 -0
  346. data/lib/rubygems/optparse/lib/optparse/uri.rb +7 -0
  347. data/lib/rubygems/optparse/lib/optparse/version.rb +71 -0
  348. data/lib/rubygems/optparse/lib/optparse.rb +2303 -0
  349. data/lib/rubygems/optparse.rb +3 -0
  350. data/lib/rubygems/package/digest_io.rb +0 -2
  351. data/lib/rubygems/package/file_source.rb +2 -4
  352. data/lib/rubygems/package/io_source.rb +4 -2
  353. data/lib/rubygems/package/old.rb +9 -11
  354. data/lib/rubygems/package/tar_header.rb +54 -56
  355. data/lib/rubygems/package/tar_reader/entry.rb +2 -5
  356. data/lib/rubygems/package/tar_reader.rb +1 -4
  357. data/lib/rubygems/package/tar_writer.rb +8 -18
  358. data/lib/rubygems/package.rb +101 -117
  359. data/lib/rubygems/package_task.rb +5 -11
  360. data/lib/rubygems/path_support.rb +2 -9
  361. data/lib/rubygems/platform.rb +101 -76
  362. data/lib/rubygems/psych_tree.rb +1 -3
  363. data/lib/rubygems/query_utils.rb +351 -0
  364. data/lib/rubygems/rdoc.rb +2 -14
  365. data/lib/rubygems/remote_fetcher.rb +48 -74
  366. data/lib/rubygems/request/connection_pools.rb +6 -10
  367. data/lib/rubygems/request/http_pool.rb +2 -4
  368. data/lib/rubygems/request/https_pool.rb +0 -2
  369. data/lib/rubygems/request.rb +26 -31
  370. data/lib/rubygems/request_set/gem_dependency_api.rb +23 -25
  371. data/lib/rubygems/request_set/lockfile/parser.rb +26 -28
  372. data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -7
  373. data/lib/rubygems/request_set/lockfile.rb +17 -21
  374. data/lib/rubygems/request_set.rb +27 -40
  375. data/lib/rubygems/requirement.rb +28 -48
  376. data/lib/rubygems/resolver/activation_request.rb +12 -6
  377. data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
  378. data/lib/rubygems/resolver/api_set.rb +32 -25
  379. data/lib/rubygems/resolver/api_specification.rb +29 -15
  380. data/lib/rubygems/resolver/best_set.rb +7 -9
  381. data/lib/rubygems/resolver/composed_set.rb +3 -5
  382. data/lib/rubygems/resolver/conflict.rb +12 -14
  383. data/lib/rubygems/resolver/current_set.rb +0 -2
  384. data/lib/rubygems/resolver/dependency_request.rb +3 -5
  385. data/lib/rubygems/resolver/git_set.rb +2 -4
  386. data/lib/rubygems/resolver/git_specification.rb +6 -8
  387. data/lib/rubygems/resolver/index_set.rb +4 -6
  388. data/lib/rubygems/resolver/index_specification.rb +38 -7
  389. data/lib/rubygems/resolver/installed_specification.rb +4 -6
  390. data/lib/rubygems/resolver/installer_set.rb +66 -24
  391. data/lib/rubygems/resolver/local_specification.rb +2 -4
  392. data/lib/rubygems/resolver/lock_set.rb +6 -8
  393. data/lib/rubygems/resolver/lock_specification.rb +4 -6
  394. data/lib/rubygems/resolver/molinillo/LICENSE +9 -0
  395. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
  396. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +8 -0
  397. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
  398. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
  399. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
  400. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
  401. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
  402. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
  403. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
  404. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
  405. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +51 -12
  406. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +41 -8
  407. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +76 -8
  408. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
  409. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +13 -1
  410. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
  411. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +510 -165
  412. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
  413. data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
  414. data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
  415. data/lib/rubygems/resolver/molinillo.rb +1 -1
  416. data/lib/rubygems/resolver/requirement_list.rb +0 -2
  417. data/lib/rubygems/resolver/set.rb +0 -3
  418. data/lib/rubygems/resolver/source_set.rb +0 -2
  419. data/lib/rubygems/resolver/spec_specification.rb +14 -2
  420. data/lib/rubygems/resolver/specification.rb +14 -4
  421. data/lib/rubygems/resolver/stats.rb +0 -2
  422. data/lib/rubygems/resolver/vendor_set.rb +1 -3
  423. data/lib/rubygems/resolver/vendor_specification.rb +3 -5
  424. data/lib/rubygems/resolver.rb +53 -51
  425. data/lib/rubygems/s3_uri_signer.rb +7 -15
  426. data/lib/rubygems/safe_yaml.rb +14 -16
  427. data/lib/rubygems/security/policies.rb +11 -11
  428. data/lib/rubygems/security/policy.rb +25 -29
  429. data/lib/rubygems/security/signer.rb +13 -16
  430. data/lib/rubygems/security/trust_dir.rb +4 -5
  431. data/lib/rubygems/security.rb +103 -69
  432. data/lib/rubygems/security_option.rb +7 -7
  433. data/lib/rubygems/source/git.rb +30 -30
  434. data/lib/rubygems/source/installed.rb +1 -3
  435. data/lib/rubygems/source/local.rb +4 -6
  436. data/lib/rubygems/source/lock.rb +0 -2
  437. data/lib/rubygems/source/specific_file.rb +1 -3
  438. data/lib/rubygems/source/vendor.rb +0 -2
  439. data/lib/rubygems/source.rb +44 -38
  440. data/lib/rubygems/source_list.rb +9 -16
  441. data/lib/rubygems/spec_fetcher.rb +49 -48
  442. data/lib/rubygems/specification.rb +338 -295
  443. data/lib/rubygems/specification_policy.rb +112 -61
  444. data/lib/rubygems/stub_specification.rb +21 -28
  445. data/lib/rubygems/text.rb +21 -20
  446. data/lib/rubygems/tsort/.document +1 -0
  447. data/lib/rubygems/tsort/LICENSE.txt +22 -0
  448. data/lib/rubygems/tsort/lib/tsort.rb +454 -0
  449. data/lib/rubygems/tsort.rb +3 -0
  450. data/lib/rubygems/uninstaller.rb +98 -45
  451. data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
  452. data/lib/rubygems/uri.rb +126 -0
  453. data/lib/rubygems/uri_formatter.rb +2 -3
  454. data/lib/rubygems/user_interaction.rb +43 -54
  455. data/lib/rubygems/util/licenses.rb +115 -10
  456. data/lib/rubygems/util/list.rb +0 -2
  457. data/lib/rubygems/util.rb +18 -12
  458. data/lib/rubygems/validator.rb +6 -8
  459. data/lib/rubygems/version.rb +29 -20
  460. data/lib/rubygems/version_option.rb +11 -5
  461. data/lib/rubygems.rb +192 -289
  462. data/rubygems-update.gemspec +4 -4
  463. data/setup.rb +11 -22
  464. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  465. data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
  466. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  467. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  468. data/test/rubygems/encrypted_private_key.pem +26 -26
  469. data/{lib/rubygems/test_case.rb → test/rubygems/helper.rb} +380 -314
  470. data/{lib → test}/rubygems/installer_test_case.rb +38 -24
  471. data/{lib → test}/rubygems/package/tar_test_case.rb +4 -6
  472. data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
  473. data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
  474. data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
  475. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
  476. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
  477. data/test/rubygems/private_ec_key.pem +9 -0
  478. data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
  479. data/test/rubygems/rubygems_plugin.rb +2 -4
  480. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
  481. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +4 -6
  482. data/test/rubygems/test_bundled_ca.rb +43 -50
  483. data/test/rubygems/test_config.rb +5 -7
  484. data/test/rubygems/test_deprecate.rb +87 -10
  485. data/test/rubygems/test_exit.rb +11 -0
  486. data/test/rubygems/test_gem.rb +719 -639
  487. data/test/rubygems/test_gem_available_set.rb +24 -26
  488. data/test/rubygems/test_gem_bundler_version_finder.rb +37 -44
  489. data/test/rubygems/test_gem_command.rb +78 -49
  490. data/test/rubygems/test_gem_command_manager.rb +98 -35
  491. data/test/rubygems/test_gem_commands_build_command.rb +275 -57
  492. data/test/rubygems/test_gem_commands_cert_command.rb +180 -125
  493. data/test/rubygems/test_gem_commands_check_command.rb +9 -11
  494. data/test/rubygems/test_gem_commands_cleanup_command.rb +78 -69
  495. data/test/rubygems/test_gem_commands_contents_command.rb +73 -42
  496. data/test/rubygems/test_gem_commands_dependency_command.rb +38 -40
  497. data/test/rubygems/test_gem_commands_environment_command.rb +60 -38
  498. data/test/rubygems/test_gem_commands_fetch_command.rb +163 -32
  499. data/test/rubygems/test_gem_commands_generate_index_command.rb +8 -14
  500. data/test/rubygems/test_gem_commands_help_command.rb +34 -16
  501. data/test/rubygems/test_gem_commands_info_command.rb +33 -9
  502. data/test/rubygems/test_gem_commands_install_command.rb +401 -198
  503. data/test/rubygems/test_gem_commands_list_command.rb +5 -7
  504. data/test/rubygems/test_gem_commands_lock_command.rb +11 -13
  505. data/test/rubygems/test_gem_commands_mirror.rb +3 -5
  506. data/test/rubygems/test_gem_commands_open_command.rb +16 -19
  507. data/test/rubygems/test_gem_commands_outdated_command.rb +23 -7
  508. data/test/rubygems/test_gem_commands_owner_command.rb +100 -46
  509. data/test/rubygems/test_gem_commands_pristine_command.rb +131 -99
  510. data/test/rubygems/test_gem_commands_push_command.rb +134 -66
  511. data/test/rubygems/test_gem_commands_query_command.rb +91 -91
  512. data/test/rubygems/test_gem_commands_search_command.rb +2 -4
  513. data/test/rubygems/test_gem_commands_server_command.rb +6 -50
  514. data/test/rubygems/test_gem_commands_setup_command.rb +288 -179
  515. data/test/rubygems/test_gem_commands_signin_command.rb +162 -28
  516. data/test/rubygems/test_gem_commands_signout_command.rb +3 -10
  517. data/test/rubygems/test_gem_commands_sources_command.rb +139 -32
  518. data/test/rubygems/test_gem_commands_specification_command.rb +81 -55
  519. data/test/rubygems/test_gem_commands_stale_command.rb +4 -6
  520. data/test/rubygems/test_gem_commands_uninstall_command.rb +80 -82
  521. data/test/rubygems/test_gem_commands_unpack_command.rb +32 -34
  522. data/test/rubygems/test_gem_commands_update_command.rb +335 -88
  523. data/test/rubygems/test_gem_commands_which_command.rb +12 -14
  524. data/test/rubygems/test_gem_commands_yank_command.rb +80 -44
  525. data/test/rubygems/test_gem_config_file.rb +114 -97
  526. data/test/rubygems/test_gem_dependency.rb +87 -87
  527. data/test/rubygems/test_gem_dependency_installer.rb +277 -391
  528. data/test/rubygems/test_gem_dependency_list.rb +57 -59
  529. data/test/rubygems/test_gem_dependency_resolution_error.rb +5 -7
  530. data/test/rubygems/test_gem_doctor.rb +73 -47
  531. data/test/rubygems/test_gem_ext_builder.rb +115 -109
  532. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +1 -0
  533. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.lock +243 -0
  534. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.toml +10 -0
  535. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb +21 -0
  536. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +10 -0
  537. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/src/lib.rs +27 -0
  538. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +1 -0
  539. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +243 -0
  540. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +10 -0
  541. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/build.rb +21 -0
  542. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +8 -0
  543. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +39 -0
  544. data/test/rubygems/test_gem_ext_cargo_builder.rb +178 -0
  545. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +33 -0
  546. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +75 -0
  547. data/test/rubygems/test_gem_ext_cmake_builder.rb +31 -38
  548. data/test/rubygems/test_gem_ext_configure_builder.rb +23 -39
  549. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +66 -82
  550. data/test/rubygems/test_gem_ext_rake_builder.rb +49 -32
  551. data/test/rubygems/test_gem_gem_runner.rb +51 -8
  552. data/test/rubygems/test_gem_gemcutter_utilities.rb +87 -76
  553. data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -6
  554. data/test/rubygems/test_gem_indexer.rb +62 -64
  555. data/test/rubygems/test_gem_install_update_options.rb +31 -21
  556. data/test/rubygems/test_gem_installer.rb +798 -491
  557. data/test/rubygems/test_gem_local_remote_options.rb +11 -13
  558. data/test/rubygems/test_gem_name_tuple.rb +4 -6
  559. data/test/rubygems/test_gem_package.rb +318 -283
  560. data/test/rubygems/test_gem_package_old.rb +18 -20
  561. data/test/rubygems/test_gem_package_tar_header.rb +64 -47
  562. data/test/rubygems/test_gem_package_tar_reader.rb +8 -10
  563. data/test/rubygems/test_gem_package_tar_reader_entry.rb +18 -20
  564. data/test/rubygems/test_gem_package_tar_writer.rb +96 -100
  565. data/test/rubygems/test_gem_package_task.rb +58 -25
  566. data/test/rubygems/test_gem_path_support.rb +15 -21
  567. data/test/rubygems/test_gem_platform.rb +354 -201
  568. data/test/rubygems/test_gem_rdoc.rb +19 -21
  569. data/test/rubygems/test_gem_remote_fetcher.rb +376 -337
  570. data/test/rubygems/test_gem_request.rb +114 -86
  571. data/test/rubygems/test_gem_request_connection_pools.rb +30 -34
  572. data/test/rubygems/test_gem_request_set.rb +123 -124
  573. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +222 -226
  574. data/test/rubygems/test_gem_request_set_lockfile.rb +93 -95
  575. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +68 -70
  576. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +136 -138
  577. data/test/rubygems/test_gem_requirement.rb +133 -54
  578. data/test/rubygems/test_gem_resolver.rb +149 -117
  579. data/test/rubygems/test_gem_resolver_activation_request.rb +6 -8
  580. data/test/rubygems/test_gem_resolver_api_set.rb +79 -78
  581. data/test/rubygems/test_gem_resolver_api_specification.rb +47 -49
  582. data/test/rubygems/test_gem_resolver_best_set.rb +43 -22
  583. data/test/rubygems/test_gem_resolver_composed_set.rb +1 -3
  584. data/test/rubygems/test_gem_resolver_conflict.rb +12 -14
  585. data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -17
  586. data/test/rubygems/test_gem_resolver_git_set.rb +22 -24
  587. data/test/rubygems/test_gem_resolver_git_specification.rb +22 -23
  588. data/test/rubygems/test_gem_resolver_index_set.rb +14 -16
  589. data/test/rubygems/test_gem_resolver_index_specification.rb +16 -18
  590. data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -7
  591. data/test/rubygems/test_gem_resolver_installer_set.rb +104 -44
  592. data/test/rubygems/test_gem_resolver_local_specification.rb +7 -9
  593. data/test/rubygems/test_gem_resolver_lock_set.rb +15 -17
  594. data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -19
  595. data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -3
  596. data/test/rubygems/test_gem_resolver_specification.rb +8 -12
  597. data/test/rubygems/test_gem_resolver_vendor_set.rb +9 -11
  598. data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -12
  599. data/test/rubygems/test_gem_security.rb +104 -78
  600. data/test/rubygems/test_gem_security_policy.rb +92 -97
  601. data/test/rubygems/test_gem_security_signer.rb +45 -47
  602. data/test/rubygems/test_gem_security_trust_dir.rb +12 -14
  603. data/test/rubygems/test_gem_silent_ui.rb +46 -42
  604. data/test/rubygems/test_gem_source.rb +53 -52
  605. data/test/rubygems/test_gem_source_fetch_problem.rb +16 -8
  606. data/test/rubygems/test_gem_source_git.rb +69 -69
  607. data/test/rubygems/test_gem_source_installed.rb +16 -18
  608. data/test/rubygems/test_gem_source_list.rb +5 -6
  609. data/test/rubygems/test_gem_source_local.rb +15 -17
  610. data/test/rubygems/test_gem_source_lock.rb +31 -33
  611. data/test/rubygems/test_gem_source_specific_file.rb +18 -20
  612. data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
  613. data/test/rubygems/test_gem_source_vendor.rb +13 -15
  614. data/test/rubygems/test_gem_spec_fetcher.rb +74 -67
  615. data/test/rubygems/test_gem_specification.rb +888 -1024
  616. data/test/rubygems/test_gem_stream_ui.rb +23 -23
  617. data/test/rubygems/test_gem_stub_specification.rb +39 -57
  618. data/test/rubygems/test_gem_text.rb +8 -4
  619. data/test/rubygems/test_gem_uninstaller.rb +233 -104
  620. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -5
  621. data/test/rubygems/test_gem_uri.rb +39 -0
  622. data/test/rubygems/test_gem_uri_formatter.rb +14 -16
  623. data/test/rubygems/test_gem_util.rb +37 -35
  624. data/test/rubygems/test_gem_validator.rb +10 -12
  625. data/test/rubygems/test_gem_version.rb +31 -31
  626. data/test/rubygems/test_gem_version_option.rb +16 -18
  627. data/test/rubygems/test_kernel.rb +46 -60
  628. data/test/rubygems/test_project_sanity.rb +8 -3
  629. data/test/rubygems/test_remote_fetch_error.rb +7 -9
  630. data/test/rubygems/test_require.rb +240 -167
  631. data/test/rubygems/test_rubygems.rb +74 -0
  632. data/{lib/rubygems/test_utilities.rb → test/rubygems/utilities.rb} +30 -39
  633. data/test/test_changelog_generator.rb +17 -0
  634. metadata +158 -146
  635. data/.bundle/config +0 -2
  636. data/.rubocop.yml +0 -91
  637. data/Gemfile +0 -8
  638. data/Gemfile.lock +0 -43
  639. data/Rakefile +0 -428
  640. data/bundler/CODE_OF_CONDUCT.md +0 -136
  641. data/bundler/lib/bundler/gemdeps.rb +0 -29
  642. data/bundler/lib/bundler/psyched_yaml.rb +0 -37
  643. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +0 -66
  644. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
  645. data/bundler/man/bundle-add.1.txt +0 -58
  646. data/bundler/man/bundle-binstubs.1.txt +0 -48
  647. data/bundler/man/bundle-cache.1.txt +0 -78
  648. data/bundler/man/bundle-check.1.txt +0 -33
  649. data/bundler/man/bundle-clean.1.txt +0 -26
  650. data/bundler/man/bundle-config.1.txt +0 -528
  651. data/bundler/man/bundle-doctor.1.txt +0 -44
  652. data/bundler/man/bundle-exec.1.txt +0 -178
  653. data/bundler/man/bundle-gem.1.txt +0 -91
  654. data/bundler/man/bundle-info.1.txt +0 -21
  655. data/bundler/man/bundle-init.1.txt +0 -34
  656. data/bundler/man/bundle-inject.1.txt +0 -32
  657. data/bundler/man/bundle-install.1.txt +0 -401
  658. data/bundler/man/bundle-list.1.txt +0 -43
  659. data/bundler/man/bundle-lock.1.txt +0 -93
  660. data/bundler/man/bundle-open.1.txt +0 -29
  661. data/bundler/man/bundle-outdated.1.txt +0 -131
  662. data/bundler/man/bundle-platform.1.txt +0 -57
  663. data/bundler/man/bundle-pristine.1.txt +0 -44
  664. data/bundler/man/bundle-remove.1.txt +0 -34
  665. data/bundler/man/bundle-show.1.txt +0 -27
  666. data/bundler/man/bundle-update.1.txt +0 -390
  667. data/bundler/man/bundle-viz.1.txt +0 -39
  668. data/bundler/man/bundle.1.txt +0 -116
  669. data/bundler/man/gemfile.5.txt +0 -649
  670. data/lib/rubygems/psych_additions.rb +0 -10
  671. data/lib/rubygems/server.rb +0 -879
  672. data/lib/rubygems/source_local.rb +0 -7
  673. data/lib/rubygems/source_specific_file.rb +0 -6
  674. data/lib/rubygems/syck_hack.rb +0 -79
  675. data/lib/rubygems/uri_parser.rb +0 -36
  676. data/lib/rubygems/uri_parsing.rb +0 -23
  677. data/lib/ubygems.rb +0 -14
  678. data/test/rubygems/bogussources.rb +0 -9
  679. data/test/rubygems/data/null-type.gemspec.rz +0 -0
  680. data/test/rubygems/test_gem_server.rb +0 -612
  681. data/tmp/.keep +0 -0
  682. data/util/CL2notes +0 -55
  683. data/util/bisect +0 -10
  684. data/util/ci.sh +0 -62
  685. data/util/cops/deprecations.rb +0 -52
  686. data/util/create_certs.rb +0 -171
  687. data/util/create_certs.sh +0 -27
  688. data/util/create_encrypted_key.rb +0 -16
  689. data/util/generate_spdx_license_list.rb +0 -63
  690. data/util/patch_with_prs.rb +0 -77
  691. data/util/rubocop +0 -8
  692. data/util/update_bundled_ca_certificates.rb +0 -137
  693. data/util/update_changelog.rb +0 -64
  694. /data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
  695. /data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
  696. /data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
  697. /data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
  698. /data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +0 -0
  699. /data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
  700. /data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
  701. /data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
  702. /data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
  703. /data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
@@ -1,21 +1,20 @@
1
1
  # frozen_string_literal: true
2
- require 'rubygems/test_case'
3
- require 'rubygems/request'
4
- require 'ostruct'
5
- require 'base64'
2
+ require_relative "helper"
3
+ require "rubygems/request"
4
+ require "ostruct"
5
+ require "base64"
6
6
 
7
- unless defined?(OpenSSL::SSL)
8
- warn 'Skipping Gem::Request tests. openssl not found.'
7
+ unless Gem::HAVE_OPENSSL
8
+ warn "Skipping Gem::Request tests. openssl not found."
9
9
  end
10
10
 
11
11
  class TestGemRequest < Gem::TestCase
12
-
13
- CA_CERT_FILE = cert_path 'ca'
14
- CHILD_CERT = load_cert 'child'
15
- EXPIRED_CERT = load_cert 'expired'
16
- PUBLIC_CERT = load_cert 'public'
17
- PUBLIC_CERT_FILE = cert_path 'public'
18
- SSL_CERT = load_cert 'ssl'
12
+ CA_CERT_FILE = cert_path "ca"
13
+ CHILD_CERT = load_cert "child"
14
+ EXPIRED_CERT = load_cert "expired"
15
+ PUBLIC_CERT = load_cert "public"
16
+ PUBLIC_CERT_FILE = cert_path "public"
17
+ SSL_CERT = load_cert "ssl"
19
18
 
20
19
  def make_request(uri, request_class, last_modified, proxy)
21
20
  Gem::Request.create_with_proxy uri, request_class, last_modified, proxy
@@ -29,7 +28,7 @@ class TestGemRequest < Gem::TestCase
29
28
  super
30
29
 
31
30
  @proxy_uri = "http://localhost:1234"
32
- @uri = URI('http://example')
31
+ @uri = URI("http://example")
33
32
 
34
33
  @request = make_request @uri, nil, nil, nil
35
34
  end
@@ -41,7 +40,7 @@ class TestGemRequest < Gem::TestCase
41
40
  end
42
41
 
43
42
  def test_initialize_proxy
44
- proxy_uri = 'http://proxy.example.com'
43
+ proxy_uri = "http://proxy.example.com"
45
44
 
46
45
  request = make_request @uri, nil, nil, proxy_uri
47
46
 
@@ -49,7 +48,7 @@ class TestGemRequest < Gem::TestCase
49
48
  end
50
49
 
51
50
  def test_initialize_proxy_URI
52
- proxy_uri = 'http://proxy.example.com'
51
+ proxy_uri = "http://proxy.example.com"
53
52
 
54
53
  request = make_request @uri, nil, nil, URI(proxy_uri)
55
54
 
@@ -57,22 +56,22 @@ class TestGemRequest < Gem::TestCase
57
56
  end
58
57
 
59
58
  def test_initialize_proxy_ENV
60
- ENV['http_proxy'] = @proxy_uri
61
- ENV['http_proxy_user'] = 'foo'
62
- ENV['http_proxy_pass'] = 'bar'
59
+ ENV["http_proxy"] = @proxy_uri
60
+ ENV["http_proxy_user"] = "foo"
61
+ ENV["http_proxy_pass"] = "bar"
63
62
 
64
63
  request = make_request @uri, nil, nil, nil
65
64
 
66
65
  proxy = request.proxy_uri
67
66
 
68
- assert_equal 'foo', proxy.user
69
- assert_equal 'bar', proxy.password
67
+ assert_equal "foo", proxy.user
68
+ assert_equal "bar", proxy.password
70
69
  end
71
70
 
72
71
  def test_initialize_proxy_ENV_https
73
- ENV['https_proxy'] = @proxy_uri
72
+ ENV["https_proxy"] = @proxy_uri
74
73
 
75
- request = make_request URI('https://example'), nil, nil, nil
74
+ request = make_request URI("https://example"), nil, nil, nil
76
75
 
77
76
  proxy = request.proxy_uri
78
77
 
@@ -80,10 +79,10 @@ class TestGemRequest < Gem::TestCase
80
79
  end
81
80
 
82
81
  def test_proxy_ENV
83
- ENV['http_proxy'] = "http://proxy"
84
- ENV['https_proxy'] = ""
82
+ ENV["http_proxy"] = "http://proxy"
83
+ ENV["https_proxy"] = ""
85
84
 
86
- request = make_request URI('https://example'), nil, nil, nil
85
+ request = make_request URI("https://example"), nil, nil, nil
87
86
 
88
87
  proxy = request.proxy_uri
89
88
 
@@ -91,13 +90,13 @@ class TestGemRequest < Gem::TestCase
91
90
  end
92
91
 
93
92
  def test_configure_connection_for_https
94
- connection = Net::HTTP.new 'localhost', 443
93
+ connection = Net::HTTP.new "localhost", 443
95
94
 
96
95
  request = Class.new(Gem::Request) do
97
96
  def self.get_cert_files
98
97
  [TestGemRequest::PUBLIC_CERT_FILE]
99
98
  end
100
- end.create_with_proxy URI('https://example'), nil, nil, nil
99
+ end.create_with_proxy URI("https://example"), nil, nil, nil
101
100
 
102
101
  Gem::Request.configure_connection_for_https connection, request.cert_files
103
102
 
@@ -110,13 +109,13 @@ class TestGemRequest < Gem::TestCase
110
109
  ssl_ca_cert, Gem.configuration.ssl_ca_cert =
111
110
  Gem.configuration.ssl_ca_cert, CA_CERT_FILE
112
111
 
113
- connection = Net::HTTP.new 'localhost', 443
112
+ connection = Net::HTTP.new "localhost", 443
114
113
 
115
114
  request = Class.new(Gem::Request) do
116
115
  def self.get_cert_files
117
116
  [TestGemRequest::PUBLIC_CERT_FILE]
118
117
  end
119
- end.create_with_proxy URI('https://example'), nil, nil, nil
118
+ end.create_with_proxy URI("https://example"), nil, nil, nil
120
119
 
121
120
  Gem::Request.configure_connection_for_https connection, request.cert_files
122
121
 
@@ -129,7 +128,7 @@ class TestGemRequest < Gem::TestCase
129
128
  end
130
129
 
131
130
  def test_get_proxy_from_env_fallback
132
- ENV['http_proxy'] = @proxy_uri
131
+ ENV["http_proxy"] = @proxy_uri
133
132
  request = make_request @uri, nil, nil, nil
134
133
  proxy = request.proxy_uri
135
134
 
@@ -137,8 +136,8 @@ class TestGemRequest < Gem::TestCase
137
136
  end
138
137
 
139
138
  def test_get_proxy_from_env_https
140
- ENV['https_proxy'] = @proxy_uri
141
- uri = URI('https://example')
139
+ ENV["https_proxy"] = @proxy_uri
140
+ uri = URI("https://example")
142
141
  request = make_request uri, nil, nil, nil
143
142
 
144
143
  proxy = request.proxy_uri
@@ -147,46 +146,46 @@ class TestGemRequest < Gem::TestCase
147
146
  end
148
147
 
149
148
  def test_get_proxy_from_env_domain
150
- ENV['http_proxy'] = @proxy_uri
151
- ENV['http_proxy_user'] = 'foo\user'
152
- ENV['http_proxy_pass'] = 'my bar'
149
+ ENV["http_proxy"] = @proxy_uri
150
+ ENV["http_proxy_user"] = 'foo\user'
151
+ ENV["http_proxy_pass"] = "my bar"
153
152
  request = make_request @uri, nil, nil, nil
154
153
 
155
154
  proxy = request.proxy_uri
156
155
 
157
156
  assert_equal 'foo\user', Gem::UriFormatter.new(proxy.user).unescape
158
- assert_equal 'my bar', Gem::UriFormatter.new(proxy.password).unescape
157
+ assert_equal "my bar", Gem::UriFormatter.new(proxy.password).unescape
159
158
  end
160
159
 
161
160
  def test_get_proxy_from_env_escape
162
- ENV['http_proxy'] = @proxy_uri
163
- ENV['http_proxy_user'] = 'foo@user'
164
- ENV['http_proxy_pass'] = 'my@bar'
161
+ ENV["http_proxy"] = @proxy_uri
162
+ ENV["http_proxy_user"] = "foo@user"
163
+ ENV["http_proxy_pass"] = "my@bar"
165
164
  request = make_request @uri, nil, nil, nil
166
165
 
167
166
  proxy = request.proxy_uri
168
167
 
169
- assert_equal 'foo%40user', proxy.user
170
- assert_equal 'my%40bar', proxy.password
168
+ assert_equal "foo%40user", proxy.user
169
+ assert_equal "my%40bar", proxy.password
171
170
  end
172
171
 
173
172
  def test_get_proxy_from_env_normalize
174
- ENV['HTTP_PROXY'] = 'fakeurl:12345'
173
+ ENV["HTTP_PROXY"] = "fakeurl:12345"
175
174
  request = make_request @uri, nil, nil, nil
176
175
 
177
- assert_equal 'http://fakeurl:12345', request.proxy_uri.to_s
176
+ assert_equal "http://fakeurl:12345", request.proxy_uri.to_s
178
177
  end
179
178
 
180
179
  def test_get_proxy_from_env_empty
181
- ENV['HTTP_PROXY'] = ''
182
- ENV.delete 'http_proxy'
180
+ ENV["HTTP_PROXY"] = ""
181
+ ENV.delete "http_proxy"
183
182
  request = make_request @uri, nil, nil, nil
184
183
 
185
184
  assert_nil request.proxy_uri
186
185
  end
187
186
 
188
187
  def test_fetch
189
- uri = URI.parse "#{@gem_repo}/specs.#{Gem.marshal_version}"
188
+ uri = Gem::Uri.new(URI.parse "#{@gem_repo}/specs.#{Gem.marshal_version}")
190
189
  response = util_stub_net_http(:body => :junk, :code => 200) do
191
190
  @request = make_request(uri, Net::HTTP::Get, nil, nil)
192
191
 
@@ -198,75 +197,101 @@ class TestGemRequest < Gem::TestCase
198
197
  end
199
198
 
200
199
  def test_fetch_basic_auth
201
- uri = URI.parse "https://user:pass@example.rubygems/specs.#{Gem.marshal_version}"
200
+ Gem.configuration.verbose = :really
201
+ uri = Gem::Uri.new(URI.parse "https://user:pass@example.rubygems/specs.#{Gem.marshal_version}")
202
202
  conn = util_stub_net_http(:body => :junk, :code => 200) do |c|
203
- @request = make_request(uri, Net::HTTP::Get, nil, nil)
204
- @request.fetch
203
+ use_ui @ui do
204
+ @request = make_request(uri, Net::HTTP::Get, nil, nil)
205
+ @request.fetch
206
+ end
205
207
  c
206
208
  end
207
209
 
208
- auth_header = conn.payload['Authorization']
210
+ auth_header = conn.payload["Authorization"]
209
211
  assert_equal "Basic #{Base64.encode64('user:pass')}".strip, auth_header
212
+ assert_includes @ui.output, "GET https://user:REDACTED@example.rubygems/specs.#{Gem.marshal_version}"
210
213
  end
211
214
 
212
215
  def test_fetch_basic_auth_encoded
213
- uri = URI.parse "https://user:%7BDEScede%7Dpass@example.rubygems/specs.#{Gem.marshal_version}"
216
+ Gem.configuration.verbose = :really
217
+ uri = Gem::Uri.new(URI.parse "https://user:%7BDEScede%7Dpass@example.rubygems/specs.#{Gem.marshal_version}")
218
+
214
219
  conn = util_stub_net_http(:body => :junk, :code => 200) do |c|
215
- @request = make_request(uri, Net::HTTP::Get, nil, nil)
216
- @request.fetch
220
+ use_ui @ui do
221
+ @request = make_request(uri, Net::HTTP::Get, nil, nil)
222
+ @request.fetch
223
+ end
217
224
  c
218
225
  end
219
226
 
220
- auth_header = conn.payload['Authorization']
227
+ auth_header = conn.payload["Authorization"]
221
228
  assert_equal "Basic #{Base64.encode64('user:{DEScede}pass')}".strip, auth_header
229
+ assert_includes @ui.output, "GET https://user:REDACTED@example.rubygems/specs.#{Gem.marshal_version}"
230
+ end
231
+
232
+ def test_fetch_basic_oauth_encoded
233
+ Gem.configuration.verbose = :really
234
+ uri = Gem::Uri.new(URI.parse "https://%7BDEScede%7Dpass:x-oauth-basic@example.rubygems/specs.#{Gem.marshal_version}")
235
+
236
+ conn = util_stub_net_http(:body => :junk, :code => 200) do |c|
237
+ use_ui @ui do
238
+ @request = make_request(uri, Net::HTTP::Get, nil, nil)
239
+ @request.fetch
240
+ end
241
+ c
242
+ end
243
+
244
+ auth_header = conn.payload["Authorization"]
245
+ assert_equal "Basic #{Base64.encode64('{DEScede}pass:x-oauth-basic')}".strip, auth_header
246
+ assert_includes @ui.output, "GET https://REDACTED:x-oauth-basic@example.rubygems/specs.#{Gem.marshal_version}"
222
247
  end
223
248
 
224
249
  def test_fetch_head
225
- uri = URI.parse "#{@gem_repo}/specs.#{Gem.marshal_version}"
226
- response = util_stub_net_http(:body => '', :code => 200) do |conn|
250
+ uri = Gem::Uri.new(URI.parse "#{@gem_repo}/specs.#{Gem.marshal_version}")
251
+ response = util_stub_net_http(:body => "", :code => 200) do |conn|
227
252
  @request = make_request(uri, Net::HTTP::Get, nil, nil)
228
253
  @request.fetch
229
254
  end
230
255
 
231
256
  assert_equal 200, response.code
232
- assert_equal '', response.body
257
+ assert_equal "", response.body
233
258
  end
234
259
 
235
260
  def test_fetch_unmodified
236
- uri = URI.parse "#{@gem_repo}/specs.#{Gem.marshal_version}"
261
+ uri = Gem::Uri.new(URI.parse "#{@gem_repo}/specs.#{Gem.marshal_version}")
237
262
  t = Time.utc(2013, 1, 2, 3, 4, 5)
238
- conn, response = util_stub_net_http(:body => '', :code => 304) do |c|
263
+ conn, response = util_stub_net_http(:body => "", :code => 304) do |c|
239
264
  @request = make_request(uri, Net::HTTP::Get, t, nil)
240
265
  [c, @request.fetch]
241
266
  end
242
267
 
243
268
  assert_equal 304, response.code
244
- assert_equal '', response.body
269
+ assert_equal "", response.body
245
270
 
246
- modified_header = conn.payload['if-modified-since']
271
+ modified_header = conn.payload["if-modified-since"]
247
272
 
248
- assert_equal 'Wed, 02 Jan 2013 03:04:05 GMT', modified_header
273
+ assert_equal "Wed, 02 Jan 2013 03:04:05 GMT", modified_header
249
274
  end
250
275
 
251
276
  def test_user_agent
252
277
  ua = make_request(@uri, nil, nil, nil).user_agent
253
278
 
254
- assert_match %r%^RubyGems/\S+ \S+ Ruby/\S+ \(.*?\)%, ua
255
- assert_match %r%RubyGems/#{Regexp.escape Gem::VERSION}%, ua
256
- assert_match %r% #{Regexp.escape Gem::Platform.local.to_s} %, ua
257
- assert_match %r%Ruby/#{Regexp.escape RUBY_VERSION}%, ua
258
- assert_match %r%\(#{Regexp.escape RUBY_RELEASE_DATE} %, ua
279
+ assert_match %r{^RubyGems/\S+ \S+ Ruby/\S+ \(.*?\)}, ua
280
+ assert_match %r{RubyGems/#{Regexp.escape Gem::VERSION}}, ua
281
+ assert_match %r{ #{Regexp.escape Gem::Platform.local.to_s} }, ua
282
+ assert_match %r{Ruby/#{Regexp.escape RUBY_VERSION}}, ua
283
+ assert_match %r{\(#{Regexp.escape RUBY_RELEASE_DATE} }, ua
259
284
  end
260
285
 
261
286
  def test_user_agent_engine
262
287
  util_save_version
263
288
 
264
289
  Object.send :remove_const, :RUBY_ENGINE
265
- Object.send :const_set, :RUBY_ENGINE, 'vroom'
290
+ Object.send :const_set, :RUBY_ENGINE, "vroom"
266
291
 
267
292
  ua = make_request(@uri, nil, nil, nil).user_agent
268
293
 
269
- assert_match %r%\) vroom%, ua
294
+ assert_match %r{\) vroom}, ua
270
295
  ensure
271
296
  util_restore_version
272
297
  end
@@ -275,11 +300,11 @@ class TestGemRequest < Gem::TestCase
275
300
  util_save_version
276
301
 
277
302
  Object.send :remove_const, :RUBY_ENGINE
278
- Object.send :const_set, :RUBY_ENGINE, 'ruby'
303
+ Object.send :const_set, :RUBY_ENGINE, "ruby"
279
304
 
280
305
  ua = make_request(@uri, nil, nil, nil).user_agent
281
306
 
282
- assert_match %r%\)%, ua
307
+ assert_match %r{\)}, ua
283
308
  ensure
284
309
  util_restore_version
285
310
  end
@@ -292,7 +317,7 @@ class TestGemRequest < Gem::TestCase
292
317
 
293
318
  ua = make_request(@uri, nil, nil, nil).user_agent
294
319
 
295
- assert_match %r% patchlevel 5\)%, ua
320
+ assert_match %r{ patchlevel 5\)}, ua
296
321
  ensure
297
322
  util_restore_version
298
323
  end
@@ -307,8 +332,8 @@ class TestGemRequest < Gem::TestCase
307
332
 
308
333
  ua = make_request(@uri, nil, nil, nil).user_agent
309
334
 
310
- assert_match %r% revision 6\)%, ua
311
- assert_match %r%Ruby/#{Regexp.escape RUBY_VERSION}dev%, ua
335
+ assert_match %r{ revision 6\)}, ua
336
+ assert_match %r{Ruby/#{Regexp.escape RUBY_VERSION}dev}, ua
312
337
  ensure
313
338
  util_restore_version
314
339
  end
@@ -322,37 +347,43 @@ class TestGemRequest < Gem::TestCase
322
347
 
323
348
  ua = make_request(@uri, nil, nil, nil).user_agent
324
349
 
325
- assert_match %r%\(#{Regexp.escape RUBY_RELEASE_DATE}\)%, ua
350
+ assert_match %r{\(#{Regexp.escape RUBY_RELEASE_DATE}\)}, ua
326
351
  ensure
327
352
  util_restore_version
328
353
  end
329
354
 
330
355
  def test_verify_certificate
331
- skip if Gem.java_platform?
356
+ pend if Gem.java_platform?
357
+
358
+ error_number = OpenSSL::X509::V_ERR_OUT_OF_MEM
359
+
332
360
  store = OpenSSL::X509::Store.new
333
361
  context = OpenSSL::X509::StoreContext.new store
334
- context.error = OpenSSL::X509::V_ERR_OUT_OF_MEM
362
+ context.error = error_number
335
363
 
336
364
  use_ui @ui do
337
365
  Gem::Request.verify_certificate context
338
366
  end
339
367
 
340
- assert_equal "ERROR: SSL verification error at depth 0: out of memory (17)\n",
368
+ assert_equal "ERROR: SSL verification error at depth 0: out of memory (#{error_number})\n",
341
369
  @ui.error
342
370
  end
343
371
 
344
372
  def test_verify_certificate_extra_message
345
- skip if Gem.java_platform?
373
+ pend if Gem.java_platform?
374
+
375
+ error_number = OpenSSL::X509::V_ERR_INVALID_CA
376
+
346
377
  store = OpenSSL::X509::Store.new
347
378
  context = OpenSSL::X509::StoreContext.new store
348
- context.error = OpenSSL::X509::V_ERR_INVALID_CA
379
+ context.error = error_number
349
380
 
350
381
  use_ui @ui do
351
382
  Gem::Request.verify_certificate context
352
383
  end
353
384
 
354
385
  expected = <<-ERROR
355
- ERROR: SSL verification error at depth 0: invalid CA certificate (24)
386
+ ERROR: SSL verification error at depth 0: invalid CA certificate (#{error_number})
356
387
  ERROR: Certificate is an invalid CA certificate
357
388
  ERROR
358
389
 
@@ -488,7 +519,6 @@ ERROR: Certificate is an invalid CA certificate
488
519
  end
489
520
 
490
521
  class Conn
491
-
492
522
  attr_accessor :payload
493
523
 
494
524
  def new(*args); self; end
@@ -507,7 +537,5 @@ ERROR: Certificate is an invalid CA certificate
507
537
  self.payload = req
508
538
  @response
509
539
  end
510
-
511
540
  end
512
-
513
- end if defined?(OpenSSL::SSL)
541
+ end if Gem::HAVE_OPENSSL
@@ -1,18 +1,15 @@
1
1
  # frozen_string_literal: true
2
- require 'rubygems/test_case'
3
- require 'rubygems/request'
4
- require 'timeout'
2
+ require_relative "helper"
3
+ require "rubygems/request"
4
+ require "timeout"
5
5
 
6
6
  class TestGemRequestConnectionPool < Gem::TestCase
7
-
8
7
  class FakeHttp
9
-
10
8
  def initialize(*args)
11
9
  end
12
10
 
13
11
  def start
14
12
  end
15
-
16
13
  end
17
14
 
18
15
  def setup
@@ -20,7 +17,7 @@ class TestGemRequestConnectionPool < Gem::TestCase
20
17
  @old_client = Gem::Request::ConnectionPools.client
21
18
  Gem::Request::ConnectionPools.client = FakeHttp
22
19
 
23
- @proxy = URI 'http://proxy.example'
20
+ @proxy = URI "http://proxy.example"
24
21
  end
25
22
 
26
23
  def teardown
@@ -35,9 +32,9 @@ class TestGemRequestConnectionPool < Gem::TestCase
35
32
  ems.example
36
33
  ]
37
34
 
38
- no_proxy = pools.send :no_proxy?, 'rubygems.example', env_no_proxy
35
+ no_proxy = pools.send :no_proxy?, "rubygems.example", env_no_proxy
39
36
 
40
- refute no_proxy, 'mismatch'
37
+ refute no_proxy, "mismatch"
41
38
  end
42
39
 
43
40
  def test_to_proxy_empty_string
@@ -45,13 +42,13 @@ class TestGemRequestConnectionPool < Gem::TestCase
45
42
 
46
43
  env_no_proxy = [""]
47
44
 
48
- no_proxy = pools.send :no_proxy?, 'ems.example', env_no_proxy
45
+ no_proxy = pools.send :no_proxy?, "ems.example", env_no_proxy
49
46
 
50
- refute no_proxy, 'mismatch'
47
+ refute no_proxy, "mismatch"
51
48
  end
52
49
 
53
50
  def test_checkout_same_connection
54
- uri = URI.parse('http://example/some_endpoint')
51
+ uri = URI.parse("http://example/some_endpoint")
55
52
 
56
53
  pools = Gem::Request::ConnectionPools.new nil, []
57
54
  pool = pools.pool_for uri
@@ -69,13 +66,13 @@ class TestGemRequestConnectionPool < Gem::TestCase
69
66
  2.no-proxy.example
70
67
  ]
71
68
 
72
- no_proxy = pools.send :no_proxy?, '2.no-proxy.example', env_no_proxy
69
+ no_proxy = pools.send :no_proxy?, "2.no-proxy.example", env_no_proxy
73
70
 
74
- assert no_proxy, 'match'
71
+ assert no_proxy, "match"
75
72
 
76
- no_proxy = pools.send :no_proxy?, 'proxy.example', env_no_proxy
73
+ no_proxy = pools.send :no_proxy?, "proxy.example", env_no_proxy
77
74
 
78
- refute no_proxy, 'mismatch'
75
+ refute no_proxy, "mismatch"
79
76
  end
80
77
 
81
78
  def test_to_proxy_eh_wildcard
@@ -85,31 +82,31 @@ class TestGemRequestConnectionPool < Gem::TestCase
85
82
  .no-proxy.example
86
83
  ]
87
84
 
88
- no_proxy = pools.send :no_proxy?, '2.no-proxy.example', env_no_proxy
85
+ no_proxy = pools.send :no_proxy?, "2.no-proxy.example", env_no_proxy
89
86
 
90
- assert no_proxy, 'wildcard matching subdomain'
87
+ assert no_proxy, "wildcard matching subdomain"
91
88
 
92
- no_proxy = pools.send :no_proxy?, 'no-proxy.example', env_no_proxy
89
+ no_proxy = pools.send :no_proxy?, "no-proxy.example", env_no_proxy
93
90
 
94
- assert no_proxy, 'wildcard matching dotless domain'
91
+ assert no_proxy, "wildcard matching dotless domain"
95
92
 
96
- no_proxy = pools.send :no_proxy?, 'proxy.example', env_no_proxy
93
+ no_proxy = pools.send :no_proxy?, "proxy.example", env_no_proxy
97
94
 
98
- refute no_proxy, 'wildcard mismatch'
95
+ refute no_proxy, "wildcard mismatch"
99
96
  end
100
97
 
101
98
  def test_net_http_args
102
99
  pools = Gem::Request::ConnectionPools.new nil, []
103
100
 
104
- net_http_args = pools.send :net_http_args, URI('http://example'), nil
101
+ net_http_args = pools.send :net_http_args, URI("http://example"), nil
105
102
 
106
- assert_equal ['example', 80], net_http_args
103
+ assert_equal ["example", 80], net_http_args
107
104
  end
108
105
 
109
106
  def test_net_http_args_ipv6
110
107
  pools = Gem::Request::ConnectionPools.new nil, []
111
108
 
112
- net_http_args = pools.send :net_http_args, URI('http://[::1]'), nil
109
+ net_http_args = pools.send :net_http_args, URI("http://[::1]"), nil
113
110
 
114
111
  assert_equal ["::1", 80], net_http_args
115
112
  end
@@ -117,38 +114,37 @@ class TestGemRequestConnectionPool < Gem::TestCase
117
114
  def test_net_http_args_proxy
118
115
  pools = Gem::Request::ConnectionPools.new nil, []
119
116
 
120
- net_http_args = pools.send :net_http_args, URI('http://example'), @proxy
117
+ net_http_args = pools.send :net_http_args, URI("http://example"), @proxy
121
118
 
122
- assert_equal ['example', 80, 'proxy.example', 80, nil, nil], net_http_args
119
+ assert_equal ["example", 80, "proxy.example", 80, nil, nil], net_http_args
123
120
  end
124
121
 
125
122
  def test_net_http_args_no_proxy
126
- orig_no_proxy, ENV['no_proxy'] = ENV['no_proxy'], 'example'
123
+ orig_no_proxy, ENV["no_proxy"] = ENV["no_proxy"], "example"
127
124
 
128
125
  pools = Gem::Request::ConnectionPools.new nil, []
129
126
 
130
- net_http_args = pools.send :net_http_args, URI('http://example'), @proxy
127
+ net_http_args = pools.send :net_http_args, URI("http://example"), @proxy
131
128
 
132
- assert_equal ['example', 80, nil, nil], net_http_args
129
+ assert_equal ["example", 80, nil, nil], net_http_args
133
130
 
134
131
  ensure
135
- ENV['no_proxy'] = orig_no_proxy
132
+ ENV["no_proxy"] = orig_no_proxy
136
133
  end
137
134
 
138
135
  def test_thread_waits_for_connection
139
- uri = URI.parse('http://example/some_endpoint')
136
+ uri = URI.parse("http://example/some_endpoint")
140
137
  pools = Gem::Request::ConnectionPools.new nil, []
141
138
  pool = pools.pool_for uri
142
139
 
143
140
  pool.checkout
144
141
 
145
142
  Thread.new do
146
- assert_raises(Timeout::Error) do
143
+ assert_raise(Timeout::Error) do
147
144
  Timeout.timeout(1) do
148
145
  pool.checkout
149
146
  end
150
147
  end
151
148
  end.join
152
149
  end
153
-
154
150
  end