rubygems-update 3.1.6 → 3.3.22

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