rubygems-update 3.0.6 → 3.2.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (628) hide show
  1. checksums.yaml +4 -4
  2. data/{History.txt → CHANGELOG.md} +1100 -436
  3. data/CODE_OF_CONDUCT.md +55 -19
  4. data/CONTRIBUTING.md +37 -10
  5. data/MAINTAINERS.txt +1 -6
  6. data/Manifest.txt +104 -64
  7. data/POLICIES.md +6 -12
  8. data/README.md +6 -6
  9. data/Rakefile +121 -111
  10. data/bin/gem +0 -6
  11. data/bin/update_rubygems +2 -2
  12. data/bundler/CHANGELOG.md +1788 -1251
  13. data/bundler/LICENSE.md +18 -19
  14. data/bundler/README.md +9 -10
  15. data/bundler/UPGRADING.md +215 -0
  16. data/bundler/bundler.gemspec +9 -26
  17. data/bundler/exe/bundle +22 -3
  18. data/bundler/lib/bundler.rb +233 -94
  19. data/bundler/lib/bundler/build_metadata.rb +5 -13
  20. data/bundler/lib/bundler/capistrano.rb +4 -4
  21. data/bundler/lib/bundler/cli.rb +221 -148
  22. data/bundler/lib/bundler/cli/add.rb +28 -16
  23. data/bundler/lib/bundler/cli/binstubs.rb +6 -2
  24. data/bundler/lib/bundler/cli/cache.rb +24 -17
  25. data/bundler/lib/bundler/cli/clean.rb +1 -1
  26. data/bundler/lib/bundler/cli/common.rb +25 -12
  27. data/bundler/lib/bundler/cli/config.rb +161 -86
  28. data/bundler/lib/bundler/cli/console.rb +1 -1
  29. data/bundler/lib/bundler/cli/doctor.rb +5 -5
  30. data/bundler/lib/bundler/cli/exec.rb +8 -20
  31. data/bundler/lib/bundler/cli/fund.rb +36 -0
  32. data/bundler/lib/bundler/cli/gem.rb +125 -32
  33. data/bundler/lib/bundler/cli/info.rb +29 -6
  34. data/bundler/lib/bundler/cli/init.rb +2 -2
  35. data/bundler/lib/bundler/cli/inject.rb +1 -1
  36. data/bundler/lib/bundler/cli/install.rb +27 -23
  37. data/bundler/lib/bundler/cli/issue.rb +5 -5
  38. data/bundler/lib/bundler/cli/list.rb +12 -10
  39. data/bundler/lib/bundler/cli/open.rb +10 -6
  40. data/bundler/lib/bundler/cli/outdated.rb +134 -109
  41. data/bundler/lib/bundler/cli/plugin.rb +19 -2
  42. data/bundler/lib/bundler/cli/pristine.rb +6 -1
  43. data/bundler/lib/bundler/cli/show.rb +2 -2
  44. data/bundler/lib/bundler/cli/update.rb +34 -12
  45. data/bundler/lib/bundler/compact_index_client.rb +26 -10
  46. data/bundler/lib/bundler/compact_index_client/cache.rb +6 -14
  47. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
  48. data/bundler/lib/bundler/compact_index_client/updater.rb +8 -20
  49. data/bundler/lib/bundler/current_ruby.rb +9 -7
  50. data/bundler/lib/bundler/definition.rb +133 -132
  51. data/bundler/lib/bundler/dep_proxy.rb +16 -9
  52. data/bundler/lib/bundler/dependency.rb +19 -14
  53. data/bundler/lib/bundler/deployment.rb +1 -1
  54. data/bundler/lib/bundler/dsl.rb +54 -71
  55. data/bundler/lib/bundler/endpoint_specification.rb +1 -1
  56. data/bundler/lib/bundler/env.rb +9 -14
  57. data/bundler/lib/bundler/environment_preserver.rb +26 -3
  58. data/bundler/lib/bundler/errors.rb +1 -0
  59. data/bundler/lib/bundler/feature_flag.rb +19 -34
  60. data/bundler/lib/bundler/fetcher.rb +19 -16
  61. data/bundler/lib/bundler/fetcher/base.rb +1 -1
  62. data/bundler/lib/bundler/fetcher/compact_index.rb +27 -13
  63. data/bundler/lib/bundler/fetcher/dependency.rb +1 -1
  64. data/bundler/lib/bundler/fetcher/downloader.rb +6 -3
  65. data/bundler/lib/bundler/fetcher/index.rb +8 -7
  66. data/bundler/lib/bundler/friendly_errors.rb +27 -19
  67. data/bundler/lib/bundler/gem_helper.rb +68 -37
  68. data/bundler/lib/bundler/gem_helpers.rb +38 -29
  69. data/bundler/lib/bundler/gem_tasks.rb +1 -1
  70. data/bundler/lib/bundler/gem_version_promoter.rb +5 -5
  71. data/bundler/lib/bundler/graph.rb +3 -3
  72. data/bundler/lib/bundler/index.rb +12 -7
  73. data/bundler/lib/bundler/injector.rb +32 -12
  74. data/bundler/lib/bundler/inline.rb +41 -30
  75. data/bundler/lib/bundler/installer.rb +41 -60
  76. data/bundler/lib/bundler/installer/gem_installer.rb +8 -4
  77. data/bundler/lib/bundler/installer/parallel_installer.rb +20 -26
  78. data/bundler/lib/bundler/installer/standalone.rb +18 -4
  79. data/bundler/lib/bundler/lazy_specification.rb +41 -27
  80. data/bundler/lib/bundler/lockfile_generator.rb +1 -1
  81. data/bundler/lib/bundler/lockfile_parser.rb +16 -33
  82. data/bundler/lib/bundler/{ssl_certs → man}/.document +0 -0
  83. data/bundler/lib/bundler/man/bundle-add.1 +66 -0
  84. data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +7 -1
  85. data/bundler/lib/bundler/man/bundle-binstubs.1 +42 -0
  86. data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +3 -5
  87. data/bundler/lib/bundler/man/bundle-cache.1 +55 -0
  88. data/bundler/{man/bundle-package.ronn → lib/bundler/man/bundle-cache.1.ronn} +15 -15
  89. data/bundler/lib/bundler/man/bundle-check.1 +31 -0
  90. data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
  91. data/bundler/lib/bundler/man/bundle-clean.1 +24 -0
  92. data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
  93. data/bundler/lib/bundler/man/bundle-config.1 +488 -0
  94. data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +59 -67
  95. data/bundler/lib/bundler/man/bundle-doctor.1 +44 -0
  96. data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
  97. data/bundler/lib/bundler/man/bundle-exec.1 +165 -0
  98. data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +1 -1
  99. data/bundler/lib/bundler/man/bundle-gem.1 +102 -0
  100. data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
  101. data/bundler/lib/bundler/man/bundle-info.1 +20 -0
  102. data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
  103. data/bundler/lib/bundler/man/bundle-init.1 +25 -0
  104. data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +1 -1
  105. data/bundler/lib/bundler/man/bundle-inject.1 +33 -0
  106. data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
  107. data/bundler/lib/bundler/man/bundle-install.1 +338 -0
  108. data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +34 -7
  109. data/bundler/lib/bundler/man/bundle-list.1 +50 -0
  110. data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
  111. data/bundler/lib/bundler/man/bundle-lock.1 +84 -0
  112. data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
  113. data/bundler/lib/bundler/man/bundle-open.1 +32 -0
  114. data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
  115. data/bundler/lib/bundler/man/bundle-outdated.1 +155 -0
  116. data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
  117. data/bundler/lib/bundler/man/bundle-platform.1 +61 -0
  118. data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
  119. data/bundler/lib/bundler/man/bundle-pristine.1 +34 -0
  120. data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
  121. data/bundler/lib/bundler/man/bundle-remove.1 +31 -0
  122. data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
  123. data/bundler/lib/bundler/man/bundle-show.1 +23 -0
  124. data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
  125. data/bundler/lib/bundler/man/bundle-update.1 +394 -0
  126. data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +3 -3
  127. data/bundler/lib/bundler/man/bundle-viz.1 +39 -0
  128. data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
  129. data/bundler/lib/bundler/man/bundle.1 +136 -0
  130. data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +2 -2
  131. data/bundler/lib/bundler/man/gemfile.5 +686 -0
  132. data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +16 -20
  133. data/bundler/lib/bundler/man/index.txt +25 -0
  134. data/bundler/lib/bundler/match_platform.rb +1 -1
  135. data/bundler/lib/bundler/mirror.rb +5 -5
  136. data/bundler/lib/bundler/plugin.rb +75 -36
  137. data/bundler/lib/bundler/plugin/api.rb +1 -1
  138. data/bundler/lib/bundler/plugin/api/source.rb +12 -7
  139. data/bundler/lib/bundler/plugin/dsl.rb +1 -1
  140. data/bundler/lib/bundler/plugin/index.rb +24 -4
  141. data/bundler/lib/bundler/plugin/installer.rb +33 -22
  142. data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
  143. data/bundler/lib/bundler/plugin/source_list.rb +5 -1
  144. data/bundler/lib/bundler/psyched_yaml.rb +0 -15
  145. data/bundler/lib/bundler/remote_specification.rb +5 -4
  146. data/bundler/lib/bundler/resolver.rb +191 -87
  147. data/bundler/lib/bundler/resolver/spec_group.rb +76 -48
  148. data/bundler/lib/bundler/retry.rb +3 -3
  149. data/bundler/lib/bundler/ruby_version.rb +5 -20
  150. data/bundler/lib/bundler/rubygems_ext.rb +76 -72
  151. data/bundler/lib/bundler/rubygems_gem_installer.rb +47 -13
  152. data/bundler/lib/bundler/rubygems_integration.rb +159 -444
  153. data/bundler/lib/bundler/runtime.rb +6 -23
  154. data/bundler/lib/bundler/settings.rb +67 -93
  155. data/bundler/lib/bundler/setup.rb +11 -12
  156. data/bundler/lib/bundler/shared_helpers.rb +54 -80
  157. data/bundler/lib/bundler/similarity_detector.rb +3 -3
  158. data/bundler/lib/bundler/source.rb +12 -6
  159. data/bundler/lib/bundler/source/git.rb +47 -38
  160. data/bundler/lib/bundler/source/git/git_proxy.rb +101 -102
  161. data/bundler/lib/bundler/source/metadata.rb +7 -6
  162. data/bundler/lib/bundler/source/path.rb +20 -11
  163. data/bundler/lib/bundler/source/path/installer.rb +10 -10
  164. data/bundler/lib/bundler/source/rubygems.rb +56 -29
  165. data/bundler/lib/bundler/source/rubygems/remote.rb +3 -4
  166. data/bundler/lib/bundler/source_list.rb +32 -30
  167. data/bundler/lib/bundler/spec_set.rb +37 -25
  168. data/bundler/lib/bundler/stub_specification.rb +40 -34
  169. data/bundler/lib/bundler/templates/Executable.bundler +23 -14
  170. data/bundler/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
  171. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  172. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +16 -2
  173. data/bundler/lib/bundler/templates/newgem/README.md.tt +7 -5
  174. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +19 -5
  175. data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
  176. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
  177. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
  178. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
  179. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
  180. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
  181. data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  182. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +18 -31
  183. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
  184. data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
  185. data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
  186. data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
  187. data/bundler/lib/bundler/templates/newgem/test/minitest/test_helper.rb.tt +6 -0
  188. data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  189. data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  190. data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -1
  191. data/bundler/lib/bundler/ui.rb +3 -3
  192. data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
  193. data/bundler/lib/bundler/ui/shell.rb +7 -11
  194. data/bundler/lib/bundler/uri_credentials_filter.rb +10 -4
  195. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +161 -0
  196. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +66 -0
  197. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +176 -0
  198. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
  199. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +273 -147
  200. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +5 -6
  201. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +7 -0
  202. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +36 -4
  203. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
  204. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
  205. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
  206. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
  207. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +6 -6
  208. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
  209. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +3 -3
  210. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +39 -11
  211. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +4 -4
  212. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  213. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +11 -0
  214. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +53 -51
  215. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +2 -2
  216. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +302 -462
  217. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +40 -0
  218. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +53 -0
  219. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
  220. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +16 -9
  221. data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +28 -13
  222. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +1 -1
  223. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +3 -2
  224. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +7 -17
  225. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +20 -9
  226. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +19 -8
  227. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +63 -43
  228. data/bundler/lib/bundler/vendor/thor/lib/thor/command.rb +21 -14
  229. data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +78 -0
  230. data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +3 -3
  231. data/bundler/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -0
  232. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor.rb +2 -2
  233. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +1 -1
  234. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +6 -6
  235. data/bundler/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
  236. data/bundler/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
  237. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +7 -3
  238. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +20 -7
  239. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +21 -5
  240. data/bundler/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +1 -0
  241. data/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +15 -14
  242. data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +4 -4
  243. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +65 -8
  244. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +10 -2
  245. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +3 -3
  246. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +18 -2
  247. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  248. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
  249. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +104 -0
  250. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +744 -0
  251. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +94 -0
  252. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
  253. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1568 -0
  254. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +88 -0
  255. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +23 -0
  256. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +261 -0
  257. data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +21 -0
  258. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +294 -0
  259. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +546 -0
  260. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +125 -0
  261. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
  262. data/bundler/lib/bundler/vendored_fileutils.rb +1 -6
  263. data/bundler/lib/bundler/vendored_molinillo.rb +1 -1
  264. data/bundler/lib/bundler/vendored_persistent.rb +7 -12
  265. data/bundler/lib/bundler/vendored_thor.rb +2 -2
  266. data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
  267. data/bundler/lib/bundler/vendored_uri.rb +4 -0
  268. data/bundler/lib/bundler/version.rb +1 -20
  269. data/bundler/lib/bundler/version_ranges.rb +51 -5
  270. data/bundler/lib/bundler/vlad.rb +2 -2
  271. data/bundler/lib/bundler/worker.rb +2 -4
  272. data/bundler/lib/bundler/yaml_serializer.rb +3 -4
  273. data/lib/rubygems.rb +198 -222
  274. data/lib/rubygems/available_set.rb +4 -5
  275. data/lib/rubygems/basic_specification.rb +32 -19
  276. data/lib/rubygems/bundler_version_finder.rb +19 -9
  277. data/lib/rubygems/command.rb +73 -21
  278. data/lib/rubygems/command_manager.rb +5 -12
  279. data/lib/rubygems/commands/build_command.rb +51 -18
  280. data/lib/rubygems/commands/cert_command.rb +2 -11
  281. data/lib/rubygems/commands/check_command.rb +0 -2
  282. data/lib/rubygems/commands/cleanup_command.rb +17 -13
  283. data/lib/rubygems/commands/contents_command.rb +7 -9
  284. data/lib/rubygems/commands/dependency_command.rb +9 -10
  285. data/lib/rubygems/commands/environment_command.rb +1 -6
  286. data/lib/rubygems/commands/fetch_command.rb +2 -4
  287. data/lib/rubygems/commands/generate_index_command.rb +3 -2
  288. data/lib/rubygems/commands/help_command.rb +4 -4
  289. data/lib/rubygems/commands/info_command.rb +9 -4
  290. data/lib/rubygems/commands/install_command.rb +12 -54
  291. data/lib/rubygems/commands/list_command.rb +8 -7
  292. data/lib/rubygems/commands/lock_command.rb +3 -5
  293. data/lib/rubygems/commands/mirror_command.rb +0 -1
  294. data/lib/rubygems/commands/open_command.rb +1 -4
  295. data/lib/rubygems/commands/outdated_command.rb +0 -1
  296. data/lib/rubygems/commands/owner_command.rb +10 -10
  297. data/lib/rubygems/commands/pristine_command.rb +13 -9
  298. data/lib/rubygems/commands/push_command.rb +12 -51
  299. data/lib/rubygems/commands/query_command.rb +14 -330
  300. data/lib/rubygems/commands/rdoc_command.rb +0 -1
  301. data/lib/rubygems/commands/search_command.rb +7 -7
  302. data/lib/rubygems/commands/server_command.rb +3 -1
  303. data/lib/rubygems/commands/setup_command.rb +143 -101
  304. data/lib/rubygems/commands/signin_command.rb +0 -1
  305. data/lib/rubygems/commands/signout_command.rb +0 -2
  306. data/lib/rubygems/commands/sources_command.rb +22 -6
  307. data/lib/rubygems/commands/specification_command.rb +8 -3
  308. data/lib/rubygems/commands/stale_command.rb +1 -1
  309. data/lib/rubygems/commands/uninstall_command.rb +2 -3
  310. data/lib/rubygems/commands/unpack_command.rb +3 -32
  311. data/lib/rubygems/commands/update_command.rb +73 -28
  312. data/lib/rubygems/commands/which_command.rb +0 -1
  313. data/lib/rubygems/commands/yank_command.rb +10 -7
  314. data/lib/rubygems/compatibility.rb +4 -4
  315. data/lib/rubygems/config_file.rb +48 -27
  316. data/lib/rubygems/core_ext/kernel_gem.rb +7 -6
  317. data/lib/rubygems/core_ext/kernel_require.rb +44 -6
  318. data/lib/rubygems/core_ext/kernel_warn.rb +22 -13
  319. data/lib/rubygems/core_ext/tcpsocket_init.rb +52 -0
  320. data/lib/rubygems/defaults.rb +110 -23
  321. data/lib/rubygems/dependency.rb +28 -14
  322. data/lib/rubygems/dependency_installer.rb +11 -166
  323. data/lib/rubygems/dependency_list.rb +17 -18
  324. data/lib/rubygems/deprecate.rb +51 -6
  325. data/lib/rubygems/doctor.rb +4 -4
  326. data/lib/rubygems/errors.rb +5 -7
  327. data/lib/rubygems/exceptions.rb +2 -24
  328. data/lib/rubygems/ext.rb +6 -6
  329. data/lib/rubygems/ext/build_error.rb +2 -0
  330. data/lib/rubygems/ext/builder.rb +45 -82
  331. data/lib/rubygems/ext/cmake_builder.rb +6 -7
  332. data/lib/rubygems/ext/configure_builder.rb +5 -8
  333. data/lib/rubygems/ext/ext_conf_builder.rb +27 -23
  334. data/lib/rubygems/ext/rake_builder.rb +4 -6
  335. data/lib/rubygems/gem_runner.rb +3 -10
  336. data/lib/rubygems/gemcutter_utilities.rb +111 -37
  337. data/lib/rubygems/indexer.rb +9 -26
  338. data/lib/rubygems/install_update_options.rb +7 -7
  339. data/lib/rubygems/installer.rb +91 -98
  340. data/lib/rubygems/installer_test_case.rb +104 -42
  341. data/lib/rubygems/installer_uninstaller_utils.rb +29 -0
  342. data/lib/rubygems/local_remote_options.rb +1 -1
  343. data/lib/rubygems/mock_gem_ui.rb +1 -4
  344. data/lib/rubygems/name_tuple.rb +4 -7
  345. data/lib/rubygems/openssl.rb +7 -0
  346. data/lib/rubygems/package.rb +49 -32
  347. data/lib/rubygems/package/digest_io.rb +0 -2
  348. data/lib/rubygems/package/file_source.rb +0 -2
  349. data/lib/rubygems/package/io_source.rb +0 -2
  350. data/lib/rubygems/package/old.rb +1 -3
  351. data/lib/rubygems/package/tar_header.rb +4 -6
  352. data/lib/rubygems/package/tar_reader.rb +15 -12
  353. data/lib/rubygems/package/tar_reader/entry.rb +0 -3
  354. data/lib/rubygems/package/tar_test_case.rb +2 -4
  355. data/lib/rubygems/package/tar_writer.rb +6 -16
  356. data/lib/rubygems/package_task.rb +1 -7
  357. data/lib/rubygems/path_support.rb +2 -2
  358. data/lib/rubygems/platform.rb +22 -16
  359. data/lib/rubygems/query_utils.rb +353 -0
  360. data/lib/rubygems/rdoc.rb +0 -12
  361. data/lib/rubygems/remote_fetcher.rb +33 -59
  362. data/lib/rubygems/request.rb +11 -14
  363. data/lib/rubygems/request/connection_pools.rb +3 -7
  364. data/lib/rubygems/request/http_pool.rb +0 -1
  365. data/lib/rubygems/request_set.rb +10 -23
  366. data/lib/rubygems/request_set/gem_dependency_api.rb +9 -11
  367. data/lib/rubygems/request_set/lockfile.rb +13 -12
  368. data/lib/rubygems/request_set/lockfile/parser.rb +2 -2
  369. data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -1
  370. data/lib/rubygems/requirement.rb +36 -35
  371. data/lib/rubygems/resolver.rb +20 -16
  372. data/lib/rubygems/resolver/activation_request.rb +27 -51
  373. data/lib/rubygems/resolver/api_set.rb +31 -24
  374. data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
  375. data/lib/rubygems/resolver/api_specification.rb +24 -10
  376. data/lib/rubygems/resolver/best_set.rb +4 -6
  377. data/lib/rubygems/resolver/composed_set.rb +3 -5
  378. data/lib/rubygems/resolver/conflict.rb +2 -9
  379. data/lib/rubygems/resolver/current_set.rb +0 -2
  380. data/lib/rubygems/resolver/dependency_request.rb +1 -3
  381. data/lib/rubygems/resolver/git_set.rb +0 -2
  382. data/lib/rubygems/resolver/git_specification.rb +0 -2
  383. data/lib/rubygems/resolver/index_set.rb +1 -3
  384. data/lib/rubygems/resolver/index_specification.rb +32 -2
  385. data/lib/rubygems/resolver/installed_specification.rb +0 -2
  386. data/lib/rubygems/resolver/installer_set.rb +63 -16
  387. data/lib/rubygems/resolver/local_specification.rb +0 -2
  388. data/lib/rubygems/resolver/lock_set.rb +3 -5
  389. data/lib/rubygems/resolver/lock_specification.rb +2 -4
  390. data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
  391. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
  392. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +8 -0
  393. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +39 -6
  394. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
  395. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
  396. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
  397. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
  398. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
  399. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
  400. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
  401. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
  402. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +51 -12
  403. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +76 -8
  404. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
  405. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +12 -0
  406. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
  407. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +510 -165
  408. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
  409. data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
  410. data/lib/rubygems/resolver/requirement_list.rb +0 -1
  411. data/lib/rubygems/resolver/set.rb +0 -2
  412. data/lib/rubygems/resolver/source_set.rb +0 -2
  413. data/lib/rubygems/resolver/spec_specification.rb +14 -2
  414. data/lib/rubygems/resolver/specification.rb +13 -2
  415. data/lib/rubygems/resolver/vendor_set.rb +0 -2
  416. data/lib/rubygems/resolver/vendor_specification.rb +0 -2
  417. data/lib/rubygems/s3_uri_signer.rb +15 -13
  418. data/lib/rubygems/safe_yaml.rb +4 -4
  419. data/lib/rubygems/security.rb +27 -34
  420. data/lib/rubygems/security/policy.rb +4 -8
  421. data/lib/rubygems/security/signer.rb +8 -9
  422. data/lib/rubygems/security/trust_dir.rb +1 -3
  423. data/lib/rubygems/server.rb +20 -16
  424. data/lib/rubygems/source.rb +30 -13
  425. data/lib/rubygems/source/git.rb +7 -8
  426. data/lib/rubygems/source/installed.rb +0 -2
  427. data/lib/rubygems/source/local.rb +2 -4
  428. data/lib/rubygems/source/lock.rb +0 -2
  429. data/lib/rubygems/source/specific_file.rb +0 -2
  430. data/lib/rubygems/source/vendor.rb +0 -2
  431. data/lib/rubygems/source_list.rb +6 -6
  432. data/lib/rubygems/spec_fetcher.rb +22 -34
  433. data/lib/rubygems/specification.rb +207 -278
  434. data/lib/rubygems/specification_policy.rb +135 -57
  435. data/{bundler/lib/bundler/ssl_certs/index.rubygems.org → lib/rubygems/ssl_certs/rubygems.org}/GlobalSignRootCA.pem +0 -0
  436. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
  437. data/lib/rubygems/stub_specification.rb +4 -5
  438. data/lib/rubygems/test_case.rb +221 -341
  439. data/lib/rubygems/test_utilities.rb +22 -18
  440. data/lib/rubygems/text.rb +2 -3
  441. data/lib/rubygems/uninstaller.rb +49 -30
  442. data/lib/rubygems/uri_formatter.rb +2 -4
  443. data/lib/rubygems/uri_parser.rb +34 -0
  444. data/lib/rubygems/uri_parsing.rb +23 -0
  445. data/lib/rubygems/user_interaction.rb +3 -20
  446. data/lib/rubygems/util.rb +20 -44
  447. data/lib/rubygems/util/licenses.rb +400 -400
  448. data/lib/rubygems/validator.rb +9 -31
  449. data/lib/rubygems/version.rb +29 -21
  450. data/lib/rubygems/version_option.rb +6 -0
  451. data/rubygems-update.gemspec +4 -11
  452. data/setup.rb +2 -7
  453. data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
  454. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  455. data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
  456. data/test/rubygems/rubygems_plugin.rb +0 -2
  457. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
  458. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
  459. data/test/rubygems/test_bundled_ca.rb +42 -45
  460. data/test/rubygems/test_config.rb +0 -2
  461. data/test/rubygems/test_deprecate.rb +41 -5
  462. data/test/rubygems/test_gem.rb +405 -236
  463. data/test/rubygems/test_gem_available_set.rb +5 -6
  464. data/test/rubygems/test_gem_bundler_version_finder.rb +20 -2
  465. data/test/rubygems/test_gem_command.rb +144 -9
  466. data/test/rubygems/test_gem_command_manager.rb +40 -17
  467. data/test/rubygems/test_gem_commands_build_command.rb +386 -13
  468. data/test/rubygems/test_gem_commands_cert_command.rb +18 -6
  469. data/test/rubygems/test_gem_commands_check_command.rb +0 -2
  470. data/test/rubygems/test_gem_commands_cleanup_command.rb +35 -10
  471. data/test/rubygems/test_gem_commands_contents_command.rb +50 -19
  472. data/test/rubygems/test_gem_commands_dependency_command.rb +1 -3
  473. data/test/rubygems/test_gem_commands_environment_command.rb +21 -33
  474. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -2
  475. data/test/rubygems/test_gem_commands_generate_index_command.rb +32 -2
  476. data/test/rubygems/test_gem_commands_help_command.rb +16 -8
  477. data/test/rubygems/test_gem_commands_info_command.rb +6 -7
  478. data/test/rubygems/test_gem_commands_install_command.rb +368 -34
  479. data/test/rubygems/test_gem_commands_list_command.rb +0 -2
  480. data/test/rubygems/test_gem_commands_lock_command.rb +0 -2
  481. data/test/rubygems/test_gem_commands_mirror.rb +1 -2
  482. data/test/rubygems/test_gem_commands_open_command.rb +4 -6
  483. data/test/rubygems/test_gem_commands_outdated_command.rb +18 -1
  484. data/test/rubygems/test_gem_commands_owner_command.rb +62 -9
  485. data/test/rubygems/test_gem_commands_pristine_command.rb +148 -16
  486. data/test/rubygems/test_gem_commands_push_command.rb +94 -21
  487. data/test/rubygems/test_gem_commands_query_command.rb +35 -10
  488. data/test/rubygems/test_gem_commands_search_command.rb +0 -2
  489. data/test/rubygems/test_gem_commands_server_command.rb +6 -4
  490. data/test/rubygems/test_gem_commands_setup_command.rb +228 -128
  491. data/test/rubygems/test_gem_commands_signin_command.rb +36 -11
  492. data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
  493. data/test/rubygems/test_gem_commands_sources_command.rb +193 -9
  494. data/test/rubygems/test_gem_commands_specification_command.rb +46 -20
  495. data/test/rubygems/test_gem_commands_stale_command.rb +0 -2
  496. data/test/rubygems/test_gem_commands_uninstall_command.rb +108 -52
  497. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -2
  498. data/test/rubygems/test_gem_commands_update_command.rb +201 -29
  499. data/test/rubygems/test_gem_commands_which_command.rb +3 -5
  500. data/test/rubygems/test_gem_commands_yank_command.rb +86 -5
  501. data/test/rubygems/test_gem_config_file.rb +25 -13
  502. data/test/rubygems/test_gem_dependency.rb +6 -2
  503. data/test/rubygems/test_gem_dependency_installer.rb +169 -252
  504. data/test/rubygems/test_gem_dependency_list.rb +31 -26
  505. data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -3
  506. data/test/rubygems/test_gem_doctor.rb +28 -2
  507. data/test/rubygems/test_gem_ext_builder.rb +51 -44
  508. data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -23
  509. data/test/rubygems/test_gem_ext_configure_builder.rb +6 -14
  510. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +21 -29
  511. data/test/rubygems/test_gem_ext_rake_builder.rb +39 -22
  512. data/test/rubygems/test_gem_gem_runner.rb +47 -2
  513. data/test/rubygems/test_gem_gemcutter_utilities.rb +16 -13
  514. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -2
  515. data/test/rubygems/test_gem_indexer.rb +40 -55
  516. data/test/rubygems/test_gem_install_update_options.rb +45 -21
  517. data/test/rubygems/test_gem_installer.rb +661 -338
  518. data/test/rubygems/test_gem_local_remote_options.rb +0 -2
  519. data/test/rubygems/test_gem_name_tuple.rb +0 -2
  520. data/test/rubygems/test_gem_package.rb +132 -45
  521. data/test/rubygems/test_gem_package_old.rb +56 -55
  522. data/test/rubygems/test_gem_package_tar_header.rb +18 -1
  523. data/test/rubygems/test_gem_package_tar_reader.rb +0 -2
  524. data/test/rubygems/test_gem_package_tar_reader_entry.rb +6 -7
  525. data/test/rubygems/test_gem_package_tar_writer.rb +20 -12
  526. data/test/rubygems/test_gem_package_task.rb +46 -13
  527. data/test/rubygems/test_gem_path_support.rb +17 -13
  528. data/test/rubygems/test_gem_platform.rb +74 -7
  529. data/test/rubygems/test_gem_rdoc.rb +0 -1
  530. data/test/rubygems/test_gem_remote_fetcher.rb +223 -209
  531. data/test/rubygems/test_gem_request.rb +30 -19
  532. data/test/rubygems/test_gem_request_connection_pools.rb +2 -2
  533. data/test/rubygems/test_gem_request_set.rb +104 -29
  534. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +4 -6
  535. data/test/rubygems/test_gem_request_set_lockfile.rb +4 -5
  536. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -10
  537. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -118
  538. data/test/rubygems/test_gem_requirement.rb +50 -4
  539. data/test/rubygems/test_gem_resolver.rb +73 -31
  540. data/test/rubygems/test_gem_resolver_activation_request.rb +3 -34
  541. data/test/rubygems/test_gem_resolver_api_set.rb +60 -59
  542. data/test/rubygems/test_gem_resolver_api_specification.rb +3 -5
  543. data/test/rubygems/test_gem_resolver_best_set.rb +27 -6
  544. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -2
  545. data/test/rubygems/test_gem_resolver_conflict.rb +1 -7
  546. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -2
  547. data/test/rubygems/test_gem_resolver_git_set.rb +0 -2
  548. data/test/rubygems/test_gem_resolver_git_specification.rb +1 -2
  549. data/test/rubygems/test_gem_resolver_index_set.rb +2 -4
  550. data/test/rubygems/test_gem_resolver_index_specification.rb +7 -4
  551. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -3
  552. data/test/rubygems/test_gem_resolver_installer_set.rb +10 -10
  553. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -2
  554. data/test/rubygems/test_gem_resolver_lock_set.rb +3 -5
  555. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -2
  556. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -2
  557. data/test/rubygems/test_gem_resolver_specification.rb +0 -2
  558. data/test/rubygems/test_gem_resolver_vendor_set.rb +1 -3
  559. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -2
  560. data/test/rubygems/test_gem_security.rb +27 -25
  561. data/test/rubygems/test_gem_security_policy.rb +7 -12
  562. data/test/rubygems/test_gem_security_signer.rb +11 -12
  563. data/test/rubygems/test_gem_security_trust_dir.rb +4 -6
  564. data/test/rubygems/test_gem_server.rb +13 -12
  565. data/test/rubygems/test_gem_silent_ui.rb +0 -1
  566. data/test/rubygems/test_gem_source.rb +32 -17
  567. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -1
  568. data/test/rubygems/test_gem_source_git.rb +12 -18
  569. data/test/rubygems/test_gem_source_installed.rb +11 -13
  570. data/test/rubygems/test_gem_source_list.rb +1 -1
  571. data/test/rubygems/test_gem_source_local.rb +8 -9
  572. data/test/rubygems/test_gem_source_lock.rb +17 -19
  573. data/test/rubygems/test_gem_source_specific_file.rb +9 -10
  574. data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
  575. data/test/rubygems/test_gem_source_vendor.rb +7 -9
  576. data/test/rubygems/test_gem_spec_fetcher.rb +11 -4
  577. data/test/rubygems/test_gem_specification.rb +363 -245
  578. data/test/rubygems/test_gem_stream_ui.rb +3 -1
  579. data/test/rubygems/test_gem_stub_specification.rb +6 -7
  580. data/test/rubygems/test_gem_text.rb +1 -2
  581. data/test/rubygems/test_gem_uninstaller.rb +165 -22
  582. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -2
  583. data/test/rubygems/test_gem_uri_formatter.rb +0 -2
  584. data/test/rubygems/test_gem_util.rb +17 -15
  585. data/test/rubygems/test_gem_validator.rb +4 -7
  586. data/test/rubygems/test_gem_version.rb +23 -10
  587. data/test/rubygems/test_gem_version_option.rb +1 -3
  588. data/test/rubygems/test_kernel.rb +25 -9
  589. data/test/rubygems/test_project_sanity.rb +20 -0
  590. data/test/rubygems/test_remote_fetch_error.rb +1 -2
  591. data/test/rubygems/test_require.rb +394 -56
  592. data/test/test_changelog_generator.rb +17 -0
  593. metadata +109 -155
  594. data/.rubocop.yml +0 -67
  595. data/.travis.yml +0 -38
  596. data/appveyor.yml +0 -43
  597. data/bundler/CODE_OF_CONDUCT.md +0 -42
  598. data/bundler/CONTRIBUTING.md +0 -17
  599. data/bundler/exe/bundle_ruby +0 -60
  600. data/bundler/lib/bundler/cli/package.rb +0 -49
  601. data/bundler/lib/bundler/compatibility_guard.rb +0 -14
  602. data/bundler/lib/bundler/gem_remote_fetcher.rb +0 -43
  603. data/bundler/lib/bundler/ssl_certs/certificate_manager.rb +0 -66
  604. data/bundler/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  605. data/bundler/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
  606. data/bundler/lib/bundler/templates/newgem/test/test_helper.rb.tt +0 -4
  607. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
  608. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb +0 -27
  609. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb +0 -129
  610. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb +0 -12
  611. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb +0 -129
  612. data/lib/rubygems/source_local.rb +0 -7
  613. data/lib/rubygems/source_specific_file.rb +0 -6
  614. data/lib/rubygems/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +0 -21
  615. data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  616. data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
  617. data/lib/ubygems.rb +0 -14
  618. data/util/CL2notes +0 -55
  619. data/util/ci +0 -82
  620. data/util/cops/deprecations.rb +0 -52
  621. data/util/create_certs.rb +0 -171
  622. data/util/create_certs.sh +0 -27
  623. data/util/create_encrypted_key.rb +0 -16
  624. data/util/generate_spdx_license_list.rb +0 -61
  625. data/util/patch_with_prs.rb +0 -77
  626. data/util/rubocop +0 -8
  627. data/util/update_bundled_ca_certificates.rb +0 -139
  628. data/util/update_changelog.rb +0 -67
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/commands/which_command'
4
4
 
5
5
  class TestGemCommandsWhichCommand < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
9
8
  Gem::Specification.reset
@@ -33,7 +32,7 @@ class TestGemCommandsWhichCommand < Gem::TestCase
33
32
  end
34
33
 
35
34
  assert_equal '', @ui.output
36
- assert_match %r%Can.t find Ruby library file or shared library directory\n%,
35
+ assert_match %r{Can.t find Ruby library file or shared library directory\n},
37
36
  @ui.error
38
37
  end
39
38
 
@@ -51,7 +50,7 @@ class TestGemCommandsWhichCommand < Gem::TestCase
51
50
  end
52
51
 
53
52
  assert_equal "#{@foo_bar.full_gem_path}/lib/foo_bar.rb\n", @ui.output
54
- assert_match %r%Can.t find Ruby library file or shared library missinglib\n%,
53
+ assert_match %r{Can.t find Ruby library file or shared library missinglib\n},
55
54
  @ui.error
56
55
  end
57
56
 
@@ -65,7 +64,7 @@ class TestGemCommandsWhichCommand < Gem::TestCase
65
64
  end
66
65
 
67
66
  assert_equal '', @ui.output
68
- assert_match %r%Can.t find Ruby library file or shared library missinglib\n%,
67
+ assert_match %r{Can.t find Ruby library file or shared library missinglib\n},
69
68
  @ui.error
70
69
  end
71
70
 
@@ -82,5 +81,4 @@ class TestGemCommandsWhichCommand < Gem::TestCase
82
81
  FileUtils.touch filename
83
82
  end
84
83
  end
85
-
86
84
  end
@@ -6,13 +6,21 @@ class TestGemCommandsYankCommand < Gem::TestCase
6
6
  def setup
7
7
  super
8
8
 
9
+ credential_setup
10
+
9
11
  @cmd = Gem::Commands::YankCommand.new
10
12
  @cmd.options[:host] = 'http://example'
11
13
 
12
14
  @fetcher = Gem::RemoteFetcher.fetcher
13
15
 
14
16
  Gem.configuration.rubygems_api_key = 'key'
15
- Gem.configuration.api_keys[:KEY] = 'other'
17
+ Gem.configuration.api_keys[:KEY] = 'other'
18
+ end
19
+
20
+ def teardown
21
+ credential_teardown
22
+
23
+ super
16
24
  end
17
25
 
18
26
  def test_handle_options
@@ -45,8 +53,8 @@ class TestGemCommandsYankCommand < Gem::TestCase
45
53
  @cmd.execute
46
54
  end
47
55
 
48
- assert_match %r%Yanking gem from http://example%, @ui.output
49
- assert_match %r%Successfully yanked%, @ui.output
56
+ assert_match %r{Yanking gem from http://example}, @ui.output
57
+ assert_match %r{Successfully yanked}, @ui.output
50
58
 
51
59
  platform = Gem.platforms[1]
52
60
  body = @fetcher.last_request.body.split('&').sort
@@ -57,6 +65,50 @@ class TestGemCommandsYankCommand < Gem::TestCase
57
65
  assert_equal [yank_uri], @fetcher.paths
58
66
  end
59
67
 
68
+ def test_execute_with_otp_success
69
+ response_fail = 'You have enabled multifactor authentication but your request doesn\'t have the correct OTP code. Please check it and retry.'
70
+ yank_uri = 'http://example/api/v1/gems/yank'
71
+ @fetcher.data[yank_uri] = [
72
+ [response_fail, 401, 'Unauthorized'],
73
+ ['Successfully yanked', 200, 'OK'],
74
+ ]
75
+
76
+ @cmd.options[:args] = %w[a]
77
+ @cmd.options[:added_platform] = true
78
+ @cmd.options[:version] = req('= 1.0')
79
+
80
+ @otp_ui = Gem::MockGemUi.new "111111\n"
81
+ use_ui @otp_ui do
82
+ @cmd.execute
83
+ end
84
+
85
+ assert_match 'You have enabled multi-factor authentication. Please enter OTP code.', @otp_ui.output
86
+ assert_match 'Code: ', @otp_ui.output
87
+ assert_match %r{Yanking gem from http://example}, @otp_ui.output
88
+ assert_match %r{Successfully yanked}, @otp_ui.output
89
+ assert_equal '111111', @fetcher.last_request['OTP']
90
+ end
91
+
92
+ def test_execute_with_otp_failure
93
+ response = 'You have enabled multifactor authentication but your request doesn\'t have the correct OTP code. Please check it and retry.'
94
+ yank_uri = 'http://example/api/v1/gems/yank'
95
+ @fetcher.data[yank_uri] = [response, 401, 'Unauthorized']
96
+
97
+ @cmd.options[:args] = %w[a]
98
+ @cmd.options[:added_platform] = true
99
+ @cmd.options[:version] = req('= 1.0')
100
+
101
+ @otp_ui = Gem::MockGemUi.new "111111\n"
102
+ use_ui @otp_ui do
103
+ @cmd.execute
104
+ end
105
+
106
+ assert_match 'You have enabled multi-factor authentication. Please enter OTP code.', @otp_ui.output
107
+ assert_match response, @otp_ui.output
108
+ assert_match 'Code: ', @otp_ui.output
109
+ assert_equal '111111', @fetcher.last_request['OTP']
110
+ end
111
+
60
112
  def test_execute_key
61
113
  yank_uri = 'http://example/api/v1/gems/yank'
62
114
  @fetcher.data[yank_uri] = ['Successfully yanked', 200, 'OK']
@@ -87,8 +139,8 @@ class TestGemCommandsYankCommand < Gem::TestCase
87
139
  @cmd.execute
88
140
  end
89
141
 
90
- assert_match %r%Yanking gem from https://other.example%, @ui.output
91
- assert_match %r%Successfully yanked%, @ui.output
142
+ assert_match %r{Yanking gem from https://other.example}, @ui.output
143
+ assert_match %r{Successfully yanked}, @ui.output
92
144
 
93
145
  body = @fetcher.last_request.body.split('&').sort
94
146
  assert_equal %w[gem_name=a version=1.0], body
@@ -96,4 +148,33 @@ class TestGemCommandsYankCommand < Gem::TestCase
96
148
  assert_equal [yank_uri], @fetcher.paths
97
149
  end
98
150
 
151
+ def test_yank_gem_unathorized_api_key
152
+ response_forbidden = "The API key doesn't have access"
153
+ response_success = 'Successfully yanked'
154
+ host = 'http://example'
155
+
156
+ @fetcher.data["#{host}/api/v1/gems/yank"] = [
157
+ [response_forbidden, 403, 'Forbidden'],
158
+ [response_success, 200, "OK"],
159
+ ]
160
+
161
+ @fetcher.data["#{host}/api/v1/api_key"] = ["", 200, "OK"]
162
+ @cmd.options[:args] = %w[a]
163
+ @cmd.options[:added_platform] = true
164
+ @cmd.options[:version] = req('= 1.0')
165
+ @cmd.instance_variable_set :@host, host
166
+ @cmd.instance_variable_set :@scope, :yank_rubygem
167
+
168
+ @ui = Gem::MockGemUi.new "some@mail.com\npass\n"
169
+ use_ui @ui do
170
+ @cmd.execute
171
+ end
172
+
173
+ access_notice = "The existing key doesn't have access of yank_rubygem on http://example. Please sign in to update access."
174
+ assert_match access_notice, @ui.output
175
+ assert_match "Email:", @ui.output
176
+ assert_match "Password:", @ui.output
177
+ assert_match "Added yank_rubygem scope to the existing API key", @ui.output
178
+ assert_match response_success, @ui.output
179
+ end
99
180
  end
@@ -3,18 +3,15 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/config_file'
4
4
 
5
5
  class TestGemConfigFile < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
9
8
 
9
+ credential_setup
10
+
10
11
  @temp_conf = File.join @tempdir, '.gemrc'
11
12
 
12
13
  @cfg_args = %W[--config-file #{@temp_conf}]
13
14
 
14
- @orig_SYSTEM_WIDE_CONFIG_FILE = Gem::ConfigFile::SYSTEM_WIDE_CONFIG_FILE
15
- Gem::ConfigFile.send :remove_const, :SYSTEM_WIDE_CONFIG_FILE
16
- Gem::ConfigFile.send :const_set, :SYSTEM_WIDE_CONFIG_FILE,
17
- File.join(@tempdir, 'system-gemrc')
18
15
  Gem::ConfigFile::OPERATING_SYSTEM_DEFAULTS.clear
19
16
  Gem::ConfigFile::PLATFORM_DEFAULTS.clear
20
17
 
@@ -27,12 +24,11 @@ class TestGemConfigFile < Gem::TestCase
27
24
  def teardown
28
25
  Gem::ConfigFile::OPERATING_SYSTEM_DEFAULTS.clear
29
26
  Gem::ConfigFile::PLATFORM_DEFAULTS.clear
30
- Gem::ConfigFile.send :remove_const, :SYSTEM_WIDE_CONFIG_FILE
31
- Gem::ConfigFile.send :const_set, :SYSTEM_WIDE_CONFIG_FILE,
32
- @orig_SYSTEM_WIDE_CONFIG_FILE
33
27
 
34
28
  ENV['GEMRC'] = @env_gemrc
35
29
 
30
+ credential_teardown
31
+
36
32
  super
37
33
  end
38
34
 
@@ -45,6 +41,7 @@ class TestGemConfigFile < Gem::TestCase
45
41
  assert_equal true, @cfg.verbose
46
42
  assert_equal [@gem_repo], Gem.sources
47
43
  assert_equal 365, @cfg.cert_expiration_length_days
44
+ assert_equal false, @cfg.ipv4_fallback_enabled
48
45
 
49
46
  File.open @temp_conf, 'w' do |fp|
50
47
  fp.puts ":backtrace: true"
@@ -60,6 +57,7 @@ class TestGemConfigFile < Gem::TestCase
60
57
  fp.puts ":ssl_verify_mode: 0"
61
58
  fp.puts ":ssl_ca_cert: /etc/ssl/certs"
62
59
  fp.puts ":cert_expiration_length_days: 28"
60
+ fp.puts ":ipv4_fallback_enabled: true"
63
61
  end
64
62
 
65
63
  util_config_file
@@ -74,6 +72,14 @@ class TestGemConfigFile < Gem::TestCase
74
72
  assert_equal 0, @cfg.ssl_verify_mode
75
73
  assert_equal '/etc/ssl/certs', @cfg.ssl_ca_cert
76
74
  assert_equal 28, @cfg.cert_expiration_length_days
75
+ assert_equal true, @cfg.ipv4_fallback_enabled
76
+ end
77
+
78
+ def test_initialize_ipv4_fallback_enabled_env
79
+ ENV['IPV4_FALLBACK_ENABLED'] = 'true'
80
+ util_config_file %W[--config-file #{@temp_conf}]
81
+
82
+ assert_equal true, @cfg.ipv4_fallback_enabled
77
83
  end
78
84
 
79
85
  def test_initialize_handle_arguments_config_file
@@ -157,8 +163,8 @@ class TestGemConfigFile < Gem::TestCase
157
163
  File.open conf3, 'w' do |fp|
158
164
  fp.puts ':verbose: :loud'
159
165
  end
160
-
161
- ENV['GEMRC'] = conf1 + ':' + conf2 + ';' + conf3
166
+ ps = File::PATH_SEPARATOR
167
+ ENV['GEMRC'] = conf1 + ps + conf2 + ps + conf3
162
168
 
163
169
  util_config_file
164
170
 
@@ -167,11 +173,17 @@ class TestGemConfigFile < Gem::TestCase
167
173
  assert_equal 2048, @cfg.bulk_threshold
168
174
  end
169
175
 
176
+ def test_set_config_file_name_from_environment_variable
177
+ ENV['GEMRC'] = "/tmp/.gemrc"
178
+ cfg = Gem::ConfigFile.new([])
179
+ assert_equal cfg.config_file_name, "/tmp/.gemrc"
180
+ end
181
+
170
182
  def test_api_keys
171
183
  assert_nil @cfg.instance_variable_get :@api_keys
172
184
 
173
185
  temp_cred = File.join Gem.user_home, '.gem', 'credentials'
174
- FileUtils.mkdir File.dirname(temp_cred)
186
+ FileUtils.mkdir_p File.dirname(temp_cred)
175
187
  File.open temp_cred, 'w', 0600 do |fp|
176
188
  fp.puts ':rubygems_api_key: 701229f217cdf23b1344c7b4b54ca97'
177
189
  end
@@ -297,7 +309,7 @@ if you believe they were disclosed to a third party.
297
309
 
298
310
  def test_load_api_keys
299
311
  temp_cred = File.join Gem.user_home, '.gem', 'credentials'
300
- FileUtils.mkdir File.dirname(temp_cred)
312
+ FileUtils.mkdir_p File.dirname(temp_cred)
301
313
  File.open temp_cred, 'w', 0600 do |fp|
302
314
  fp.puts ":rubygems_api_key: 701229f217cdf23b1344c7b4b54ca97"
303
315
  fp.puts ":other: a5fdbb6ba150cbb83aad2bb2fede64c"
@@ -386,7 +398,7 @@ if you believe they were disclosed to a third party.
386
398
  util_config_file
387
399
 
388
400
  # These should not be written out to the config file.
389
- assert_equal false, @cfg.backtrace, 'backtrace'
401
+ assert_equal false, @cfg.backtrace, 'backtrace'
390
402
  assert_equal Gem::ConfigFile::DEFAULT_BULK_THRESHOLD, @cfg.bulk_threshold,
391
403
  'bulk_threshold'
392
404
  assert_equal true, @cfg.update_sources, 'update_sources'
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/dependency'
4
4
 
5
5
  class TestGemDependency < Gem::TestCase
6
-
7
6
  def test_initialize
8
7
  d = dep "pkg", "> 1.0"
9
8
 
@@ -385,5 +384,10 @@ class TestGemDependency < Gem::TestCase
385
384
  assert_match "Could not find 'b' (= 2.0) among 1 total gem(s)", e.message
386
385
  end
387
386
 
388
-
387
+ def test_identity
388
+ assert_equal dep("a", "= 1").identity, :released
389
+ assert_equal dep("a", "= 1.a").identity, :complete
390
+ assert_equal dep("a", " >= 1.a").identity, :abs_latest
391
+ assert_equal dep("a").identity, :latest
392
+ end
389
393
  end
@@ -4,7 +4,6 @@ require 'rubygems/dependency_installer'
4
4
  require 'rubygems/security'
5
5
 
6
6
  class TestGemDependencyInstaller < Gem::TestCase
7
-
8
7
  def setup
9
8
  super
10
9
  common_installer_setup
@@ -26,78 +25,26 @@ class TestGemDependencyInstaller < Gem::TestCase
26
25
  end
27
26
 
28
27
  def util_setup_gems
29
- @a1, @a1_gem = util_gem 'a', '1' do |s| s.executables << 'a_bin' end
28
+ @a1, @a1_gem = util_gem 'a', '1' do |s|
29
+ s.executables << 'a_bin'
30
+ end
31
+
30
32
  @a1_pre, @a1_pre_gem = util_gem 'a', '1.a'
31
- @b1, @b1_gem = util_gem 'b', '1' do |s|
33
+
34
+ @b1, @b1_gem = util_gem 'b', '1' do |s|
32
35
  s.add_dependency 'a'
33
36
  s.add_development_dependency 'aa'
34
37
  end
35
38
 
36
- @c1, @c1_gem = util_gem 'c', '1' do |s|
39
+ @c1, @c1_gem = util_gem 'c', '1' do |s|
37
40
  s.add_development_dependency 'b'
38
41
  end
39
42
 
40
- @d1, @d1_gem = util_gem 'd', '1' do |s|
43
+ @d1, @d1_gem = util_gem 'd', '1' do |s|
41
44
  s.add_development_dependency 'c'
42
45
  end
43
46
 
44
- util_clear_gems
45
- util_reset_gems
46
- end
47
-
48
- def test_available_set_for_name
49
- util_setup_gems
50
- p1a, = util_gem 'a', '10.a'
51
- util_setup_spec_fetcher p1a, @a1, @a1_pre
52
-
53
- inst = Gem::DependencyInstaller.new
54
-
55
- available = inst.available_set_for 'a', Gem::Requirement.default
56
-
57
- assert_equal %w[a-1], available.set.map { |s| s.spec.full_name }
58
- end
59
-
60
- def test_available_set_for_name_prerelease
61
- util_setup_gems
62
- p1a, = util_gem 'a', '10.a'
63
- util_setup_spec_fetcher p1a, @a1, @a1_pre
64
-
65
- inst = Gem::DependencyInstaller.new :prerelease => true
66
-
67
- available = inst.available_set_for 'a', Gem::Requirement.default
68
-
69
- assert_equal %w[a-10.a],
70
- available.sorted.map { |s| s.spec.full_name }
71
- end
72
-
73
- def test_available_set_for_dep
74
- util_setup_gems
75
- p1a, = util_gem 'a', '10.a'
76
- util_setup_spec_fetcher p1a, @a1, @a1_pre
77
-
78
- inst = Gem::DependencyInstaller.new
79
-
80
- dep = Gem::Dependency.new 'a', Gem::Requirement.default
81
-
82
- available = inst.available_set_for dep, Gem::Requirement.default
83
-
84
- assert_equal %w[a-1], available.set.map { |s| s.spec.full_name }
85
- end
86
-
87
- def test_available_set_for_dep_prerelease
88
- util_setup_gems
89
- p1a, = util_gem 'a', '10.a'
90
- util_setup_spec_fetcher p1a, @a1, @a1_pre
91
-
92
- inst = Gem::DependencyInstaller.new :prerelease => true
93
-
94
- dep = Gem::Dependency.new 'a', Gem::Requirement.default
95
- dep.prerelease = true
96
-
97
- available = inst.available_set_for dep, Gem::Requirement.default
98
-
99
- assert_equal %w[a-10.a],
100
- available.sorted.map { |s| s.spec.full_name }
47
+ util_setup_spec_fetcher(@a1, @a1_pre, @b1, @d1)
101
48
  end
102
49
 
103
50
  def test_install
@@ -121,7 +68,6 @@ class TestGemDependencyInstaller < Gem::TestCase
121
68
  p1a, gem = util_gem 'a', '10.a'
122
69
 
123
70
  util_setup_spec_fetcher(p1a, @a1, @a1_pre)
124
- util_clear_gems
125
71
 
126
72
  p1a_data = Gem.read_binary(gem)
127
73
 
@@ -160,7 +106,6 @@ class TestGemDependencyInstaller < Gem::TestCase
160
106
  p1a, gem = util_gem 'p', '1.a'
161
107
 
162
108
  util_setup_spec_fetcher(p1a)
163
- util_clear_gems
164
109
 
165
110
  p1a_data = Gem.read_binary(gem)
166
111
 
@@ -180,7 +125,6 @@ class TestGemDependencyInstaller < Gem::TestCase
180
125
  util_setup_gems
181
126
 
182
127
  util_setup_spec_fetcher(@a1, @a1_pre)
183
- util_clear_gems
184
128
 
185
129
  p1a_data = Gem.read_binary(@a1_gem)
186
130
 
@@ -201,11 +145,9 @@ class TestGemDependencyInstaller < Gem::TestCase
201
145
  s.add_dependency 'b'
202
146
  end
203
147
 
204
- util_clear_gems
205
-
206
148
  FileUtils.mv @a1_gem, @tempdir
207
149
  FileUtils.mv @b1_gem, @tempdir
208
- FileUtils.mv e1_gem, @tempdir
150
+ FileUtils.mv e1_gem, @tempdir
209
151
 
210
152
  inst = nil
211
153
 
@@ -214,7 +156,7 @@ class TestGemDependencyInstaller < Gem::TestCase
214
156
  inst.install 'b'
215
157
  end
216
158
 
217
- assert_equal %w[b-1], inst.installed_gems.map { |s| s.full_name },
159
+ assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name },
218
160
  'sanity check'
219
161
 
220
162
  Dir.chdir @tempdir do
@@ -222,7 +164,7 @@ class TestGemDependencyInstaller < Gem::TestCase
222
164
  inst.install 'e'
223
165
  end
224
166
 
225
- assert_equal %w[a-1 e-1], inst.installed_gems.map { |s| s.full_name }
167
+ assert_equal %w[a-1 e-1], inst.installed_gems.map {|s| s.full_name }
226
168
  end
227
169
 
228
170
  def test_install_cache_dir
@@ -239,7 +181,7 @@ class TestGemDependencyInstaller < Gem::TestCase
239
181
  inst.install 'b'
240
182
  end
241
183
 
242
- assert_equal %w[a-1 b-1], inst.installed_gems.map { |s| s.full_name }
184
+ assert_equal %w[a-1 b-1], inst.installed_gems.map {|s| s.full_name }
243
185
 
244
186
  assert File.exist? File.join(@gemhome, "cache", @a1.file_name)
245
187
  assert File.exist? File.join(@gemhome, "cache", @b1.file_name)
@@ -264,7 +206,7 @@ class TestGemDependencyInstaller < Gem::TestCase
264
206
  inst.install 'a', req("= 2")
265
207
  end
266
208
 
267
- assert_equal %w[a-2], inst.installed_gems.map { |s| s.full_name },
209
+ assert_equal %w[a-2], inst.installed_gems.map {|s| s.full_name },
268
210
  'sanity check'
269
211
 
270
212
  FileUtils.rm File.join(@tempdir, a2.file_name)
@@ -275,7 +217,7 @@ class TestGemDependencyInstaller < Gem::TestCase
275
217
  end
276
218
 
277
219
  assert_equal %w[a-2 b-1], Gem::Specification.map(&:full_name)
278
- assert_equal %w[b-1], inst.installed_gems.map { |s| s.full_name }
220
+ assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name }
279
221
  end
280
222
 
281
223
  # This asserts that if a gem's dependency is satisfied by an
@@ -296,7 +238,7 @@ class TestGemDependencyInstaller < Gem::TestCase
296
238
  FileUtils.mv @a1_gem, @tempdir
297
239
  FileUtils.mv a2_gem, @tempdir # not in index
298
240
  FileUtils.mv @b1_gem, @tempdir
299
- FileUtils.mv a3_gem, @tempdir
241
+ FileUtils.mv a3_gem, @tempdir
300
242
 
301
243
  Dir.chdir @tempdir do
302
244
  Gem::DependencyInstaller.new.install 'a', req("= 2")
@@ -312,7 +254,7 @@ class TestGemDependencyInstaller < Gem::TestCase
312
254
  end
313
255
 
314
256
  assert_equal %w[a-2 b-1], Gem::Specification.map(&:full_name)
315
- assert_equal %w[b-1], inst.installed_gems.map { |s| s.full_name }
257
+ assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name }
316
258
  end
317
259
 
318
260
  def test_install_dependency
@@ -335,7 +277,7 @@ class TestGemDependencyInstaller < Gem::TestCase
335
277
  inst.install 'b'
336
278
  end
337
279
 
338
- assert_equal %w[a-1 b-1], inst.installed_gems.map { |s| s.full_name }
280
+ assert_equal %w[a-1 b-1], inst.installed_gems.map {|s| s.full_name }
339
281
 
340
282
  assert done_installing_ran, 'post installs hook was not run'
341
283
  end
@@ -345,8 +287,6 @@ class TestGemDependencyInstaller < Gem::TestCase
345
287
 
346
288
  @aa1, @aa1_gem = util_gem 'aa', '1'
347
289
 
348
- util_reset_gems
349
-
350
290
  FileUtils.mv @a1_gem, @tempdir
351
291
  FileUtils.mv @aa1_gem, @tempdir
352
292
  FileUtils.mv @b1_gem, @tempdir
@@ -357,7 +297,7 @@ class TestGemDependencyInstaller < Gem::TestCase
357
297
  inst.install 'b'
358
298
  end
359
299
 
360
- assert_equal %w[a-1 aa-1 b-1], inst.installed_gems.map { |s| s.full_name }
300
+ assert_equal %w[a-1 aa-1 b-1], inst.installed_gems.map {|s| s.full_name }
361
301
  end
362
302
 
363
303
  def test_install_dependency_development_deep
@@ -365,8 +305,6 @@ class TestGemDependencyInstaller < Gem::TestCase
365
305
 
366
306
  @aa1, @aa1_gem = util_gem 'aa', '1'
367
307
 
368
- util_reset_gems
369
-
370
308
  FileUtils.mv @a1_gem, @tempdir
371
309
  FileUtils.mv @aa1_gem, @tempdir
372
310
  FileUtils.mv @b1_gem, @tempdir
@@ -379,7 +317,7 @@ class TestGemDependencyInstaller < Gem::TestCase
379
317
  inst.install 'd'
380
318
  end
381
319
 
382
- assert_equal %w[a-1 aa-1 b-1 c-1 d-1], inst.installed_gems.map { |s| s.full_name }
320
+ assert_equal %w[a-1 aa-1 b-1 c-1 d-1], inst.installed_gems.map {|s| s.full_name }
383
321
  end
384
322
 
385
323
  def test_install_dependency_development_shallow
@@ -387,8 +325,6 @@ class TestGemDependencyInstaller < Gem::TestCase
387
325
 
388
326
  @aa1, @aa1_gem = util_gem 'aa', '1'
389
327
 
390
- util_reset_gems
391
-
392
328
  FileUtils.mv @a1_gem, @tempdir
393
329
  FileUtils.mv @aa1_gem, @tempdir
394
330
  FileUtils.mv @b1_gem, @tempdir
@@ -401,7 +337,7 @@ class TestGemDependencyInstaller < Gem::TestCase
401
337
  inst.install 'd'
402
338
  end
403
339
 
404
- assert_equal %w[c-1 d-1], inst.installed_gems.map { |s| s.full_name }
340
+ assert_equal %w[c-1 d-1], inst.installed_gems.map {|s| s.full_name }
405
341
  end
406
342
 
407
343
  def test_install_dependency_existing
@@ -417,7 +353,7 @@ class TestGemDependencyInstaller < Gem::TestCase
417
353
  inst.install 'b'
418
354
  end
419
355
 
420
- assert_equal %w[b-1], inst.installed_gems.map { |s| s.full_name }
356
+ assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name }
421
357
  end
422
358
 
423
359
  def test_install_dependency_existing_extension
@@ -434,7 +370,7 @@ class TestGemDependencyInstaller < Gem::TestCase
434
370
  e1 = util_spec 'e', '1', nil, 'extconf.rb' do |s|
435
371
  s.extensions << 'extconf.rb'
436
372
  end
437
- e1_gem = File.join @tempdir, 'gems', "#{e1.full_name}.gem"
373
+ e1_gem = e1.cache_file
438
374
 
439
375
  _, f1_gem = util_gem 'f', '1', 'e' => nil
440
376
 
@@ -454,7 +390,7 @@ class TestGemDependencyInstaller < Gem::TestCase
454
390
  Dir.chdir pwd
455
391
  end
456
392
 
457
- assert_equal %w[f-1], inst.installed_gems.map { |s| s.full_name }
393
+ assert_equal %w[f-1], inst.installed_gems.map {|s| s.full_name }
458
394
 
459
395
  assert_path_exists e1.extension_dir
460
396
  end
@@ -474,7 +410,7 @@ class TestGemDependencyInstaller < Gem::TestCase
474
410
  inst.install 'f'
475
411
  end
476
412
 
477
- assert_equal %w[f-2], inst.installed_gems.map { |s| s.full_name }
413
+ assert_equal %w[f-2], inst.installed_gems.map {|s| s.full_name }
478
414
  end
479
415
 
480
416
  def test_install_local
@@ -488,7 +424,7 @@ class TestGemDependencyInstaller < Gem::TestCase
488
424
  inst.install 'a-1.gem'
489
425
  end
490
426
 
491
- assert_equal %w[a-1], inst.installed_gems.map { |s| s.full_name }
427
+ assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name }
492
428
  end
493
429
 
494
430
  def test_install_local_prerelease
@@ -502,7 +438,7 @@ class TestGemDependencyInstaller < Gem::TestCase
502
438
  inst.install 'a-1.a.gem'
503
439
  end
504
440
 
505
- assert_equal %w[a-1.a], inst.installed_gems.map { |s| s.full_name }
441
+ assert_equal %w[a-1.a], inst.installed_gems.map {|s| s.full_name }
506
442
  end
507
443
 
508
444
  def test_install_local_dependency
@@ -518,7 +454,7 @@ class TestGemDependencyInstaller < Gem::TestCase
518
454
  inst.install 'b-1.gem'
519
455
  end
520
456
 
521
- assert_equal %w[a-1 b-1], inst.installed_gems.map { |s| s.full_name }
457
+ assert_equal %w[a-1 b-1], inst.installed_gems.map {|s| s.full_name }
522
458
  end
523
459
 
524
460
  def test_install_local_dependency_installed
@@ -536,7 +472,7 @@ class TestGemDependencyInstaller < Gem::TestCase
536
472
  inst.install 'b-1.gem'
537
473
  end
538
474
 
539
- assert_equal %w[b-1], inst.installed_gems.map { |s| s.full_name }
475
+ assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name }
540
476
  end
541
477
 
542
478
  def test_install_local_subdir
@@ -549,7 +485,7 @@ class TestGemDependencyInstaller < Gem::TestCase
549
485
  inst.install 'gems/a-1.gem'
550
486
  end
551
487
 
552
- assert_equal %w[a-1], inst.installed_gems.map { |s| s.full_name }
488
+ assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name }
553
489
  end
554
490
 
555
491
  def test_install_minimal_deps
@@ -563,8 +499,6 @@ class TestGemDependencyInstaller < Gem::TestCase
563
499
  s.add_dependency 'a'
564
500
  end
565
501
 
566
- util_clear_gems
567
-
568
502
  FileUtils.mv @a1_gem, @tempdir
569
503
  FileUtils.mv @b1_gem, @tempdir
570
504
  FileUtils.mv b2_gem, @tempdir
@@ -577,7 +511,7 @@ class TestGemDependencyInstaller < Gem::TestCase
577
511
  inst.install 'b', req('= 1')
578
512
  end
579
513
 
580
- assert_equal %w[b-1], inst.installed_gems.map { |s| s.full_name },
514
+ assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name },
581
515
  'sanity check'
582
516
 
583
517
  Dir.chdir @tempdir do
@@ -585,7 +519,41 @@ class TestGemDependencyInstaller < Gem::TestCase
585
519
  inst.install 'e'
586
520
  end
587
521
 
588
- assert_equal %w[a-1 e-1], inst.installed_gems.map { |s| s.full_name }
522
+ assert_equal %w[a-1 e-1], inst.installed_gems.map {|s| s.full_name }
523
+ end
524
+
525
+ def test_install_no_minimal_deps
526
+ util_setup_gems
527
+
528
+ _, e1_gem = util_gem 'e', '1' do |s|
529
+ s.add_dependency 'b'
530
+ end
531
+
532
+ _, b2_gem = util_gem 'b', '2' do |s|
533
+ s.add_dependency 'a'
534
+ end
535
+
536
+ FileUtils.mv @a1_gem, @tempdir
537
+ FileUtils.mv @b1_gem, @tempdir
538
+ FileUtils.mv b2_gem, @tempdir
539
+ FileUtils.mv e1_gem, @tempdir
540
+
541
+ inst = nil
542
+
543
+ Dir.chdir @tempdir do
544
+ inst = Gem::DependencyInstaller.new :ignore_dependencies => true
545
+ inst.install 'b', req('= 1')
546
+ end
547
+
548
+ assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name },
549
+ 'sanity check'
550
+
551
+ Dir.chdir @tempdir do
552
+ inst = Gem::DependencyInstaller.new :minimal_deps => false
553
+ inst.install 'e'
554
+ end
555
+
556
+ assert_equal %w[a-1 b-2 e-1], inst.installed_gems.map {|s| s.full_name }
589
557
  end
590
558
 
591
559
  def test_install_no_document
@@ -618,7 +586,7 @@ class TestGemDependencyInstaller < Gem::TestCase
618
586
 
619
587
  env = "/\\S+/env" unless Gem.win_platform?
620
588
 
621
- assert_match %r|\A#!#{env} #{RbConfig::CONFIG['ruby_install_name']}\n|,
589
+ assert_match %r{\A#!#{env} #{RbConfig::CONFIG['ruby_install_name']}\n},
622
590
  File.read(File.join(@gemhome, 'bin', 'a_bin'))
623
591
  end
624
592
 
@@ -635,7 +603,7 @@ class TestGemDependencyInstaller < Gem::TestCase
635
603
  inst.install 'b'
636
604
  end
637
605
 
638
- assert_equal %w[b-1], inst.installed_gems.map { |s| s.full_name }
606
+ assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name }
639
607
  end
640
608
 
641
609
  def test_install_build_args
@@ -665,7 +633,7 @@ class TestGemDependencyInstaller < Gem::TestCase
665
633
  inst.install 'b'
666
634
  end
667
635
 
668
- assert_equal %w[b-1], inst.installed_gems.map { |s| s.full_name }
636
+ assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name }
669
637
  end
670
638
 
671
639
  def test_install_install_dir
@@ -686,7 +654,7 @@ class TestGemDependencyInstaller < Gem::TestCase
686
654
  inst.install 'b'
687
655
  end
688
656
 
689
- assert_equal %w[a-1 b-1], inst.installed_gems.map { |s| s.full_name }
657
+ assert_equal %w[a-1 b-1], inst.installed_gems.map {|s| s.full_name }
690
658
 
691
659
  assert File.exist?(File.join(gemhome2, 'specifications', @a1.spec_name))
692
660
  assert File.exist?(File.join(gemhome2, 'cache', @a1.file_name))
@@ -710,7 +678,7 @@ class TestGemDependencyInstaller < Gem::TestCase
710
678
  inst.install 'b'
711
679
  end
712
680
 
713
- assert_equal %w[a-1 b-1], inst.installed_gems.map { |s| s.full_name }
681
+ assert_equal %w[a-1 b-1], inst.installed_gems.map {|s| s.full_name }
714
682
  a1, b1 = inst.installed_gems
715
683
 
716
684
  assert_equal a1.spec_file, a1.loaded_from
@@ -734,7 +702,7 @@ class TestGemDependencyInstaller < Gem::TestCase
734
702
  inst.install 'b'
735
703
  end
736
704
 
737
- assert_equal %w[a-1 b-1], inst.installed_gems.map { |s| s.full_name }
705
+ assert_equal %w[a-1 b-1], inst.installed_gems.map {|s| s.full_name }
738
706
  end
739
707
 
740
708
  def test_install_domain_local
@@ -753,7 +721,7 @@ class TestGemDependencyInstaller < Gem::TestCase
753
721
  assert_equal expected, e.message
754
722
  end
755
723
 
756
- assert_equal [], inst.installed_gems.map { |s| s.full_name }
724
+ assert_equal [], inst.installed_gems.map {|s| s.full_name }
757
725
  end
758
726
 
759
727
  def test_install_domain_remote
@@ -769,7 +737,7 @@ class TestGemDependencyInstaller < Gem::TestCase
769
737
  inst = Gem::DependencyInstaller.new :domain => :remote
770
738
  inst.install 'a'
771
739
 
772
- assert_equal %w[a-1], inst.installed_gems.map { |s| s.full_name }
740
+ assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name }
773
741
  end
774
742
 
775
743
  def test_install_dual_repository
@@ -786,7 +754,7 @@ class TestGemDependencyInstaller < Gem::TestCase
786
754
  inst.install 'a'
787
755
  end
788
756
 
789
- assert_equal %w[a-1], inst.installed_gems.map { |s| s.full_name },
757
+ assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name },
790
758
  'sanity check'
791
759
 
792
760
  ENV['GEM_HOME'] = @gemhome
@@ -798,7 +766,7 @@ class TestGemDependencyInstaller < Gem::TestCase
798
766
  inst.install 'b'
799
767
  end
800
768
 
801
- assert_equal %w[b-1], inst.installed_gems.map { |s| s.full_name }
769
+ assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name }
802
770
  end
803
771
 
804
772
  def test_install_reinstall
@@ -809,7 +777,7 @@ class TestGemDependencyInstaller < Gem::TestCase
809
777
  inst = nil
810
778
 
811
779
  Dir.chdir @tempdir do
812
- inst = Gem::DependencyInstaller.new
780
+ inst = Gem::DependencyInstaller.new :force => true
813
781
  inst.install 'a'
814
782
  end
815
783
 
@@ -833,7 +801,7 @@ class TestGemDependencyInstaller < Gem::TestCase
833
801
  inst.install 'a'
834
802
  end
835
803
 
836
- assert_equal %w[a-1], inst.installed_gems.map { |s| s.full_name }
804
+ assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name }
837
805
  end
838
806
 
839
807
  def test_install_remote_dep
@@ -853,7 +821,7 @@ class TestGemDependencyInstaller < Gem::TestCase
853
821
  inst.install dep
854
822
  end
855
823
 
856
- assert_equal %w[a-1], inst.installed_gems.map { |s| s.full_name }
824
+ assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name }
857
825
  end
858
826
 
859
827
  def test_install_remote_platform_newer
@@ -865,15 +833,18 @@ class TestGemDependencyInstaller < Gem::TestCase
865
833
 
866
834
  si = util_setup_spec_fetcher @a1, a2_o
867
835
 
868
- util_clear_gems
869
-
870
836
  @fetcher.data['http://gems.example.com/gems/yaml'] = si.to_yaml
871
837
 
872
838
  a1_data = nil
873
839
  a2_o_data = nil
874
840
 
875
- File.open @a1_gem, 'rb' do |fp| a1_data = fp.read end
876
- File.open a2_o_gem, 'rb' do |fp| a2_o_data = fp.read end
841
+ File.open @a1_gem, 'rb' do |fp|
842
+ a1_data = fp.read
843
+ end
844
+
845
+ File.open a2_o_gem, 'rb' do |fp|
846
+ a2_o_data = fp.read
847
+ end
877
848
 
878
849
  @fetcher.data["http://gems.example.com/gems/#{@a1.file_name}"] =
879
850
  a1_data
@@ -883,7 +854,7 @@ class TestGemDependencyInstaller < Gem::TestCase
883
854
  inst = Gem::DependencyInstaller.new :domain => :remote
884
855
  inst.install 'a'
885
856
 
886
- assert_equal %w[a-1], inst.installed_gems.map { |s| s.full_name }
857
+ assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name }
887
858
  end
888
859
 
889
860
  def test_install_platform_is_ignored_when_a_file_is_specified
@@ -894,17 +865,19 @@ class TestGemDependencyInstaller < Gem::TestCase
894
865
  inst = Gem::DependencyInstaller.new :domain => :local
895
866
  inst.install a_gem
896
867
 
897
- assert_equal %w[a-1-cpu-other_platform-1], inst.installed_gems.map { |s| s.full_name }
868
+ assert_equal %w[a-1-cpu-other_platform-1], inst.installed_gems.map {|s| s.full_name }
898
869
  end
899
870
 
900
- if defined? OpenSSL
871
+ require 'rubygems/openssl'
872
+
873
+ if Gem::HAVE_OPENSSL
901
874
  def test_install_security_policy
902
875
  util_setup_gems
903
876
 
904
- data = File.open(@a1_gem, 'rb') { |f| f.read }
877
+ data = File.open(@a1_gem, 'rb') {|f| f.read }
905
878
  @fetcher.data['http://gems.example.com/gems/a-1.gem'] = data
906
879
 
907
- data = File.open(@b1_gem, 'rb') { |f| f.read }
880
+ data = File.open(@b1_gem, 'rb') {|f| f.read }
908
881
  @fetcher.data['http://gems.example.com/gems/b-1.gem'] = data
909
882
 
910
883
  policy = Gem::Security::HighSecurity
@@ -917,7 +890,7 @@ class TestGemDependencyInstaller < Gem::TestCase
917
890
  assert_equal 'unsigned gems are not allowed by the High Security policy',
918
891
  e.message
919
892
 
920
- assert_equal %w[], inst.installed_gems.map { |s| s.full_name }
893
+ assert_equal %w[], inst.installed_gems.map {|s| s.full_name }
921
894
  end
922
895
  end
923
896
 
@@ -931,7 +904,7 @@ class TestGemDependencyInstaller < Gem::TestCase
931
904
  inst = Gem::DependencyInstaller.new :wrappers => false, :format_executable => false
932
905
  inst.install 'a'
933
906
 
934
- refute_match(%r|This file was generated by RubyGems.|,
907
+ refute_match(%r{This file was generated by RubyGems.},
935
908
  File.read(File.join(@gemhome, 'bin', 'a_bin')))
936
909
  end
937
910
  end
@@ -939,114 +912,102 @@ class TestGemDependencyInstaller < Gem::TestCase
939
912
  def test_install_version
940
913
  util_setup_d
941
914
 
942
- data = File.open(@d2_gem, 'rb') { |f| f.read }
915
+ data = File.open(@d2_gem, 'rb') {|f| f.read }
943
916
  @fetcher.data['http://gems.example.com/gems/d-2.gem'] = data
944
917
 
945
- data = File.open(@d1_gem, 'rb') { |f| f.read }
918
+ data = File.open(@d1_gem, 'rb') {|f| f.read }
946
919
  @fetcher.data['http://gems.example.com/gems/d-1.gem'] = data
947
920
 
948
921
  inst = Gem::DependencyInstaller.new
949
922
 
950
923
  inst.install 'd', '= 1'
951
924
 
952
- assert_equal %w[d-1], inst.installed_gems.map { |s| s.full_name }
925
+ assert_equal %w[d-1], inst.installed_gems.map {|s| s.full_name }
953
926
  end
954
927
 
955
928
  def test_install_version_default
956
929
  util_setup_d
957
930
 
958
- data = File.open(@d2_gem, 'rb') { |f| f.read }
931
+ data = File.open(@d2_gem, 'rb') {|f| f.read }
959
932
  @fetcher.data['http://gems.example.com/gems/d-2.gem'] = data
960
933
 
961
- data = File.open(@d1_gem, 'rb') { |f| f.read }
934
+ data = File.open(@d1_gem, 'rb') {|f| f.read }
962
935
  @fetcher.data['http://gems.example.com/gems/d-1.gem'] = data
963
936
 
964
937
  inst = Gem::DependencyInstaller.new
965
938
  inst.install 'd'
966
939
 
967
- assert_equal %w[d-2], inst.installed_gems.map { |s| s.full_name }
940
+ assert_equal %w[d-2], inst.installed_gems.map {|s| s.full_name }
968
941
  end
969
942
 
970
- def test_find_gems_gems_with_sources
971
- util_setup_gems
972
-
973
- inst = Gem::DependencyInstaller.new
974
- dep = Gem::Dependency.new 'b', '>= 0'
943
+ def test_install_legacy_spec_with_nil_required_ruby_version
944
+ path = File.expand_path "../data/null-required-ruby-version.gemspec.rz", __FILE__
945
+ spec = Marshal.load Gem.read_binary(path)
946
+ def spec.validate(*args); end
975
947
 
976
- Gem::Specification.reset
948
+ util_build_gem spec
977
949
 
978
- set = inst.find_gems_with_sources(dep)
950
+ cache_file = File.join @tempdir, 'gems', "#{spec.original_name}.gem"
951
+ FileUtils.mkdir_p File.dirname cache_file
952
+ FileUtils.mv spec.cache_file, cache_file
979
953
 
980
- assert_kind_of Gem::AvailableSet, set
981
-
982
- s = set.set.first
954
+ util_setup_spec_fetcher spec
983
955
 
984
- assert_equal @b1, s.spec
985
- assert_equal Gem::Source.new(@gem_repo), s.source
986
- end
956
+ data = Gem.read_binary(cache_file)
987
957
 
988
- def test_find_spec_by_name_and_version_wildcard
989
- util_gem 'a', 1
990
- FileUtils.mv 'gems/a-1.gem', @tempdir
958
+ @fetcher.data['http://gems.example.com/gems/activesupport-1.0.0.gem'] = data
991
959
 
992
- FileUtils.touch 'rdoc.gem'
960
+ dep = Gem::Dependency.new 'activesupport'
993
961
 
994
962
  inst = Gem::DependencyInstaller.new
963
+ inst.install dep
995
964
 
996
- available = inst.find_spec_by_name_and_version('*.gem')
997
-
998
- assert_equal %w[a-1], available.each_spec.map { |spec| spec.full_name }
965
+ assert_equal %w[activesupport-1.0.0], Gem::Specification.map(&:full_name)
999
966
  end
1000
967
 
1001
- def test_find_spec_by_name_and_version_wildcard_bad_gem
1002
- FileUtils.touch 'rdoc.gem'
968
+ def test_install_legacy_spec_with_nil_required_rubygems_version
969
+ path = File.expand_path "../data/null-required-rubygems-version.gemspec.rz", __FILE__
970
+ spec = Marshal.load Gem.read_binary(path)
971
+ def spec.validate(*args); end
1003
972
 
1004
- inst = Gem::DependencyInstaller.new
973
+ util_build_gem spec
1005
974
 
1006
- assert_raises Gem::Package::FormatError do
1007
- inst.find_spec_by_name_and_version '*.gem'
1008
- end
1009
- end
975
+ cache_file = File.join @tempdir, 'gems', "#{spec.original_name}.gem"
976
+ FileUtils.mkdir_p File.dirname cache_file
977
+ FileUtils.mv spec.cache_file, cache_file
1010
978
 
1011
- def test_find_spec_by_name_and_version_bad_gem
1012
- FileUtils.touch 'rdoc.gem'
1013
-
1014
- inst = Gem::DependencyInstaller.new
979
+ util_setup_spec_fetcher spec
1015
980
 
1016
- e = assert_raises Gem::Package::FormatError do
1017
- inst.find_spec_by_name_and_version 'rdoc.gem'
1018
- end
981
+ data = Gem.read_binary(cache_file)
1019
982
 
1020
- full_path = File.join @tempdir, 'rdoc.gem'
1021
- assert_equal "package metadata is missing in #{full_path}", e.message
1022
- end
983
+ @fetcher.data['http://gems.example.com/gems/activesupport-1.0.0.gem'] = data
1023
984
 
1024
- def test_find_spec_by_name_and_version_directory
1025
- Dir.mkdir 'rdoc'
985
+ dep = Gem::Dependency.new 'activesupport'
1026
986
 
1027
987
  inst = Gem::DependencyInstaller.new
988
+ inst.install dep
1028
989
 
1029
- e = assert_raises Gem::SpecificGemNotFoundException do
1030
- inst.find_spec_by_name_and_version 'rdoc'
1031
- end
1032
-
1033
- assert_equal "Could not find a valid gem 'rdoc' (>= 0) " +
1034
- "locally or in a repository",
1035
- e.message
990
+ assert_equal %w[activesupport-1.0.0], Gem::Specification.map(&:full_name)
1036
991
  end
1037
992
 
1038
- def test_find_spec_by_name_and_version_file
1039
- FileUtils.touch 'rdoc'
993
+ def test_find_gems_gems_with_sources
994
+ util_setup_gems
1040
995
 
1041
996
  inst = Gem::DependencyInstaller.new
997
+ dep = Gem::Dependency.new 'b', '>= 0'
1042
998
 
1043
- e = assert_raises Gem::SpecificGemNotFoundException do
1044
- inst.find_spec_by_name_and_version 'rdoc'
999
+ Gem::Specification.reset
1000
+
1001
+ set = Gem::Deprecate.skip_during do
1002
+ inst.find_gems_with_sources(dep)
1045
1003
  end
1046
1004
 
1047
- assert_equal "Could not find a valid gem 'rdoc' (>= 0) " +
1048
- "locally or in a repository",
1049
- e.message
1005
+ assert_kind_of Gem::AvailableSet, set
1006
+
1007
+ s = set.set.first
1008
+
1009
+ assert_equal @b1, s.spec
1010
+ assert_equal Gem::Source.new(@gem_repo), s.source
1050
1011
  end
1051
1012
 
1052
1013
  def test_find_gems_with_sources_local
@@ -1058,7 +1019,9 @@ class TestGemDependencyInstaller < Gem::TestCase
1058
1019
  set = nil
1059
1020
 
1060
1021
  Dir.chdir @tempdir do
1061
- set = inst.find_gems_with_sources dep
1022
+ set = Gem::Deprecate.skip_during do
1023
+ inst.find_gems_with_sources dep
1024
+ end
1062
1025
  end
1063
1026
 
1064
1027
  gems = set.sorted
@@ -1082,16 +1045,22 @@ class TestGemDependencyInstaller < Gem::TestCase
1082
1045
 
1083
1046
  dependency = Gem::Dependency.new('a', Gem::Requirement.default)
1084
1047
 
1085
- releases =
1086
- installer.find_gems_with_sources(dependency).all_specs
1048
+ set = Gem::Deprecate.skip_during do
1049
+ installer.find_gems_with_sources(dependency)
1050
+ end
1051
+
1052
+ releases = set.all_specs
1087
1053
 
1088
- assert releases.any? { |s| s.name == 'a' and s.version.to_s == '1' }
1089
- refute releases.any? { |s| s.name == 'a' and s.version.to_s == '1.a' }
1054
+ assert releases.any? {|s| s.name == 'a' and s.version.to_s == '1' }
1055
+ refute releases.any? {|s| s.name == 'a' and s.version.to_s == '1.a' }
1090
1056
 
1091
1057
  dependency.prerelease = true
1092
1058
 
1093
- prereleases =
1094
- installer.find_gems_with_sources(dependency).all_specs
1059
+ set = Gem::Deprecate.skip_during do
1060
+ installer.find_gems_with_sources(dependency)
1061
+ end
1062
+
1063
+ prereleases = set.all_specs
1095
1064
 
1096
1065
  assert_equal [@a1_pre, @a1], prereleases
1097
1066
  end
@@ -1108,8 +1077,11 @@ class TestGemDependencyInstaller < Gem::TestCase
1108
1077
 
1109
1078
  dependency = Gem::Dependency.new('a', Gem::Requirement.default)
1110
1079
 
1111
- releases =
1112
- installer.find_gems_with_sources(dependency, true).all_specs
1080
+ set = Gem::Deprecate.skip_during do
1081
+ installer.find_gems_with_sources(dependency, true)
1082
+ end
1083
+
1084
+ releases = set.all_specs
1113
1085
 
1114
1086
  assert_equal [a1_x86_mingw32], releases
1115
1087
  end
@@ -1121,7 +1093,9 @@ class TestGemDependencyInstaller < Gem::TestCase
1121
1093
 
1122
1094
  dep = Gem::Dependency.new('a')
1123
1095
 
1124
- out = installer.find_gems_with_sources(dep)
1096
+ out = Gem::Deprecate.skip_during do
1097
+ installer.find_gems_with_sources(dep)
1098
+ end
1125
1099
 
1126
1100
  assert out.empty?
1127
1101
  assert_kind_of Gem::SourceFetchProblem, installer.errors.first
@@ -1136,7 +1110,7 @@ class TestGemDependencyInstaller < Gem::TestCase
1136
1110
  inst = Gem::DependencyInstaller.new
1137
1111
  request_set = inst.resolve_dependencies 'b', req('>= 0')
1138
1112
 
1139
- requests = request_set.sorted_requests.map { |req| req.full_name }
1113
+ requests = request_set.sorted_requests.map {|req| req.full_name }
1140
1114
 
1141
1115
  assert_equal %w[a-1 b-1], requests
1142
1116
  end
@@ -1150,7 +1124,7 @@ class TestGemDependencyInstaller < Gem::TestCase
1150
1124
  inst = Gem::DependencyInstaller.new :ignore_dependencies => true
1151
1125
  request_set = inst.resolve_dependencies 'b', req('>= 0')
1152
1126
 
1153
- requests = request_set.sorted_requests.map { |req| req.full_name }
1127
+ requests = request_set.sorted_requests.map {|req| req.full_name }
1154
1128
 
1155
1129
  assert request_set.ignore_dependencies
1156
1130
 
@@ -1167,72 +1141,15 @@ class TestGemDependencyInstaller < Gem::TestCase
1167
1141
  inst = Gem::DependencyInstaller.new
1168
1142
  request_set = inst.resolve_dependencies 'a-1.gem', req('>= 0')
1169
1143
 
1170
- requests = request_set.sorted_requests.map { |req| req.full_name }
1144
+ requests = request_set.sorted_requests.map {|req| req.full_name }
1171
1145
 
1172
1146
  assert_equal %w[a-1], requests
1173
1147
  end
1174
1148
 
1175
- def util_write_a1_bin
1176
- write_file File.join('gems', 'a-1', 'bin', 'a_bin') do |fp|
1177
- fp.puts "#!/usr/bin/ruby"
1178
- end
1179
- end
1180
-
1181
- def util_setup_c1_pre
1182
- @c1_pre, @c1_pre_gem = util_spec 'c', '1.a' do |s|
1183
- s.add_dependency 'a', '1.a'
1184
- s.add_dependency 'b', '1'
1185
- end
1186
-
1187
- util_reset_gems
1188
- end
1189
-
1190
1149
  def util_setup_d
1191
1150
  @d1, @d1_gem = util_gem 'd', '1'
1192
1151
  @d2, @d2_gem = util_gem 'd', '2'
1193
1152
 
1194
- util_reset_gems
1195
- end
1196
-
1197
- def util_setup_wxyz
1198
- @x1_m, @x1_m_gem = util_spec 'x', '1' do |s|
1199
- s.platform = Gem::Platform.new %w[cpu my_platform 1]
1200
- end
1201
-
1202
- @x1_o, @x1_o_gem = util_spec 'x', '1' do |s|
1203
- s.platform = Gem::Platform.new %w[cpu other_platform 1]
1204
- end
1205
-
1206
- @w1, @w1_gem = util_spec 'w', '1', 'x' => nil
1207
-
1208
- @y1, @y1_gem = util_spec 'y', '1'
1209
- @y1_1_p, @y1_1_p_gem = util_spec 'y', '1.1' do |s|
1210
- s.platform = Gem::Platform.new %w[cpu my_platform 1]
1211
- end
1212
-
1213
- @z1, @z1_gem = util_spec 'z', '1', 'y' => nil
1214
-
1215
- util_reset_gems
1216
- end
1217
-
1218
- def util_reset_gems
1219
- @a1 ||= nil
1220
- @b1 ||= nil
1221
- @a1_pre ||= nil
1222
- @c1_pre ||= nil
1223
- @d1 ||= nil
1224
- @d2 ||= nil
1225
- @w1 ||= nil
1226
- @x1_m ||= nil
1227
- @x1_o ||= nil
1228
- @y1 ||= nil
1229
- @y1_1_p ||= nil
1230
- @z1 ||= nil
1231
-
1232
- util_setup_spec_fetcher(*[@a1, @a1_pre, @b1, @c1_pre,
1233
- @d1, @d2, @x1_m, @x1_o, @w1, @y1,
1234
- @y1_1_p, @z1].compact)
1235
-
1236
- util_clear_gems
1153
+ util_setup_spec_fetcher(@d1, @d2)
1237
1154
  end
1238
1155
  end