rubygems-update 3.0.3 → 3.4.7

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 (795) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5556 -0
  3. data/CODE_OF_CONDUCT.md +62 -24
  4. data/CONTRIBUTING.md +111 -21
  5. data/MAINTAINERS.txt +1 -6
  6. data/Manifest.txt +209 -101
  7. data/POLICIES.md +65 -22
  8. data/README.md +23 -15
  9. data/UPGRADING.md +5 -81
  10. data/bin/gem +2 -16
  11. data/bin/update_rubygems +5 -5
  12. data/bundler/CHANGELOG.md +2619 -1256
  13. data/bundler/LICENSE.md +18 -19
  14. data/bundler/README.md +11 -12
  15. data/bundler/UPGRADING.md +222 -0
  16. data/bundler/bundler.gemspec +13 -33
  17. data/bundler/exe/bundle +26 -11
  18. data/bundler/exe/bundler +1 -1
  19. data/bundler/lib/bundler/.document +1 -0
  20. data/bundler/lib/bundler/build_metadata.rb +5 -13
  21. data/bundler/lib/bundler/capistrano.rb +4 -4
  22. data/bundler/lib/bundler/cli/add.rb +28 -16
  23. data/bundler/lib/bundler/cli/binstubs.rb +11 -3
  24. data/bundler/lib/bundler/cli/cache.rb +24 -17
  25. data/bundler/lib/bundler/cli/check.rb +5 -3
  26. data/bundler/lib/bundler/cli/clean.rb +1 -1
  27. data/bundler/lib/bundler/cli/common.rb +41 -13
  28. data/bundler/lib/bundler/cli/config.rb +170 -86
  29. data/bundler/lib/bundler/cli/console.rb +3 -3
  30. data/bundler/lib/bundler/cli/doctor.rb +27 -10
  31. data/bundler/lib/bundler/cli/exec.rb +8 -25
  32. data/bundler/lib/bundler/cli/fund.rb +36 -0
  33. data/bundler/lib/bundler/cli/gem.rb +261 -48
  34. data/bundler/lib/bundler/cli/info.rb +52 -8
  35. data/bundler/lib/bundler/cli/init.rb +7 -3
  36. data/bundler/lib/bundler/cli/inject.rb +1 -1
  37. data/bundler/lib/bundler/cli/install.rb +38 -66
  38. data/bundler/lib/bundler/cli/issue.rb +8 -7
  39. data/bundler/lib/bundler/cli/list.rb +19 -11
  40. data/bundler/lib/bundler/cli/lock.rb +11 -4
  41. data/bundler/lib/bundler/cli/open.rb +14 -9
  42. data/bundler/lib/bundler/cli/outdated.rb +152 -121
  43. data/bundler/lib/bundler/cli/platform.rb +2 -2
  44. data/bundler/lib/bundler/cli/plugin.rb +19 -2
  45. data/bundler/lib/bundler/cli/pristine.rb +6 -1
  46. data/bundler/lib/bundler/cli/remove.rb +1 -2
  47. data/bundler/lib/bundler/cli/show.rb +3 -3
  48. data/bundler/lib/bundler/cli/update.rb +49 -18
  49. data/bundler/lib/bundler/cli/viz.rb +1 -1
  50. data/bundler/lib/bundler/cli.rb +269 -165
  51. data/bundler/lib/bundler/compact_index_client/cache.rb +7 -24
  52. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
  53. data/bundler/lib/bundler/compact_index_client/updater.rb +58 -57
  54. data/bundler/lib/bundler/compact_index_client.rb +28 -18
  55. data/bundler/lib/bundler/constants.rb +1 -1
  56. data/bundler/lib/bundler/current_ruby.rb +26 -11
  57. data/bundler/lib/bundler/definition.rb +359 -441
  58. data/bundler/lib/bundler/dependency.rb +29 -71
  59. data/bundler/lib/bundler/deployment.rb +1 -1
  60. data/bundler/lib/bundler/digest.rb +71 -0
  61. data/bundler/lib/bundler/dsl.rb +84 -116
  62. data/bundler/lib/bundler/endpoint_specification.rb +20 -14
  63. data/bundler/lib/bundler/env.rb +10 -15
  64. data/bundler/lib/bundler/environment_preserver.rb +30 -3
  65. data/bundler/lib/bundler/errors.rb +31 -14
  66. data/bundler/lib/bundler/feature_flag.rb +13 -33
  67. data/bundler/lib/bundler/fetcher/base.rb +7 -9
  68. data/bundler/lib/bundler/fetcher/compact_index.rb +46 -39
  69. data/bundler/lib/bundler/fetcher/dependency.rb +2 -2
  70. data/bundler/lib/bundler/fetcher/downloader.rb +15 -12
  71. data/bundler/lib/bundler/fetcher/index.rb +4 -30
  72. data/bundler/lib/bundler/fetcher.rb +39 -41
  73. data/bundler/lib/bundler/force_platform.rb +18 -0
  74. data/bundler/lib/bundler/friendly_errors.rb +49 -54
  75. data/bundler/lib/bundler/gem_helper.rb +79 -43
  76. data/bundler/lib/bundler/gem_helpers.rb +44 -28
  77. data/bundler/lib/bundler/gem_tasks.rb +1 -1
  78. data/bundler/lib/bundler/gem_version_promoter.rb +54 -99
  79. data/bundler/lib/bundler/graph.rb +5 -5
  80. data/bundler/lib/bundler/index.rb +14 -52
  81. data/bundler/lib/bundler/injector.rb +50 -16
  82. data/bundler/lib/bundler/inline.rb +28 -29
  83. data/bundler/lib/bundler/installer/gem_installer.rb +22 -23
  84. data/bundler/lib/bundler/installer/parallel_installer.rb +51 -51
  85. data/bundler/lib/bundler/installer/standalone.rb +62 -12
  86. data/bundler/lib/bundler/installer.rb +46 -97
  87. data/bundler/lib/bundler/lazy_specification.rb +88 -48
  88. data/bundler/lib/bundler/lockfile_generator.rb +3 -3
  89. data/bundler/lib/bundler/lockfile_parser.rb +30 -62
  90. data/bundler/{man → lib/bundler/man}/bundle-add.1 +29 -5
  91. data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +22 -4
  92. data/bundler/{man → lib/bundler/man}/bundle-binstubs.1 +6 -4
  93. data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +3 -5
  94. data/bundler/lib/bundler/man/bundle-cache.1 +61 -0
  95. data/bundler/{man/bundle-package.ronn → lib/bundler/man/bundle-cache.1.ronn} +22 -15
  96. data/bundler/{man → lib/bundler/man}/bundle-check.1 +1 -1
  97. data/bundler/{man → lib/bundler/man}/bundle-clean.1 +2 -2
  98. data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +1 -1
  99. data/bundler/{man → lib/bundler/man}/bundle-config.1 +78 -60
  100. data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +96 -85
  101. data/bundler/lib/bundler/man/bundle-console.1 +53 -0
  102. data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
  103. data/bundler/{man → lib/bundler/man}/bundle-doctor.1 +1 -1
  104. data/bundler/{man → lib/bundler/man}/bundle-exec.1 +6 -6
  105. data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +6 -6
  106. data/bundler/lib/bundler/man/bundle-gem.1 +105 -0
  107. data/bundler/lib/bundler/man/bundle-gem.1.ronn +117 -0
  108. data/bundler/lib/bundler/man/bundle-help.1 +13 -0
  109. data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
  110. data/bundler/{man → lib/bundler/man}/bundle-info.1 +1 -1
  111. data/bundler/{man → lib/bundler/man}/bundle-init.1 +6 -2
  112. data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +3 -1
  113. data/bundler/{man → lib/bundler/man}/bundle-inject.1 +5 -2
  114. data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +3 -1
  115. data/bundler/{man → lib/bundler/man}/bundle-install.1 +42 -37
  116. data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +42 -38
  117. data/bundler/{man → lib/bundler/man}/bundle-list.1 +7 -7
  118. data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
  119. data/bundler/{man → lib/bundler/man}/bundle-lock.1 +1 -1
  120. data/bundler/{man → lib/bundler/man}/bundle-open.1 +22 -2
  121. data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +9 -1
  122. data/bundler/{man → lib/bundler/man}/bundle-outdated.1 +3 -10
  123. data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +1 -10
  124. data/bundler/{man → lib/bundler/man}/bundle-platform.1 +16 -6
  125. data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +14 -7
  126. data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
  127. data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
  128. data/bundler/{man → lib/bundler/man}/bundle-pristine.1 +1 -1
  129. data/bundler/{man → lib/bundler/man}/bundle-remove.1 +1 -1
  130. data/bundler/{man → lib/bundler/man}/bundle-show.1 +1 -1
  131. data/bundler/{man → lib/bundler/man}/bundle-update.1 +8 -8
  132. data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +8 -7
  133. data/bundler/lib/bundler/man/bundle-version.1 +35 -0
  134. data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
  135. data/bundler/{man → lib/bundler/man}/bundle-viz.1 +4 -1
  136. data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +2 -0
  137. data/bundler/{man → lib/bundler/man}/bundle.1 +17 -12
  138. data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +14 -9
  139. data/bundler/lib/bundler/man/gemfile.5 +723 -0
  140. data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +112 -95
  141. data/bundler/lib/bundler/man/index.txt +29 -0
  142. data/bundler/lib/bundler/match_metadata.rb +13 -0
  143. data/bundler/lib/bundler/match_platform.rb +1 -2
  144. data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
  145. data/bundler/lib/bundler/mirror.rb +10 -12
  146. data/bundler/lib/bundler/plugin/api/source.rb +29 -15
  147. data/bundler/lib/bundler/plugin/api.rb +1 -1
  148. data/bundler/lib/bundler/plugin/dsl.rb +1 -1
  149. data/bundler/lib/bundler/plugin/index.rb +31 -8
  150. data/bundler/lib/bundler/plugin/installer/git.rb +0 -4
  151. data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -9
  152. data/bundler/lib/bundler/plugin/installer.rb +35 -22
  153. data/bundler/lib/bundler/plugin/source_list.rb +5 -1
  154. data/bundler/lib/bundler/plugin.rb +102 -42
  155. data/bundler/lib/bundler/process_lock.rb +1 -1
  156. data/bundler/lib/bundler/remote_specification.rb +15 -8
  157. data/bundler/lib/bundler/resolver/base.rb +77 -0
  158. data/bundler/lib/bundler/resolver/candidate.rb +94 -0
  159. data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
  160. data/bundler/lib/bundler/resolver/package.rb +72 -0
  161. data/bundler/lib/bundler/resolver/root.rb +25 -0
  162. data/bundler/lib/bundler/resolver/spec_group.rb +49 -73
  163. data/bundler/lib/bundler/resolver.rb +343 -300
  164. data/bundler/lib/bundler/retry.rb +4 -4
  165. data/bundler/lib/bundler/ruby_dsl.rb +1 -1
  166. data/bundler/lib/bundler/ruby_version.rb +9 -37
  167. data/bundler/lib/bundler/rubygems_ext.rb +235 -92
  168. data/bundler/lib/bundler/rubygems_gem_installer.rb +87 -21
  169. data/bundler/lib/bundler/rubygems_integration.rb +179 -515
  170. data/bundler/lib/bundler/runtime.rb +25 -40
  171. data/bundler/lib/bundler/self_manager.rb +168 -0
  172. data/bundler/lib/bundler/settings.rb +162 -118
  173. data/bundler/lib/bundler/setup.rb +11 -12
  174. data/bundler/lib/bundler/shared_helpers.rb +61 -102
  175. data/bundler/lib/bundler/similarity_detector.rb +3 -3
  176. data/bundler/lib/bundler/source/git/git_proxy.rb +257 -128
  177. data/bundler/lib/bundler/source/git.rb +84 -61
  178. data/bundler/lib/bundler/source/metadata.rb +9 -9
  179. data/bundler/lib/bundler/source/path/installer.rb +11 -32
  180. data/bundler/lib/bundler/source/path.rb +28 -17
  181. data/bundler/lib/bundler/source/rubygems/remote.rb +3 -4
  182. data/bundler/lib/bundler/source/rubygems.rb +171 -197
  183. data/bundler/lib/bundler/source/rubygems_aggregate.rb +68 -0
  184. data/bundler/lib/bundler/source.rb +30 -10
  185. data/bundler/lib/bundler/source_list.rb +112 -67
  186. data/bundler/lib/bundler/source_map.rb +71 -0
  187. data/bundler/lib/bundler/spec_set.rb +86 -72
  188. data/bundler/lib/bundler/stub_specification.rb +45 -37
  189. data/bundler/lib/bundler/templates/Executable +3 -5
  190. data/bundler/lib/bundler/templates/Executable.bundler +21 -17
  191. data/bundler/lib/bundler/templates/Executable.standalone +4 -4
  192. data/bundler/lib/bundler/templates/Gemfile +0 -2
  193. data/bundler/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
  194. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  195. data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
  196. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +22 -2
  197. data/bundler/lib/bundler/templates/newgem/README.md.tt +13 -15
  198. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +33 -5
  199. data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
  200. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +25 -0
  201. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
  202. data/bundler/lib/bundler/templates/newgem/ext/newgem/{extconf.rb.tt → extconf-c.rb.tt} +2 -0
  203. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
  204. data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
  205. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +37 -0
  206. data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
  207. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +18 -0
  208. data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  209. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
  210. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +36 -41
  211. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
  212. data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
  213. data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
  214. data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
  215. data/bundler/lib/bundler/templates/newgem/standard.yml.tt +3 -0
  216. data/bundler/lib/bundler/templates/newgem/test/minitest/test_helper.rb.tt +6 -0
  217. data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/test_newgem.rb.tt} +3 -1
  218. data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  219. data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  220. data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
  221. data/bundler/lib/bundler/ui/shell.rb +39 -20
  222. data/bundler/lib/bundler/ui/silent.rb +21 -5
  223. data/bundler/lib/bundler/ui.rb +3 -3
  224. data/bundler/lib/bundler/uri_credentials_filter.rb +10 -4
  225. data/bundler/lib/bundler/vendor/.document +1 -0
  226. data/bundler/lib/bundler/vendor/connection_pool/LICENSE +20 -0
  227. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +174 -0
  228. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
  229. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +56 -0
  230. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +128 -0
  231. data/bundler/lib/bundler/vendor/fileutils/LICENSE.txt +22 -0
  232. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1493 -425
  233. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
  234. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +40 -0
  235. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +53 -0
  236. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
  237. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +302 -462
  238. data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
  239. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
  240. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
  241. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
  242. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +155 -0
  243. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
  244. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
  245. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
  246. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
  247. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
  248. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
  249. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
  250. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
  251. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
  252. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +243 -0
  253. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
  254. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
  255. data/bundler/lib/bundler/vendor/thor/LICENSE.md +20 -0
  256. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +1 -1
  257. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +3 -2
  258. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +7 -17
  259. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +25 -14
  260. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +20 -10
  261. data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +34 -15
  262. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +63 -43
  263. data/bundler/lib/bundler/vendor/thor/lib/thor/command.rb +21 -14
  264. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +6 -0
  265. data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +83 -0
  266. data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +3 -3
  267. data/bundler/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -0
  268. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +1 -1
  269. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +6 -6
  270. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor.rb +2 -2
  271. data/bundler/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
  272. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +7 -3
  273. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +20 -7
  274. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +40 -6
  275. data/bundler/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
  276. data/bundler/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +1 -0
  277. data/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +15 -14
  278. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +88 -13
  279. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +10 -2
  280. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +3 -3
  281. data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +5 -5
  282. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +18 -2
  283. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  284. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +16 -9
  285. data/bundler/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
  286. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +452 -0
  287. data/bundler/lib/bundler/vendor/uri/LICENSE.txt +22 -0
  288. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +729 -0
  289. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +100 -0
  290. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
  291. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1587 -0
  292. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +125 -0
  293. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +23 -0
  294. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +261 -0
  295. data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +22 -0
  296. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +293 -0
  297. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +539 -0
  298. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +119 -0
  299. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
  300. data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +83 -0
  301. data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +23 -0
  302. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +104 -0
  303. data/bundler/lib/bundler/vendored_fileutils.rb +1 -6
  304. data/bundler/lib/bundler/vendored_persistent.rb +2 -39
  305. data/bundler/lib/bundler/{vendored_molinillo.rb → vendored_pub_grub.rb} +1 -1
  306. data/bundler/lib/bundler/vendored_thor.rb +2 -2
  307. data/bundler/lib/bundler/vendored_tsort.rb +4 -0
  308. data/bundler/lib/bundler/vendored_uri.rb +4 -0
  309. data/bundler/lib/bundler/version.rb +5 -20
  310. data/bundler/lib/bundler/vlad.rb +2 -2
  311. data/bundler/lib/bundler/worker.rb +26 -15
  312. data/bundler/lib/bundler/yaml_serializer.rb +3 -4
  313. data/bundler/lib/bundler.rb +285 -183
  314. data/hide_lib_for_update/note.txt +0 -4
  315. data/lib/rubygems/available_set.rb +7 -8
  316. data/lib/rubygems/basic_specification.rb +44 -31
  317. data/lib/rubygems/bundler_version_finder.rb +28 -50
  318. data/lib/rubygems/command.rb +104 -46
  319. data/lib/rubygems/command_manager.rb +35 -16
  320. data/lib/rubygems/commands/build_command.rb +77 -26
  321. data/lib/rubygems/commands/cert_command.rb +78 -76
  322. data/lib/rubygems/commands/check_command.rb +20 -22
  323. data/lib/rubygems/commands/cleanup_command.rb +36 -32
  324. data/lib/rubygems/commands/contents_command.rb +16 -18
  325. data/lib/rubygems/commands/dependency_command.rb +39 -50
  326. data/lib/rubygems/commands/environment_command.rb +11 -13
  327. data/lib/rubygems/commands/fetch_command.rb +33 -16
  328. data/lib/rubygems/commands/generate_index_command.rb +18 -17
  329. data/lib/rubygems/commands/help_command.rb +7 -7
  330. data/lib/rubygems/commands/info_command.rb +11 -6
  331. data/lib/rubygems/commands/install_command.rb +45 -79
  332. data/lib/rubygems/commands/list_command.rb +9 -8
  333. data/lib/rubygems/commands/lock_command.rb +7 -9
  334. data/lib/rubygems/commands/mirror_command.rb +3 -4
  335. data/lib/rubygems/commands/open_command.rb +11 -14
  336. data/lib/rubygems/commands/outdated_command.rb +5 -6
  337. data/lib/rubygems/commands/owner_command.rb +29 -22
  338. data/lib/rubygems/commands/pristine_command.rb +61 -51
  339. data/lib/rubygems/commands/push_command.rb +26 -63
  340. data/lib/rubygems/commands/query_command.rb +21 -337
  341. data/lib/rubygems/commands/rdoc_command.rb +26 -26
  342. data/lib/rubygems/commands/search_command.rb +8 -8
  343. data/lib/rubygems/commands/server_command.rb +16 -77
  344. data/lib/rubygems/commands/setup_command.rb +282 -241
  345. data/lib/rubygems/commands/signin_command.rb +9 -10
  346. data/lib/rubygems/commands/signout_command.rb +7 -9
  347. data/lib/rubygems/commands/sources_command.rb +42 -26
  348. data/lib/rubygems/commands/specification_command.rb +25 -20
  349. data/lib/rubygems/commands/stale_command.rb +3 -3
  350. data/lib/rubygems/commands/uninstall_command.rb +58 -49
  351. data/lib/rubygems/commands/unpack_command.rb +15 -44
  352. data/lib/rubygems/commands/update_command.rb +133 -81
  353. data/lib/rubygems/commands/which_command.rb +8 -11
  354. data/lib/rubygems/commands/yank_command.rb +22 -19
  355. data/lib/rubygems/compatibility.rb +7 -5
  356. data/lib/rubygems/config_file.rb +101 -47
  357. data/lib/rubygems/core_ext/kernel_gem.rb +8 -12
  358. data/lib/rubygems/core_ext/kernel_require.rb +124 -83
  359. data/lib/rubygems/core_ext/kernel_warn.rb +35 -30
  360. data/lib/rubygems/core_ext/tcpsocket_init.rb +52 -0
  361. data/lib/rubygems/defaults.rb +131 -55
  362. data/lib/rubygems/dependency.rb +44 -27
  363. data/lib/rubygems/dependency_installer.rb +49 -205
  364. data/lib/rubygems/dependency_list.rb +24 -25
  365. data/lib/rubygems/deprecate.rb +106 -12
  366. data/lib/rubygems/doctor.rb +22 -22
  367. data/lib/rubygems/errors.rb +8 -14
  368. data/lib/rubygems/exceptions.rb +35 -33
  369. data/lib/rubygems/ext/build_error.rb +2 -0
  370. data/lib/rubygems/ext/builder.rb +71 -95
  371. data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +27 -0
  372. data/lib/rubygems/ext/cargo_builder.rb +360 -0
  373. data/lib/rubygems/ext/cmake_builder.rb +6 -7
  374. data/lib/rubygems/ext/configure_builder.rb +5 -8
  375. data/lib/rubygems/ext/ext_conf_builder.rb +45 -65
  376. data/lib/rubygems/ext/rake_builder.rb +7 -10
  377. data/lib/rubygems/ext.rb +7 -6
  378. data/lib/rubygems/gem_runner.rb +15 -26
  379. data/lib/rubygems/gemcutter_utilities.rb +179 -54
  380. data/lib/rubygems/indexer.rb +38 -53
  381. data/lib/rubygems/install_default_message.rb +2 -2
  382. data/lib/rubygems/install_message.rb +2 -2
  383. data/lib/rubygems/install_update_options.rb +73 -64
  384. data/lib/rubygems/installer.rb +230 -173
  385. data/lib/rubygems/installer_uninstaller_utils.rb +29 -0
  386. data/lib/rubygems/local_remote_options.rb +22 -24
  387. data/lib/rubygems/mock_gem_ui.rb +2 -5
  388. data/lib/rubygems/name_tuple.rb +10 -14
  389. data/lib/rubygems/openssl.rb +7 -0
  390. data/lib/rubygems/optparse/.document +1 -0
  391. data/lib/rubygems/optparse/COPYING +56 -0
  392. data/lib/rubygems/optparse/lib/optionparser.rb +2 -0
  393. data/lib/rubygems/optparse/lib/optparse/ac.rb +54 -0
  394. data/lib/rubygems/optparse/lib/optparse/date.rb +18 -0
  395. data/lib/rubygems/optparse/lib/optparse/kwargs.rb +22 -0
  396. data/lib/rubygems/optparse/lib/optparse/shellwords.rb +7 -0
  397. data/lib/rubygems/optparse/lib/optparse/time.rb +11 -0
  398. data/lib/rubygems/optparse/lib/optparse/uri.rb +7 -0
  399. data/lib/rubygems/optparse/lib/optparse/version.rb +71 -0
  400. data/lib/rubygems/optparse/lib/optparse.rb +2308 -0
  401. data/lib/rubygems/optparse.rb +3 -0
  402. data/lib/rubygems/package/digest_io.rb +0 -2
  403. data/lib/rubygems/package/file_source.rb +2 -4
  404. data/lib/rubygems/package/io_source.rb +4 -2
  405. data/lib/rubygems/package/old.rb +9 -11
  406. data/lib/rubygems/package/tar_header.rb +73 -66
  407. data/lib/rubygems/package/tar_reader/entry.rb +8 -9
  408. data/lib/rubygems/package/tar_reader.rb +16 -13
  409. data/lib/rubygems/package/tar_writer.rb +12 -22
  410. data/lib/rubygems/package.rb +142 -125
  411. data/lib/rubygems/package_task.rb +5 -11
  412. data/lib/rubygems/path_support.rb +3 -8
  413. data/lib/rubygems/platform.rb +113 -73
  414. data/lib/rubygems/psych_tree.rb +1 -1
  415. data/lib/rubygems/query_utils.rb +351 -0
  416. data/lib/rubygems/rdoc.rb +4 -16
  417. data/lib/rubygems/remote_fetcher.rb +64 -136
  418. data/lib/rubygems/request/connection_pools.rb +7 -11
  419. data/lib/rubygems/request/http_pool.rb +2 -3
  420. data/lib/rubygems/request.rb +31 -32
  421. data/lib/rubygems/request_set/gem_dependency_api.rb +135 -136
  422. data/lib/rubygems/request_set/lockfile/parser.rb +28 -28
  423. data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -5
  424. data/lib/rubygems/request_set/lockfile.rb +21 -20
  425. data/lib/rubygems/request_set.rb +30 -43
  426. data/lib/rubygems/requirement.rb +42 -64
  427. data/lib/rubygems/resolver/activation_request.rb +29 -53
  428. data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
  429. data/lib/rubygems/resolver/api_set.rb +33 -26
  430. data/lib/rubygems/resolver/api_specification.rb +30 -16
  431. data/lib/rubygems/resolver/best_set.rb +9 -11
  432. data/lib/rubygems/resolver/composed_set.rb +3 -5
  433. data/lib/rubygems/resolver/conflict.rb +12 -19
  434. data/lib/rubygems/resolver/current_set.rb +0 -2
  435. data/lib/rubygems/resolver/dependency_request.rb +3 -5
  436. data/lib/rubygems/resolver/git_set.rb +2 -4
  437. data/lib/rubygems/resolver/git_specification.rb +6 -8
  438. data/lib/rubygems/resolver/index_set.rb +4 -6
  439. data/lib/rubygems/resolver/index_specification.rb +38 -7
  440. data/lib/rubygems/resolver/installed_specification.rb +4 -6
  441. data/lib/rubygems/resolver/installer_set.rb +69 -27
  442. data/lib/rubygems/resolver/local_specification.rb +2 -4
  443. data/lib/rubygems/resolver/lock_set.rb +7 -9
  444. data/lib/rubygems/resolver/lock_specification.rb +6 -8
  445. data/lib/rubygems/resolver/molinillo/LICENSE +9 -0
  446. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
  447. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +8 -0
  448. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
  449. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
  450. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
  451. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
  452. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
  453. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
  454. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
  455. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
  456. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +51 -12
  457. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +42 -9
  458. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +82 -8
  459. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
  460. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +13 -1
  461. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
  462. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +510 -165
  463. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
  464. data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
  465. data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
  466. data/lib/rubygems/resolver/molinillo.rb +1 -1
  467. data/lib/rubygems/resolver/requirement_list.rb +0 -1
  468. data/lib/rubygems/resolver/set.rb +0 -3
  469. data/lib/rubygems/resolver/source_set.rb +0 -2
  470. data/lib/rubygems/resolver/spec_specification.rb +14 -2
  471. data/lib/rubygems/resolver/specification.rb +14 -3
  472. data/lib/rubygems/resolver/vendor_set.rb +1 -3
  473. data/lib/rubygems/resolver/vendor_specification.rb +3 -5
  474. data/lib/rubygems/resolver.rb +58 -54
  475. data/lib/rubygems/s3_uri_signer.rb +175 -0
  476. data/lib/rubygems/safe_yaml.rb +14 -16
  477. data/lib/rubygems/security/policies.rb +47 -47
  478. data/lib/rubygems/security/policy.rb +25 -29
  479. data/lib/rubygems/security/signer.rb +16 -18
  480. data/lib/rubygems/security/trust_dir.rb +5 -6
  481. data/lib/rubygems/security.rb +90 -69
  482. data/lib/rubygems/security_option.rb +7 -8
  483. data/lib/rubygems/source/git.rb +30 -30
  484. data/lib/rubygems/source/installed.rb +1 -3
  485. data/lib/rubygems/source/local.rb +4 -6
  486. data/lib/rubygems/source/lock.rb +0 -2
  487. data/lib/rubygems/source/specific_file.rb +1 -3
  488. data/lib/rubygems/source/vendor.rb +0 -2
  489. data/lib/rubygems/source.rb +50 -38
  490. data/lib/rubygems/source_list.rb +9 -13
  491. data/lib/rubygems/spec_fetcher.rb +52 -64
  492. data/lib/rubygems/specification.rb +432 -463
  493. data/lib/rubygems/specification_policy.rb +185 -87
  494. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
  495. data/lib/rubygems/stub_specification.rb +24 -29
  496. data/lib/rubygems/text.rb +21 -21
  497. data/lib/rubygems/tsort/.document +1 -0
  498. data/lib/rubygems/tsort/LICENSE.txt +22 -0
  499. data/lib/rubygems/tsort/lib/tsort.rb +452 -0
  500. data/lib/rubygems/tsort.rb +3 -0
  501. data/lib/rubygems/uninstaller.rb +110 -57
  502. data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
  503. data/lib/rubygems/update_suggestion.rb +69 -0
  504. data/lib/rubygems/uri.rb +126 -0
  505. data/lib/rubygems/uri_formatter.rb +2 -4
  506. data/lib/rubygems/user_interaction.rb +46 -49
  507. data/lib/rubygems/util/licenses.rb +511 -404
  508. data/lib/rubygems/util.rb +40 -56
  509. data/lib/rubygems/validator.rb +15 -37
  510. data/lib/rubygems/version.rb +48 -29
  511. data/lib/rubygems/version_option.rb +11 -5
  512. data/lib/rubygems.rb +305 -332
  513. data/rubygems-update.gemspec +6 -13
  514. data/setup.rb +11 -22
  515. data/test/rubygems/alternate_cert.pem +14 -14
  516. data/test/rubygems/alternate_cert_32.pem +15 -15
  517. data/test/rubygems/alternate_key.pem +25 -25
  518. data/test/rubygems/bundler_test_gem.rb +419 -0
  519. data/test/rubygems/ca_cert.pem +74 -65
  520. data/test/rubygems/child_cert.pem +15 -16
  521. data/test/rubygems/child_cert_32.pem +15 -16
  522. data/test/rubygems/child_key.pem +25 -25
  523. data/test/rubygems/client.pem +103 -45
  524. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  525. data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
  526. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  527. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  528. data/test/rubygems/encrypted_private_key.pem +26 -26
  529. data/test/rubygems/expired_cert.pem +15 -15
  530. data/test/rubygems/future_cert.pem +15 -15
  531. data/test/rubygems/future_cert_32.pem +15 -15
  532. data/test/rubygems/grandchild_cert.pem +15 -16
  533. data/test/rubygems/grandchild_cert_32.pem +15 -16
  534. data/test/rubygems/grandchild_key.pem +25 -25
  535. data/{lib/rubygems/test_case.rb → test/rubygems/helper.rb} +505 -507
  536. data/{lib → test}/rubygems/installer_test_case.rb +115 -53
  537. data/test/rubygems/invalid_issuer_cert.pem +16 -16
  538. data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
  539. data/test/rubygems/invalid_key.pem +25 -25
  540. data/test/rubygems/invalid_signer_cert.pem +15 -15
  541. data/test/rubygems/invalid_signer_cert_32.pem +15 -15
  542. data/test/rubygems/invalidchild_cert.pem +15 -16
  543. data/test/rubygems/invalidchild_cert_32.pem +15 -16
  544. data/test/rubygems/invalidchild_key.pem +25 -25
  545. data/{lib → test}/rubygems/package/tar_test_case.rb +4 -6
  546. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  547. data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
  548. data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
  549. data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
  550. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
  551. data/test/rubygems/private_ec_key.pem +9 -0
  552. data/test/rubygems/private_key.pem +25 -25
  553. data/test/rubygems/public_cert.pem +16 -16
  554. data/test/rubygems/public_cert_32.pem +15 -15
  555. data/test/rubygems/public_key.pem +7 -7
  556. data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
  557. data/test/rubygems/rubygems_plugin.rb +2 -4
  558. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
  559. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
  560. data/test/rubygems/ssl_cert.pem +78 -17
  561. data/test/rubygems/ssl_key.pem +25 -13
  562. data/test/rubygems/test_bundled_ca.rb +44 -47
  563. data/test/rubygems/test_config.rb +5 -7
  564. data/test/rubygems/test_deprecate.rb +90 -10
  565. data/test/rubygems/test_exit.rb +17 -0
  566. data/test/rubygems/test_gem.rb +679 -885
  567. data/test/rubygems/test_gem_available_set.rb +24 -25
  568. data/test/rubygems/test_gem_bundler_version_finder.rb +42 -42
  569. data/test/rubygems/test_gem_command.rb +186 -39
  570. data/test/rubygems/test_gem_command_manager.rb +166 -36
  571. data/test/rubygems/test_gem_commands_build_command.rb +436 -52
  572. data/test/rubygems/test_gem_commands_cert_command.rb +193 -124
  573. data/test/rubygems/test_gem_commands_check_command.rb +9 -11
  574. data/test/rubygems/test_gem_commands_cleanup_command.rb +87 -62
  575. data/test/rubygems/test_gem_commands_contents_command.rb +73 -42
  576. data/test/rubygems/test_gem_commands_dependency_command.rb +39 -41
  577. data/test/rubygems/test_gem_commands_environment_command.rb +60 -48
  578. data/test/rubygems/test_gem_commands_fetch_command.rb +163 -32
  579. data/test/rubygems/test_gem_commands_generate_index_command.rb +39 -9
  580. data/test/rubygems/test_gem_commands_help_command.rb +34 -19
  581. data/test/rubygems/test_gem_commands_info_command.rb +34 -9
  582. data/test/rubygems/test_gem_commands_install_command.rb +600 -173
  583. data/test/rubygems/test_gem_commands_list_command.rb +5 -7
  584. data/test/rubygems/test_gem_commands_lock_command.rb +11 -13
  585. data/test/rubygems/test_gem_commands_mirror.rb +3 -4
  586. data/test/rubygems/test_gem_commands_open_command.rb +16 -19
  587. data/test/rubygems/test_gem_commands_outdated_command.rb +24 -7
  588. data/test/rubygems/test_gem_commands_owner_command.rb +183 -49
  589. data/test/rubygems/test_gem_commands_pristine_command.rb +222 -89
  590. data/test/rubygems/test_gem_commands_push_command.rb +178 -69
  591. data/test/rubygems/test_gem_commands_query_command.rb +114 -89
  592. data/test/rubygems/test_gem_commands_search_command.rb +2 -4
  593. data/test/rubygems/test_gem_commands_server_command.rb +6 -46
  594. data/test/rubygems/test_gem_commands_setup_command.rb +334 -157
  595. data/test/rubygems/test_gem_commands_signin_command.rb +187 -27
  596. data/test/rubygems/test_gem_commands_signout_command.rb +3 -10
  597. data/test/rubygems/test_gem_commands_sources_command.rb +266 -33
  598. data/test/rubygems/test_gem_commands_specification_command.rb +81 -55
  599. data/test/rubygems/test_gem_commands_stale_command.rb +4 -6
  600. data/test/rubygems/test_gem_commands_uninstall_command.rb +230 -95
  601. data/test/rubygems/test_gem_commands_unpack_command.rb +32 -34
  602. data/test/rubygems/test_gem_commands_update_command.rb +412 -102
  603. data/test/rubygems/test_gem_commands_which_command.rb +12 -14
  604. data/test/rubygems/test_gem_commands_yank_command.rb +107 -26
  605. data/test/rubygems/test_gem_config_file.rb +120 -96
  606. data/test/rubygems/test_gem_dependency.rb +94 -86
  607. data/test/rubygems/test_gem_dependency_installer.rb +305 -388
  608. data/test/rubygems/test_gem_dependency_list.rb +66 -61
  609. data/test/rubygems/test_gem_dependency_resolution_error.rb +5 -7
  610. data/test/rubygems/test_gem_doctor.rb +73 -47
  611. data/test/rubygems/test_gem_ext_builder.rb +116 -106
  612. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +1 -0
  613. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +8 -0
  614. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +233 -0
  615. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +10 -0
  616. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +27 -0
  617. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +1 -0
  618. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +1 -0
  619. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +233 -0
  620. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +10 -0
  621. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +8 -0
  622. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +51 -0
  623. data/test/rubygems/test_gem_ext_cargo_builder.rb +166 -0
  624. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +33 -0
  625. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +60 -0
  626. data/test/rubygems/test_gem_ext_cmake_builder.rb +32 -37
  627. data/test/rubygems/test_gem_ext_configure_builder.rb +23 -31
  628. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +75 -79
  629. data/test/rubygems/test_gem_ext_rake_builder.rb +49 -30
  630. data/test/rubygems/test_gem_gem_runner.rb +52 -7
  631. data/test/rubygems/test_gem_gemcutter_utilities.rb +91 -76
  632. data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -6
  633. data/test/rubygems/test_gem_indexer.rb +120 -105
  634. data/test/rubygems/test_gem_install_update_options.rb +57 -33
  635. data/test/rubygems/test_gem_installer.rb +1230 -644
  636. data/test/rubygems/test_gem_local_remote_options.rb +11 -13
  637. data/test/rubygems/test_gem_name_tuple.rb +4 -6
  638. data/test/rubygems/test_gem_package.rb +396 -266
  639. data/test/rubygems/test_gem_package_old.rb +57 -56
  640. data/test/rubygems/test_gem_package_tar_header.rb +108 -50
  641. data/test/rubygems/test_gem_package_tar_reader.rb +8 -10
  642. data/test/rubygems/test_gem_package_tar_reader_entry.rb +77 -20
  643. data/test/rubygems/test_gem_package_tar_writer.rb +107 -101
  644. data/test/rubygems/test_gem_package_task.rb +58 -25
  645. data/test/rubygems/test_gem_path_support.rb +29 -29
  646. data/test/rubygems/test_gem_platform.rb +388 -199
  647. data/test/rubygems/test_gem_rdoc.rb +20 -155
  648. data/test/rubygems/test_gem_remote_fetcher.rb +474 -303
  649. data/test/rubygems/test_gem_request.rb +128 -85
  650. data/test/rubygems/test_gem_request_connection_pools.rb +32 -32
  651. data/test/rubygems/test_gem_request_set.rb +186 -110
  652. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +280 -261
  653. data/test/rubygems/test_gem_request_set_lockfile.rb +93 -94
  654. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +68 -69
  655. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +136 -136
  656. data/test/rubygems/test_gem_requirement.rb +140 -55
  657. data/test/rubygems/test_gem_resolver.rb +224 -115
  658. data/test/rubygems/test_gem_resolver_activation_request.rb +9 -40
  659. data/test/rubygems/test_gem_resolver_api_set.rb +79 -78
  660. data/test/rubygems/test_gem_resolver_api_specification.rb +47 -49
  661. data/test/rubygems/test_gem_resolver_best_set.rb +43 -22
  662. data/test/rubygems/test_gem_resolver_composed_set.rb +1 -3
  663. data/test/rubygems/test_gem_resolver_conflict.rb +12 -18
  664. data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -17
  665. data/test/rubygems/test_gem_resolver_git_set.rb +22 -24
  666. data/test/rubygems/test_gem_resolver_git_specification.rb +22 -22
  667. data/test/rubygems/test_gem_resolver_index_set.rb +14 -16
  668. data/test/rubygems/test_gem_resolver_index_specification.rb +21 -18
  669. data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -8
  670. data/test/rubygems/test_gem_resolver_installer_set.rb +106 -44
  671. data/test/rubygems/test_gem_resolver_local_specification.rb +7 -9
  672. data/test/rubygems/test_gem_resolver_lock_set.rb +15 -17
  673. data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -19
  674. data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -3
  675. data/test/rubygems/test_gem_resolver_specification.rb +8 -10
  676. data/test/rubygems/test_gem_resolver_vendor_set.rb +9 -11
  677. data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -12
  678. data/test/rubygems/test_gem_security.rb +109 -79
  679. data/test/rubygems/test_gem_security_policy.rb +102 -107
  680. data/test/rubygems/test_gem_security_signer.rb +51 -52
  681. data/test/rubygems/test_gem_security_trust_dir.rb +14 -16
  682. data/test/rubygems/test_gem_silent_ui.rb +47 -42
  683. data/test/rubygems/test_gem_source.rb +66 -51
  684. data/test/rubygems/test_gem_source_fetch_problem.rb +17 -8
  685. data/test/rubygems/test_gem_source_git.rb +74 -74
  686. data/test/rubygems/test_gem_source_installed.rb +16 -18
  687. data/test/rubygems/test_gem_source_list.rb +5 -5
  688. data/test/rubygems/test_gem_source_local.rb +15 -16
  689. data/test/rubygems/test_gem_source_lock.rb +31 -33
  690. data/test/rubygems/test_gem_source_specific_file.rb +18 -19
  691. data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
  692. data/test/rubygems/test_gem_source_vendor.rb +13 -15
  693. data/test/rubygems/test_gem_spec_fetcher.rb +74 -67
  694. data/test/rubygems/test_gem_specification.rb +1051 -1071
  695. data/test/rubygems/test_gem_stream_ui.rb +25 -23
  696. data/test/rubygems/test_gem_stub_specification.rb +39 -56
  697. data/test/rubygems/test_gem_text.rb +8 -3
  698. data/test/rubygems/test_gem_uninstaller.rb +269 -100
  699. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -5
  700. data/test/rubygems/test_gem_update_suggestion.rb +208 -0
  701. data/test/rubygems/test_gem_uri.rb +39 -0
  702. data/test/rubygems/test_gem_uri_formatter.rb +14 -16
  703. data/test/rubygems/test_gem_util.rb +46 -34
  704. data/test/rubygems/test_gem_validator.rb +12 -15
  705. data/test/rubygems/test_gem_version.rb +49 -34
  706. data/test/rubygems/test_gem_version_option.rb +16 -18
  707. data/test/rubygems/test_kernel.rb +61 -53
  708. data/test/rubygems/test_project_sanity.rb +20 -0
  709. data/test/rubygems/test_remote_fetch_error.rb +7 -8
  710. data/test/rubygems/test_require.rb +415 -121
  711. data/test/rubygems/test_rubygems.rb +74 -0
  712. data/{lib/rubygems/test_utilities.rb → test/rubygems/utilities.rb} +74 -50
  713. data/test/rubygems/wrong_key_cert.pem +15 -15
  714. data/test/rubygems/wrong_key_cert_32.pem +15 -15
  715. data/test/test_changelog_generator.rb +17 -0
  716. metadata +218 -244
  717. data/.rubocop.yml +0 -66
  718. data/.travis.yml +0 -38
  719. data/History.txt +0 -3965
  720. data/Rakefile +0 -372
  721. data/appveyor.yml +0 -43
  722. data/bundler/CODE_OF_CONDUCT.md +0 -42
  723. data/bundler/CONTRIBUTING.md +0 -17
  724. data/bundler/exe/bundle_ruby +0 -60
  725. data/bundler/lib/bundler/cli/package.rb +0 -49
  726. data/bundler/lib/bundler/compatibility_guard.rb +0 -14
  727. data/bundler/lib/bundler/dep_proxy.rb +0 -48
  728. data/bundler/lib/bundler/gem_remote_fetcher.rb +0 -43
  729. data/bundler/lib/bundler/gemdeps.rb +0 -29
  730. data/bundler/lib/bundler/psyched_yaml.rb +0 -37
  731. data/bundler/lib/bundler/ssl_certs/certificate_manager.rb +0 -66
  732. data/bundler/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  733. data/bundler/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
  734. data/bundler/lib/bundler/templates/gems.rb +0 -8
  735. data/bundler/lib/bundler/templates/newgem/test/test_helper.rb.tt +0 -4
  736. data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -7
  737. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
  738. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
  739. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -81
  740. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
  741. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
  742. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
  743. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
  744. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
  745. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
  746. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
  747. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
  748. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -136
  749. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -223
  750. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -143
  751. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
  752. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -101
  753. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
  754. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -837
  755. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
  756. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
  757. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -12
  758. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb +0 -27
  759. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb +0 -129
  760. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb +0 -12
  761. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb +0 -129
  762. data/bundler/lib/bundler/version_ranges.rb +0 -76
  763. data/bundler/man/bundle-gem.1 +0 -80
  764. data/bundler/man/bundle-gem.ronn +0 -78
  765. data/bundler/man/bundle-package.1 +0 -55
  766. data/lib/rubygems/psych_additions.rb +0 -10
  767. data/lib/rubygems/server.rb +0 -878
  768. data/lib/rubygems/source_local.rb +0 -7
  769. data/lib/rubygems/source_specific_file.rb +0 -6
  770. data/lib/rubygems/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +0 -21
  771. data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  772. data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
  773. data/lib/rubygems/syck_hack.rb +0 -77
  774. data/lib/ubygems.rb +0 -14
  775. data/test/rubygems/bogussources.rb +0 -9
  776. data/test/rubygems/data/null-type.gemspec.rz +0 -0
  777. data/test/rubygems/test_gem_server.rb +0 -607
  778. data/util/CL2notes +0 -55
  779. data/util/ci +0 -77
  780. data/util/create_certs.rb +0 -171
  781. data/util/create_encrypted_key.rb +0 -16
  782. data/util/generate_spdx_license_list.rb +0 -61
  783. data/util/patch_with_prs.rb +0 -77
  784. data/util/rubocop +0 -8
  785. data/util/update_bundled_ca_certificates.rb +0 -139
  786. data/util/update_changelog.rb +0 -67
  787. /data/bundler/lib/bundler/{ssl_certs → man}/.document +0 -0
  788. /data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
  789. /data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
  790. /data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
  791. /data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
  792. /data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
  793. /data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
  794. /data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
  795. /data/{bundler/lib/bundler/ssl_certs/index.rubygems.org → lib/rubygems/ssl_certs/rubygems.org}/GlobalSignRootCA.pem +0 -0
@@ -1,24 +1,28 @@
1
1
  # frozen_string_literal: true
2
- require 'rubygems/test_case'
3
- require 'rubygems/commands/cert_command'
2
+ require_relative "helper"
3
+ require "rubygems/commands/cert_command"
4
4
 
5
- unless defined?(OpenSSL::SSL)
6
- warn 'Skipping `gem cert` tests. openssl not found.'
5
+ unless Gem::HAVE_OPENSSL
6
+ warn "Skipping `gem cert` tests. openssl not found."
7
7
  end
8
8
 
9
- class TestGemCommandsCertCommand < Gem::TestCase
9
+ if Gem.java_platform?
10
+ warn "Skipping `gem cert` tests on jruby."
11
+ end
10
12
 
11
- ALTERNATE_CERT = load_cert 'alternate'
12
- EXPIRED_PUBLIC_CERT = load_cert 'expired'
13
+ class TestGemCommandsCertCommand < Gem::TestCase
14
+ ALTERNATE_CERT = load_cert "alternate"
15
+ EXPIRED_PUBLIC_CERT = load_cert "expired"
13
16
 
14
- ALTERNATE_KEY_FILE = key_path 'alternate'
15
- PRIVATE_KEY_FILE = key_path 'private'
16
- PUBLIC_KEY_FILE = key_path 'public'
17
+ ALTERNATE_KEY_FILE = key_path "alternate"
18
+ PRIVATE_KEY_FILE = key_path "private"
19
+ PRIVATE_EC_KEY_FILE = key_path "private_ec"
20
+ PUBLIC_KEY_FILE = key_path "public"
17
21
 
18
- ALTERNATE_CERT_FILE = cert_path 'alternate'
19
- CHILD_CERT_FILE = cert_path 'child'
20
- PUBLIC_CERT_FILE = cert_path 'public'
21
- EXPIRED_PUBLIC_CERT_FILE = cert_path 'expired'
22
+ ALTERNATE_CERT_FILE = cert_path "alternate"
23
+ CHILD_CERT_FILE = cert_path "child"
24
+ PUBLIC_CERT_FILE = cert_path "public"
25
+ EXPIRED_PUBLIC_CERT_FILE = cert_path "expired"
22
26
 
23
27
  def setup
24
28
  super
@@ -26,13 +30,21 @@ class TestGemCommandsCertCommand < Gem::TestCase
26
30
  @cmd = Gem::Commands::CertCommand.new
27
31
 
28
32
  @trust_dir = Gem::Security.trust_dir
33
+
34
+ @cleanup = []
35
+ end
36
+
37
+ def teardown
38
+ FileUtils.rm_f(@cleanup)
39
+
40
+ super
29
41
  end
30
42
 
31
43
  def test_certificates_matching
32
44
  @trust_dir.trust_cert PUBLIC_CERT
33
45
  @trust_dir.trust_cert ALTERNATE_CERT
34
46
 
35
- matches = @cmd.certificates_matching ''
47
+ matches = @cmd.certificates_matching ""
36
48
 
37
49
  # HACK OpenSSL::X509::Certificate#== is Object#==, so do this the hard way
38
50
  match = matches.next
@@ -43,7 +55,7 @@ class TestGemCommandsCertCommand < Gem::TestCase
43
55
  assert_equal PUBLIC_CERT.to_pem, match.first.to_pem
44
56
  assert_equal @trust_dir.cert_path(PUBLIC_CERT), match.last
45
57
 
46
- assert_raises StopIteration do
58
+ assert_raise StopIteration do
47
59
  matches.next
48
60
  end
49
61
  end
@@ -52,13 +64,13 @@ class TestGemCommandsCertCommand < Gem::TestCase
52
64
  @trust_dir.trust_cert PUBLIC_CERT
53
65
  @trust_dir.trust_cert ALTERNATE_CERT
54
66
 
55
- matches = @cmd.certificates_matching 'alternate'
67
+ matches = @cmd.certificates_matching "alternate"
56
68
 
57
69
  match = matches.next
58
70
  assert_equal ALTERNATE_CERT.to_pem, match.first.to_pem
59
71
  assert_equal @trust_dir.cert_path(ALTERNATE_CERT), match.last
60
72
 
61
- assert_raises StopIteration do
73
+ assert_raise StopIteration do
62
74
  matches.next
63
75
  end
64
76
  end
@@ -72,14 +84,14 @@ class TestGemCommandsCertCommand < Gem::TestCase
72
84
 
73
85
  cert_path = @trust_dir.cert_path PUBLIC_CERT
74
86
 
75
- assert_path_exists cert_path
87
+ assert_path_exist cert_path
76
88
 
77
89
  assert_equal "Added '/CN=nobody/DC=example'\n", @ui.output
78
90
  assert_empty @ui.error
79
91
  end
80
92
 
81
93
  def test_execute_add_twice
82
- self.class.cert_path 'alternate'
94
+ self.class.cert_path "alternate"
83
95
 
84
96
  @cmd.handle_options %W[
85
97
  --add #{PUBLIC_CERT_FILE}
@@ -100,7 +112,7 @@ Added '/CN=alternate/DC=example'
100
112
  end
101
113
 
102
114
  def test_execute_build
103
- passphrase = 'Foo bar'
115
+ passphrase = "Foo bar"
104
116
 
105
117
  @cmd.handle_options %W[--build nobody@example.com]
106
118
 
@@ -127,12 +139,48 @@ Added '/CN=alternate/DC=example'
127
139
  assert_empty output
128
140
  assert_empty @build_ui.error
129
141
 
130
- assert_path_exists File.join(@tempdir, 'gem-private_key.pem')
131
- assert_path_exists File.join(@tempdir, 'gem-public_cert.pem')
142
+ assert_path_exist File.join(@tempdir, "gem-private_key.pem")
143
+ assert_path_exist File.join(@tempdir, "gem-public_cert.pem")
144
+ end
145
+
146
+ def test_execute_build_key_algorithm_ec_key
147
+ passphrase = "Foo bar"
148
+
149
+ @cmd.handle_options %W[--build nobody@example.com --key-algorithm ec]
150
+
151
+ @build_ui = Gem::MockGemUi.new "#{passphrase}\n#{passphrase}"
152
+
153
+ use_ui @build_ui do
154
+ @cmd.execute
155
+ end
156
+
157
+ output = @build_ui.output.squeeze("\n").split "\n"
158
+
159
+ assert_equal "Passphrase for your Private Key: ",
160
+ output.shift
161
+ assert_equal "Please repeat the passphrase for your Private Key: ",
162
+ output.shift
163
+ assert_equal "Certificate: #{File.join @tempdir, 'gem-public_cert.pem'}",
164
+ output.shift
165
+ assert_equal "Private Key: #{File.join @tempdir, 'gem-private_key.pem'}",
166
+ output.shift
167
+
168
+ assert_equal "Don't forget to move the key file to somewhere private!",
169
+ output.shift
170
+
171
+ assert_empty output
172
+ assert_empty @build_ui.error
173
+
174
+ assert_path_exist File.join(@tempdir, "gem-private_key.pem")
175
+
176
+ cert_path = File.join(@tempdir, "gem-public_cert.pem")
177
+ assert_path_exist cert_path
178
+ cert = OpenSSL::X509::Certificate.new(File.read(cert_path))
179
+ assert cert.public_key.is_a? OpenSSL::PKey::EC
132
180
  end
133
181
 
134
182
  def test_execute_build_bad_email_address
135
- passphrase = 'Foo bar'
183
+ passphrase = "Foo bar"
136
184
  email = "nobody@"
137
185
 
138
186
  @cmd.handle_options %W[--build #{email}]
@@ -140,21 +188,20 @@ Added '/CN=alternate/DC=example'
140
188
  @build_ui = Gem::MockGemUi.new "#{passphrase}\n#{passphrase}"
141
189
 
142
190
  use_ui @build_ui do
143
-
144
- e = assert_raises Gem::CommandLineError do
191
+ e = assert_raise Gem::CommandLineError do
145
192
  @cmd.execute
146
193
  end
147
194
 
148
195
  assert_equal "Invalid email address #{email}",
149
196
  e.message
150
197
 
151
- refute_path_exists File.join(@tempdir, 'gem-private_key.pem')
152
- refute_path_exists File.join(@tempdir, 'gem-public_cert.pem')
198
+ assert_path_not_exist File.join(@tempdir, "gem-private_key.pem")
199
+ assert_path_not_exist File.join(@tempdir, "gem-public_cert.pem")
153
200
  end
154
201
  end
155
202
 
156
203
  def test_execute_build_expiration_days
157
- passphrase = 'Foo bar'
204
+ passphrase = "Foo bar"
158
205
 
159
206
  @cmd.handle_options %W[
160
207
  --build nobody@example.com
@@ -184,8 +231,8 @@ Added '/CN=alternate/DC=example'
184
231
  assert_empty output
185
232
  assert_empty @build_ui.error
186
233
 
187
- assert_path_exists File.join(@tempdir, 'gem-private_key.pem')
188
- assert_path_exists File.join(@tempdir, 'gem-public_cert.pem')
234
+ assert_path_exist File.join(@tempdir, "gem-private_key.pem")
235
+ assert_path_exist File.join(@tempdir, "gem-public_cert.pem")
189
236
 
190
237
  pem = File.read("#{@tempdir}/gem-public_cert.pem")
191
238
  cert = OpenSSL::X509::Certificate.new(pem)
@@ -195,15 +242,15 @@ Added '/CN=alternate/DC=example'
195
242
  end
196
243
 
197
244
  def test_execute_build_bad_passphrase_confirmation
198
- passphrase = 'Foo bar'
199
- passphrase_confirmation = 'Fu bar'
245
+ passphrase = "Foo bar"
246
+ passphrase_confirmation = "Fu bar"
200
247
 
201
248
  @cmd.handle_options %W[--build nobody@example.com]
202
249
 
203
250
  @build_ui = Gem::MockGemUi.new "#{passphrase}\n#{passphrase_confirmation}"
204
251
 
205
252
  use_ui @build_ui do
206
- e = assert_raises Gem::CommandLineError do
253
+ e = assert_raise Gem::CommandLineError do
207
254
  @cmd.execute
208
255
  end
209
256
 
@@ -218,11 +265,10 @@ Added '/CN=alternate/DC=example'
218
265
 
219
266
  assert_equal "Passphrase and passphrase confirmation don't match",
220
267
  e.message
221
-
222
268
  end
223
269
 
224
- refute_path_exists File.join(@tempdir, 'gem-private_key.pem')
225
- refute_path_exists File.join(@tempdir, 'gem-public_cert.pem')
270
+ assert_path_not_exist File.join(@tempdir, "gem-private_key.pem")
271
+ assert_path_not_exist File.join(@tempdir, "gem-public_cert.pem")
226
272
  end
227
273
 
228
274
  def test_execute_build_key
@@ -243,8 +289,8 @@ Added '/CN=alternate/DC=example'
243
289
  assert_empty output
244
290
  assert_empty @ui.error
245
291
 
246
- assert_path_exists File.join(@tempdir, 'gem-public_cert.pem')
247
- refute_path_exists File.join(@tempdir, 'gem-private_key.pem')
292
+ assert_path_exist File.join(@tempdir, "gem-public_cert.pem")
293
+ assert_path_not_exist File.join(@tempdir, "gem-private_key.pem")
248
294
  end
249
295
 
250
296
  def test_execute_build_encrypted_key
@@ -265,7 +311,29 @@ Added '/CN=alternate/DC=example'
265
311
  assert_empty output
266
312
  assert_empty @ui.error
267
313
 
268
- assert_path_exists File.join(@tempdir, 'gem-public_cert.pem')
314
+ assert_path_exist File.join(@tempdir, "gem-public_cert.pem")
315
+ end
316
+
317
+ def test_execute_build_ec_key
318
+ @cmd.handle_options %W[
319
+ --build nobody@example.com
320
+ --private-key #{PRIVATE_EC_KEY_FILE}
321
+ ]
322
+
323
+ use_ui @ui do
324
+ @cmd.execute
325
+ end
326
+
327
+ output = @ui.output.split "\n"
328
+
329
+ assert_equal "Certificate: #{File.join @tempdir, 'gem-public_cert.pem'}",
330
+ output.shift
331
+
332
+ assert_empty output
333
+ assert_empty @ui.error
334
+
335
+ assert_path_exist File.join(@tempdir, "gem-public_cert.pem")
336
+ assert_path_not_exist File.join(@tempdir, "gem-private_key.pem")
269
337
  end
270
338
 
271
339
  def test_execute_certificate
@@ -273,8 +341,8 @@ Added '/CN=alternate/DC=example'
273
341
  @cmd.handle_options %W[--certificate #{PUBLIC_CERT_FILE}]
274
342
  end
275
343
 
276
- assert_equal '', @ui.output
277
- assert_equal '', @ui.error
344
+ assert_equal "", @ui.output
345
+ assert_equal "", @ui.error
278
346
 
279
347
  assert_equal PUBLIC_CERT.to_pem, @cmd.options[:issuer_cert].to_pem
280
348
  end
@@ -313,8 +381,8 @@ Added '/CN=alternate/DC=example'
313
381
  @cmd.send :handle_options, %W[--private-key #{PRIVATE_KEY_FILE}]
314
382
  end
315
383
 
316
- assert_equal '', @ui.output
317
- assert_equal '', @ui.error
384
+ assert_equal "", @ui.output
385
+ assert_equal "", @ui.error
318
386
 
319
387
  assert_equal PRIVATE_KEY.to_pem, @cmd.options[:key].to_pem
320
388
  end
@@ -324,8 +392,8 @@ Added '/CN=alternate/DC=example'
324
392
  @cmd.send :handle_options, %W[--private-key #{ENCRYPTED_PRIVATE_KEY_PATH}]
325
393
  end
326
394
 
327
- assert_equal '', @ui.output
328
- assert_equal '', @ui.error
395
+ assert_equal "", @ui.output
396
+ assert_equal "", @ui.error
329
397
 
330
398
  assert_equal ENCRYPTED_PRIVATE_KEY.to_pem, @cmd.options[:key].to_pem
331
399
  end
@@ -335,7 +403,7 @@ Added '/CN=alternate/DC=example'
335
403
 
336
404
  cert_path = @trust_dir.cert_path PUBLIC_CERT
337
405
 
338
- assert_path_exists cert_path
406
+ assert_path_exist cert_path
339
407
 
340
408
  @cmd.handle_options %W[--remove nobody]
341
409
 
@@ -344,9 +412,9 @@ Added '/CN=alternate/DC=example'
344
412
  end
345
413
 
346
414
  assert_equal "Removed '/CN=nobody/DC=example'\n", @ui.output
347
- assert_equal '', @ui.error
415
+ assert_equal "", @ui.error
348
416
 
349
- refute_path_exists cert_path
417
+ assert_path_not_exist cert_path
350
418
  end
351
419
 
352
420
  def test_execute_remove_multiple
@@ -356,8 +424,8 @@ Added '/CN=alternate/DC=example'
356
424
  public_path = @trust_dir.cert_path PUBLIC_CERT
357
425
  alternate_path = @trust_dir.cert_path ALTERNATE_CERT
358
426
 
359
- assert_path_exists public_path
360
- assert_path_exists alternate_path
427
+ assert_path_exist public_path
428
+ assert_path_exist alternate_path
361
429
 
362
430
  @cmd.handle_options %W[--remove example]
363
431
 
@@ -371,10 +439,10 @@ Removed '/CN=nobody/DC=example'
371
439
  EXPECTED
372
440
 
373
441
  assert_equal expected, @ui.output
374
- assert_equal '', @ui.error
442
+ assert_equal "", @ui.error
375
443
 
376
- refute_path_exists public_path
377
- refute_path_exists alternate_path
444
+ assert_path_not_exist public_path
445
+ assert_path_not_exist alternate_path
378
446
  end
379
447
 
380
448
  def test_execute_remove_twice
@@ -384,8 +452,8 @@ Removed '/CN=nobody/DC=example'
384
452
  public_path = @trust_dir.cert_path PUBLIC_CERT
385
453
  alternate_path = @trust_dir.cert_path ALTERNATE_CERT
386
454
 
387
- assert_path_exists public_path
388
- assert_path_exists alternate_path
455
+ assert_path_exist public_path
456
+ assert_path_exist alternate_path
389
457
 
390
458
  @cmd.handle_options %W[--remove nobody --remove alternate]
391
459
 
@@ -399,17 +467,17 @@ Removed '/CN=alternate/DC=example'
399
467
  EXPECTED
400
468
 
401
469
  assert_equal expected, @ui.output
402
- assert_equal '', @ui.error
470
+ assert_equal "", @ui.error
403
471
 
404
- refute_path_exists public_path
405
- refute_path_exists alternate_path
472
+ assert_path_not_exist public_path
473
+ assert_path_not_exist alternate_path
406
474
  end
407
475
 
408
476
  def test_execute_sign
409
- path = File.join @tempdir, 'cert.pem'
477
+ path = File.join @tempdir, "cert.pem"
410
478
  Gem::Security.write ALTERNATE_CERT, path, 0600
411
479
 
412
- assert_equal '/CN=alternate/DC=example', ALTERNATE_CERT.issuer.to_s
480
+ assert_equal "/CN=alternate/DC=example", ALTERNATE_CERT.issuer.to_s
413
481
 
414
482
  @cmd.handle_options %W[
415
483
  --private-key #{PRIVATE_KEY_FILE}
@@ -422,12 +490,12 @@ Removed '/CN=alternate/DC=example'
422
490
  @cmd.execute
423
491
  end
424
492
 
425
- assert_equal '', @ui.output
426
- assert_equal '', @ui.error
493
+ assert_equal "", @ui.output
494
+ assert_equal "", @ui.error
427
495
 
428
496
  cert = OpenSSL::X509::Certificate.new File.read path
429
497
 
430
- assert_equal '/CN=nobody/DC=example', cert.issuer.to_s
498
+ assert_equal "/CN=nobody/DC=example", cert.issuer.to_s
431
499
 
432
500
  mask = 0100600 & (~File.umask)
433
501
 
@@ -435,10 +503,10 @@ Removed '/CN=alternate/DC=example'
435
503
  end
436
504
 
437
505
  def test_execute_sign_encrypted_key
438
- path = File.join @tempdir, 'cert.pem'
506
+ path = File.join @tempdir, "cert.pem"
439
507
  Gem::Security.write ALTERNATE_CERT, path, 0600
440
508
 
441
- assert_equal '/CN=alternate/DC=example', ALTERNATE_CERT.issuer.to_s
509
+ assert_equal "/CN=alternate/DC=example", ALTERNATE_CERT.issuer.to_s
442
510
 
443
511
  @cmd.handle_options %W[
444
512
  --private-key #{ENCRYPTED_PRIVATE_KEY_PATH}
@@ -451,12 +519,12 @@ Removed '/CN=alternate/DC=example'
451
519
  @cmd.execute
452
520
  end
453
521
 
454
- assert_equal '', @ui.output
455
- assert_equal '', @ui.error
522
+ assert_equal "", @ui.output
523
+ assert_equal "", @ui.error
456
524
 
457
525
  cert = OpenSSL::X509::Certificate.new File.read path
458
526
 
459
- assert_equal '/CN=nobody/DC=example', cert.issuer.to_s
527
+ assert_equal "/CN=nobody/DC=example", cert.issuer.to_s
460
528
 
461
529
  mask = 0100600 & (~File.umask)
462
530
 
@@ -464,18 +532,18 @@ Removed '/CN=alternate/DC=example'
464
532
  end
465
533
 
466
534
  def test_execute_sign_default
467
- FileUtils.mkdir_p File.join Gem.user_home, '.gem'
535
+ FileUtils.mkdir_p File.join Gem.user_home, ".gem"
468
536
 
469
- private_key_path = File.join Gem.user_home, '.gem', 'gem-private_key.pem'
537
+ private_key_path = File.join Gem.user_home, ".gem", "gem-private_key.pem"
470
538
  Gem::Security.write PRIVATE_KEY, private_key_path
471
539
 
472
- public_cert_path = File.join Gem.user_home, '.gem', 'gem-public_cert.pem'
540
+ public_cert_path = File.join Gem.user_home, ".gem", "gem-public_cert.pem"
473
541
  Gem::Security.write PUBLIC_CERT, public_cert_path
474
542
 
475
- path = File.join @tempdir, 'cert.pem'
543
+ path = File.join @tempdir, "cert.pem"
476
544
  Gem::Security.write ALTERNATE_CERT, path, 0600
477
545
 
478
- assert_equal '/CN=alternate/DC=example', ALTERNATE_CERT.issuer.to_s
546
+ assert_equal "/CN=alternate/DC=example", ALTERNATE_CERT.issuer.to_s
479
547
 
480
548
  @cmd.handle_options %W[--sign #{path}]
481
549
 
@@ -483,12 +551,12 @@ Removed '/CN=alternate/DC=example'
483
551
  @cmd.execute
484
552
  end
485
553
 
486
- assert_equal '', @ui.output
487
- assert_equal '', @ui.error
554
+ assert_equal "", @ui.output
555
+ assert_equal "", @ui.error
488
556
 
489
557
  cert = OpenSSL::X509::Certificate.new File.read path
490
558
 
491
- assert_equal '/CN=nobody/DC=example', cert.issuer.to_s
559
+ assert_equal "/CN=nobody/DC=example", cert.issuer.to_s
492
560
 
493
561
  mask = 0100600 & (~File.umask)
494
562
 
@@ -496,18 +564,18 @@ Removed '/CN=alternate/DC=example'
496
564
  end
497
565
 
498
566
  def test_execute_sign_default_encrypted_key
499
- FileUtils.mkdir_p File.join(Gem.user_home, '.gem')
567
+ FileUtils.mkdir_p File.join(Gem.user_home, ".gem")
500
568
 
501
- private_key_path = File.join Gem.user_home, '.gem', 'gem-private_key.pem'
569
+ private_key_path = File.join Gem.user_home, ".gem", "gem-private_key.pem"
502
570
  Gem::Security.write ENCRYPTED_PRIVATE_KEY, private_key_path, 0600, PRIVATE_KEY_PASSPHRASE
503
571
 
504
- public_cert_path = File.join Gem.user_home, '.gem', 'gem-public_cert.pem'
572
+ public_cert_path = File.join Gem.user_home, ".gem", "gem-public_cert.pem"
505
573
  Gem::Security.write PUBLIC_CERT, public_cert_path
506
574
 
507
- path = File.join @tempdir, 'cert.pem'
575
+ path = File.join @tempdir, "cert.pem"
508
576
  Gem::Security.write ALTERNATE_CERT, path, 0600
509
577
 
510
- assert_equal '/CN=alternate/DC=example', ALTERNATE_CERT.issuer.to_s
578
+ assert_equal "/CN=alternate/DC=example", ALTERNATE_CERT.issuer.to_s
511
579
 
512
580
  @cmd.handle_options %W[--sign #{path}]
513
581
 
@@ -515,12 +583,12 @@ Removed '/CN=alternate/DC=example'
515
583
  @cmd.execute
516
584
  end
517
585
 
518
- assert_equal '', @ui.output
519
- assert_equal '', @ui.error
586
+ assert_equal "", @ui.output
587
+ assert_equal "", @ui.error
520
588
 
521
589
  cert = OpenSSL::X509::Certificate.new File.read path
522
590
 
523
- assert_equal '/CN=nobody/DC=example', cert.issuer.to_s
591
+ assert_equal "/CN=nobody/DC=example", cert.issuer.to_s
524
592
 
525
593
  mask = 0100600 & (~File.umask)
526
594
 
@@ -528,25 +596,25 @@ Removed '/CN=alternate/DC=example'
528
596
  end
529
597
 
530
598
  def test_execute_sign_no_cert
531
- FileUtils.mkdir_p File.join Gem.user_home, '.gem'
599
+ FileUtils.mkdir_p File.join Gem.user_home, ".gem"
532
600
 
533
- private_key_path = File.join Gem.user_home, '.gem', 'gem-private_key.pem'
601
+ private_key_path = File.join Gem.user_home, ".gem", "gem-private_key.pem"
534
602
  Gem::Security.write PRIVATE_KEY, private_key_path
535
603
 
536
- path = File.join @tempdir, 'cert.pem'
604
+ path = File.join @tempdir, "cert.pem"
537
605
  Gem::Security.write ALTERNATE_CERT, path, 0600
538
606
 
539
- assert_equal '/CN=alternate/DC=example', ALTERNATE_CERT.issuer.to_s
607
+ assert_equal "/CN=alternate/DC=example", ALTERNATE_CERT.issuer.to_s
540
608
 
541
609
  @cmd.handle_options %W[--sign #{path}]
542
610
 
543
611
  use_ui @ui do
544
- assert_raises Gem::MockGemUi::TermError do
612
+ assert_raise Gem::MockGemUi::TermError do
545
613
  @cmd.execute
546
614
  end
547
615
  end
548
616
 
549
- assert_equal '', @ui.output
617
+ assert_equal "", @ui.output
550
618
 
551
619
  expected = <<-EXPECTED
552
620
  ERROR: --certificate not specified and ~/.gem/gem-public_cert.pem does not exist
@@ -556,25 +624,25 @@ ERROR: --certificate not specified and ~/.gem/gem-public_cert.pem does not exis
556
624
  end
557
625
 
558
626
  def test_execute_sign_no_key
559
- FileUtils.mkdir_p File.join Gem.user_home, '.gem'
627
+ FileUtils.mkdir_p File.join Gem.user_home, ".gem"
560
628
 
561
- public_cert_path = File.join Gem.user_home, '.gem', 'gem-public_cert.pem'
629
+ public_cert_path = File.join Gem.user_home, ".gem", "gem-public_cert.pem"
562
630
  Gem::Security.write PUBLIC_CERT, public_cert_path
563
631
 
564
- path = File.join @tempdir, 'cert.pem'
632
+ path = File.join @tempdir, "cert.pem"
565
633
  Gem::Security.write ALTERNATE_CERT, path, 0600
566
634
 
567
- assert_equal '/CN=alternate/DC=example', ALTERNATE_CERT.issuer.to_s
635
+ assert_equal "/CN=alternate/DC=example", ALTERNATE_CERT.issuer.to_s
568
636
 
569
637
  @cmd.handle_options %W[--sign #{path}]
570
638
 
571
639
  use_ui @ui do
572
- assert_raises Gem::MockGemUi::TermError do
640
+ assert_raise Gem::MockGemUi::TermError do
573
641
  @cmd.execute
574
642
  end
575
643
  end
576
644
 
577
- assert_equal '', @ui.output
645
+ assert_equal "", @ui.output
578
646
 
579
647
  expected = <<-EXPECTED
580
648
  ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exist
@@ -587,12 +655,13 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
587
655
  gem_path = File.join Gem.user_home, ".gem"
588
656
  Dir.mkdir gem_path
589
657
 
590
- path = File.join @tempdir, 'cert.pem'
658
+ path = File.join @tempdir, "cert.pem"
591
659
  Gem::Security.write EXPIRED_PUBLIC_CERT, path, 0600
592
660
 
593
- assert_equal '/CN=nobody/DC=example', EXPIRED_PUBLIC_CERT.issuer.to_s
661
+ assert_equal "/CN=nobody/DC=example", EXPIRED_PUBLIC_CERT.issuer.to_s
594
662
 
595
663
  tmp_expired_cert_file = File.join(Dir.tmpdir, File.basename(EXPIRED_PUBLIC_CERT_FILE))
664
+ @cleanup << tmp_expired_cert_file
596
665
  File.write(tmp_expired_cert_file, File.read(EXPIRED_PUBLIC_CERT_FILE))
597
666
 
598
667
  @cmd.handle_options %W[
@@ -611,19 +680,20 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
611
680
  /INFO: Your certificate #{tmp_expired_cert_file} has been re-signed\nINFO: Your expired certificate will be located at: #{expected_path}\.[0-9]+/,
612
681
  @ui.output
613
682
  )
614
- assert_equal '', @ui.error
683
+ assert_equal "", @ui.error
615
684
  end
616
685
 
617
686
  def test_execute_re_sign_with_cert_expiration_length_days
618
687
  gem_path = File.join Gem.user_home, ".gem"
619
688
  Dir.mkdir gem_path
620
689
 
621
- path = File.join @tempdir, 'cert.pem'
690
+ path = File.join @tempdir, "cert.pem"
622
691
  Gem::Security.write EXPIRED_PUBLIC_CERT, path, 0600
623
692
 
624
- assert_equal '/CN=nobody/DC=example', EXPIRED_PUBLIC_CERT.issuer.to_s
693
+ assert_equal "/CN=nobody/DC=example", EXPIRED_PUBLIC_CERT.issuer.to_s
625
694
 
626
695
  tmp_expired_cert_file = File.join(Dir.tmpdir, File.basename(EXPIRED_PUBLIC_CERT_FILE))
696
+ @cleanup << tmp_expired_cert_file
627
697
  File.write(tmp_expired_cert_file, File.read(EXPIRED_PUBLIC_CERT_FILE))
628
698
 
629
699
  @cmd.handle_options %W[
@@ -642,7 +712,7 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
642
712
  cert_days_to_expire = (re_signed_cert.not_after - re_signed_cert.not_before).to_i / (24 * 60 * 60)
643
713
 
644
714
  assert_equal(28, cert_days_to_expire)
645
- assert_equal '', @ui.error
715
+ assert_equal "", @ui.error
646
716
  end
647
717
 
648
718
  def test_handle_options
@@ -661,29 +731,29 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
661
731
  ]
662
732
 
663
733
  assert_equal [PUBLIC_CERT.to_pem, ALTERNATE_CERT.to_pem],
664
- @cmd.options[:add].map { |cert| cert.to_pem }
734
+ @cmd.options[:add].map {|cert| cert.to_pem }
665
735
 
666
736
  assert_equal %w[nobody example], @cmd.options[:remove]
667
737
 
668
738
  assert_equal %w[nobody@example other@example],
669
- @cmd.options[:build].map { |name| name.to_s }
739
+ @cmd.options[:build].map {|name| name.to_s }
670
740
 
671
- assert_equal ['', 'example'], @cmd.options[:list]
741
+ assert_equal ["", "example"], @cmd.options[:list]
672
742
  end
673
743
 
674
744
  def test_handle_options_add_bad
675
- nonexistent = File.join @tempdir, 'nonexistent'
676
- e = assert_raises OptionParser::InvalidArgument do
745
+ nonexistent = File.join @tempdir, "nonexistent"
746
+ e = assert_raise Gem::OptionParser::InvalidArgument do
677
747
  @cmd.handle_options %W[--add #{nonexistent}]
678
748
  end
679
749
 
680
750
  assert_equal "invalid argument: --add #{nonexistent}: does not exist",
681
751
  e.message
682
752
 
683
- bad = File.join @tempdir, 'bad'
753
+ bad = File.join @tempdir, "bad"
684
754
  FileUtils.touch bad
685
755
 
686
- e = assert_raises OptionParser::InvalidArgument do
756
+ e = assert_raise Gem::OptionParser::InvalidArgument do
687
757
  @cmd.handle_options %W[--add #{bad}]
688
758
  end
689
759
 
@@ -692,18 +762,18 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
692
762
  end
693
763
 
694
764
  def test_handle_options_certificate
695
- nonexistent = File.join @tempdir, 'nonexistent'
696
- e = assert_raises OptionParser::InvalidArgument do
765
+ nonexistent = File.join @tempdir, "nonexistent"
766
+ e = assert_raise Gem::OptionParser::InvalidArgument do
697
767
  @cmd.handle_options %W[--certificate #{nonexistent}]
698
768
  end
699
769
 
700
770
  assert_equal "invalid argument: --certificate #{nonexistent}: does not exist",
701
771
  e.message
702
772
 
703
- bad = File.join @tempdir, 'bad'
773
+ bad = File.join @tempdir, "bad"
704
774
  FileUtils.touch bad
705
775
 
706
- e = assert_raises OptionParser::InvalidArgument do
776
+ e = assert_raise Gem::OptionParser::InvalidArgument do
707
777
  @cmd.handle_options %W[--certificate #{bad}]
708
778
  end
709
779
 
@@ -713,8 +783,8 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
713
783
  end
714
784
 
715
785
  def test_handle_options_key_bad
716
- nonexistent = File.join @tempdir, 'nonexistent'
717
- e = assert_raises OptionParser::InvalidArgument do
786
+ nonexistent = File.join @tempdir, "nonexistent"
787
+ e = assert_raise Gem::OptionParser::InvalidArgument do
718
788
  @cmd.handle_options %W[--private-key #{nonexistent}]
719
789
  end
720
790
 
@@ -722,17 +792,17 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
722
792
  "--private-key #{nonexistent}: does not exist",
723
793
  e.message
724
794
 
725
- bad = File.join @tempdir, 'bad'
795
+ bad = File.join @tempdir, "bad"
726
796
  FileUtils.touch bad
727
797
 
728
- e = assert_raises OptionParser::InvalidArgument do
798
+ e = assert_raise Gem::OptionParser::InvalidArgument do
729
799
  @cmd.handle_options %W[--private-key #{bad}]
730
800
  end
731
801
 
732
- assert_equal "invalid argument: --private-key #{bad}: invalid RSA key",
802
+ assert_equal "invalid argument: --private-key #{bad}: invalid RSA, DSA, or EC key",
733
803
  e.message
734
804
 
735
- e = assert_raises OptionParser::InvalidArgument do
805
+ e = assert_raise Gem::OptionParser::InvalidArgument do
736
806
  @cmd.handle_options %W[--private-key #{PUBLIC_KEY_FILE}]
737
807
  end
738
808
 
@@ -778,8 +848,8 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
778
848
  end
779
849
 
780
850
  def test_handle_options_sign_nonexistent
781
- nonexistent = File.join @tempdir, 'nonexistent'
782
- e = assert_raises OptionParser::InvalidArgument do
851
+ nonexistent = File.join @tempdir, "nonexistent"
852
+ e = assert_raise Gem::OptionParser::InvalidArgument do
783
853
  @cmd.handle_options %W[
784
854
  --private-key #{ALTERNATE_KEY_FILE}
785
855
 
@@ -792,5 +862,4 @@ ERROR: --private-key not specified and ~/.gem/gem-private_key.pem does not exis
792
862
  assert_equal "invalid argument: --sign #{nonexistent}: does not exist",
793
863
  e.message
794
864
  end
795
-
796
- end if defined?(OpenSSL::SSL)
865
+ end if Gem::HAVE_OPENSSL && !Gem.java_platform?