rubygems-update 3.1.1 → 3.2.0.rc.2

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 (518) hide show
  1. checksums.yaml +4 -4
  2. data/CODE_OF_CONDUCT.md +55 -19
  3. data/CONTRIBUTING.md +25 -11
  4. data/History.txt +389 -144
  5. data/Manifest.txt +37 -73
  6. data/POLICIES.md +2 -9
  7. data/README.md +5 -5
  8. data/Rakefile +47 -82
  9. data/bin/update_rubygems +2 -2
  10. data/bundler/CHANGELOG.md +1546 -1414
  11. data/bundler/README.md +6 -8
  12. data/bundler/UPGRADING.md +18 -32
  13. data/bundler/bundler.gemspec +3 -3
  14. data/bundler/exe/bundle +3 -0
  15. data/bundler/lib/bundler.rb +21 -7
  16. data/bundler/lib/bundler/build_metadata.rb +4 -12
  17. data/bundler/lib/bundler/cli.rb +54 -20
  18. data/bundler/lib/bundler/cli/add.rb +1 -1
  19. data/bundler/lib/bundler/cli/cache.rb +1 -7
  20. data/bundler/lib/bundler/cli/clean.rb +1 -1
  21. data/bundler/lib/bundler/cli/common.rb +14 -0
  22. data/bundler/lib/bundler/cli/console.rb +1 -1
  23. data/bundler/lib/bundler/cli/doctor.rb +1 -1
  24. data/bundler/lib/bundler/cli/exec.rb +4 -13
  25. data/bundler/lib/bundler/cli/fund.rb +36 -0
  26. data/bundler/lib/bundler/cli/gem.rb +84 -11
  27. data/bundler/lib/bundler/cli/info.rb +15 -4
  28. data/bundler/lib/bundler/cli/init.rb +2 -2
  29. data/bundler/lib/bundler/cli/inject.rb +1 -1
  30. data/bundler/lib/bundler/cli/install.rb +12 -18
  31. data/bundler/lib/bundler/cli/issue.rb +2 -2
  32. data/bundler/lib/bundler/cli/list.rb +12 -10
  33. data/bundler/lib/bundler/cli/outdated.rb +89 -66
  34. data/bundler/lib/bundler/cli/plugin.rb +10 -0
  35. data/bundler/lib/bundler/cli/pristine.rb +5 -0
  36. data/bundler/lib/bundler/cli/show.rb +1 -1
  37. data/bundler/lib/bundler/cli/update.rb +2 -0
  38. data/bundler/lib/bundler/compact_index_client.rb +1 -1
  39. data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
  40. data/bundler/lib/bundler/definition.rb +51 -60
  41. data/bundler/lib/bundler/dep_proxy.rb +1 -1
  42. data/bundler/lib/bundler/dependency.rb +0 -9
  43. data/bundler/lib/bundler/dsl.rb +5 -9
  44. data/bundler/lib/bundler/endpoint_specification.rb +1 -1
  45. data/bundler/lib/bundler/environment_preserver.rb +26 -2
  46. data/bundler/lib/bundler/errors.rb +1 -0
  47. data/bundler/lib/bundler/feature_flag.rb +0 -2
  48. data/bundler/lib/bundler/fetcher.rb +4 -3
  49. data/bundler/lib/bundler/fetcher/base.rb +1 -1
  50. data/bundler/lib/bundler/fetcher/compact_index.rb +1 -1
  51. data/bundler/lib/bundler/fetcher/downloader.rb +1 -1
  52. data/bundler/lib/bundler/fetcher/index.rb +1 -1
  53. data/bundler/lib/bundler/friendly_errors.rb +7 -13
  54. data/bundler/lib/bundler/gem_helper.rb +33 -19
  55. data/bundler/lib/bundler/gem_helpers.rb +6 -1
  56. data/bundler/lib/bundler/gem_version_promoter.rb +2 -2
  57. data/bundler/lib/bundler/graph.rb +1 -1
  58. data/bundler/lib/bundler/index.rb +1 -1
  59. data/bundler/lib/bundler/injector.rb +15 -4
  60. data/bundler/lib/bundler/inline.rb +2 -2
  61. data/bundler/lib/bundler/installer.rb +30 -29
  62. data/bundler/lib/bundler/installer/gem_installer.rb +3 -3
  63. data/bundler/lib/bundler/installer/parallel_installer.rb +10 -10
  64. data/bundler/lib/bundler/installer/standalone.rb +2 -2
  65. data/bundler/lib/bundler/lazy_specification.rb +19 -6
  66. data/bundler/lib/bundler/lockfile_generator.rb +1 -1
  67. data/bundler/lib/bundler/lockfile_parser.rb +1 -1
  68. data/bundler/lib/bundler/mirror.rb +2 -2
  69. data/bundler/lib/bundler/plugin.rb +30 -5
  70. data/bundler/lib/bundler/plugin/index.rb +10 -1
  71. data/bundler/lib/bundler/plugin/installer.rb +1 -1
  72. data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
  73. data/bundler/lib/bundler/plugin/source_list.rb +1 -1
  74. data/bundler/lib/bundler/psyched_yaml.rb +0 -15
  75. data/bundler/lib/bundler/remote_specification.rb +5 -2
  76. data/bundler/lib/bundler/resolver.rb +32 -9
  77. data/bundler/lib/bundler/resolver/spec_group.rb +27 -6
  78. data/bundler/lib/bundler/retry.rb +1 -1
  79. data/bundler/lib/bundler/ruby_version.rb +1 -1
  80. data/bundler/lib/bundler/rubygems_ext.rb +53 -9
  81. data/bundler/lib/bundler/rubygems_gem_installer.rb +3 -9
  82. data/bundler/lib/bundler/rubygems_integration.rb +31 -54
  83. data/bundler/lib/bundler/runtime.rb +4 -14
  84. data/bundler/lib/bundler/settings.rb +49 -45
  85. data/bundler/lib/bundler/setup.rb +5 -0
  86. data/bundler/lib/bundler/shared_helpers.rb +2 -2
  87. data/bundler/lib/bundler/similarity_detector.rb +1 -1
  88. data/bundler/lib/bundler/source.rb +1 -1
  89. data/bundler/lib/bundler/source/git.rb +5 -5
  90. data/bundler/lib/bundler/source/git/git_proxy.rb +56 -59
  91. data/bundler/lib/bundler/source/path.rb +7 -3
  92. data/bundler/lib/bundler/source/path/installer.rb +8 -10
  93. data/bundler/lib/bundler/source/rubygems.rb +13 -16
  94. data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
  95. data/bundler/lib/bundler/source_list.rb +2 -2
  96. data/bundler/lib/bundler/spec_set.rb +1 -1
  97. data/bundler/lib/bundler/stub_specification.rb +17 -5
  98. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  99. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +9 -1
  100. data/bundler/lib/bundler/templates/newgem/README.md.tt +1 -1
  101. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +19 -5
  102. data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
  103. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
  104. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
  105. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
  106. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
  107. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +2 -0
  108. data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  109. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +8 -6
  110. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +10 -0
  111. data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
  112. data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
  113. data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
  114. data/bundler/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
  115. data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  116. data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  117. data/bundler/lib/bundler/ui/shell.rb +5 -5
  118. data/bundler/lib/bundler/uri_credentials_filter.rb +1 -1
  119. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +79 -212
  120. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +0 -7
  121. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
  122. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
  123. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  124. data/bundler/lib/bundler/vendored_persistent.rb +0 -7
  125. data/bundler/lib/bundler/version.rb +1 -1
  126. data/bundler/lib/bundler/worker.rb +1 -1
  127. data/bundler/lib/bundler/yaml_serializer.rb +1 -1
  128. data/bundler/man/bundle-add.1 +1 -1
  129. data/bundler/man/{bundle-add.ronn → bundle-add.1.ronn} +0 -0
  130. data/bundler/man/bundle-binstubs.1 +5 -3
  131. data/bundler/man/{bundle-binstubs.ronn → bundle-binstubs.1.ronn} +2 -4
  132. data/bundler/man/bundle-cache.1 +1 -1
  133. data/bundler/man/{bundle-cache.ronn → bundle-cache.1.ronn} +0 -0
  134. data/bundler/man/bundle-check.1 +1 -1
  135. data/bundler/man/{bundle-check.ronn → bundle-check.1.ronn} +0 -0
  136. data/bundler/man/bundle-clean.1 +1 -1
  137. data/bundler/man/{bundle-clean.ronn → bundle-clean.1.ronn} +0 -0
  138. data/bundler/man/bundle-config.1 +16 -22
  139. data/bundler/man/{bundle-config.ronn → bundle-config.1.ronn} +19 -22
  140. data/bundler/man/bundle-doctor.1 +1 -1
  141. data/bundler/man/{bundle-doctor.ronn → bundle-doctor.1.ronn} +0 -0
  142. data/bundler/man/bundle-exec.1 +1 -1
  143. data/bundler/man/{bundle-exec.ronn → bundle-exec.1.ronn} +0 -0
  144. data/bundler/man/bundle-gem.1 +25 -3
  145. data/bundler/man/{bundle-gem.ronn → bundle-gem.1.ronn} +30 -7
  146. data/bundler/man/bundle-info.1 +1 -1
  147. data/bundler/man/{bundle-info.ronn → bundle-info.1.ronn} +0 -0
  148. data/bundler/man/bundle-init.1 +1 -1
  149. data/bundler/man/{bundle-init.ronn → bundle-init.1.ronn} +0 -0
  150. data/bundler/man/bundle-inject.1 +1 -1
  151. data/bundler/man/{bundle-inject.ronn → bundle-inject.1.ronn} +0 -0
  152. data/bundler/man/bundle-install.1 +29 -2
  153. data/bundler/man/{bundle-install.ronn → bundle-install.1.ronn} +24 -2
  154. data/bundler/man/bundle-list.1 +7 -7
  155. data/bundler/man/{bundle-list.ronn → bundle-list.1.ronn} +6 -6
  156. data/bundler/man/bundle-lock.1 +1 -1
  157. data/bundler/man/{bundle-lock.ronn → bundle-lock.1.ronn} +0 -0
  158. data/bundler/man/bundle-open.1 +1 -1
  159. data/bundler/man/{bundle-open.ronn → bundle-open.1.ronn} +0 -0
  160. data/bundler/man/bundle-outdated.1 +1 -1
  161. data/bundler/man/{bundle-outdated.ronn → bundle-outdated.1.ronn} +0 -0
  162. data/bundler/man/bundle-platform.1 +1 -1
  163. data/bundler/man/{bundle-platform.ronn → bundle-platform.1.ronn} +0 -0
  164. data/bundler/man/bundle-pristine.1 +1 -1
  165. data/bundler/man/{bundle-pristine.ronn → bundle-pristine.1.ronn} +0 -0
  166. data/bundler/man/bundle-remove.1 +1 -1
  167. data/bundler/man/{bundle-remove.ronn → bundle-remove.1.ronn} +0 -0
  168. data/bundler/man/bundle-show.1 +1 -1
  169. data/bundler/man/{bundle-show.ronn → bundle-show.1.ronn} +0 -0
  170. data/bundler/man/bundle-update.1 +1 -1
  171. data/bundler/man/{bundle-update.ronn → bundle-update.1.ronn} +0 -0
  172. data/bundler/man/bundle-viz.1 +1 -1
  173. data/bundler/man/{bundle-viz.ronn → bundle-viz.1.ronn} +0 -0
  174. data/bundler/man/bundle.1 +1 -1
  175. data/bundler/man/{bundle.ronn → bundle.1.ronn} +0 -0
  176. data/bundler/man/gemfile.5 +4 -4
  177. data/bundler/man/gemfile.5.ronn +4 -4
  178. data/lib/rubygems.rb +133 -186
  179. data/lib/rubygems/available_set.rb +4 -6
  180. data/lib/rubygems/basic_specification.rb +12 -10
  181. data/lib/rubygems/bundler_version_finder.rb +14 -9
  182. data/lib/rubygems/command.rb +17 -17
  183. data/lib/rubygems/command_manager.rb +4 -5
  184. data/lib/rubygems/commands/build_command.rb +4 -1
  185. data/lib/rubygems/commands/cert_command.rb +1 -9
  186. data/lib/rubygems/commands/check_command.rb +0 -2
  187. data/lib/rubygems/commands/cleanup_command.rb +11 -7
  188. data/lib/rubygems/commands/contents_command.rb +4 -6
  189. data/lib/rubygems/commands/dependency_command.rb +6 -8
  190. data/lib/rubygems/commands/environment_command.rb +1 -3
  191. data/lib/rubygems/commands/fetch_command.rb +2 -4
  192. data/lib/rubygems/commands/generate_index_command.rb +0 -2
  193. data/lib/rubygems/commands/help_command.rb +2 -4
  194. data/lib/rubygems/commands/info_command.rb +8 -5
  195. data/lib/rubygems/commands/install_command.rb +3 -5
  196. data/lib/rubygems/commands/list_command.rb +8 -7
  197. data/lib/rubygems/commands/lock_command.rb +1 -3
  198. data/lib/rubygems/commands/mirror_command.rb +0 -2
  199. data/lib/rubygems/commands/open_command.rb +0 -4
  200. data/lib/rubygems/commands/outdated_command.rb +0 -2
  201. data/lib/rubygems/commands/owner_command.rb +0 -2
  202. data/lib/rubygems/commands/pristine_command.rb +10 -4
  203. data/lib/rubygems/commands/push_command.rb +4 -44
  204. data/lib/rubygems/commands/query_command.rb +6 -353
  205. data/lib/rubygems/commands/rdoc_command.rb +0 -2
  206. data/lib/rubygems/commands/search_command.rb +7 -7
  207. data/lib/rubygems/commands/server_command.rb +0 -2
  208. data/lib/rubygems/commands/setup_command.rb +156 -48
  209. data/lib/rubygems/commands/signin_command.rb +0 -2
  210. data/lib/rubygems/commands/signout_command.rb +0 -2
  211. data/lib/rubygems/commands/sources_command.rb +3 -5
  212. data/lib/rubygems/commands/specification_command.rb +2 -4
  213. data/lib/rubygems/commands/stale_command.rb +1 -3
  214. data/lib/rubygems/commands/uninstall_command.rb +2 -4
  215. data/lib/rubygems/commands/unpack_command.rb +1 -3
  216. data/lib/rubygems/commands/update_command.rb +59 -14
  217. data/lib/rubygems/commands/which_command.rb +0 -2
  218. data/lib/rubygems/commands/yank_command.rb +0 -2
  219. data/lib/rubygems/config_file.rb +11 -4
  220. data/lib/rubygems/core_ext/kernel_require.rb +26 -36
  221. data/lib/rubygems/core_ext/kernel_warn.rb +6 -6
  222. data/lib/rubygems/defaults.rb +99 -5
  223. data/lib/rubygems/dependency.rb +2 -7
  224. data/lib/rubygems/dependency_installer.rb +1 -75
  225. data/lib/rubygems/dependency_list.rb +7 -9
  226. data/lib/rubygems/deprecate.rb +46 -1
  227. data/lib/rubygems/doctor.rb +4 -4
  228. data/lib/rubygems/errors.rb +3 -14
  229. data/lib/rubygems/exceptions.rb +2 -33
  230. data/lib/rubygems/ext.rb +6 -6
  231. data/lib/rubygems/ext/build_error.rb +2 -0
  232. data/lib/rubygems/ext/builder.rb +4 -4
  233. data/lib/rubygems/ext/cmake_builder.rb +1 -3
  234. data/lib/rubygems/ext/configure_builder.rb +0 -2
  235. data/lib/rubygems/ext/ext_conf_builder.rb +6 -9
  236. data/lib/rubygems/ext/rake_builder.rb +0 -2
  237. data/lib/rubygems/gem_runner.rb +3 -10
  238. data/lib/rubygems/gemcutter_utilities.rb +1 -1
  239. data/lib/rubygems/indexer.rb +1 -21
  240. data/lib/rubygems/install_update_options.rb +5 -5
  241. data/lib/rubygems/installer.rb +47 -48
  242. data/lib/rubygems/installer_test_case.rb +18 -5
  243. data/lib/rubygems/installer_uninstaller_utils.rb +24 -0
  244. data/lib/rubygems/local_remote_options.rb +1 -1
  245. data/lib/rubygems/mock_gem_ui.rb +0 -6
  246. data/lib/rubygems/name_tuple.rb +2 -6
  247. data/lib/rubygems/openssl.rb +7 -0
  248. data/lib/rubygems/package.rb +11 -23
  249. data/lib/rubygems/package/digest_io.rb +0 -2
  250. data/lib/rubygems/package/file_source.rb +0 -2
  251. data/lib/rubygems/package/io_source.rb +0 -2
  252. data/lib/rubygems/package/old.rb +1 -3
  253. data/lib/rubygems/package/tar_header.rb +3 -5
  254. data/lib/rubygems/package/tar_reader.rb +0 -3
  255. data/lib/rubygems/package/tar_reader/entry.rb +0 -3
  256. data/lib/rubygems/package/tar_test_case.rb +1 -3
  257. data/lib/rubygems/package/tar_writer.rb +2 -12
  258. data/lib/rubygems/package_task.rb +1 -7
  259. data/lib/rubygems/path_support.rb +1 -3
  260. data/lib/rubygems/platform.rb +3 -5
  261. data/lib/rubygems/psych_tree.rb +0 -2
  262. data/lib/rubygems/query_utils.rb +362 -0
  263. data/lib/rubygems/rdoc.rb +0 -12
  264. data/lib/rubygems/remote_fetcher.rb +9 -25
  265. data/lib/rubygems/request.rb +1 -9
  266. data/lib/rubygems/request/connection_pools.rb +1 -5
  267. data/lib/rubygems/request/http_pool.rb +0 -2
  268. data/lib/rubygems/request/https_pool.rb +0 -2
  269. data/lib/rubygems/request_set.rb +5 -7
  270. data/lib/rubygems/request_set/gem_dependency_api.rb +2 -4
  271. data/lib/rubygems/request_set/lockfile.rb +8 -12
  272. data/lib/rubygems/request_set/lockfile/parser.rb +0 -2
  273. data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -3
  274. data/lib/rubygems/requirement.rb +20 -21
  275. data/lib/rubygems/resolver.rb +7 -10
  276. data/lib/rubygems/resolver/activation_request.rb +0 -2
  277. data/lib/rubygems/resolver/api_set.rb +4 -6
  278. data/lib/rubygems/resolver/api_specification.rb +16 -7
  279. data/lib/rubygems/resolver/best_set.rb +0 -2
  280. data/lib/rubygems/resolver/composed_set.rb +3 -5
  281. data/lib/rubygems/resolver/conflict.rb +1 -3
  282. data/lib/rubygems/resolver/current_set.rb +0 -2
  283. data/lib/rubygems/resolver/dependency_request.rb +0 -2
  284. data/lib/rubygems/resolver/git_set.rb +0 -2
  285. data/lib/rubygems/resolver/git_specification.rb +0 -2
  286. data/lib/rubygems/resolver/index_set.rb +1 -3
  287. data/lib/rubygems/resolver/index_specification.rb +0 -2
  288. data/lib/rubygems/resolver/installed_specification.rb +0 -2
  289. data/lib/rubygems/resolver/installer_set.rb +3 -5
  290. data/lib/rubygems/resolver/local_specification.rb +0 -2
  291. data/lib/rubygems/resolver/lock_set.rb +1 -3
  292. data/lib/rubygems/resolver/lock_specification.rb +0 -2
  293. data/lib/rubygems/resolver/requirement_list.rb +0 -2
  294. data/lib/rubygems/resolver/set.rb +0 -2
  295. data/lib/rubygems/resolver/source_set.rb +0 -2
  296. data/lib/rubygems/resolver/spec_specification.rb +0 -2
  297. data/lib/rubygems/resolver/specification.rb +0 -2
  298. data/lib/rubygems/resolver/stats.rb +0 -2
  299. data/lib/rubygems/resolver/vendor_set.rb +0 -2
  300. data/lib/rubygems/resolver/vendor_specification.rb +0 -2
  301. data/lib/rubygems/s3_uri_signer.rb +1 -7
  302. data/lib/rubygems/safe_yaml.rb +4 -4
  303. data/lib/rubygems/security.rb +26 -32
  304. data/lib/rubygems/security/policy.rb +3 -7
  305. data/lib/rubygems/security/signer.rb +4 -6
  306. data/lib/rubygems/security/trust_dir.rb +1 -3
  307. data/lib/rubygems/server.rb +9 -11
  308. data/lib/rubygems/source.rb +4 -4
  309. data/lib/rubygems/source/git.rb +7 -8
  310. data/lib/rubygems/source/installed.rb +0 -2
  311. data/lib/rubygems/source/local.rb +2 -4
  312. data/lib/rubygems/source/lock.rb +0 -2
  313. data/lib/rubygems/source/specific_file.rb +0 -2
  314. data/lib/rubygems/source/vendor.rb +0 -2
  315. data/lib/rubygems/source_list.rb +6 -7
  316. data/lib/rubygems/spec_fetcher.rb +18 -17
  317. data/lib/rubygems/specification.rb +107 -120
  318. data/lib/rubygems/specification_policy.rb +88 -30
  319. data/lib/rubygems/stub_specification.rb +0 -4
  320. data/lib/rubygems/syck_hack.rb +0 -2
  321. data/lib/rubygems/test_case.rb +122 -92
  322. data/lib/rubygems/test_utilities.rb +6 -14
  323. data/lib/rubygems/uninstaller.rb +35 -16
  324. data/lib/rubygems/uri_formatter.rb +0 -2
  325. data/lib/rubygems/uri_parser.rb +0 -2
  326. data/lib/rubygems/user_interaction.rb +1 -26
  327. data/lib/rubygems/util.rb +15 -3
  328. data/lib/rubygems/util/licenses.rb +4 -6
  329. data/lib/rubygems/util/list.rb +0 -2
  330. data/lib/rubygems/validator.rb +1 -3
  331. data/lib/rubygems/version.rb +5 -7
  332. data/rubygems-update.gemspec +2 -2
  333. data/setup.rb +2 -7
  334. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
  335. data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
  336. data/test/rubygems/rubygems_plugin.rb +0 -2
  337. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
  338. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
  339. data/test/rubygems/test_bundled_ca.rb +38 -45
  340. data/test/rubygems/test_config.rb +0 -2
  341. data/test/rubygems/test_deprecate.rb +40 -7
  342. data/test/rubygems/test_gem.rb +150 -103
  343. data/test/rubygems/test_gem_available_set.rb +3 -5
  344. data/test/rubygems/test_gem_bundler_version_finder.rb +19 -3
  345. data/test/rubygems/test_gem_command.rb +24 -7
  346. data/test/rubygems/test_gem_command_manager.rb +36 -5
  347. data/test/rubygems/test_gem_commands_build_command.rb +53 -10
  348. data/test/rubygems/test_gem_commands_cert_command.rb +2 -4
  349. data/test/rubygems/test_gem_commands_check_command.rb +0 -2
  350. data/test/rubygems/test_gem_commands_cleanup_command.rb +13 -4
  351. data/test/rubygems/test_gem_commands_contents_command.rb +48 -17
  352. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -2
  353. data/test/rubygems/test_gem_commands_environment_command.rb +21 -23
  354. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -2
  355. data/test/rubygems/test_gem_commands_generate_index_command.rb +1 -7
  356. data/test/rubygems/test_gem_commands_help_command.rb +0 -2
  357. data/test/rubygems/test_gem_commands_info_command.rb +6 -8
  358. data/test/rubygems/test_gem_commands_install_command.rb +31 -33
  359. data/test/rubygems/test_gem_commands_list_command.rb +0 -2
  360. data/test/rubygems/test_gem_commands_lock_command.rb +0 -2
  361. data/test/rubygems/test_gem_commands_mirror.rb +1 -3
  362. data/test/rubygems/test_gem_commands_open_command.rb +4 -6
  363. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -2
  364. data/test/rubygems/test_gem_commands_owner_command.rb +11 -5
  365. data/test/rubygems/test_gem_commands_pristine_command.rb +41 -10
  366. data/test/rubygems/test_gem_commands_push_command.rb +7 -4
  367. data/test/rubygems/test_gem_commands_query_command.rb +9 -9
  368. data/test/rubygems/test_gem_commands_search_command.rb +0 -2
  369. data/test/rubygems/test_gem_commands_server_command.rb +0 -2
  370. data/test/rubygems/test_gem_commands_setup_command.rb +210 -118
  371. data/test/rubygems/test_gem_commands_signin_command.rb +6 -6
  372. data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
  373. data/test/rubygems/test_gem_commands_sources_command.rb +39 -3
  374. data/test/rubygems/test_gem_commands_specification_command.rb +18 -20
  375. data/test/rubygems/test_gem_commands_stale_command.rb +0 -2
  376. data/test/rubygems/test_gem_commands_uninstall_command.rb +2 -3
  377. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -2
  378. data/test/rubygems/test_gem_commands_update_command.rb +116 -7
  379. data/test/rubygems/test_gem_commands_which_command.rb +3 -5
  380. data/test/rubygems/test_gem_commands_yank_command.rb +14 -8
  381. data/test/rubygems/test_gem_config_file.rb +7 -12
  382. data/test/rubygems/test_gem_dependency.rb +0 -2
  383. data/test/rubygems/test_gem_dependency_installer.rb +54 -191
  384. data/test/rubygems/test_gem_dependency_list.rb +8 -10
  385. data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -3
  386. data/test/rubygems/test_gem_doctor.rb +28 -2
  387. data/test/rubygems/test_gem_ext_builder.rb +16 -33
  388. data/test/rubygems/test_gem_ext_cmake_builder.rb +13 -14
  389. data/test/rubygems/test_gem_ext_configure_builder.rb +1 -11
  390. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -3
  391. data/test/rubygems/test_gem_ext_rake_builder.rb +9 -11
  392. data/test/rubygems/test_gem_gem_runner.rb +43 -1
  393. data/test/rubygems/test_gem_gemcutter_utilities.rb +5 -2
  394. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -2
  395. data/test/rubygems/test_gem_indexer.rb +9 -15
  396. data/test/rubygems/test_gem_install_update_options.rb +0 -2
  397. data/test/rubygems/test_gem_installer.rb +192 -71
  398. data/test/rubygems/test_gem_local_remote_options.rb +0 -2
  399. data/test/rubygems/test_gem_name_tuple.rb +0 -2
  400. data/test/rubygems/test_gem_package.rb +33 -31
  401. data/test/rubygems/test_gem_package_old.rb +0 -2
  402. data/test/rubygems/test_gem_package_tar_header.rb +18 -1
  403. data/test/rubygems/test_gem_package_tar_reader.rb +0 -2
  404. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -2
  405. data/test/rubygems/test_gem_package_tar_writer.rb +8 -5
  406. data/test/rubygems/test_gem_package_task.rb +46 -13
  407. data/test/rubygems/test_gem_path_support.rb +0 -2
  408. data/test/rubygems/test_gem_platform.rb +0 -2
  409. data/test/rubygems/test_gem_rdoc.rb +0 -2
  410. data/test/rubygems/test_gem_remote_fetcher.rb +156 -195
  411. data/test/rubygems/test_gem_request.rb +11 -15
  412. data/test/rubygems/test_gem_request_connection_pools.rb +0 -4
  413. data/test/rubygems/test_gem_request_set.rb +72 -22
  414. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +3 -5
  415. data/test/rubygems/test_gem_request_set_lockfile.rb +0 -2
  416. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -11
  417. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -120
  418. data/test/rubygems/test_gem_requirement.rb +10 -4
  419. data/test/rubygems/test_gem_resolver.rb +6 -8
  420. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -2
  421. data/test/rubygems/test_gem_resolver_api_set.rb +3 -5
  422. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -2
  423. data/test/rubygems/test_gem_resolver_best_set.rb +2 -4
  424. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -2
  425. data/test/rubygems/test_gem_resolver_conflict.rb +0 -2
  426. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -2
  427. data/test/rubygems/test_gem_resolver_git_set.rb +0 -2
  428. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -2
  429. data/test/rubygems/test_gem_resolver_index_set.rb +2 -4
  430. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -2
  431. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -2
  432. data/test/rubygems/test_gem_resolver_installer_set.rb +7 -9
  433. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -2
  434. data/test/rubygems/test_gem_resolver_lock_set.rb +3 -5
  435. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -2
  436. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -2
  437. data/test/rubygems/test_gem_resolver_specification.rb +0 -4
  438. data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -2
  439. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -2
  440. data/test/rubygems/test_gem_security.rb +20 -22
  441. data/test/rubygems/test_gem_security_policy.rb +5 -10
  442. data/test/rubygems/test_gem_security_signer.rb +8 -10
  443. data/test/rubygems/test_gem_security_trust_dir.rb +2 -4
  444. data/test/rubygems/test_gem_server.rb +10 -14
  445. data/test/rubygems/test_gem_silent_ui.rb +0 -2
  446. data/test/rubygems/test_gem_source.rb +12 -16
  447. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -2
  448. data/test/rubygems/test_gem_source_git.rb +12 -13
  449. data/test/rubygems/test_gem_source_installed.rb +7 -9
  450. data/test/rubygems/test_gem_source_list.rb +1 -2
  451. data/test/rubygems/test_gem_source_local.rb +8 -10
  452. data/test/rubygems/test_gem_source_lock.rb +10 -12
  453. data/test/rubygems/test_gem_source_specific_file.rb +7 -9
  454. data/test/rubygems/test_gem_source_vendor.rb +7 -9
  455. data/test/rubygems/test_gem_spec_fetcher.rb +11 -4
  456. data/test/rubygems/test_gem_specification.rb +179 -129
  457. data/test/rubygems/test_gem_stream_ui.rb +3 -3
  458. data/test/rubygems/test_gem_stub_specification.rb +4 -7
  459. data/test/rubygems/test_gem_text.rb +1 -3
  460. data/test/rubygems/test_gem_uninstaller.rb +133 -11
  461. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -2
  462. data/test/rubygems/test_gem_uri_formatter.rb +0 -2
  463. data/test/rubygems/test_gem_util.rb +7 -7
  464. data/test/rubygems/test_gem_validator.rb +0 -2
  465. data/test/rubygems/test_gem_version.rb +1 -3
  466. data/test/rubygems/test_gem_version_option.rb +0 -2
  467. data/test/rubygems/test_kernel.rb +25 -10
  468. data/test/rubygems/test_project_sanity.rb +7 -2
  469. data/test/rubygems/test_remote_fetch_error.rb +0 -2
  470. data/test/rubygems/test_require.rb +241 -47
  471. metadata +59 -96
  472. data/.bundle/config +0 -2
  473. data/.rubocop.yml +0 -91
  474. data/Gemfile +0 -8
  475. data/Gemfile.lock +0 -43
  476. data/bundler/CODE_OF_CONDUCT.md +0 -136
  477. data/bundler/man/bundle-add.1.txt +0 -58
  478. data/bundler/man/bundle-binstubs.1.txt +0 -48
  479. data/bundler/man/bundle-cache.1.txt +0 -78
  480. data/bundler/man/bundle-check.1.txt +0 -33
  481. data/bundler/man/bundle-clean.1.txt +0 -26
  482. data/bundler/man/bundle-config.1.txt +0 -528
  483. data/bundler/man/bundle-doctor.1.txt +0 -44
  484. data/bundler/man/bundle-exec.1.txt +0 -178
  485. data/bundler/man/bundle-gem.1.txt +0 -91
  486. data/bundler/man/bundle-info.1.txt +0 -21
  487. data/bundler/man/bundle-init.1.txt +0 -34
  488. data/bundler/man/bundle-inject.1.txt +0 -32
  489. data/bundler/man/bundle-install.1.txt +0 -401
  490. data/bundler/man/bundle-list.1.txt +0 -43
  491. data/bundler/man/bundle-lock.1.txt +0 -93
  492. data/bundler/man/bundle-open.1.txt +0 -29
  493. data/bundler/man/bundle-outdated.1.txt +0 -131
  494. data/bundler/man/bundle-platform.1.txt +0 -57
  495. data/bundler/man/bundle-pristine.1.txt +0 -44
  496. data/bundler/man/bundle-remove.1.txt +0 -34
  497. data/bundler/man/bundle-show.1.txt +0 -27
  498. data/bundler/man/bundle-update.1.txt +0 -390
  499. data/bundler/man/bundle-viz.1.txt +0 -39
  500. data/bundler/man/bundle.1.txt +0 -116
  501. data/bundler/man/gemfile.5.txt +0 -649
  502. data/bundler/man/index.txt +0 -25
  503. data/lib/rubygems/source_local.rb +0 -7
  504. data/lib/rubygems/source_specific_file.rb +0 -6
  505. data/lib/ubygems.rb +0 -14
  506. data/tmp/.keep +0 -0
  507. data/util/CL2notes +0 -55
  508. data/util/bisect +0 -10
  509. data/util/ci.sh +0 -62
  510. data/util/cops/deprecations.rb +0 -52
  511. data/util/create_certs.rb +0 -171
  512. data/util/create_certs.sh +0 -27
  513. data/util/create_encrypted_key.rb +0 -16
  514. data/util/generate_spdx_license_list.rb +0 -63
  515. data/util/patch_with_prs.rb +0 -77
  516. data/util/rubocop +0 -8
  517. data/util/update_bundled_ca_certificates.rb +0 -139
  518. data/util/update_changelog.rb +0 -67
@@ -4,7 +4,6 @@ require 'rubygems/platform'
4
4
  require 'rbconfig'
5
5
 
6
6
  class TestGemPlatform < Gem::TestCase
7
-
8
7
  def test_self_local
9
8
  util_set_arch 'i686-darwin8.10.1'
10
9
 
@@ -305,5 +304,4 @@ class TestGemPlatform < Gem::TestCase
305
304
  def refute_local_match(name)
306
305
  refute_match Gem::Platform.local, name
307
306
  end
308
-
309
307
  end
@@ -4,7 +4,6 @@ require 'rubygems/test_case'
4
4
  require 'rubygems/rdoc'
5
5
 
6
6
  class TestGemRDoc < Gem::TestCase
7
-
8
7
  Gem::RDoc.load_rdoc
9
8
 
10
9
  def setup
@@ -134,5 +133,4 @@ class TestGemRDoc < Gem::TestCase
134
133
  FileUtils.rm_r @a.doc_dir
135
134
  end
136
135
  end
137
-
138
136
  end
@@ -5,12 +5,11 @@ require 'webrick'
5
5
  begin
6
6
  require 'webrick/https'
7
7
  rescue LoadError => e
8
- raise unless (e.respond_to?(:path) && e.path == 'openssl') ||
9
- e.message =~ / -- openssl$/
8
+ raise unless e.path == 'openssl'
10
9
  end
11
10
 
12
11
  unless defined?(OpenSSL::SSL)
13
- warn 'Skipping Gem::Request tests. openssl not found.'
12
+ warn 'Skipping Gem::RemoteFetcher tests. openssl not found.'
14
13
  end
15
14
 
16
15
  require 'rubygems/remote_fetcher'
@@ -32,7 +31,6 @@ require 'minitest/mock'
32
31
  # proxy is configured.
33
32
 
34
33
  class TestGemRemoteFetcher < Gem::TestCase
35
-
36
34
  include Gem::DefaultUserInteraction
37
35
 
38
36
  SERVER_DATA = <<-EOY.freeze
@@ -78,12 +76,10 @@ gems:
78
76
 
79
77
  PROXY_DATA = SERVER_DATA.gsub(/0.4.11/, '0.4.2')
80
78
 
81
- DIR = File.expand_path(File.dirname(__FILE__))
82
-
83
79
  # Generated via:
84
80
  # x = OpenSSL::PKey::DH.new(2048) # wait a while...
85
81
  # x.to_s => pem
86
- TEST_KEY_DH2048 = OpenSSL::PKey::DH.new <<-_end_of_pem_
82
+ TEST_KEY_DH2048 = OpenSSL::PKey::DH.new <<-_END_OF_PEM_
87
83
  -----BEGIN DH PARAMETERS-----
88
84
  MIIBCAKCAQEA3Ze2EHSfYkZLUn557torAmjBgPsqzbodaRaGZtgK1gEU+9nNJaFV
89
85
  G1JKhmGUiEDyIW7idsBpe4sX/Wqjnp48Lr8IeI/SlEzLdoGpf05iRYXC8Cm9o8aM
@@ -92,7 +88,7 @@ cfmVgoSEAo9YLBpzoji2jHkO7Q5IPt4zxbTdlmmGFLc/GO9q7LGHhC+rcMcNTGsM
92
88
  NP0fuvVAIB158VnQ0liHSwcl6+9vE1mL0Jo/qEXQxl0+UdKDjaGfTsn6HIrwTnmJ
93
89
  PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
94
90
  -----END DH PARAMETERS-----
95
- _end_of_pem_
91
+ _END_OF_PEM_
96
92
 
97
93
  def setup
98
94
  @proxies = %w[https_proxy http_proxy HTTP_PROXY http_proxy_user HTTP_PROXY_USER http_proxy_pass HTTP_PROXY_PASS no_proxy NO_PROXY]
@@ -100,20 +96,17 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
100
96
  @proxies.each {|k| ENV[k] = nil }
101
97
 
102
98
  super
103
- self.class.start_servers
104
- self.class.enable_yaml = true
105
- self.class.enable_zip = false
99
+ start_servers
100
+ self.enable_yaml = true
101
+ self.enable_zip = false
106
102
 
107
- base_server_uri = "http://localhost:#{self.class.normal_server_port}"
108
- @proxy_uri = "http://localhost:#{self.class.proxy_server_port}"
103
+ base_server_uri = "http://localhost:#{normal_server_port}"
104
+ @proxy_uri = "http://localhost:#{proxy_server_port}"
109
105
 
110
106
  @server_uri = base_server_uri + "/yaml"
111
107
  @server_z_uri = base_server_uri + "/yaml.Z"
112
108
 
113
- # REFACTOR: copied from test_gem_dependency_installer.rb
114
- @gems_dir = File.join @tempdir, 'gems'
115
109
  @cache_dir = File.join @gemhome, "cache"
116
- FileUtils.mkdir @gems_dir
117
110
 
118
111
  # TODO: why does the remote fetcher need it written to disk?
119
112
  @a1, @a1_gem = util_gem 'a', '1' do |s|
@@ -129,7 +122,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
129
122
 
130
123
  def teardown
131
124
  @fetcher.close_all
132
- self.class.stop_servers
125
+ stop_servers
133
126
  super
134
127
  Gem.configuration[:http_proxy] = nil
135
128
  @proxies.each_with_index {|k, i| ENV[k] = @old_proxies[i] }
@@ -153,42 +146,22 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
153
146
  assert_equal proxy_uri, fetcher.instance_variable_get(:@proxy).to_s
154
147
  end
155
148
 
156
- def test_fetch_size_bad_uri
149
+ def test_fetch_path_bad_uri
157
150
  fetcher = Gem::RemoteFetcher.new nil
158
151
  @fetcher = fetcher
159
152
 
160
153
  e = assert_raises ArgumentError do
161
- Gem::Deprecate.skip_during do
162
- fetcher.fetch_size 'gems.example.com/yaml'
163
- end
154
+ @fetcher.fetch_path("gems.example.com/yaml", nil, true)
164
155
  end
165
156
 
166
157
  assert_equal 'uri scheme is invalid: nil', e.message
167
158
  end
168
159
 
169
- def test_fetch_size_socket_error
170
- fetcher = Gem::RemoteFetcher.new nil
171
- @fetcher = fetcher
172
- def fetcher.request(uri, request_class, last_modified = nil)
173
- raise SocketError, "oops"
174
- end
175
-
176
- uri = 'http://gems.example.com/yaml'
177
- e = assert_raises Gem::RemoteFetcher::FetchError do
178
- Gem::Deprecate.skip_during do
179
- fetcher.fetch_size uri
180
- end
181
- end
182
-
183
- assert_equal "SocketError: oops (#{uri})", e.message
184
- end
185
-
186
160
  def test_no_proxy
187
161
  use_ui @stub_ui do
188
162
  assert_data_from_server @fetcher.fetch_path(@server_uri)
189
- Gem::Deprecate.skip_during do
190
- assert_equal SERVER_DATA.size, @fetcher.fetch_size(@server_uri)
191
- end
163
+ response = @fetcher.fetch_path(@server_uri, nil, true)
164
+ assert_equal SERVER_DATA.size, response['content-length'].to_i
192
165
  end
193
166
  end
194
167
 
@@ -348,6 +321,8 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
348
321
  local_path = File.join @tempdir, @a1.file_name
349
322
  inst = nil
350
323
  FileUtils.chmod 0555, @a1.cache_dir
324
+ FileUtils.mkdir_p File.join(Gem.user_dir, "cache") rescue nil
325
+ FileUtils.chmod 0555, File.join(Gem.user_dir, "cache")
351
326
 
352
327
  Dir.chdir @tempdir do
353
328
  inst = Gem::RemoteFetcher.fetcher
@@ -356,6 +331,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
356
331
  assert_equal(File.join(@tempdir, @a1.file_name),
357
332
  inst.download(@a1, local_path))
358
333
  ensure
334
+ FileUtils.chmod 0755, File.join(Gem.user_dir, "cache")
359
335
  FileUtils.chmod 0755, @a1.cache_dir
360
336
  end
361
337
 
@@ -519,7 +495,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
519
495
  fetcher.fetch_path url
520
496
  end
521
497
 
522
- assert_match %r|ECONNREFUSED:.*connect\(2\) \(#{Regexp.escape url}\)\z|,
498
+ assert_match %r{ECONNREFUSED:.*connect\(2\) \(#{Regexp.escape url}\)\z},
523
499
  e.message
524
500
  assert_equal url, e.uri
525
501
  end
@@ -737,7 +713,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
737
713
  assert_fetch_s3 url, '20f974027db2f3cd6193565327a7c73457a138efb1a63ea248d185ce6827d41b'
738
714
  end
739
715
  ensure
740
- ENV.each_key {|key| ENV.delete(key) if key.start_with?('AWS')}
716
+ ENV.each_key {|key| ENV.delete(key) if key.start_with?('AWS') }
741
717
  Gem.configuration[:s3_source] = nil
742
718
  end
743
719
 
@@ -753,7 +729,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
753
729
  assert_fetch_s3 url, '4afc3010757f1fd143e769f1d1dabd406476a4fc7c120e9884fd02acbb8f26c9', nil, 'us-west-2'
754
730
  end
755
731
  ensure
756
- ENV.each_key {|key| ENV.delete(key) if key.start_with?('AWS')}
732
+ ENV.each_key {|key| ENV.delete(key) if key.start_with?('AWS') }
757
733
  Gem.configuration[:s3_source] = nil
758
734
  end
759
735
 
@@ -769,7 +745,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
769
745
  assert_fetch_s3 url, '935160a427ef97e7630f799232b8f208c4a4e49aad07d0540572a2ad5fe9f93c', 'testtoken'
770
746
  end
771
747
  ensure
772
- ENV.each_key {|key| ENV.delete(key) if key.start_with?('AWS')}
748
+ ENV.each_key {|key| ENV.delete(key) if key.start_with?('AWS') }
773
749
  Gem.configuration[:s3_source] = nil
774
750
  end
775
751
 
@@ -901,7 +877,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
901
877
 
902
878
  def test_yaml_error_on_size
903
879
  use_ui @stub_ui do
904
- self.class.enable_yaml = false
880
+ self.enable_yaml = false
905
881
  fetcher = Gem::RemoteFetcher.new nil
906
882
  @fetcher = fetcher
907
883
  assert_error { fetcher.size }
@@ -909,23 +885,20 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
909
885
  end
910
886
 
911
887
  def test_ssl_connection
912
- ssl_server = self.class.start_ssl_server
913
- temp_ca_cert = File.join(DIR, 'ca_cert.pem')
888
+ ssl_server = start_ssl_server
889
+ temp_ca_cert = File.join(__dir__, 'ca_cert.pem')
914
890
  with_configured_fetcher(":ssl_ca_cert: #{temp_ca_cert}") do |fetcher|
915
891
  fetcher.fetch_path("https://localhost:#{ssl_server.config[:Port]}/yaml")
916
892
  end
917
893
  end
918
894
 
919
895
  def test_ssl_client_cert_auth_connection
920
- skip 'openssl is missing' unless defined?(OpenSSL::SSL)
921
- skip 'openssl in jruby fails' if java_platform?
922
-
923
- ssl_server = self.class.start_ssl_server({
896
+ ssl_server = start_ssl_server({
924
897
  :SSLVerifyClient =>
925
898
  OpenSSL::SSL::VERIFY_PEER | OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT})
926
899
 
927
- temp_ca_cert = File.join(DIR, 'ca_cert.pem')
928
- temp_client_cert = File.join(DIR, 'client.pem')
900
+ temp_ca_cert = File.join(__dir__, 'ca_cert.pem')
901
+ temp_client_cert = File.join(__dir__, 'client.pem')
929
902
 
930
903
  with_configured_fetcher(
931
904
  ":ssl_ca_cert: #{temp_ca_cert}\n" +
@@ -935,14 +908,12 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
935
908
  end
936
909
 
937
910
  def test_do_not_allow_invalid_client_cert_auth_connection
938
- skip 'openssl is missing' unless defined?(OpenSSL::SSL)
939
-
940
- ssl_server = self.class.start_ssl_server({
911
+ ssl_server = start_ssl_server({
941
912
  :SSLVerifyClient =>
942
913
  OpenSSL::SSL::VERIFY_PEER | OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT})
943
914
 
944
- temp_ca_cert = File.join(DIR, 'ca_cert.pem')
945
- temp_client_cert = File.join(DIR, 'invalid_client.pem')
915
+ temp_ca_cert = File.join(__dir__, 'ca_cert.pem')
916
+ temp_client_cert = File.join(__dir__, 'invalid_client.pem')
946
917
 
947
918
  with_configured_fetcher(
948
919
  ":ssl_ca_cert: #{temp_ca_cert}\n" +
@@ -954,7 +925,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
954
925
  end
955
926
 
956
927
  def test_do_not_allow_insecure_ssl_connection_by_default
957
- ssl_server = self.class.start_ssl_server
928
+ ssl_server = start_ssl_server
958
929
  with_configured_fetcher do |fetcher|
959
930
  assert_raises Gem::RemoteFetcher::FetchError do
960
931
  fetcher.fetch_path("https://localhost:#{ssl_server.config[:Port]}/yaml")
@@ -963,15 +934,15 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
963
934
  end
964
935
 
965
936
  def test_ssl_connection_allow_verify_none
966
- ssl_server = self.class.start_ssl_server
937
+ ssl_server = start_ssl_server
967
938
  with_configured_fetcher(":ssl_verify_mode: 0") do |fetcher|
968
939
  fetcher.fetch_path("https://localhost:#{ssl_server.config[:Port]}/yaml")
969
940
  end
970
941
  end
971
942
 
972
943
  def test_do_not_follow_insecure_redirect
973
- ssl_server = self.class.start_ssl_server
974
- temp_ca_cert = File.join(DIR, 'ca_cert.pem')
944
+ ssl_server = start_ssl_server
945
+ temp_ca_cert = File.join(__dir__, 'ca_cert.pem')
975
946
  expected_error_message =
976
947
  "redirecting to non-https resource: #{@server_uri} (https://localhost:#{ssl_server.config[:Port]}/insecure_redirect?to=#{@server_uri})"
977
948
 
@@ -985,7 +956,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
985
956
  end
986
957
 
987
958
  def test_nil_ca_cert
988
- ssl_server = self.class.start_ssl_server
959
+ ssl_server = start_ssl_server
989
960
  temp_ca_cert = nil
990
961
 
991
962
  with_configured_fetcher(":ssl_ca_cert: #{temp_ca_cert}") do |fetcher|
@@ -1031,157 +1002,147 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
1031
1002
  end
1032
1003
 
1033
1004
  class NilLog < WEBrick::Log
1034
-
1035
1005
  def log(level, data) #Do nothing
1036
1006
  end
1037
-
1038
1007
  end
1039
1008
 
1040
- class << self
1009
+ private
1041
1010
 
1042
- attr_reader :normal_server, :proxy_server
1043
- attr_accessor :enable_zip, :enable_yaml
1011
+ attr_reader :normal_server, :proxy_server
1012
+ attr_accessor :enable_zip, :enable_yaml
1044
1013
 
1045
- def start_servers
1046
- @normal_server ||= start_server(SERVER_DATA)
1047
- @proxy_server ||= start_server(PROXY_DATA)
1048
- @enable_yaml = true
1049
- @enable_zip = false
1050
- @ssl_server = nil
1051
- @ssl_server_thread = nil
1052
- end
1014
+ def start_servers
1015
+ @normal_server ||= start_server(SERVER_DATA)
1016
+ @proxy_server ||= start_server(PROXY_DATA)
1017
+ @enable_yaml = true
1018
+ @enable_zip = false
1019
+ @ssl_server = nil
1020
+ @ssl_server_thread = nil
1021
+ end
1053
1022
 
1054
- def stop_servers
1055
- if @normal_server
1056
- @normal_server.kill.join
1057
- @normal_server = nil
1058
- end
1059
- if @proxy_server
1060
- @proxy_server.kill.join
1061
- @proxy_server = nil
1062
- end
1063
- if @ssl_server
1064
- @ssl_server.stop
1065
- @ssl_server = nil
1066
- end
1067
- if @ssl_server_thread
1068
- @ssl_server_thread.kill.join
1069
- @ssl_server_thread = nil
1070
- end
1071
- utils = WEBrick::Utils # TimeoutHandler is since 1.9
1072
- utils::TimeoutHandler.terminate if defined?(utils::TimeoutHandler.terminate)
1023
+ def stop_servers
1024
+ if @normal_server
1025
+ @normal_server.kill.join
1026
+ @normal_server = nil
1073
1027
  end
1074
-
1075
- def normal_server_port
1076
- @normal_server[:server].config[:Port]
1028
+ if @proxy_server
1029
+ @proxy_server.kill.join
1030
+ @proxy_server = nil
1077
1031
  end
1078
-
1079
- def proxy_server_port
1080
- @proxy_server[:server].config[:Port]
1032
+ if @ssl_server
1033
+ @ssl_server.stop
1034
+ @ssl_server = nil
1035
+ end
1036
+ if @ssl_server_thread
1037
+ @ssl_server_thread.kill.join
1038
+ @ssl_server_thread = nil
1081
1039
  end
1040
+ utils = WEBrick::Utils # TimeoutHandler is since 1.9
1041
+ utils::TimeoutHandler.terminate if defined?(utils::TimeoutHandler.terminate)
1042
+ end
1082
1043
 
1083
- DIR = File.expand_path(File.dirname(__FILE__))
1044
+ def normal_server_port
1045
+ @normal_server[:server].config[:Port]
1046
+ end
1084
1047
 
1085
- def start_ssl_server(config = {})
1086
- raise MiniTest::Skip, 'openssl not installed' unless
1087
- defined?(OpenSSL::SSL)
1048
+ def proxy_server_port
1049
+ @proxy_server[:server].config[:Port]
1050
+ end
1088
1051
 
1089
- null_logger = NilLog.new
1090
- server = WEBrick::HTTPServer.new({
1091
- :Port => 0,
1092
- :Logger => null_logger,
1093
- :AccessLog => [],
1094
- :SSLEnable => true,
1095
- :SSLCACertificateFile => File.join(DIR, 'ca_cert.pem'),
1096
- :SSLCertificate => cert('ssl_cert.pem'),
1097
- :SSLPrivateKey => key('ssl_key.pem'),
1098
- :SSLVerifyClient => nil,
1099
- :SSLCertName => nil
1100
- }.merge(config))
1101
- server.mount_proc("/yaml") do |req, res|
1102
- res.body = "--- true\n"
1103
- end
1104
- server.mount_proc("/insecure_redirect") do |req, res|
1105
- res.set_redirect(WEBrick::HTTPStatus::MovedPermanently, req.query['to'])
1106
- end
1107
- server.ssl_context.tmp_dh_callback = proc { TEST_KEY_DH2048 }
1108
- t = Thread.new do
1109
- begin
1110
- server.start
1111
- rescue Exception => ex
1112
- abort ex.message
1113
- puts "ERROR during server thread: #{ex.message}"
1114
- ensure
1115
- server.shutdown
1116
- end
1117
- end
1118
- while server.status != :Running
1119
- sleep 0.1
1120
- unless t.alive?
1121
- t.join
1122
- raise
1123
- end
1124
- end
1125
- @ssl_server = server
1126
- @ssl_server_thread = t
1127
- server
1128
- end
1129
-
1130
- private
1131
-
1132
- def start_server(data)
1133
- null_logger = NilLog.new
1134
- s = WEBrick::HTTPServer.new(
1135
- :Port => 0,
1136
- :DocumentRoot => nil,
1137
- :Logger => null_logger,
1138
- :AccessLog => null_logger
1139
- )
1140
- s.mount_proc("/kill") { |req, res| s.shutdown }
1141
- s.mount_proc("/yaml") do |req, res|
1142
- if req["X-Captain"]
1143
- res.body = req["X-Captain"]
1144
- elsif @enable_yaml
1145
- res.body = data
1146
- res['Content-Type'] = 'text/plain'
1147
- res['content-length'] = data.size
1148
- else
1149
- res.status = "404"
1150
- res.body = "<h1>NOT FOUND</h1>"
1151
- res['Content-Type'] = 'text/html'
1152
- end
1052
+ def start_ssl_server(config = {})
1053
+ skip "starting this test server fails randomly on jruby" if Gem.java_platform?
1054
+
1055
+ null_logger = NilLog.new
1056
+ server = WEBrick::HTTPServer.new({
1057
+ :Port => 0,
1058
+ :Logger => null_logger,
1059
+ :AccessLog => [],
1060
+ :SSLEnable => true,
1061
+ :SSLCACertificateFile => File.join(__dir__, 'ca_cert.pem'),
1062
+ :SSLCertificate => cert('ssl_cert.pem'),
1063
+ :SSLPrivateKey => key('ssl_key.pem'),
1064
+ :SSLVerifyClient => nil,
1065
+ :SSLCertName => nil
1066
+ }.merge(config))
1067
+ server.mount_proc("/yaml") do |req, res|
1068
+ res.body = "--- true\n"
1069
+ end
1070
+ server.mount_proc("/insecure_redirect") do |req, res|
1071
+ res.set_redirect(WEBrick::HTTPStatus::MovedPermanently, req.query['to'])
1072
+ end
1073
+ server.ssl_context.tmp_dh_callback = proc { TEST_KEY_DH2048 }
1074
+ t = Thread.new do
1075
+ begin
1076
+ server.start
1077
+ rescue Exception => ex
1078
+ puts "ERROR during server thread: #{ex.message}"
1079
+ raise
1080
+ ensure
1081
+ server.shutdown
1153
1082
  end
1154
- s.mount_proc("/yaml.Z") do |req, res|
1155
- if @enable_zip
1156
- res.body = Zlib::Deflate.deflate(data)
1157
- res['Content-Type'] = 'text/plain'
1158
- else
1159
- res.status = "404"
1160
- res.body = "<h1>NOT FOUND</h1>"
1161
- res['Content-Type'] = 'text/html'
1162
- end
1083
+ end
1084
+ while server.status != :Running
1085
+ sleep 0.1
1086
+ unless t.alive?
1087
+ t.join
1088
+ raise
1163
1089
  end
1164
- th = Thread.new do
1165
- begin
1166
- s.start
1167
- rescue Exception => ex
1168
- abort "ERROR during server thread: #{ex.message}"
1169
- ensure
1170
- s.shutdown
1171
- end
1090
+ end
1091
+ @ssl_server = server
1092
+ @ssl_server_thread = t
1093
+ server
1094
+ end
1095
+
1096
+ def start_server(data)
1097
+ null_logger = NilLog.new
1098
+ s = WEBrick::HTTPServer.new(
1099
+ :Port => 0,
1100
+ :DocumentRoot => nil,
1101
+ :Logger => null_logger,
1102
+ :AccessLog => null_logger
1103
+ )
1104
+ s.mount_proc("/kill") {|req, res| s.shutdown }
1105
+ s.mount_proc("/yaml") do |req, res|
1106
+ if req["X-Captain"]
1107
+ res.body = req["X-Captain"]
1108
+ elsif @enable_yaml
1109
+ res.body = data
1110
+ res['Content-Type'] = 'text/plain'
1111
+ res['content-length'] = data.size
1112
+ else
1113
+ res.status = "404"
1114
+ res.body = "<h1>NOT FOUND</h1>"
1115
+ res['Content-Type'] = 'text/html'
1172
1116
  end
1173
- th[:server] = s
1174
- th
1175
1117
  end
1176
-
1177
- def cert(filename)
1178
- OpenSSL::X509::Certificate.new(File.read(File.join(DIR, filename)))
1118
+ s.mount_proc("/yaml.Z") do |req, res|
1119
+ if @enable_zip
1120
+ res.body = Zlib::Deflate.deflate(data)
1121
+ res['Content-Type'] = 'text/plain'
1122
+ else
1123
+ res.status = "404"
1124
+ res.body = "<h1>NOT FOUND</h1>"
1125
+ res['Content-Type'] = 'text/html'
1126
+ end
1179
1127
  end
1180
-
1181
- def key(filename)
1182
- OpenSSL::PKey::RSA.new(File.read(File.join(DIR, filename)))
1128
+ th = Thread.new do
1129
+ begin
1130
+ s.start
1131
+ rescue Exception => ex
1132
+ abort "ERROR during server thread: #{ex.message}"
1133
+ ensure
1134
+ s.shutdown
1135
+ end
1183
1136
  end
1137
+ th[:server] = s
1138
+ th
1139
+ end
1184
1140
 
1141
+ def cert(filename)
1142
+ OpenSSL::X509::Certificate.new(File.read(File.join(__dir__, filename)))
1185
1143
  end
1186
1144
 
1145
+ def key(filename)
1146
+ OpenSSL::PKey::RSA.new(File.read(File.join(__dir__, filename)))
1147
+ end
1187
1148
  end if defined?(OpenSSL::SSL)