rubygems-update 3.1.2 → 3.2.6

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 (562) hide show
  1. checksums.yaml +4 -4
  2. data/{History.txt → CHANGELOG.md} +756 -489
  3. data/CODE_OF_CONDUCT.md +55 -19
  4. data/CONTRIBUTING.md +25 -11
  5. data/Manifest.txt +75 -104
  6. data/POLICIES.md +6 -12
  7. data/README.md +5 -5
  8. data/Rakefile +64 -92
  9. data/bin/update_rubygems +1 -1
  10. data/bundler/CHANGELOG.md +1636 -1422
  11. data/bundler/README.md +6 -8
  12. data/bundler/UPGRADING.md +18 -32
  13. data/bundler/bundler.gemspec +4 -4
  14. data/bundler/exe/bundle +3 -0
  15. data/bundler/lib/bundler.rb +32 -8
  16. data/bundler/lib/bundler/build_metadata.rb +4 -12
  17. data/bundler/lib/bundler/cli.rb +55 -21
  18. data/bundler/lib/bundler/cli/add.rb +1 -1
  19. data/bundler/lib/bundler/cli/binstubs.rb +6 -2
  20. data/bundler/lib/bundler/cli/cache.rb +1 -7
  21. data/bundler/lib/bundler/cli/clean.rb +1 -1
  22. data/bundler/lib/bundler/cli/common.rb +14 -0
  23. data/bundler/lib/bundler/cli/console.rb +1 -1
  24. data/bundler/lib/bundler/cli/doctor.rb +1 -1
  25. data/bundler/lib/bundler/cli/exec.rb +4 -4
  26. data/bundler/lib/bundler/cli/fund.rb +36 -0
  27. data/bundler/lib/bundler/cli/gem.rb +86 -11
  28. data/bundler/lib/bundler/cli/info.rb +15 -4
  29. data/bundler/lib/bundler/cli/init.rb +2 -2
  30. data/bundler/lib/bundler/cli/inject.rb +1 -1
  31. data/bundler/lib/bundler/cli/install.rb +16 -13
  32. data/bundler/lib/bundler/cli/issue.rb +2 -2
  33. data/bundler/lib/bundler/cli/list.rb +12 -10
  34. data/bundler/lib/bundler/cli/outdated.rb +87 -66
  35. data/bundler/lib/bundler/cli/plugin.rb +10 -0
  36. data/bundler/lib/bundler/cli/pristine.rb +5 -0
  37. data/bundler/lib/bundler/cli/show.rb +1 -1
  38. data/bundler/lib/bundler/cli/update.rb +3 -1
  39. data/bundler/lib/bundler/compact_index_client.rb +1 -1
  40. data/bundler/lib/bundler/compact_index_client/cache.rb +6 -14
  41. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
  42. data/bundler/lib/bundler/compact_index_client/updater.rb +5 -13
  43. data/bundler/lib/bundler/definition.rb +66 -82
  44. data/bundler/lib/bundler/dep_proxy.rb +16 -9
  45. data/bundler/lib/bundler/dependency.rb +3 -10
  46. data/bundler/lib/bundler/dsl.rb +5 -9
  47. data/bundler/lib/bundler/endpoint_specification.rb +1 -1
  48. data/bundler/lib/bundler/env.rb +1 -1
  49. data/bundler/lib/bundler/environment_preserver.rb +26 -2
  50. data/bundler/lib/bundler/errors.rb +1 -0
  51. data/bundler/lib/bundler/feature_flag.rb +0 -3
  52. data/bundler/lib/bundler/fetcher.rb +4 -3
  53. data/bundler/lib/bundler/fetcher/base.rb +1 -1
  54. data/bundler/lib/bundler/fetcher/compact_index.rb +1 -1
  55. data/bundler/lib/bundler/fetcher/downloader.rb +1 -1
  56. data/bundler/lib/bundler/fetcher/index.rb +3 -4
  57. data/bundler/lib/bundler/friendly_errors.rb +22 -13
  58. data/bundler/lib/bundler/gem_helper.rb +33 -19
  59. data/bundler/lib/bundler/gem_helpers.rb +36 -25
  60. data/bundler/lib/bundler/gem_version_promoter.rb +4 -4
  61. data/bundler/lib/bundler/graph.rb +1 -1
  62. data/bundler/lib/bundler/index.rb +6 -2
  63. data/bundler/lib/bundler/injector.rb +22 -4
  64. data/bundler/lib/bundler/inline.rb +2 -2
  65. data/bundler/lib/bundler/installer.rb +35 -32
  66. data/bundler/lib/bundler/installer/gem_installer.rb +3 -3
  67. data/bundler/lib/bundler/installer/parallel_installer.rb +10 -10
  68. data/bundler/lib/bundler/installer/standalone.rb +2 -2
  69. data/bundler/lib/bundler/lazy_specification.rb +35 -11
  70. data/bundler/lib/bundler/lockfile_generator.rb +1 -1
  71. data/bundler/lib/bundler/lockfile_parser.rb +1 -1
  72. data/bundler/lib/bundler/man/.document +1 -0
  73. data/bundler/{man → lib/bundler/man}/bundle-add.1 +1 -1
  74. data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +0 -0
  75. data/bundler/{man → lib/bundler/man}/bundle-binstubs.1 +5 -3
  76. data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +2 -4
  77. data/bundler/{man → lib/bundler/man}/bundle-cache.1 +1 -1
  78. data/bundler/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +0 -0
  79. data/bundler/{man → lib/bundler/man}/bundle-check.1 +1 -1
  80. data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
  81. data/bundler/{man → lib/bundler/man}/bundle-clean.1 +1 -1
  82. data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
  83. data/bundler/{man → lib/bundler/man}/bundle-config.1 +16 -25
  84. data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +19 -30
  85. data/bundler/{man → lib/bundler/man}/bundle-doctor.1 +1 -1
  86. data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
  87. data/bundler/{man → lib/bundler/man}/bundle-exec.1 +1 -1
  88. data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +0 -0
  89. data/bundler/{man → lib/bundler/man}/bundle-gem.1 +25 -3
  90. data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
  91. data/bundler/{man → lib/bundler/man}/bundle-info.1 +1 -1
  92. data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
  93. data/bundler/{man → lib/bundler/man}/bundle-init.1 +1 -1
  94. data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +0 -0
  95. data/bundler/{man → lib/bundler/man}/bundle-inject.1 +1 -1
  96. data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
  97. data/bundler/{man → lib/bundler/man}/bundle-install.1 +30 -3
  98. data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +25 -3
  99. data/bundler/{man → lib/bundler/man}/bundle-list.1 +7 -7
  100. data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
  101. data/bundler/{man → lib/bundler/man}/bundle-lock.1 +1 -1
  102. data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
  103. data/bundler/{man → lib/bundler/man}/bundle-open.1 +1 -1
  104. data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
  105. data/bundler/{man → lib/bundler/man}/bundle-outdated.1 +1 -1
  106. data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
  107. data/bundler/{man → lib/bundler/man}/bundle-platform.1 +1 -1
  108. data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
  109. data/bundler/{man → lib/bundler/man}/bundle-pristine.1 +1 -1
  110. data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
  111. data/bundler/{man → lib/bundler/man}/bundle-remove.1 +1 -1
  112. data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
  113. data/bundler/{man → lib/bundler/man}/bundle-show.1 +1 -1
  114. data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
  115. data/bundler/{man → lib/bundler/man}/bundle-update.1 +1 -1
  116. data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +0 -0
  117. data/bundler/{man → lib/bundler/man}/bundle-viz.1 +1 -1
  118. data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
  119. data/bundler/{man → lib/bundler/man}/bundle.1 +1 -1
  120. data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +0 -0
  121. data/bundler/{man → lib/bundler/man}/gemfile.5 +4 -4
  122. data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +4 -4
  123. data/bundler/{man → lib/bundler/man}/index.txt +0 -0
  124. data/bundler/lib/bundler/mirror.rb +2 -2
  125. data/bundler/lib/bundler/plugin.rb +30 -5
  126. data/bundler/lib/bundler/plugin/api/source.rb +1 -1
  127. data/bundler/lib/bundler/plugin/dsl.rb +1 -1
  128. data/bundler/lib/bundler/plugin/index.rb +10 -1
  129. data/bundler/lib/bundler/plugin/installer.rb +1 -1
  130. data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
  131. data/bundler/lib/bundler/plugin/source_list.rb +1 -1
  132. data/bundler/lib/bundler/psyched_yaml.rb +0 -15
  133. data/bundler/lib/bundler/remote_specification.rb +5 -2
  134. data/bundler/lib/bundler/resolver.rb +43 -19
  135. data/bundler/lib/bundler/resolver/spec_group.rb +39 -24
  136. data/bundler/lib/bundler/retry.rb +1 -1
  137. data/bundler/lib/bundler/ruby_version.rb +1 -1
  138. data/bundler/lib/bundler/rubygems_ext.rb +69 -9
  139. data/bundler/lib/bundler/rubygems_gem_installer.rb +3 -9
  140. data/bundler/lib/bundler/rubygems_integration.rb +26 -61
  141. data/bundler/lib/bundler/runtime.rb +4 -14
  142. data/bundler/lib/bundler/settings.rb +49 -46
  143. data/bundler/lib/bundler/shared_helpers.rb +2 -2
  144. data/bundler/lib/bundler/similarity_detector.rb +1 -1
  145. data/bundler/lib/bundler/source.rb +1 -1
  146. data/bundler/lib/bundler/source/git.rb +23 -21
  147. data/bundler/lib/bundler/source/git/git_proxy.rb +82 -80
  148. data/bundler/lib/bundler/source/path.rb +7 -3
  149. data/bundler/lib/bundler/source/path/installer.rb +10 -10
  150. data/bundler/lib/bundler/source/rubygems.rb +23 -17
  151. data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
  152. data/bundler/lib/bundler/source_list.rb +2 -2
  153. data/bundler/lib/bundler/spec_set.rb +8 -10
  154. data/bundler/lib/bundler/stub_specification.rb +17 -7
  155. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  156. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +9 -1
  157. data/bundler/lib/bundler/templates/newgem/README.md.tt +1 -2
  158. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +19 -5
  159. data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
  160. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
  161. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
  162. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
  163. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
  164. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
  165. data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  166. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +15 -7
  167. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
  168. data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
  169. data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
  170. data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
  171. data/bundler/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
  172. data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  173. data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  174. data/bundler/lib/bundler/ui/shell.rb +5 -5
  175. data/bundler/lib/bundler/uri_credentials_filter.rb +3 -1
  176. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -1
  177. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +34 -1
  178. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
  179. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
  180. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  181. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +48 -46
  182. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +79 -208
  183. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +0 -7
  184. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
  185. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
  186. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  187. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
  188. data/bundler/lib/bundler/vendored_persistent.rb +0 -7
  189. data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
  190. data/bundler/lib/bundler/version.rb +1 -1
  191. data/bundler/lib/bundler/worker.rb +1 -1
  192. data/bundler/lib/bundler/yaml_serializer.rb +1 -1
  193. data/lib/rubygems.rb +138 -187
  194. data/lib/rubygems/available_set.rb +4 -6
  195. data/lib/rubygems/basic_specification.rb +12 -10
  196. data/lib/rubygems/bundler_version_finder.rb +14 -9
  197. data/lib/rubygems/command.rb +17 -17
  198. data/lib/rubygems/command_manager.rb +5 -6
  199. data/lib/rubygems/commands/build_command.rb +40 -20
  200. data/lib/rubygems/commands/cert_command.rb +2 -10
  201. data/lib/rubygems/commands/check_command.rb +0 -2
  202. data/lib/rubygems/commands/cleanup_command.rb +11 -7
  203. data/lib/rubygems/commands/contents_command.rb +4 -6
  204. data/lib/rubygems/commands/dependency_command.rb +6 -8
  205. data/lib/rubygems/commands/environment_command.rb +1 -3
  206. data/lib/rubygems/commands/fetch_command.rb +2 -4
  207. data/lib/rubygems/commands/generate_index_command.rb +0 -2
  208. data/lib/rubygems/commands/help_command.rb +4 -4
  209. data/lib/rubygems/commands/info_command.rb +8 -5
  210. data/lib/rubygems/commands/install_command.rb +3 -5
  211. data/lib/rubygems/commands/list_command.rb +8 -7
  212. data/lib/rubygems/commands/lock_command.rb +1 -3
  213. data/lib/rubygems/commands/mirror_command.rb +0 -2
  214. data/lib/rubygems/commands/open_command.rb +0 -4
  215. data/lib/rubygems/commands/outdated_command.rb +0 -2
  216. data/lib/rubygems/commands/owner_command.rb +9 -4
  217. data/lib/rubygems/commands/pristine_command.rb +11 -5
  218. data/lib/rubygems/commands/push_command.rb +10 -47
  219. data/lib/rubygems/commands/query_command.rb +14 -344
  220. data/lib/rubygems/commands/rdoc_command.rb +0 -2
  221. data/lib/rubygems/commands/search_command.rb +7 -7
  222. data/lib/rubygems/commands/server_command.rb +3 -1
  223. data/lib/rubygems/commands/setup_command.rb +101 -74
  224. data/lib/rubygems/commands/signin_command.rb +0 -2
  225. data/lib/rubygems/commands/signout_command.rb +0 -2
  226. data/lib/rubygems/commands/sources_command.rb +9 -7
  227. data/lib/rubygems/commands/specification_command.rb +8 -4
  228. data/lib/rubygems/commands/stale_command.rb +1 -3
  229. data/lib/rubygems/commands/uninstall_command.rb +2 -4
  230. data/lib/rubygems/commands/unpack_command.rb +1 -3
  231. data/lib/rubygems/commands/update_command.rb +59 -14
  232. data/lib/rubygems/commands/which_command.rb +0 -2
  233. data/lib/rubygems/commands/yank_command.rb +4 -7
  234. data/lib/rubygems/config_file.rb +11 -4
  235. data/lib/rubygems/core_ext/kernel_require.rb +29 -36
  236. data/lib/rubygems/core_ext/kernel_warn.rb +12 -13
  237. data/lib/rubygems/defaults.rb +101 -7
  238. data/lib/rubygems/dependency.rb +3 -8
  239. data/lib/rubygems/dependency_installer.rb +6 -78
  240. data/lib/rubygems/dependency_list.rb +7 -9
  241. data/lib/rubygems/deprecate.rb +46 -1
  242. data/lib/rubygems/doctor.rb +4 -4
  243. data/lib/rubygems/errors.rb +3 -14
  244. data/lib/rubygems/exceptions.rb +2 -33
  245. data/lib/rubygems/ext.rb +6 -6
  246. data/lib/rubygems/ext/build_error.rb +2 -0
  247. data/lib/rubygems/ext/builder.rb +21 -39
  248. data/lib/rubygems/ext/cmake_builder.rb +6 -9
  249. data/lib/rubygems/ext/configure_builder.rb +5 -8
  250. data/lib/rubygems/ext/ext_conf_builder.rb +21 -19
  251. data/lib/rubygems/ext/rake_builder.rb +4 -6
  252. data/lib/rubygems/gem_runner.rb +3 -10
  253. data/lib/rubygems/gemcutter_utilities.rb +102 -21
  254. data/lib/rubygems/indexer.rb +1 -22
  255. data/lib/rubygems/install_update_options.rb +7 -7
  256. data/lib/rubygems/installer.rb +59 -80
  257. data/lib/rubygems/installer_test_case.rb +25 -11
  258. data/lib/rubygems/installer_uninstaller_utils.rb +24 -0
  259. data/lib/rubygems/local_remote_options.rb +1 -1
  260. data/lib/rubygems/mock_gem_ui.rb +0 -6
  261. data/lib/rubygems/name_tuple.rb +3 -7
  262. data/lib/rubygems/openssl.rb +7 -0
  263. data/lib/rubygems/package.rb +14 -25
  264. data/lib/rubygems/package/digest_io.rb +0 -2
  265. data/lib/rubygems/package/file_source.rb +0 -2
  266. data/lib/rubygems/package/io_source.rb +0 -2
  267. data/lib/rubygems/package/old.rb +1 -3
  268. data/lib/rubygems/package/tar_header.rb +4 -6
  269. data/lib/rubygems/package/tar_reader.rb +0 -3
  270. data/lib/rubygems/package/tar_reader/entry.rb +0 -3
  271. data/lib/rubygems/package/tar_test_case.rb +2 -4
  272. data/lib/rubygems/package/tar_writer.rb +2 -12
  273. data/lib/rubygems/package_task.rb +1 -7
  274. data/lib/rubygems/path_support.rb +1 -3
  275. data/lib/rubygems/platform.rb +21 -16
  276. data/lib/rubygems/psych_tree.rb +0 -2
  277. data/lib/rubygems/query_utils.rb +353 -0
  278. data/lib/rubygems/rdoc.rb +0 -12
  279. data/lib/rubygems/remote_fetcher.rb +14 -29
  280. data/lib/rubygems/request.rb +4 -11
  281. data/lib/rubygems/request/connection_pools.rb +1 -5
  282. data/lib/rubygems/request/http_pool.rb +0 -2
  283. data/lib/rubygems/request/https_pool.rb +0 -2
  284. data/lib/rubygems/request_set.rb +7 -20
  285. data/lib/rubygems/request_set/gem_dependency_api.rb +6 -8
  286. data/lib/rubygems/request_set/lockfile.rb +8 -12
  287. data/lib/rubygems/request_set/lockfile/parser.rb +0 -2
  288. data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -3
  289. data/lib/rubygems/requirement.rb +21 -22
  290. data/lib/rubygems/resolver.rb +14 -12
  291. data/lib/rubygems/resolver/activation_request.rb +9 -3
  292. data/lib/rubygems/resolver/api_set.rb +31 -24
  293. data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
  294. data/lib/rubygems/resolver/api_specification.rb +24 -10
  295. data/lib/rubygems/resolver/best_set.rb +2 -4
  296. data/lib/rubygems/resolver/composed_set.rb +3 -5
  297. data/lib/rubygems/resolver/conflict.rb +2 -4
  298. data/lib/rubygems/resolver/current_set.rb +0 -2
  299. data/lib/rubygems/resolver/dependency_request.rb +1 -3
  300. data/lib/rubygems/resolver/git_set.rb +0 -2
  301. data/lib/rubygems/resolver/git_specification.rb +0 -2
  302. data/lib/rubygems/resolver/index_set.rb +1 -3
  303. data/lib/rubygems/resolver/index_specification.rb +29 -2
  304. data/lib/rubygems/resolver/installed_specification.rb +0 -2
  305. data/lib/rubygems/resolver/installer_set.rb +60 -13
  306. data/lib/rubygems/resolver/local_specification.rb +0 -2
  307. data/lib/rubygems/resolver/lock_set.rb +2 -4
  308. data/lib/rubygems/resolver/lock_specification.rb +0 -2
  309. data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
  310. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
  311. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +1 -0
  312. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +39 -5
  313. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
  314. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
  315. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
  316. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
  317. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
  318. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
  319. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
  320. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
  321. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +43 -10
  322. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +75 -7
  323. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
  324. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +1 -0
  325. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
  326. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +506 -165
  327. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
  328. data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
  329. data/lib/rubygems/resolver/requirement_list.rb +0 -2
  330. data/lib/rubygems/resolver/set.rb +0 -2
  331. data/lib/rubygems/resolver/source_set.rb +0 -2
  332. data/lib/rubygems/resolver/spec_specification.rb +14 -2
  333. data/lib/rubygems/resolver/specification.rb +13 -3
  334. data/lib/rubygems/resolver/stats.rb +0 -2
  335. data/lib/rubygems/resolver/vendor_set.rb +0 -2
  336. data/lib/rubygems/resolver/vendor_specification.rb +0 -2
  337. data/lib/rubygems/s3_uri_signer.rb +2 -8
  338. data/lib/rubygems/safe_yaml.rb +4 -4
  339. data/lib/rubygems/security.rb +27 -34
  340. data/lib/rubygems/security/policy.rb +4 -8
  341. data/lib/rubygems/security/signer.rb +5 -7
  342. data/lib/rubygems/security/trust_dir.rb +1 -3
  343. data/lib/rubygems/server.rb +16 -13
  344. data/lib/rubygems/source.rb +23 -12
  345. data/lib/rubygems/source/git.rb +7 -8
  346. data/lib/rubygems/source/installed.rb +0 -2
  347. data/lib/rubygems/source/local.rb +2 -4
  348. data/lib/rubygems/source/lock.rb +0 -2
  349. data/lib/rubygems/source/specific_file.rb +0 -2
  350. data/lib/rubygems/source/vendor.rb +0 -2
  351. data/lib/rubygems/source_list.rb +4 -7
  352. data/lib/rubygems/spec_fetcher.rb +19 -18
  353. data/lib/rubygems/specification.rb +122 -131
  354. data/lib/rubygems/specification_policy.rb +88 -30
  355. data/lib/rubygems/ssl_certs/{index.rubygems.org → rubygems.org}/GlobalSignRootCA.pem +0 -0
  356. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
  357. data/lib/rubygems/stub_specification.rb +1 -5
  358. data/lib/rubygems/syck_hack.rb +0 -2
  359. data/lib/rubygems/test_case.rb +120 -134
  360. data/lib/rubygems/test_utilities.rb +12 -19
  361. data/lib/rubygems/uninstaller.rb +35 -16
  362. data/lib/rubygems/uri_formatter.rb +2 -3
  363. data/lib/rubygems/uri_parser.rb +0 -2
  364. data/lib/rubygems/user_interaction.rb +1 -26
  365. data/lib/rubygems/util.rb +15 -3
  366. data/lib/rubygems/util/licenses.rb +4 -6
  367. data/lib/rubygems/util/list.rb +0 -2
  368. data/lib/rubygems/validator.rb +1 -3
  369. data/lib/rubygems/version.rb +5 -7
  370. data/lib/rubygems/version_option.rb +6 -0
  371. data/rubygems-update.gemspec +3 -3
  372. data/setup.rb +2 -7
  373. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  374. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
  375. data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
  376. data/test/rubygems/rubygems_plugin.rb +0 -2
  377. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
  378. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
  379. data/test/rubygems/test_bundled_ca.rb +42 -45
  380. data/test/rubygems/test_config.rb +0 -2
  381. data/test/rubygems/test_deprecate.rb +40 -7
  382. data/test/rubygems/test_gem.rb +156 -99
  383. data/test/rubygems/test_gem_available_set.rb +3 -5
  384. data/test/rubygems/test_gem_bundler_version_finder.rb +19 -3
  385. data/test/rubygems/test_gem_command.rb +24 -7
  386. data/test/rubygems/test_gem_command_manager.rb +36 -5
  387. data/test/rubygems/test_gem_commands_build_command.rb +250 -15
  388. data/test/rubygems/test_gem_commands_cert_command.rb +4 -6
  389. data/test/rubygems/test_gem_commands_check_command.rb +0 -2
  390. data/test/rubygems/test_gem_commands_cleanup_command.rb +14 -5
  391. data/test/rubygems/test_gem_commands_contents_command.rb +50 -19
  392. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -2
  393. data/test/rubygems/test_gem_commands_environment_command.rb +21 -23
  394. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -2
  395. data/test/rubygems/test_gem_commands_generate_index_command.rb +1 -7
  396. data/test/rubygems/test_gem_commands_help_command.rb +15 -4
  397. data/test/rubygems/test_gem_commands_info_command.rb +6 -8
  398. data/test/rubygems/test_gem_commands_install_command.rb +163 -34
  399. data/test/rubygems/test_gem_commands_list_command.rb +0 -2
  400. data/test/rubygems/test_gem_commands_lock_command.rb +0 -2
  401. data/test/rubygems/test_gem_commands_mirror.rb +1 -3
  402. data/test/rubygems/test_gem_commands_open_command.rb +4 -6
  403. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -2
  404. data/test/rubygems/test_gem_commands_owner_command.rb +59 -5
  405. data/test/rubygems/test_gem_commands_pristine_command.rb +43 -12
  406. data/test/rubygems/test_gem_commands_push_command.rb +77 -9
  407. data/test/rubygems/test_gem_commands_query_command.rb +12 -12
  408. data/test/rubygems/test_gem_commands_search_command.rb +0 -2
  409. data/test/rubygems/test_gem_commands_server_command.rb +0 -2
  410. data/test/rubygems/test_gem_commands_setup_command.rb +160 -135
  411. data/test/rubygems/test_gem_commands_signin_command.rb +33 -9
  412. data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
  413. data/test/rubygems/test_gem_commands_sources_command.rb +99 -3
  414. data/test/rubygems/test_gem_commands_specification_command.rb +46 -20
  415. data/test/rubygems/test_gem_commands_stale_command.rb +0 -2
  416. data/test/rubygems/test_gem_commands_uninstall_command.rb +2 -3
  417. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -2
  418. data/test/rubygems/test_gem_commands_update_command.rb +116 -7
  419. data/test/rubygems/test_gem_commands_which_command.rb +3 -5
  420. data/test/rubygems/test_gem_commands_yank_command.rb +44 -8
  421. data/test/rubygems/test_gem_config_file.rb +7 -12
  422. data/test/rubygems/test_gem_dependency.rb +0 -2
  423. data/test/rubygems/test_gem_dependency_installer.rb +116 -239
  424. data/test/rubygems/test_gem_dependency_list.rb +10 -12
  425. data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -3
  426. data/test/rubygems/test_gem_doctor.rb +28 -2
  427. data/test/rubygems/test_gem_ext_builder.rb +50 -47
  428. data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -25
  429. data/test/rubygems/test_gem_ext_configure_builder.rb +6 -22
  430. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +9 -29
  431. data/test/rubygems/test_gem_ext_rake_builder.rb +39 -24
  432. data/test/rubygems/test_gem_gem_runner.rb +44 -1
  433. data/test/rubygems/test_gem_gemcutter_utilities.rb +8 -5
  434. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -2
  435. data/test/rubygems/test_gem_indexer.rb +9 -15
  436. data/test/rubygems/test_gem_install_update_options.rb +14 -4
  437. data/test/rubygems/test_gem_installer.rb +258 -115
  438. data/test/rubygems/test_gem_local_remote_options.rb +0 -2
  439. data/test/rubygems/test_gem_name_tuple.rb +0 -2
  440. data/test/rubygems/test_gem_package.rb +41 -39
  441. data/test/rubygems/test_gem_package_old.rb +4 -6
  442. data/test/rubygems/test_gem_package_tar_header.rb +18 -1
  443. data/test/rubygems/test_gem_package_tar_reader.rb +0 -2
  444. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -2
  445. data/test/rubygems/test_gem_package_tar_writer.rb +9 -6
  446. data/test/rubygems/test_gem_package_task.rb +46 -13
  447. data/test/rubygems/test_gem_path_support.rb +0 -2
  448. data/test/rubygems/test_gem_platform.rb +71 -6
  449. data/test/rubygems/test_gem_rdoc.rb +0 -2
  450. data/test/rubygems/test_gem_remote_fetcher.rb +169 -212
  451. data/test/rubygems/test_gem_request.rb +13 -17
  452. data/test/rubygems/test_gem_request_connection_pools.rb +0 -4
  453. data/test/rubygems/test_gem_request_set.rb +72 -22
  454. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +3 -5
  455. data/test/rubygems/test_gem_request_set_lockfile.rb +4 -6
  456. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -11
  457. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -120
  458. data/test/rubygems/test_gem_requirement.rb +43 -3
  459. data/test/rubygems/test_gem_resolver.rb +6 -8
  460. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -2
  461. data/test/rubygems/test_gem_resolver_api_set.rb +60 -59
  462. data/test/rubygems/test_gem_resolver_api_specification.rb +3 -5
  463. data/test/rubygems/test_gem_resolver_best_set.rb +27 -6
  464. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -2
  465. data/test/rubygems/test_gem_resolver_conflict.rb +1 -3
  466. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -2
  467. data/test/rubygems/test_gem_resolver_git_set.rb +0 -2
  468. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -2
  469. data/test/rubygems/test_gem_resolver_index_set.rb +2 -4
  470. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -2
  471. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -2
  472. data/test/rubygems/test_gem_resolver_installer_set.rb +7 -9
  473. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -2
  474. data/test/rubygems/test_gem_resolver_lock_set.rb +3 -5
  475. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -2
  476. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -2
  477. data/test/rubygems/test_gem_resolver_specification.rb +0 -4
  478. data/test/rubygems/test_gem_resolver_vendor_set.rb +1 -3
  479. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -2
  480. data/test/rubygems/test_gem_security.rb +22 -24
  481. data/test/rubygems/test_gem_security_policy.rb +7 -12
  482. data/test/rubygems/test_gem_security_signer.rb +10 -12
  483. data/test/rubygems/test_gem_security_trust_dir.rb +4 -6
  484. data/test/rubygems/test_gem_server.rb +10 -14
  485. data/test/rubygems/test_gem_silent_ui.rb +0 -2
  486. data/test/rubygems/test_gem_source.rb +19 -18
  487. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -2
  488. data/test/rubygems/test_gem_source_git.rb +12 -13
  489. data/test/rubygems/test_gem_source_installed.rb +7 -9
  490. data/test/rubygems/test_gem_source_list.rb +1 -2
  491. data/test/rubygems/test_gem_source_local.rb +8 -10
  492. data/test/rubygems/test_gem_source_lock.rb +10 -12
  493. data/test/rubygems/test_gem_source_specific_file.rb +7 -9
  494. data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
  495. data/test/rubygems/test_gem_source_vendor.rb +7 -9
  496. data/test/rubygems/test_gem_spec_fetcher.rb +11 -4
  497. data/test/rubygems/test_gem_specification.rb +188 -131
  498. data/test/rubygems/test_gem_stream_ui.rb +3 -3
  499. data/test/rubygems/test_gem_stub_specification.rb +4 -7
  500. data/test/rubygems/test_gem_text.rb +1 -3
  501. data/test/rubygems/test_gem_uninstaller.rb +134 -12
  502. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -2
  503. data/test/rubygems/test_gem_uri_formatter.rb +0 -2
  504. data/test/rubygems/test_gem_util.rb +7 -7
  505. data/test/rubygems/test_gem_validator.rb +1 -3
  506. data/test/rubygems/test_gem_version.rb +1 -3
  507. data/test/rubygems/test_gem_version_option.rb +1 -3
  508. data/test/rubygems/test_kernel.rb +25 -10
  509. data/test/rubygems/test_project_sanity.rb +7 -2
  510. data/test/rubygems/test_remote_fetch_error.rb +0 -2
  511. data/test/rubygems/test_require.rb +291 -56
  512. data/test/test_changelog_generator.rb +17 -0
  513. metadata +79 -133
  514. data/.bundle/config +0 -2
  515. data/.rubocop.yml +0 -91
  516. data/Gemfile +0 -8
  517. data/Gemfile.lock +0 -43
  518. data/bundler/CODE_OF_CONDUCT.md +0 -136
  519. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
  520. data/bundler/man/bundle-add.1.txt +0 -58
  521. data/bundler/man/bundle-binstubs.1.txt +0 -48
  522. data/bundler/man/bundle-cache.1.txt +0 -78
  523. data/bundler/man/bundle-check.1.txt +0 -33
  524. data/bundler/man/bundle-clean.1.txt +0 -26
  525. data/bundler/man/bundle-config.1.txt +0 -528
  526. data/bundler/man/bundle-doctor.1.txt +0 -44
  527. data/bundler/man/bundle-exec.1.txt +0 -178
  528. data/bundler/man/bundle-gem.1.txt +0 -91
  529. data/bundler/man/bundle-info.1.txt +0 -21
  530. data/bundler/man/bundle-init.1.txt +0 -34
  531. data/bundler/man/bundle-inject.1.txt +0 -32
  532. data/bundler/man/bundle-install.1.txt +0 -401
  533. data/bundler/man/bundle-list.1.txt +0 -43
  534. data/bundler/man/bundle-lock.1.txt +0 -93
  535. data/bundler/man/bundle-open.1.txt +0 -29
  536. data/bundler/man/bundle-outdated.1.txt +0 -131
  537. data/bundler/man/bundle-platform.1.txt +0 -57
  538. data/bundler/man/bundle-pristine.1.txt +0 -44
  539. data/bundler/man/bundle-remove.1.txt +0 -34
  540. data/bundler/man/bundle-show.1.txt +0 -27
  541. data/bundler/man/bundle-update.1.txt +0 -390
  542. data/bundler/man/bundle-viz.1.txt +0 -39
  543. data/bundler/man/bundle.1.txt +0 -116
  544. data/bundler/man/gemfile.5.txt +0 -649
  545. data/lib/rubygems/source_local.rb +0 -7
  546. data/lib/rubygems/source_specific_file.rb +0 -6
  547. data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  548. data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
  549. data/lib/ubygems.rb +0 -14
  550. data/tmp/.keep +0 -0
  551. data/util/CL2notes +0 -55
  552. data/util/bisect +0 -10
  553. data/util/ci.sh +0 -62
  554. data/util/cops/deprecations.rb +0 -52
  555. data/util/create_certs.rb +0 -171
  556. data/util/create_certs.sh +0 -27
  557. data/util/create_encrypted_key.rb +0 -16
  558. data/util/generate_spdx_license_list.rb +0 -63
  559. data/util/patch_with_prs.rb +0 -77
  560. data/util/rubocop +0 -8
  561. data/util/update_bundled_ca_certificates.rb +0 -139
  562. 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
@@ -3,10 +3,11 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/commands/yank_command'
4
4
 
5
5
  class TestGemCommandsYankCommand < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
9
8
 
9
+ credential_setup
10
+
10
11
  @cmd = Gem::Commands::YankCommand.new
11
12
  @cmd.options[:host] = 'http://example'
12
13
 
@@ -16,6 +17,12 @@ class TestGemCommandsYankCommand < Gem::TestCase
16
17
  Gem.configuration.api_keys[:KEY] = 'other'
17
18
  end
18
19
 
20
+ def teardown
21
+ credential_teardown
22
+
23
+ super
24
+ end
25
+
19
26
  def test_handle_options
20
27
  @cmd.handle_options %w[a --version 1.0 --platform x86-darwin -k KEY --host HOST]
21
28
 
@@ -46,8 +53,8 @@ class TestGemCommandsYankCommand < Gem::TestCase
46
53
  @cmd.execute
47
54
  end
48
55
 
49
- assert_match %r%Yanking gem from http://example%, @ui.output
50
- 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
51
58
 
52
59
  platform = Gem.platforms[1]
53
60
  body = @fetcher.last_request.body.split('&').sort
@@ -63,7 +70,7 @@ class TestGemCommandsYankCommand < Gem::TestCase
63
70
  yank_uri = 'http://example/api/v1/gems/yank'
64
71
  @fetcher.data[yank_uri] = [
65
72
  [response_fail, 401, 'Unauthorized'],
66
- ['Successfully yanked', 200, 'OK']
73
+ ['Successfully yanked', 200, 'OK'],
67
74
  ]
68
75
 
69
76
  @cmd.options[:args] = %w[a]
@@ -77,8 +84,8 @@ class TestGemCommandsYankCommand < Gem::TestCase
77
84
 
78
85
  assert_match 'You have enabled multi-factor authentication. Please enter OTP code.', @otp_ui.output
79
86
  assert_match 'Code: ', @otp_ui.output
80
- assert_match %r%Yanking gem from http://example%, @otp_ui.output
81
- assert_match %r%Successfully yanked%, @otp_ui.output
87
+ assert_match %r{Yanking gem from http://example}, @otp_ui.output
88
+ assert_match %r{Successfully yanked}, @otp_ui.output
82
89
  assert_equal '111111', @fetcher.last_request['OTP']
83
90
  end
84
91
 
@@ -132,8 +139,8 @@ class TestGemCommandsYankCommand < Gem::TestCase
132
139
  @cmd.execute
133
140
  end
134
141
 
135
- assert_match %r%Yanking gem from https://other.example%, @ui.output
136
- 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
137
144
 
138
145
  body = @fetcher.last_request.body.split('&').sort
139
146
  assert_equal %w[gem_name=a version=1.0], body
@@ -141,4 +148,33 @@ class TestGemCommandsYankCommand < Gem::TestCase
141
148
  assert_equal [yank_uri], @fetcher.paths
142
149
  end
143
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
144
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
 
@@ -177,7 +173,7 @@ class TestGemConfigFile < Gem::TestCase
177
173
  assert_nil @cfg.instance_variable_get :@api_keys
178
174
 
179
175
  temp_cred = File.join Gem.user_home, '.gem', 'credentials'
180
- FileUtils.mkdir File.dirname(temp_cred)
176
+ FileUtils.mkdir_p File.dirname(temp_cred)
181
177
  File.open temp_cred, 'w', 0600 do |fp|
182
178
  fp.puts ':rubygems_api_key: 701229f217cdf23b1344c7b4b54ca97'
183
179
  end
@@ -303,7 +299,7 @@ if you believe they were disclosed to a third party.
303
299
 
304
300
  def test_load_api_keys
305
301
  temp_cred = File.join Gem.user_home, '.gem', 'credentials'
306
- FileUtils.mkdir File.dirname(temp_cred)
302
+ FileUtils.mkdir_p File.dirname(temp_cred)
307
303
  File.open temp_cred, 'w', 0600 do |fp|
308
304
  fp.puts ":rubygems_api_key: 701229f217cdf23b1344c7b4b54ca97"
309
305
  fp.puts ":other: a5fdbb6ba150cbb83aad2bb2fede64c"
@@ -392,7 +388,7 @@ if you believe they were disclosed to a third party.
392
388
  util_config_file
393
389
 
394
390
  # These should not be written out to the config file.
395
- assert_equal false, @cfg.backtrace, 'backtrace'
391
+ assert_equal false, @cfg.backtrace, 'backtrace'
396
392
  assert_equal Gem::ConfigFile::DEFAULT_BULK_THRESHOLD, @cfg.bulk_threshold,
397
393
  'bulk_threshold'
398
394
  assert_equal true, @cfg.update_sources, 'update_sources'
@@ -495,5 +491,4 @@ if you believe they were disclosed to a third party.
495
491
  util_config_file
496
492
  assert_equal(true, @cfg.disable_default_gem_server)
497
493
  end
498
-
499
494
  end
@@ -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
 
@@ -391,5 +390,4 @@ class TestGemDependency < Gem::TestCase
391
390
  assert_equal dep("a", " >= 1.a").identity, :abs_latest
392
391
  assert_equal dep("a").identity, :latest
393
392
  end
394
-
395
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
@@ -48,69 +47,6 @@ class TestGemDependencyInstaller < Gem::TestCase
48
47
  util_reset_gems
49
48
  end
50
49
 
51
- def test_available_set_for_name
52
- util_setup_gems
53
- p1a, = util_gem 'a', '10.a'
54
- util_setup_spec_fetcher p1a, @a1, @a1_pre
55
-
56
- inst = Gem::DependencyInstaller.new
57
-
58
- available = Gem::Deprecate.skip_during do
59
- inst.available_set_for 'a', Gem::Requirement.default
60
- end
61
-
62
- assert_equal %w[a-1], available.set.map { |s| s.spec.full_name }
63
- end
64
-
65
- def test_available_set_for_name_prerelease
66
- util_setup_gems
67
- p1a, = util_gem 'a', '10.a'
68
- util_setup_spec_fetcher p1a, @a1, @a1_pre
69
-
70
- inst = Gem::DependencyInstaller.new :prerelease => true
71
-
72
- available = Gem::Deprecate.skip_during do
73
- inst.available_set_for 'a', Gem::Requirement.default
74
- end
75
-
76
- assert_equal %w[a-10.a],
77
- available.sorted.map { |s| s.spec.full_name }
78
- end
79
-
80
- def test_available_set_for_dep
81
- util_setup_gems
82
- p1a, = util_gem 'a', '10.a'
83
- util_setup_spec_fetcher p1a, @a1, @a1_pre
84
-
85
- inst = Gem::DependencyInstaller.new
86
-
87
- dep = Gem::Dependency.new 'a', Gem::Requirement.default
88
-
89
- available = Gem::Deprecate.skip_during do
90
- inst.available_set_for dep, Gem::Requirement.default
91
- end
92
-
93
- assert_equal %w[a-1], available.set.map { |s| s.spec.full_name }
94
- end
95
-
96
- def test_available_set_for_dep_prerelease
97
- util_setup_gems
98
- p1a, = util_gem 'a', '10.a'
99
- util_setup_spec_fetcher p1a, @a1, @a1_pre
100
-
101
- inst = Gem::DependencyInstaller.new :prerelease => true
102
-
103
- dep = Gem::Dependency.new 'a', Gem::Requirement.default
104
- dep.prerelease = true
105
-
106
- available = Gem::Deprecate.skip_during do
107
- inst.available_set_for dep, Gem::Requirement.default
108
- end
109
-
110
- assert_equal %w[a-10.a],
111
- available.sorted.map { |s| s.spec.full_name }
112
- end
113
-
114
50
  def test_install
115
51
  util_setup_gems
116
52
 
@@ -211,7 +147,7 @@ class TestGemDependencyInstaller < Gem::TestCase
211
147
 
212
148
  FileUtils.mv @a1_gem, @tempdir
213
149
  FileUtils.mv @b1_gem, @tempdir
214
- FileUtils.mv e1_gem, @tempdir
150
+ FileUtils.mv e1_gem, @tempdir
215
151
 
216
152
  inst = nil
217
153
 
@@ -220,7 +156,7 @@ class TestGemDependencyInstaller < Gem::TestCase
220
156
  inst.install 'b'
221
157
  end
222
158
 
223
- 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 },
224
160
  'sanity check'
225
161
 
226
162
  Dir.chdir @tempdir do
@@ -228,7 +164,7 @@ class TestGemDependencyInstaller < Gem::TestCase
228
164
  inst.install 'e'
229
165
  end
230
166
 
231
- 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 }
232
168
  end
233
169
 
234
170
  def test_install_cache_dir
@@ -245,7 +181,7 @@ class TestGemDependencyInstaller < Gem::TestCase
245
181
  inst.install 'b'
246
182
  end
247
183
 
248
- 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 }
249
185
 
250
186
  assert File.exist? File.join(@gemhome, "cache", @a1.file_name)
251
187
  assert File.exist? File.join(@gemhome, "cache", @b1.file_name)
@@ -270,7 +206,7 @@ class TestGemDependencyInstaller < Gem::TestCase
270
206
  inst.install 'a', req("= 2")
271
207
  end
272
208
 
273
- 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 },
274
210
  'sanity check'
275
211
 
276
212
  FileUtils.rm File.join(@tempdir, a2.file_name)
@@ -281,7 +217,7 @@ class TestGemDependencyInstaller < Gem::TestCase
281
217
  end
282
218
 
283
219
  assert_equal %w[a-2 b-1], Gem::Specification.map(&:full_name)
284
- 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 }
285
221
  end
286
222
 
287
223
  # This asserts that if a gem's dependency is satisfied by an
@@ -302,7 +238,7 @@ class TestGemDependencyInstaller < Gem::TestCase
302
238
  FileUtils.mv @a1_gem, @tempdir
303
239
  FileUtils.mv a2_gem, @tempdir # not in index
304
240
  FileUtils.mv @b1_gem, @tempdir
305
- FileUtils.mv a3_gem, @tempdir
241
+ FileUtils.mv a3_gem, @tempdir
306
242
 
307
243
  Dir.chdir @tempdir do
308
244
  Gem::DependencyInstaller.new.install 'a', req("= 2")
@@ -318,7 +254,7 @@ class TestGemDependencyInstaller < Gem::TestCase
318
254
  end
319
255
 
320
256
  assert_equal %w[a-2 b-1], Gem::Specification.map(&:full_name)
321
- 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 }
322
258
  end
323
259
 
324
260
  def test_install_dependency
@@ -341,7 +277,7 @@ class TestGemDependencyInstaller < Gem::TestCase
341
277
  inst.install 'b'
342
278
  end
343
279
 
344
- 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 }
345
281
 
346
282
  assert done_installing_ran, 'post installs hook was not run'
347
283
  end
@@ -363,7 +299,7 @@ class TestGemDependencyInstaller < Gem::TestCase
363
299
  inst.install 'b'
364
300
  end
365
301
 
366
- assert_equal %w[a-1 aa-1 b-1], inst.installed_gems.map { |s| s.full_name }
302
+ assert_equal %w[a-1 aa-1 b-1], inst.installed_gems.map {|s| s.full_name }
367
303
  end
368
304
 
369
305
  def test_install_dependency_development_deep
@@ -385,7 +321,7 @@ class TestGemDependencyInstaller < Gem::TestCase
385
321
  inst.install 'd'
386
322
  end
387
323
 
388
- assert_equal %w[a-1 aa-1 b-1 c-1 d-1], inst.installed_gems.map { |s| s.full_name }
324
+ assert_equal %w[a-1 aa-1 b-1 c-1 d-1], inst.installed_gems.map {|s| s.full_name }
389
325
  end
390
326
 
391
327
  def test_install_dependency_development_shallow
@@ -407,7 +343,7 @@ class TestGemDependencyInstaller < Gem::TestCase
407
343
  inst.install 'd'
408
344
  end
409
345
 
410
- assert_equal %w[c-1 d-1], inst.installed_gems.map { |s| s.full_name }
346
+ assert_equal %w[c-1 d-1], inst.installed_gems.map {|s| s.full_name }
411
347
  end
412
348
 
413
349
  def test_install_dependency_existing
@@ -423,7 +359,7 @@ class TestGemDependencyInstaller < Gem::TestCase
423
359
  inst.install 'b'
424
360
  end
425
361
 
426
- assert_equal %w[b-1], inst.installed_gems.map { |s| s.full_name }
362
+ assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name }
427
363
  end
428
364
 
429
365
  def test_install_dependency_existing_extension
@@ -440,7 +376,7 @@ class TestGemDependencyInstaller < Gem::TestCase
440
376
  e1 = util_spec 'e', '1', nil, 'extconf.rb' do |s|
441
377
  s.extensions << 'extconf.rb'
442
378
  end
443
- e1_gem = File.join @tempdir, 'gems', "#{e1.full_name}.gem"
379
+ e1_gem = e1.cache_file
444
380
 
445
381
  _, f1_gem = util_gem 'f', '1', 'e' => nil
446
382
 
@@ -460,7 +396,7 @@ class TestGemDependencyInstaller < Gem::TestCase
460
396
  Dir.chdir pwd
461
397
  end
462
398
 
463
- assert_equal %w[f-1], inst.installed_gems.map { |s| s.full_name }
399
+ assert_equal %w[f-1], inst.installed_gems.map {|s| s.full_name }
464
400
 
465
401
  assert_path_exists e1.extension_dir
466
402
  end
@@ -480,7 +416,7 @@ class TestGemDependencyInstaller < Gem::TestCase
480
416
  inst.install 'f'
481
417
  end
482
418
 
483
- assert_equal %w[f-2], inst.installed_gems.map { |s| s.full_name }
419
+ assert_equal %w[f-2], inst.installed_gems.map {|s| s.full_name }
484
420
  end
485
421
 
486
422
  def test_install_local
@@ -494,7 +430,7 @@ class TestGemDependencyInstaller < Gem::TestCase
494
430
  inst.install 'a-1.gem'
495
431
  end
496
432
 
497
- assert_equal %w[a-1], inst.installed_gems.map { |s| s.full_name }
433
+ assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name }
498
434
  end
499
435
 
500
436
  def test_install_local_prerelease
@@ -508,7 +444,7 @@ class TestGemDependencyInstaller < Gem::TestCase
508
444
  inst.install 'a-1.a.gem'
509
445
  end
510
446
 
511
- assert_equal %w[a-1.a], inst.installed_gems.map { |s| s.full_name }
447
+ assert_equal %w[a-1.a], inst.installed_gems.map {|s| s.full_name }
512
448
  end
513
449
 
514
450
  def test_install_local_dependency
@@ -524,7 +460,7 @@ class TestGemDependencyInstaller < Gem::TestCase
524
460
  inst.install 'b-1.gem'
525
461
  end
526
462
 
527
- assert_equal %w[a-1 b-1], inst.installed_gems.map { |s| s.full_name }
463
+ assert_equal %w[a-1 b-1], inst.installed_gems.map {|s| s.full_name }
528
464
  end
529
465
 
530
466
  def test_install_local_dependency_installed
@@ -542,7 +478,7 @@ class TestGemDependencyInstaller < Gem::TestCase
542
478
  inst.install 'b-1.gem'
543
479
  end
544
480
 
545
- assert_equal %w[b-1], inst.installed_gems.map { |s| s.full_name }
481
+ assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name }
546
482
  end
547
483
 
548
484
  def test_install_local_subdir
@@ -555,7 +491,7 @@ class TestGemDependencyInstaller < Gem::TestCase
555
491
  inst.install 'gems/a-1.gem'
556
492
  end
557
493
 
558
- assert_equal %w[a-1], inst.installed_gems.map { |s| s.full_name }
494
+ assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name }
559
495
  end
560
496
 
561
497
  def test_install_minimal_deps
@@ -581,7 +517,7 @@ class TestGemDependencyInstaller < Gem::TestCase
581
517
  inst.install 'b', req('= 1')
582
518
  end
583
519
 
584
- assert_equal %w[b-1], inst.installed_gems.map { |s| s.full_name },
520
+ assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name },
585
521
  'sanity check'
586
522
 
587
523
  Dir.chdir @tempdir do
@@ -589,7 +525,41 @@ class TestGemDependencyInstaller < Gem::TestCase
589
525
  inst.install 'e'
590
526
  end
591
527
 
592
- assert_equal %w[a-1 e-1], inst.installed_gems.map { |s| s.full_name }
528
+ assert_equal %w[a-1 e-1], inst.installed_gems.map {|s| s.full_name }
529
+ end
530
+
531
+ def test_install_no_minimal_deps
532
+ util_setup_gems
533
+
534
+ _, e1_gem = util_gem 'e', '1' do |s|
535
+ s.add_dependency 'b'
536
+ end
537
+
538
+ _, b2_gem = util_gem 'b', '2' do |s|
539
+ s.add_dependency 'a'
540
+ end
541
+
542
+ FileUtils.mv @a1_gem, @tempdir
543
+ FileUtils.mv @b1_gem, @tempdir
544
+ FileUtils.mv b2_gem, @tempdir
545
+ FileUtils.mv e1_gem, @tempdir
546
+
547
+ inst = nil
548
+
549
+ Dir.chdir @tempdir do
550
+ inst = Gem::DependencyInstaller.new :ignore_dependencies => true
551
+ inst.install 'b', req('= 1')
552
+ end
553
+
554
+ assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name },
555
+ 'sanity check'
556
+
557
+ Dir.chdir @tempdir do
558
+ inst = Gem::DependencyInstaller.new :minimal_deps => false
559
+ inst.install 'e'
560
+ end
561
+
562
+ assert_equal %w[a-1 b-2 e-1], inst.installed_gems.map {|s| s.full_name }
593
563
  end
594
564
 
595
565
  def test_install_no_document
@@ -622,7 +592,7 @@ class TestGemDependencyInstaller < Gem::TestCase
622
592
 
623
593
  env = "/\\S+/env" unless Gem.win_platform?
624
594
 
625
- assert_match %r|\A#!#{env} #{RbConfig::CONFIG['ruby_install_name']}\n|,
595
+ assert_match %r{\A#!#{env} #{RbConfig::CONFIG['ruby_install_name']}\n},
626
596
  File.read(File.join(@gemhome, 'bin', 'a_bin'))
627
597
  end
628
598
 
@@ -639,7 +609,7 @@ class TestGemDependencyInstaller < Gem::TestCase
639
609
  inst.install 'b'
640
610
  end
641
611
 
642
- assert_equal %w[b-1], inst.installed_gems.map { |s| s.full_name }
612
+ assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name }
643
613
  end
644
614
 
645
615
  def test_install_build_args
@@ -669,7 +639,7 @@ class TestGemDependencyInstaller < Gem::TestCase
669
639
  inst.install 'b'
670
640
  end
671
641
 
672
- assert_equal %w[b-1], inst.installed_gems.map { |s| s.full_name }
642
+ assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name }
673
643
  end
674
644
 
675
645
  def test_install_install_dir
@@ -690,7 +660,7 @@ class TestGemDependencyInstaller < Gem::TestCase
690
660
  inst.install 'b'
691
661
  end
692
662
 
693
- assert_equal %w[a-1 b-1], inst.installed_gems.map { |s| s.full_name }
663
+ assert_equal %w[a-1 b-1], inst.installed_gems.map {|s| s.full_name }
694
664
 
695
665
  assert File.exist?(File.join(gemhome2, 'specifications', @a1.spec_name))
696
666
  assert File.exist?(File.join(gemhome2, 'cache', @a1.file_name))
@@ -714,7 +684,7 @@ class TestGemDependencyInstaller < Gem::TestCase
714
684
  inst.install 'b'
715
685
  end
716
686
 
717
- assert_equal %w[a-1 b-1], inst.installed_gems.map { |s| s.full_name }
687
+ assert_equal %w[a-1 b-1], inst.installed_gems.map {|s| s.full_name }
718
688
  a1, b1 = inst.installed_gems
719
689
 
720
690
  assert_equal a1.spec_file, a1.loaded_from
@@ -738,7 +708,7 @@ class TestGemDependencyInstaller < Gem::TestCase
738
708
  inst.install 'b'
739
709
  end
740
710
 
741
- assert_equal %w[a-1 b-1], inst.installed_gems.map { |s| s.full_name }
711
+ assert_equal %w[a-1 b-1], inst.installed_gems.map {|s| s.full_name }
742
712
  end
743
713
 
744
714
  def test_install_domain_local
@@ -757,7 +727,7 @@ class TestGemDependencyInstaller < Gem::TestCase
757
727
  assert_equal expected, e.message
758
728
  end
759
729
 
760
- assert_equal [], inst.installed_gems.map { |s| s.full_name }
730
+ assert_equal [], inst.installed_gems.map {|s| s.full_name }
761
731
  end
762
732
 
763
733
  def test_install_domain_remote
@@ -773,7 +743,7 @@ class TestGemDependencyInstaller < Gem::TestCase
773
743
  inst = Gem::DependencyInstaller.new :domain => :remote
774
744
  inst.install 'a'
775
745
 
776
- assert_equal %w[a-1], inst.installed_gems.map { |s| s.full_name }
746
+ assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name }
777
747
  end
778
748
 
779
749
  def test_install_dual_repository
@@ -790,7 +760,7 @@ class TestGemDependencyInstaller < Gem::TestCase
790
760
  inst.install 'a'
791
761
  end
792
762
 
793
- assert_equal %w[a-1], inst.installed_gems.map { |s| s.full_name },
763
+ assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name },
794
764
  'sanity check'
795
765
 
796
766
  ENV['GEM_HOME'] = @gemhome
@@ -802,7 +772,7 @@ class TestGemDependencyInstaller < Gem::TestCase
802
772
  inst.install 'b'
803
773
  end
804
774
 
805
- assert_equal %w[b-1], inst.installed_gems.map { |s| s.full_name }
775
+ assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name }
806
776
  end
807
777
 
808
778
  def test_install_reinstall
@@ -813,7 +783,7 @@ class TestGemDependencyInstaller < Gem::TestCase
813
783
  inst = nil
814
784
 
815
785
  Dir.chdir @tempdir do
816
- inst = Gem::DependencyInstaller.new
786
+ inst = Gem::DependencyInstaller.new :force => true
817
787
  inst.install 'a'
818
788
  end
819
789
 
@@ -837,7 +807,7 @@ class TestGemDependencyInstaller < Gem::TestCase
837
807
  inst.install 'a'
838
808
  end
839
809
 
840
- assert_equal %w[a-1], inst.installed_gems.map { |s| s.full_name }
810
+ assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name }
841
811
  end
842
812
 
843
813
  def test_install_remote_dep
@@ -857,7 +827,7 @@ class TestGemDependencyInstaller < Gem::TestCase
857
827
  inst.install dep
858
828
  end
859
829
 
860
- assert_equal %w[a-1], inst.installed_gems.map { |s| s.full_name }
830
+ assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name }
861
831
  end
862
832
 
863
833
  def test_install_remote_platform_newer
@@ -890,7 +860,7 @@ class TestGemDependencyInstaller < Gem::TestCase
890
860
  inst = Gem::DependencyInstaller.new :domain => :remote
891
861
  inst.install 'a'
892
862
 
893
- assert_equal %w[a-1], inst.installed_gems.map { |s| s.full_name }
863
+ assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name }
894
864
  end
895
865
 
896
866
  def test_install_platform_is_ignored_when_a_file_is_specified
@@ -901,17 +871,19 @@ class TestGemDependencyInstaller < Gem::TestCase
901
871
  inst = Gem::DependencyInstaller.new :domain => :local
902
872
  inst.install a_gem
903
873
 
904
- assert_equal %w[a-1-cpu-other_platform-1], inst.installed_gems.map { |s| s.full_name }
874
+ assert_equal %w[a-1-cpu-other_platform-1], inst.installed_gems.map {|s| s.full_name }
905
875
  end
906
876
 
907
- if defined? OpenSSL
877
+ require 'rubygems/openssl'
878
+
879
+ if Gem::HAVE_OPENSSL
908
880
  def test_install_security_policy
909
881
  util_setup_gems
910
882
 
911
- data = File.open(@a1_gem, 'rb') { |f| f.read }
883
+ data = File.open(@a1_gem, 'rb') {|f| f.read }
912
884
  @fetcher.data['http://gems.example.com/gems/a-1.gem'] = data
913
885
 
914
- data = File.open(@b1_gem, 'rb') { |f| f.read }
886
+ data = File.open(@b1_gem, 'rb') {|f| f.read }
915
887
  @fetcher.data['http://gems.example.com/gems/b-1.gem'] = data
916
888
 
917
889
  policy = Gem::Security::HighSecurity
@@ -924,7 +896,7 @@ class TestGemDependencyInstaller < Gem::TestCase
924
896
  assert_equal 'unsigned gems are not allowed by the High Security policy',
925
897
  e.message
926
898
 
927
- assert_equal %w[], inst.installed_gems.map { |s| s.full_name }
899
+ assert_equal %w[], inst.installed_gems.map {|s| s.full_name }
928
900
  end
929
901
  end
930
902
 
@@ -938,7 +910,7 @@ class TestGemDependencyInstaller < Gem::TestCase
938
910
  inst = Gem::DependencyInstaller.new :wrappers => false, :format_executable => false
939
911
  inst.install 'a'
940
912
 
941
- refute_match(%r|This file was generated by RubyGems.|,
913
+ refute_match(%r{This file was generated by RubyGems.},
942
914
  File.read(File.join(@gemhome, 'bin', 'a_bin')))
943
915
  end
944
916
  end
@@ -946,126 +918,77 @@ class TestGemDependencyInstaller < Gem::TestCase
946
918
  def test_install_version
947
919
  util_setup_d
948
920
 
949
- data = File.open(@d2_gem, 'rb') { |f| f.read }
921
+ data = File.open(@d2_gem, 'rb') {|f| f.read }
950
922
  @fetcher.data['http://gems.example.com/gems/d-2.gem'] = data
951
923
 
952
- data = File.open(@d1_gem, 'rb') { |f| f.read }
924
+ data = File.open(@d1_gem, 'rb') {|f| f.read }
953
925
  @fetcher.data['http://gems.example.com/gems/d-1.gem'] = data
954
926
 
955
927
  inst = Gem::DependencyInstaller.new
956
928
 
957
929
  inst.install 'd', '= 1'
958
930
 
959
- assert_equal %w[d-1], inst.installed_gems.map { |s| s.full_name }
931
+ assert_equal %w[d-1], inst.installed_gems.map {|s| s.full_name }
960
932
  end
961
933
 
962
934
  def test_install_version_default
963
935
  util_setup_d
964
936
 
965
- data = File.open(@d2_gem, 'rb') { |f| f.read }
937
+ data = File.open(@d2_gem, 'rb') {|f| f.read }
966
938
  @fetcher.data['http://gems.example.com/gems/d-2.gem'] = data
967
939
 
968
- data = File.open(@d1_gem, 'rb') { |f| f.read }
940
+ data = File.open(@d1_gem, 'rb') {|f| f.read }
969
941
  @fetcher.data['http://gems.example.com/gems/d-1.gem'] = data
970
942
 
971
943
  inst = Gem::DependencyInstaller.new
972
944
  inst.install 'd'
973
945
 
974
- assert_equal %w[d-2], inst.installed_gems.map { |s| s.full_name }
946
+ assert_equal %w[d-2], inst.installed_gems.map {|s| s.full_name }
975
947
  end
976
948
 
977
- def test_find_gems_gems_with_sources
978
- util_setup_gems
949
+ def test_install_legacy_spec_with_nil_required_rubygems_version
950
+ path = File.expand_path "../data/null-required-rubygems-version.gemspec.rz", __FILE__
951
+ spec = Marshal.load Gem.read_binary(path)
952
+ def spec.validate(*args); end
979
953
 
980
- inst = Gem::DependencyInstaller.new
981
- dep = Gem::Dependency.new 'b', '>= 0'
982
-
983
- Gem::Specification.reset
984
-
985
- set = Gem::Deprecate.skip_during do
986
- inst.find_gems_with_sources(dep)
987
- end
954
+ util_build_gem spec
988
955
 
989
- assert_kind_of Gem::AvailableSet, set
956
+ cache_file = File.join @tempdir, 'gems', "#{spec.original_name}.gem"
957
+ FileUtils.mkdir_p File.dirname cache_file
958
+ FileUtils.mv spec.cache_file, cache_file
990
959
 
991
- s = set.set.first
960
+ util_setup_spec_fetcher spec
992
961
 
993
- assert_equal @b1, s.spec
994
- assert_equal Gem::Source.new(@gem_repo), s.source
995
- end
962
+ data = Gem.read_binary(cache_file)
996
963
 
997
- def test_find_spec_by_name_and_version_wildcard
998
- util_gem 'a', 1
999
- FileUtils.mv 'gems/a-1.gem', @tempdir
964
+ @fetcher.data['http://gems.example.com/gems/activesupport-1.0.0.gem'] = data
1000
965
 
1001
- FileUtils.touch 'rdoc.gem'
1002
-
1003
- inst = Gem::DependencyInstaller.new
1004
-
1005
- available = Gem::Deprecate.skip_during do
1006
- inst.find_spec_by_name_and_version('*.gem')
1007
- end
1008
-
1009
- assert_equal %w[a-1], available.each_spec.map { |spec| spec.full_name }
1010
- end
1011
-
1012
- def test_find_spec_by_name_and_version_wildcard_bad_gem
1013
- FileUtils.touch 'rdoc.gem'
966
+ dep = Gem::Dependency.new 'activesupport'
1014
967
 
1015
968
  inst = Gem::DependencyInstaller.new
969
+ inst.install dep
1016
970
 
1017
- assert_raises Gem::Package::FormatError do
1018
- Gem::Deprecate.skip_during do
1019
- inst.find_spec_by_name_and_version '*.gem'
1020
- end
1021
- end
971
+ assert_equal %w[activesupport-1.0.0], Gem::Specification.map(&:full_name)
1022
972
  end
1023
973
 
1024
- def test_find_spec_by_name_and_version_bad_gem
1025
- FileUtils.touch 'rdoc.gem'
974
+ def test_find_gems_gems_with_sources
975
+ util_setup_gems
1026
976
 
1027
977
  inst = Gem::DependencyInstaller.new
978
+ dep = Gem::Dependency.new 'b', '>= 0'
1028
979
 
1029
- e = assert_raises Gem::Package::FormatError do
1030
- Gem::Deprecate.skip_during do
1031
- inst.find_spec_by_name_and_version 'rdoc.gem'
1032
- end
1033
- end
1034
-
1035
- full_path = File.join @tempdir, 'rdoc.gem'
1036
- assert_equal "package metadata is missing in #{full_path}", e.message
1037
- end
1038
-
1039
- def test_find_spec_by_name_and_version_directory
1040
- Dir.mkdir 'rdoc'
1041
-
1042
- inst = Gem::DependencyInstaller.new
980
+ Gem::Specification.reset
1043
981
 
1044
- e = assert_raises Gem::SpecificGemNotFoundException do
1045
- Gem::Deprecate.skip_during do
1046
- inst.find_spec_by_name_and_version 'rdoc'
1047
- end
982
+ set = Gem::Deprecate.skip_during do
983
+ inst.find_gems_with_sources(dep)
1048
984
  end
1049
985
 
1050
- assert_equal "Could not find a valid gem 'rdoc' (>= 0) " +
1051
- "locally or in a repository",
1052
- e.message
1053
- end
1054
-
1055
- def test_find_spec_by_name_and_version_file
1056
- FileUtils.touch 'rdoc'
1057
-
1058
- inst = Gem::DependencyInstaller.new
986
+ assert_kind_of Gem::AvailableSet, set
1059
987
 
1060
- e = assert_raises Gem::SpecificGemNotFoundException do
1061
- Gem::Deprecate.skip_during do
1062
- inst.find_spec_by_name_and_version 'rdoc'
1063
- end
1064
- end
988
+ s = set.set.first
1065
989
 
1066
- assert_equal "Could not find a valid gem 'rdoc' (>= 0) " +
1067
- "locally or in a repository",
1068
- e.message
990
+ assert_equal @b1, s.spec
991
+ assert_equal Gem::Source.new(@gem_repo), s.source
1069
992
  end
1070
993
 
1071
994
  def test_find_gems_with_sources_local
@@ -1109,8 +1032,8 @@ class TestGemDependencyInstaller < Gem::TestCase
1109
1032
 
1110
1033
  releases = set.all_specs
1111
1034
 
1112
- assert releases.any? { |s| s.name == 'a' and s.version.to_s == '1' }
1113
- refute releases.any? { |s| s.name == 'a' and s.version.to_s == '1.a' }
1035
+ assert releases.any? {|s| s.name == 'a' and s.version.to_s == '1' }
1036
+ refute releases.any? {|s| s.name == 'a' and s.version.to_s == '1.a' }
1114
1037
 
1115
1038
  dependency.prerelease = true
1116
1039
 
@@ -1168,7 +1091,7 @@ class TestGemDependencyInstaller < Gem::TestCase
1168
1091
  inst = Gem::DependencyInstaller.new
1169
1092
  request_set = inst.resolve_dependencies 'b', req('>= 0')
1170
1093
 
1171
- requests = request_set.sorted_requests.map { |req| req.full_name }
1094
+ requests = request_set.sorted_requests.map {|req| req.full_name }
1172
1095
 
1173
1096
  assert_equal %w[a-1 b-1], requests
1174
1097
  end
@@ -1182,7 +1105,7 @@ class TestGemDependencyInstaller < Gem::TestCase
1182
1105
  inst = Gem::DependencyInstaller.new :ignore_dependencies => true
1183
1106
  request_set = inst.resolve_dependencies 'b', req('>= 0')
1184
1107
 
1185
- requests = request_set.sorted_requests.map { |req| req.full_name }
1108
+ requests = request_set.sorted_requests.map {|req| req.full_name }
1186
1109
 
1187
1110
  assert request_set.ignore_dependencies
1188
1111
 
@@ -1199,26 +1122,11 @@ class TestGemDependencyInstaller < Gem::TestCase
1199
1122
  inst = Gem::DependencyInstaller.new
1200
1123
  request_set = inst.resolve_dependencies 'a-1.gem', req('>= 0')
1201
1124
 
1202
- requests = request_set.sorted_requests.map { |req| req.full_name }
1125
+ requests = request_set.sorted_requests.map {|req| req.full_name }
1203
1126
 
1204
1127
  assert_equal %w[a-1], requests
1205
1128
  end
1206
1129
 
1207
- def util_write_a1_bin
1208
- write_file File.join('gems', 'a-1', 'bin', 'a_bin') do |fp|
1209
- fp.puts "#!/usr/bin/ruby"
1210
- end
1211
- end
1212
-
1213
- def util_setup_c1_pre
1214
- @c1_pre, @c1_pre_gem = util_spec 'c', '1.a' do |s|
1215
- s.add_dependency 'a', '1.a'
1216
- s.add_dependency 'b', '1'
1217
- end
1218
-
1219
- util_reset_gems
1220
- end
1221
-
1222
1130
  def util_setup_d
1223
1131
  @d1, @d1_gem = util_gem 'd', '1'
1224
1132
  @d2, @d2_gem = util_gem 'd', '2'
@@ -1226,44 +1134,13 @@ class TestGemDependencyInstaller < Gem::TestCase
1226
1134
  util_reset_gems
1227
1135
  end
1228
1136
 
1229
- def util_setup_wxyz
1230
- @x1_m, @x1_m_gem = util_spec 'x', '1' do |s|
1231
- s.platform = Gem::Platform.new %w[cpu my_platform 1]
1232
- end
1233
-
1234
- @x1_o, @x1_o_gem = util_spec 'x', '1' do |s|
1235
- s.platform = Gem::Platform.new %w[cpu other_platform 1]
1236
- end
1237
-
1238
- @w1, @w1_gem = util_spec 'w', '1', 'x' => nil
1239
-
1240
- @y1, @y1_gem = util_spec 'y', '1'
1241
- @y1_1_p, @y1_1_p_gem = util_spec 'y', '1.1' do |s|
1242
- s.platform = Gem::Platform.new %w[cpu my_platform 1]
1243
- end
1244
-
1245
- @z1, @z1_gem = util_spec 'z', '1', 'y' => nil
1246
-
1247
- util_reset_gems
1248
- end
1249
-
1250
1137
  def util_reset_gems
1251
1138
  @a1 ||= nil
1252
1139
  @b1 ||= nil
1253
1140
  @a1_pre ||= nil
1254
- @c1_pre ||= nil
1255
1141
  @d1 ||= nil
1256
1142
  @d2 ||= nil
1257
- @w1 ||= nil
1258
- @x1_m ||= nil
1259
- @x1_o ||= nil
1260
- @y1 ||= nil
1261
- @y1_1_p ||= nil
1262
- @z1 ||= nil
1263
-
1264
- util_setup_spec_fetcher(*[@a1, @a1_pre, @b1, @c1_pre,
1265
- @d1, @d2, @x1_m, @x1_o, @w1, @y1,
1266
- @y1_1_p, @z1].compact)
1267
- end
1268
1143
 
1144
+ util_setup_spec_fetcher(*[@a1, @a1_pre, @b1, @d1, @d2].compact)
1145
+ end
1269
1146
  end