rubygems-update 3.1.6 → 3.3.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (703) hide show
  1. checksums.yaml +4 -4
  2. data/{History.txt → CHANGELOG.md} +1452 -514
  3. data/CODE_OF_CONDUCT.md +55 -19
  4. data/CONTRIBUTING.md +74 -27
  5. data/Manifest.txt +154 -117
  6. data/POLICIES.md +27 -19
  7. data/README.md +10 -8
  8. data/UPGRADING.md +5 -81
  9. data/bin/gem +3 -8
  10. data/bin/update_rubygems +5 -5
  11. data/bundler/CHANGELOG.md +2358 -1430
  12. data/bundler/README.md +7 -9
  13. data/bundler/UPGRADING.md +27 -34
  14. data/bundler/bundler.gemspec +8 -11
  15. data/bundler/exe/bundle +10 -8
  16. data/bundler/exe/bundler +1 -1
  17. data/bundler/lib/bundler/.document +1 -0
  18. data/bundler/lib/bundler/build_metadata.rb +4 -12
  19. data/bundler/lib/bundler/cli/add.rb +1 -1
  20. data/bundler/lib/bundler/cli/binstubs.rb +6 -2
  21. data/bundler/lib/bundler/cli/cache.rb +3 -8
  22. data/bundler/lib/bundler/cli/check.rb +4 -2
  23. data/bundler/lib/bundler/cli/clean.rb +1 -1
  24. data/bundler/lib/bundler/cli/common.rb +31 -3
  25. data/bundler/lib/bundler/cli/config.rb +10 -1
  26. data/bundler/lib/bundler/cli/console.rb +1 -1
  27. data/bundler/lib/bundler/cli/doctor.rb +25 -6
  28. data/bundler/lib/bundler/cli/exec.rb +5 -10
  29. data/bundler/lib/bundler/cli/fund.rb +36 -0
  30. data/bundler/lib/bundler/cli/gem.rb +219 -28
  31. data/bundler/lib/bundler/cli/info.rb +38 -6
  32. data/bundler/lib/bundler/cli/init.rb +3 -3
  33. data/bundler/lib/bundler/cli/inject.rb +1 -1
  34. data/bundler/lib/bundler/cli/install.rb +25 -54
  35. data/bundler/lib/bundler/cli/issue.rb +5 -4
  36. data/bundler/lib/bundler/cli/list.rb +19 -11
  37. data/bundler/lib/bundler/cli/lock.rb +5 -1
  38. data/bundler/lib/bundler/cli/open.rb +1 -2
  39. data/bundler/lib/bundler/cli/outdated.rb +105 -76
  40. data/bundler/lib/bundler/cli/platform.rb +2 -2
  41. data/bundler/lib/bundler/cli/plugin.rb +10 -0
  42. data/bundler/lib/bundler/cli/pristine.rb +5 -0
  43. data/bundler/lib/bundler/cli/remove.rb +1 -2
  44. data/bundler/lib/bundler/cli/show.rb +2 -2
  45. data/bundler/lib/bundler/cli/update.rb +20 -9
  46. data/bundler/lib/bundler/cli.rb +106 -83
  47. data/bundler/lib/bundler/compact_index_client/cache.rb +6 -23
  48. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
  49. data/bundler/lib/bundler/compact_index_client/updater.rb +29 -25
  50. data/bundler/lib/bundler/compact_index_client.rb +3 -9
  51. data/bundler/lib/bundler/current_ruby.rb +17 -6
  52. data/bundler/lib/bundler/definition.rb +297 -396
  53. data/bundler/lib/bundler/dep_proxy.rb +16 -9
  54. data/bundler/lib/bundler/dependency.rb +22 -77
  55. data/bundler/lib/bundler/digest.rb +71 -0
  56. data/bundler/lib/bundler/dsl.rb +76 -83
  57. data/bundler/lib/bundler/endpoint_specification.rb +16 -14
  58. data/bundler/lib/bundler/env.rb +2 -2
  59. data/bundler/lib/bundler/environment_preserver.rb +29 -2
  60. data/bundler/lib/bundler/errors.rb +30 -3
  61. data/bundler/lib/bundler/feature_flag.rb +0 -9
  62. data/bundler/lib/bundler/fetcher/base.rb +7 -9
  63. data/bundler/lib/bundler/fetcher/compact_index.rb +11 -16
  64. data/bundler/lib/bundler/fetcher/downloader.rb +10 -7
  65. data/bundler/lib/bundler/fetcher/index.rb +2 -30
  66. data/bundler/lib/bundler/fetcher.rb +24 -25
  67. data/bundler/lib/bundler/friendly_errors.rb +46 -47
  68. data/bundler/lib/bundler/gem_helper.rb +53 -31
  69. data/bundler/lib/bundler/gem_helpers.rb +43 -24
  70. data/bundler/lib/bundler/gem_version_promoter.rb +10 -20
  71. data/bundler/lib/bundler/graph.rb +1 -1
  72. data/bundler/lib/bundler/index.rb +19 -25
  73. data/bundler/lib/bundler/injector.rb +38 -6
  74. data/bundler/lib/bundler/inline.rb +4 -13
  75. data/bundler/lib/bundler/installer/gem_installer.rb +19 -24
  76. data/bundler/lib/bundler/installer/parallel_installer.rb +46 -25
  77. data/bundler/lib/bundler/installer/standalone.rb +58 -11
  78. data/bundler/lib/bundler/installer.rb +51 -81
  79. data/bundler/lib/bundler/lazy_specification.rb +79 -36
  80. data/bundler/lib/bundler/lockfile_generator.rb +3 -3
  81. data/bundler/lib/bundler/lockfile_parser.rb +19 -44
  82. data/bundler/lib/bundler/man/.document +1 -0
  83. data/bundler/{man → lib/bundler/man}/bundle-add.1 +21 -5
  84. data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +16 -4
  85. data/bundler/{man → lib/bundler/man}/bundle-binstubs.1 +5 -3
  86. data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +2 -4
  87. data/bundler/{man → lib/bundler/man}/bundle-cache.1 +7 -1
  88. data/bundler/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +7 -0
  89. data/bundler/{man → lib/bundler/man}/bundle-check.1 +1 -1
  90. data/bundler/{man → lib/bundler/man}/bundle-clean.1 +1 -1
  91. data/bundler/{man → lib/bundler/man}/bundle-config.1 +65 -47
  92. data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +74 -65
  93. data/bundler/lib/bundler/man/bundle-console.1 +53 -0
  94. data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
  95. data/bundler/{man → lib/bundler/man}/bundle-doctor.1 +1 -1
  96. data/bundler/{man → lib/bundler/man}/bundle-exec.1 +2 -2
  97. data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +1 -1
  98. data/bundler/{man → lib/bundler/man}/bundle-gem.1 +38 -3
  99. data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +46 -7
  100. data/bundler/lib/bundler/man/bundle-help.1 +13 -0
  101. data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
  102. data/bundler/{man → lib/bundler/man}/bundle-info.1 +1 -1
  103. data/bundler/{man → lib/bundler/man}/bundle-init.1 +1 -1
  104. data/bundler/{man → lib/bundler/man}/bundle-inject.1 +5 -2
  105. data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +3 -1
  106. data/bundler/{man → lib/bundler/man}/bundle-install.1 +35 -4
  107. data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +33 -5
  108. data/bundler/{man → lib/bundler/man}/bundle-list.1 +7 -7
  109. data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
  110. data/bundler/{man → lib/bundler/man}/bundle-lock.1 +1 -1
  111. data/bundler/{man → lib/bundler/man}/bundle-open.1 +1 -1
  112. data/bundler/{man → lib/bundler/man}/bundle-outdated.1 +3 -10
  113. data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +1 -10
  114. data/bundler/{man → lib/bundler/man}/bundle-platform.1 +16 -6
  115. data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +14 -7
  116. data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
  117. data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
  118. data/bundler/{man → lib/bundler/man}/bundle-pristine.1 +1 -1
  119. data/bundler/{man → lib/bundler/man}/bundle-remove.1 +1 -1
  120. data/bundler/{man → lib/bundler/man}/bundle-show.1 +1 -1
  121. data/bundler/{man → lib/bundler/man}/bundle-update.1 +5 -5
  122. data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +5 -4
  123. data/bundler/lib/bundler/man/bundle-version.1 +35 -0
  124. data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
  125. data/bundler/{man → lib/bundler/man}/bundle-viz.1 +4 -1
  126. data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +2 -0
  127. data/bundler/{man → lib/bundler/man}/bundle.1 +15 -10
  128. data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +12 -7
  129. data/bundler/{man → lib/bundler/man}/gemfile.5 +106 -80
  130. data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +94 -83
  131. data/bundler/{man → lib/bundler/man}/index.txt +4 -0
  132. data/bundler/lib/bundler/match_metadata.rb +13 -0
  133. data/bundler/lib/bundler/match_platform.rb +0 -1
  134. data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
  135. data/bundler/lib/bundler/mirror.rb +2 -2
  136. data/bundler/lib/bundler/plugin/api/source.rb +25 -9
  137. data/bundler/lib/bundler/plugin/dsl.rb +1 -1
  138. data/bundler/lib/bundler/plugin/index.rb +13 -1
  139. data/bundler/lib/bundler/plugin/installer/git.rb +0 -4
  140. data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -5
  141. data/bundler/lib/bundler/plugin/installer.rb +11 -11
  142. data/bundler/lib/bundler/plugin/source_list.rb +5 -1
  143. data/bundler/lib/bundler/plugin.rb +58 -11
  144. data/bundler/lib/bundler/process_lock.rb +1 -1
  145. data/bundler/lib/bundler/remote_specification.rb +11 -6
  146. data/bundler/lib/bundler/resolver/base.rb +50 -0
  147. data/bundler/lib/bundler/resolver/spec_group.rb +64 -57
  148. data/bundler/lib/bundler/resolver.rb +234 -230
  149. data/bundler/lib/bundler/retry.rb +2 -2
  150. data/bundler/lib/bundler/ruby_dsl.rb +1 -1
  151. data/bundler/lib/bundler/ruby_version.rb +6 -19
  152. data/bundler/lib/bundler/rubygems_ext.rb +194 -33
  153. data/bundler/lib/bundler/rubygems_gem_installer.rb +87 -16
  154. data/bundler/lib/bundler/rubygems_integration.rb +71 -153
  155. data/bundler/lib/bundler/runtime.rb +22 -26
  156. data/bundler/lib/bundler/self_manager.rb +168 -0
  157. data/bundler/lib/bundler/settings.rb +145 -66
  158. data/bundler/lib/bundler/setup.rb +2 -2
  159. data/bundler/lib/bundler/shared_helpers.rb +17 -32
  160. data/bundler/lib/bundler/similarity_detector.rb +1 -1
  161. data/bundler/lib/bundler/source/git/git_proxy.rb +88 -84
  162. data/bundler/lib/bundler/source/git.rb +50 -32
  163. data/bundler/lib/bundler/source/metadata.rb +3 -7
  164. data/bundler/lib/bundler/source/path/installer.rb +10 -10
  165. data/bundler/lib/bundler/source/path.rb +10 -4
  166. data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
  167. data/bundler/lib/bundler/source/rubygems.rb +201 -179
  168. data/bundler/lib/bundler/source/rubygems_aggregate.rb +68 -0
  169. data/bundler/lib/bundler/source.rb +25 -5
  170. data/bundler/lib/bundler/source_list.rb +105 -63
  171. data/bundler/lib/bundler/source_map.rb +71 -0
  172. data/bundler/lib/bundler/spec_set.rb +62 -57
  173. data/bundler/lib/bundler/stub_specification.rb +30 -10
  174. data/bundler/lib/bundler/templates/Executable +2 -4
  175. data/bundler/lib/bundler/templates/Executable.bundler +8 -8
  176. data/bundler/lib/bundler/templates/Executable.standalone +2 -4
  177. data/bundler/lib/bundler/templates/Gemfile +0 -2
  178. data/bundler/lib/bundler/templates/gems.rb +0 -3
  179. data/bundler/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
  180. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  181. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +12 -1
  182. data/bundler/lib/bundler/templates/newgem/README.md.tt +9 -14
  183. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +32 -5
  184. data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
  185. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
  186. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
  187. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +27 -0
  188. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
  189. data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  190. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
  191. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +27 -17
  192. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
  193. data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
  194. data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
  195. data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
  196. data/bundler/lib/bundler/templates/newgem/standard.yml.tt +3 -0
  197. data/bundler/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
  198. data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/test_newgem.rb.tt} +3 -1
  199. data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  200. data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  201. data/bundler/lib/bundler/ui/shell.rb +6 -6
  202. data/bundler/lib/bundler/uri_credentials_filter.rb +3 -1
  203. data/bundler/lib/bundler/vendor/.document +1 -0
  204. data/bundler/lib/bundler/vendor/connection_pool/LICENSE +20 -0
  205. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +19 -21
  206. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  207. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +57 -0
  208. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +39 -74
  209. data/bundler/lib/bundler/vendor/fileutils/LICENSE.txt +22 -0
  210. data/bundler/lib/bundler/vendor/molinillo/LICENSE +9 -0
  211. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +7 -0
  212. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
  213. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +11 -5
  214. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +37 -5
  215. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +34 -28
  216. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  217. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +12 -1
  218. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +49 -47
  219. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -1
  220. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
  221. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +82 -189
  222. data/bundler/lib/bundler/vendor/thor/LICENSE.md +20 -0
  223. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
  224. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +9 -7
  225. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -2
  226. data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +7 -3
  227. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
  228. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +6 -0
  229. data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +10 -5
  230. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +5 -1
  231. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +28 -9
  232. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +27 -6
  233. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +5 -1
  234. data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
  235. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
  236. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  237. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +5 -13
  238. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
  239. data/bundler/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
  240. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +452 -0
  241. data/bundler/lib/bundler/vendor/uri/LICENSE.txt +22 -0
  242. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +17 -80
  243. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +0 -1
  244. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +5 -6
  245. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +0 -1
  246. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +0 -1
  247. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
  248. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +0 -1
  249. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +1 -14
  250. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +1 -12
  251. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  252. data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +84 -0
  253. data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +22 -0
  254. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +0 -1
  255. data/bundler/lib/bundler/vendored_persistent.rb +0 -7
  256. data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
  257. data/bundler/lib/bundler/vendored_tsort.rb +4 -0
  258. data/bundler/lib/bundler/version.rb +1 -1
  259. data/bundler/lib/bundler/worker.rb +20 -5
  260. data/bundler/lib/bundler/yaml_serializer.rb +1 -1
  261. data/bundler/lib/bundler.rb +79 -47
  262. data/hide_lib_for_update/note.txt +0 -4
  263. data/lib/rubygems/available_set.rb +7 -9
  264. data/lib/rubygems/basic_specification.rb +23 -21
  265. data/lib/rubygems/bundler_version_finder.rb +26 -53
  266. data/lib/rubygems/command.rb +48 -45
  267. data/lib/rubygems/command_manager.rb +20 -14
  268. data/lib/rubygems/commands/build_command.rb +47 -27
  269. data/lib/rubygems/commands/cert_command.rb +78 -75
  270. data/lib/rubygems/commands/check_command.rb +20 -22
  271. data/lib/rubygems/commands/cleanup_command.rb +30 -26
  272. data/lib/rubygems/commands/contents_command.rb +16 -18
  273. data/lib/rubygems/commands/dependency_command.rb +39 -51
  274. data/lib/rubygems/commands/environment_command.rb +11 -10
  275. data/lib/rubygems/commands/fetch_command.rb +33 -16
  276. data/lib/rubygems/commands/generate_index_command.rb +17 -19
  277. data/lib/rubygems/commands/help_command.rb +6 -6
  278. data/lib/rubygems/commands/info_command.rb +10 -7
  279. data/lib/rubygems/commands/install_command.rb +29 -27
  280. data/lib/rubygems/commands/list_command.rb +9 -8
  281. data/lib/rubygems/commands/lock_command.rb +5 -7
  282. data/lib/rubygems/commands/mirror_command.rb +3 -5
  283. data/lib/rubygems/commands/open_command.rb +10 -14
  284. data/lib/rubygems/commands/outdated_command.rb +5 -7
  285. data/lib/rubygems/commands/owner_command.rb +26 -16
  286. data/lib/rubygems/commands/pristine_command.rb +61 -49
  287. data/lib/rubygems/commands/push_command.rb +22 -59
  288. data/lib/rubygems/commands/query_command.rb +21 -351
  289. data/lib/rubygems/commands/rdoc_command.rb +23 -25
  290. data/lib/rubygems/commands/search_command.rb +8 -8
  291. data/lib/rubygems/commands/server_command.rb +16 -77
  292. data/lib/rubygems/commands/setup_command.rb +255 -229
  293. data/lib/rubygems/commands/signin_command.rb +9 -11
  294. data/lib/rubygems/commands/signout_command.rb +7 -9
  295. data/lib/rubygems/commands/sources_command.rb +27 -25
  296. data/lib/rubygems/commands/specification_command.rb +25 -21
  297. data/lib/rubygems/commands/stale_command.rb +3 -5
  298. data/lib/rubygems/commands/uninstall_command.rb +41 -43
  299. data/lib/rubygems/commands/unpack_command.rb +13 -15
  300. data/lib/rubygems/commands/update_command.rb +132 -74
  301. data/lib/rubygems/commands/which_command.rb +7 -9
  302. data/lib/rubygems/commands/yank_command.rb +16 -19
  303. data/lib/rubygems/compatibility.rb +4 -2
  304. data/lib/rubygems/config_file.rb +42 -26
  305. data/lib/rubygems/core_ext/kernel_gem.rb +1 -1
  306. data/lib/rubygems/core_ext/kernel_require.rb +6 -3
  307. data/lib/rubygems/core_ext/kernel_warn.rb +12 -13
  308. data/lib/rubygems/core_ext/tcpsocket_init.rb +52 -0
  309. data/lib/rubygems/defaults.rb +108 -32
  310. data/lib/rubygems/dependency.rb +21 -22
  311. data/lib/rubygems/dependency_installer.rb +19 -91
  312. data/lib/rubygems/dependency_list.rb +13 -15
  313. data/lib/rubygems/deprecate.rb +102 -8
  314. data/lib/rubygems/doctor.rb +22 -22
  315. data/lib/rubygems/errors.rb +6 -21
  316. data/lib/rubygems/exceptions.rb +33 -34
  317. data/lib/rubygems/ext/build_error.rb +2 -0
  318. data/lib/rubygems/ext/builder.rb +48 -54
  319. data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +23 -0
  320. data/lib/rubygems/ext/cargo_builder.rb +321 -0
  321. data/lib/rubygems/ext/cmake_builder.rb +6 -9
  322. data/lib/rubygems/ext/configure_builder.rb +5 -8
  323. data/lib/rubygems/ext/ext_conf_builder.rb +42 -66
  324. data/lib/rubygems/ext/rake_builder.rb +7 -10
  325. data/lib/rubygems/ext.rb +7 -6
  326. data/lib/rubygems/gem_runner.rb +15 -26
  327. data/lib/rubygems/gemcutter_utilities.rb +153 -32
  328. data/lib/rubygems/indexer.rb +30 -49
  329. data/lib/rubygems/install_default_message.rb +2 -2
  330. data/lib/rubygems/install_message.rb +2 -2
  331. data/lib/rubygems/install_update_options.rb +73 -64
  332. data/lib/rubygems/installer.rb +194 -151
  333. data/lib/rubygems/installer_uninstaller_utils.rb +29 -0
  334. data/lib/rubygems/local_remote_options.rb +22 -24
  335. data/lib/rubygems/mock_gem_ui.rb +2 -8
  336. data/lib/rubygems/name_tuple.rb +9 -14
  337. data/lib/rubygems/openssl.rb +7 -0
  338. data/lib/rubygems/optparse/.document +1 -0
  339. data/lib/rubygems/optparse/COPYING +56 -0
  340. data/lib/rubygems/optparse/lib/optionparser.rb +2 -0
  341. data/lib/rubygems/optparse/lib/optparse/ac.rb +54 -0
  342. data/lib/rubygems/optparse/lib/optparse/date.rb +18 -0
  343. data/lib/rubygems/optparse/lib/optparse/kwargs.rb +22 -0
  344. data/lib/rubygems/optparse/lib/optparse/shellwords.rb +7 -0
  345. data/lib/rubygems/optparse/lib/optparse/time.rb +11 -0
  346. data/lib/rubygems/optparse/lib/optparse/uri.rb +7 -0
  347. data/lib/rubygems/optparse/lib/optparse/version.rb +71 -0
  348. data/lib/rubygems/optparse/lib/optparse.rb +2303 -0
  349. data/lib/rubygems/optparse.rb +3 -0
  350. data/lib/rubygems/package/digest_io.rb +0 -2
  351. data/lib/rubygems/package/file_source.rb +2 -4
  352. data/lib/rubygems/package/io_source.rb +4 -2
  353. data/lib/rubygems/package/old.rb +9 -11
  354. data/lib/rubygems/package/tar_header.rb +54 -56
  355. data/lib/rubygems/package/tar_reader/entry.rb +2 -5
  356. data/lib/rubygems/package/tar_reader.rb +1 -4
  357. data/lib/rubygems/package/tar_writer.rb +8 -18
  358. data/lib/rubygems/package.rb +101 -117
  359. data/lib/rubygems/package_task.rb +5 -11
  360. data/lib/rubygems/path_support.rb +2 -9
  361. data/lib/rubygems/platform.rb +101 -76
  362. data/lib/rubygems/psych_tree.rb +1 -3
  363. data/lib/rubygems/query_utils.rb +351 -0
  364. data/lib/rubygems/rdoc.rb +2 -14
  365. data/lib/rubygems/remote_fetcher.rb +48 -74
  366. data/lib/rubygems/request/connection_pools.rb +6 -10
  367. data/lib/rubygems/request/http_pool.rb +2 -4
  368. data/lib/rubygems/request/https_pool.rb +0 -2
  369. data/lib/rubygems/request.rb +26 -31
  370. data/lib/rubygems/request_set/gem_dependency_api.rb +23 -25
  371. data/lib/rubygems/request_set/lockfile/parser.rb +26 -28
  372. data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -7
  373. data/lib/rubygems/request_set/lockfile.rb +17 -21
  374. data/lib/rubygems/request_set.rb +27 -40
  375. data/lib/rubygems/requirement.rb +28 -48
  376. data/lib/rubygems/resolver/activation_request.rb +12 -6
  377. data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
  378. data/lib/rubygems/resolver/api_set.rb +32 -25
  379. data/lib/rubygems/resolver/api_specification.rb +29 -15
  380. data/lib/rubygems/resolver/best_set.rb +7 -9
  381. data/lib/rubygems/resolver/composed_set.rb +3 -5
  382. data/lib/rubygems/resolver/conflict.rb +12 -14
  383. data/lib/rubygems/resolver/current_set.rb +0 -2
  384. data/lib/rubygems/resolver/dependency_request.rb +3 -5
  385. data/lib/rubygems/resolver/git_set.rb +2 -4
  386. data/lib/rubygems/resolver/git_specification.rb +6 -8
  387. data/lib/rubygems/resolver/index_set.rb +4 -6
  388. data/lib/rubygems/resolver/index_specification.rb +38 -7
  389. data/lib/rubygems/resolver/installed_specification.rb +4 -6
  390. data/lib/rubygems/resolver/installer_set.rb +66 -24
  391. data/lib/rubygems/resolver/local_specification.rb +2 -4
  392. data/lib/rubygems/resolver/lock_set.rb +6 -8
  393. data/lib/rubygems/resolver/lock_specification.rb +4 -6
  394. data/lib/rubygems/resolver/molinillo/LICENSE +9 -0
  395. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
  396. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +8 -0
  397. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
  398. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
  399. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
  400. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
  401. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
  402. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
  403. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
  404. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
  405. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +51 -12
  406. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +41 -8
  407. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +76 -8
  408. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
  409. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +13 -1
  410. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
  411. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +510 -165
  412. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
  413. data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
  414. data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
  415. data/lib/rubygems/resolver/molinillo.rb +1 -1
  416. data/lib/rubygems/resolver/requirement_list.rb +0 -2
  417. data/lib/rubygems/resolver/set.rb +0 -3
  418. data/lib/rubygems/resolver/source_set.rb +0 -2
  419. data/lib/rubygems/resolver/spec_specification.rb +14 -2
  420. data/lib/rubygems/resolver/specification.rb +14 -4
  421. data/lib/rubygems/resolver/stats.rb +0 -2
  422. data/lib/rubygems/resolver/vendor_set.rb +1 -3
  423. data/lib/rubygems/resolver/vendor_specification.rb +3 -5
  424. data/lib/rubygems/resolver.rb +53 -51
  425. data/lib/rubygems/s3_uri_signer.rb +7 -15
  426. data/lib/rubygems/safe_yaml.rb +14 -16
  427. data/lib/rubygems/security/policies.rb +11 -11
  428. data/lib/rubygems/security/policy.rb +25 -29
  429. data/lib/rubygems/security/signer.rb +13 -16
  430. data/lib/rubygems/security/trust_dir.rb +4 -5
  431. data/lib/rubygems/security.rb +103 -69
  432. data/lib/rubygems/security_option.rb +7 -7
  433. data/lib/rubygems/source/git.rb +30 -30
  434. data/lib/rubygems/source/installed.rb +1 -3
  435. data/lib/rubygems/source/local.rb +4 -6
  436. data/lib/rubygems/source/lock.rb +0 -2
  437. data/lib/rubygems/source/specific_file.rb +1 -3
  438. data/lib/rubygems/source/vendor.rb +0 -2
  439. data/lib/rubygems/source.rb +44 -38
  440. data/lib/rubygems/source_list.rb +9 -16
  441. data/lib/rubygems/spec_fetcher.rb +49 -48
  442. data/lib/rubygems/specification.rb +338 -295
  443. data/lib/rubygems/specification_policy.rb +112 -61
  444. data/lib/rubygems/stub_specification.rb +21 -28
  445. data/lib/rubygems/text.rb +21 -20
  446. data/lib/rubygems/tsort/.document +1 -0
  447. data/lib/rubygems/tsort/LICENSE.txt +22 -0
  448. data/lib/rubygems/tsort/lib/tsort.rb +454 -0
  449. data/lib/rubygems/tsort.rb +3 -0
  450. data/lib/rubygems/uninstaller.rb +98 -45
  451. data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
  452. data/lib/rubygems/uri.rb +126 -0
  453. data/lib/rubygems/uri_formatter.rb +2 -3
  454. data/lib/rubygems/user_interaction.rb +43 -54
  455. data/lib/rubygems/util/licenses.rb +115 -10
  456. data/lib/rubygems/util/list.rb +0 -2
  457. data/lib/rubygems/util.rb +18 -12
  458. data/lib/rubygems/validator.rb +6 -8
  459. data/lib/rubygems/version.rb +29 -20
  460. data/lib/rubygems/version_option.rb +11 -5
  461. data/lib/rubygems.rb +192 -289
  462. data/rubygems-update.gemspec +4 -4
  463. data/setup.rb +11 -22
  464. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  465. data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
  466. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  467. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  468. data/test/rubygems/encrypted_private_key.pem +26 -26
  469. data/{lib/rubygems/test_case.rb → test/rubygems/helper.rb} +380 -314
  470. data/{lib → test}/rubygems/installer_test_case.rb +38 -24
  471. data/{lib → test}/rubygems/package/tar_test_case.rb +4 -6
  472. data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
  473. data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
  474. data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
  475. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
  476. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
  477. data/test/rubygems/private_ec_key.pem +9 -0
  478. data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
  479. data/test/rubygems/rubygems_plugin.rb +2 -4
  480. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
  481. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +4 -6
  482. data/test/rubygems/test_bundled_ca.rb +43 -50
  483. data/test/rubygems/test_config.rb +5 -7
  484. data/test/rubygems/test_deprecate.rb +87 -10
  485. data/test/rubygems/test_exit.rb +11 -0
  486. data/test/rubygems/test_gem.rb +719 -639
  487. data/test/rubygems/test_gem_available_set.rb +24 -26
  488. data/test/rubygems/test_gem_bundler_version_finder.rb +37 -44
  489. data/test/rubygems/test_gem_command.rb +78 -49
  490. data/test/rubygems/test_gem_command_manager.rb +98 -35
  491. data/test/rubygems/test_gem_commands_build_command.rb +275 -57
  492. data/test/rubygems/test_gem_commands_cert_command.rb +180 -125
  493. data/test/rubygems/test_gem_commands_check_command.rb +9 -11
  494. data/test/rubygems/test_gem_commands_cleanup_command.rb +78 -69
  495. data/test/rubygems/test_gem_commands_contents_command.rb +73 -42
  496. data/test/rubygems/test_gem_commands_dependency_command.rb +38 -40
  497. data/test/rubygems/test_gem_commands_environment_command.rb +60 -38
  498. data/test/rubygems/test_gem_commands_fetch_command.rb +163 -32
  499. data/test/rubygems/test_gem_commands_generate_index_command.rb +8 -14
  500. data/test/rubygems/test_gem_commands_help_command.rb +34 -16
  501. data/test/rubygems/test_gem_commands_info_command.rb +33 -9
  502. data/test/rubygems/test_gem_commands_install_command.rb +401 -198
  503. data/test/rubygems/test_gem_commands_list_command.rb +5 -7
  504. data/test/rubygems/test_gem_commands_lock_command.rb +11 -13
  505. data/test/rubygems/test_gem_commands_mirror.rb +3 -5
  506. data/test/rubygems/test_gem_commands_open_command.rb +16 -19
  507. data/test/rubygems/test_gem_commands_outdated_command.rb +23 -7
  508. data/test/rubygems/test_gem_commands_owner_command.rb +100 -46
  509. data/test/rubygems/test_gem_commands_pristine_command.rb +131 -99
  510. data/test/rubygems/test_gem_commands_push_command.rb +134 -66
  511. data/test/rubygems/test_gem_commands_query_command.rb +91 -91
  512. data/test/rubygems/test_gem_commands_search_command.rb +2 -4
  513. data/test/rubygems/test_gem_commands_server_command.rb +6 -50
  514. data/test/rubygems/test_gem_commands_setup_command.rb +288 -179
  515. data/test/rubygems/test_gem_commands_signin_command.rb +162 -28
  516. data/test/rubygems/test_gem_commands_signout_command.rb +3 -10
  517. data/test/rubygems/test_gem_commands_sources_command.rb +139 -32
  518. data/test/rubygems/test_gem_commands_specification_command.rb +81 -55
  519. data/test/rubygems/test_gem_commands_stale_command.rb +4 -6
  520. data/test/rubygems/test_gem_commands_uninstall_command.rb +80 -82
  521. data/test/rubygems/test_gem_commands_unpack_command.rb +32 -34
  522. data/test/rubygems/test_gem_commands_update_command.rb +335 -88
  523. data/test/rubygems/test_gem_commands_which_command.rb +12 -14
  524. data/test/rubygems/test_gem_commands_yank_command.rb +80 -44
  525. data/test/rubygems/test_gem_config_file.rb +114 -97
  526. data/test/rubygems/test_gem_dependency.rb +87 -87
  527. data/test/rubygems/test_gem_dependency_installer.rb +277 -391
  528. data/test/rubygems/test_gem_dependency_list.rb +57 -59
  529. data/test/rubygems/test_gem_dependency_resolution_error.rb +5 -7
  530. data/test/rubygems/test_gem_doctor.rb +73 -47
  531. data/test/rubygems/test_gem_ext_builder.rb +115 -109
  532. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +1 -0
  533. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.lock +243 -0
  534. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.toml +10 -0
  535. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb +21 -0
  536. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +10 -0
  537. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/src/lib.rs +27 -0
  538. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +1 -0
  539. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +243 -0
  540. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +10 -0
  541. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/build.rb +21 -0
  542. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +8 -0
  543. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +39 -0
  544. data/test/rubygems/test_gem_ext_cargo_builder.rb +178 -0
  545. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +33 -0
  546. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +75 -0
  547. data/test/rubygems/test_gem_ext_cmake_builder.rb +31 -38
  548. data/test/rubygems/test_gem_ext_configure_builder.rb +23 -39
  549. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +66 -82
  550. data/test/rubygems/test_gem_ext_rake_builder.rb +49 -32
  551. data/test/rubygems/test_gem_gem_runner.rb +51 -8
  552. data/test/rubygems/test_gem_gemcutter_utilities.rb +87 -76
  553. data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -6
  554. data/test/rubygems/test_gem_indexer.rb +62 -64
  555. data/test/rubygems/test_gem_install_update_options.rb +31 -21
  556. data/test/rubygems/test_gem_installer.rb +798 -491
  557. data/test/rubygems/test_gem_local_remote_options.rb +11 -13
  558. data/test/rubygems/test_gem_name_tuple.rb +4 -6
  559. data/test/rubygems/test_gem_package.rb +318 -283
  560. data/test/rubygems/test_gem_package_old.rb +18 -20
  561. data/test/rubygems/test_gem_package_tar_header.rb +64 -47
  562. data/test/rubygems/test_gem_package_tar_reader.rb +8 -10
  563. data/test/rubygems/test_gem_package_tar_reader_entry.rb +18 -20
  564. data/test/rubygems/test_gem_package_tar_writer.rb +96 -100
  565. data/test/rubygems/test_gem_package_task.rb +58 -25
  566. data/test/rubygems/test_gem_path_support.rb +15 -21
  567. data/test/rubygems/test_gem_platform.rb +354 -201
  568. data/test/rubygems/test_gem_rdoc.rb +19 -21
  569. data/test/rubygems/test_gem_remote_fetcher.rb +376 -337
  570. data/test/rubygems/test_gem_request.rb +114 -86
  571. data/test/rubygems/test_gem_request_connection_pools.rb +30 -34
  572. data/test/rubygems/test_gem_request_set.rb +123 -124
  573. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +222 -226
  574. data/test/rubygems/test_gem_request_set_lockfile.rb +93 -95
  575. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +68 -70
  576. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +136 -138
  577. data/test/rubygems/test_gem_requirement.rb +133 -54
  578. data/test/rubygems/test_gem_resolver.rb +149 -117
  579. data/test/rubygems/test_gem_resolver_activation_request.rb +6 -8
  580. data/test/rubygems/test_gem_resolver_api_set.rb +79 -78
  581. data/test/rubygems/test_gem_resolver_api_specification.rb +47 -49
  582. data/test/rubygems/test_gem_resolver_best_set.rb +43 -22
  583. data/test/rubygems/test_gem_resolver_composed_set.rb +1 -3
  584. data/test/rubygems/test_gem_resolver_conflict.rb +12 -14
  585. data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -17
  586. data/test/rubygems/test_gem_resolver_git_set.rb +22 -24
  587. data/test/rubygems/test_gem_resolver_git_specification.rb +22 -23
  588. data/test/rubygems/test_gem_resolver_index_set.rb +14 -16
  589. data/test/rubygems/test_gem_resolver_index_specification.rb +16 -18
  590. data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -7
  591. data/test/rubygems/test_gem_resolver_installer_set.rb +104 -44
  592. data/test/rubygems/test_gem_resolver_local_specification.rb +7 -9
  593. data/test/rubygems/test_gem_resolver_lock_set.rb +15 -17
  594. data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -19
  595. data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -3
  596. data/test/rubygems/test_gem_resolver_specification.rb +8 -12
  597. data/test/rubygems/test_gem_resolver_vendor_set.rb +9 -11
  598. data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -12
  599. data/test/rubygems/test_gem_security.rb +104 -78
  600. data/test/rubygems/test_gem_security_policy.rb +92 -97
  601. data/test/rubygems/test_gem_security_signer.rb +45 -47
  602. data/test/rubygems/test_gem_security_trust_dir.rb +12 -14
  603. data/test/rubygems/test_gem_silent_ui.rb +46 -42
  604. data/test/rubygems/test_gem_source.rb +53 -52
  605. data/test/rubygems/test_gem_source_fetch_problem.rb +16 -8
  606. data/test/rubygems/test_gem_source_git.rb +69 -69
  607. data/test/rubygems/test_gem_source_installed.rb +16 -18
  608. data/test/rubygems/test_gem_source_list.rb +5 -6
  609. data/test/rubygems/test_gem_source_local.rb +15 -17
  610. data/test/rubygems/test_gem_source_lock.rb +31 -33
  611. data/test/rubygems/test_gem_source_specific_file.rb +18 -20
  612. data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
  613. data/test/rubygems/test_gem_source_vendor.rb +13 -15
  614. data/test/rubygems/test_gem_spec_fetcher.rb +74 -67
  615. data/test/rubygems/test_gem_specification.rb +888 -1024
  616. data/test/rubygems/test_gem_stream_ui.rb +23 -23
  617. data/test/rubygems/test_gem_stub_specification.rb +39 -57
  618. data/test/rubygems/test_gem_text.rb +8 -4
  619. data/test/rubygems/test_gem_uninstaller.rb +233 -104
  620. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -5
  621. data/test/rubygems/test_gem_uri.rb +39 -0
  622. data/test/rubygems/test_gem_uri_formatter.rb +14 -16
  623. data/test/rubygems/test_gem_util.rb +37 -35
  624. data/test/rubygems/test_gem_validator.rb +10 -12
  625. data/test/rubygems/test_gem_version.rb +31 -31
  626. data/test/rubygems/test_gem_version_option.rb +16 -18
  627. data/test/rubygems/test_kernel.rb +46 -60
  628. data/test/rubygems/test_project_sanity.rb +8 -3
  629. data/test/rubygems/test_remote_fetch_error.rb +7 -9
  630. data/test/rubygems/test_require.rb +240 -167
  631. data/test/rubygems/test_rubygems.rb +74 -0
  632. data/{lib/rubygems/test_utilities.rb → test/rubygems/utilities.rb} +30 -39
  633. data/test/test_changelog_generator.rb +17 -0
  634. metadata +158 -146
  635. data/.bundle/config +0 -2
  636. data/.rubocop.yml +0 -91
  637. data/Gemfile +0 -8
  638. data/Gemfile.lock +0 -43
  639. data/Rakefile +0 -428
  640. data/bundler/CODE_OF_CONDUCT.md +0 -136
  641. data/bundler/lib/bundler/gemdeps.rb +0 -29
  642. data/bundler/lib/bundler/psyched_yaml.rb +0 -37
  643. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +0 -66
  644. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
  645. data/bundler/man/bundle-add.1.txt +0 -58
  646. data/bundler/man/bundle-binstubs.1.txt +0 -48
  647. data/bundler/man/bundle-cache.1.txt +0 -78
  648. data/bundler/man/bundle-check.1.txt +0 -33
  649. data/bundler/man/bundle-clean.1.txt +0 -26
  650. data/bundler/man/bundle-config.1.txt +0 -528
  651. data/bundler/man/bundle-doctor.1.txt +0 -44
  652. data/bundler/man/bundle-exec.1.txt +0 -178
  653. data/bundler/man/bundle-gem.1.txt +0 -91
  654. data/bundler/man/bundle-info.1.txt +0 -21
  655. data/bundler/man/bundle-init.1.txt +0 -34
  656. data/bundler/man/bundle-inject.1.txt +0 -32
  657. data/bundler/man/bundle-install.1.txt +0 -401
  658. data/bundler/man/bundle-list.1.txt +0 -43
  659. data/bundler/man/bundle-lock.1.txt +0 -93
  660. data/bundler/man/bundle-open.1.txt +0 -29
  661. data/bundler/man/bundle-outdated.1.txt +0 -131
  662. data/bundler/man/bundle-platform.1.txt +0 -57
  663. data/bundler/man/bundle-pristine.1.txt +0 -44
  664. data/bundler/man/bundle-remove.1.txt +0 -34
  665. data/bundler/man/bundle-show.1.txt +0 -27
  666. data/bundler/man/bundle-update.1.txt +0 -390
  667. data/bundler/man/bundle-viz.1.txt +0 -39
  668. data/bundler/man/bundle.1.txt +0 -116
  669. data/bundler/man/gemfile.5.txt +0 -649
  670. data/lib/rubygems/psych_additions.rb +0 -10
  671. data/lib/rubygems/server.rb +0 -879
  672. data/lib/rubygems/source_local.rb +0 -7
  673. data/lib/rubygems/source_specific_file.rb +0 -6
  674. data/lib/rubygems/syck_hack.rb +0 -79
  675. data/lib/rubygems/uri_parser.rb +0 -36
  676. data/lib/rubygems/uri_parsing.rb +0 -23
  677. data/lib/ubygems.rb +0 -14
  678. data/test/rubygems/bogussources.rb +0 -9
  679. data/test/rubygems/data/null-type.gemspec.rz +0 -0
  680. data/test/rubygems/test_gem_server.rb +0 -612
  681. data/tmp/.keep +0 -0
  682. data/util/CL2notes +0 -55
  683. data/util/bisect +0 -10
  684. data/util/ci.sh +0 -62
  685. data/util/cops/deprecations.rb +0 -52
  686. data/util/create_certs.rb +0 -171
  687. data/util/create_certs.sh +0 -27
  688. data/util/create_encrypted_key.rb +0 -16
  689. data/util/generate_spdx_license_list.rb +0 -63
  690. data/util/patch_with_prs.rb +0 -77
  691. data/util/rubocop +0 -8
  692. data/util/update_bundled_ca_certificates.rb +0 -137
  693. data/util/update_changelog.rb +0 -64
  694. /data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
  695. /data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
  696. /data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
  697. /data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
  698. /data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +0 -0
  699. /data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
  700. /data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
  701. /data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
  702. /data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
  703. /data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
@@ -1,16 +1,15 @@
1
1
  # frozen_string_literal: true
2
- require 'rubygems/test_case'
3
- require 'rubygems/dependency_installer'
4
- require 'rubygems/security'
2
+ require_relative "helper"
3
+ require "rubygems/dependency_installer"
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
11
10
 
12
- @gems_dir = File.join @tempdir, 'gems'
13
- @cache_dir = File.join @gemhome, 'cache'
11
+ @gems_dir = File.join @tempdir, "gems"
12
+ @cache_dir = File.join @gemhome, "cache"
14
13
 
15
14
  FileUtils.mkdir @gems_dir
16
15
 
@@ -26,89 +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|
30
- s.executables << 'a_bin'
28
+ @a1, @a1_gem = util_gem "a", "1" do |s|
29
+ s.executables << "a_bin"
31
30
  end
32
31
 
33
- @a1_pre, @a1_pre_gem = util_gem 'a', '1.a'
34
-
35
- @b1, @b1_gem = util_gem 'b', '1' do |s|
36
- s.add_dependency 'a'
37
- s.add_development_dependency 'aa'
38
- end
32
+ @a1_pre, @a1_pre_gem = util_gem "a", "1.a"
39
33
 
40
- @c1, @c1_gem = util_gem 'c', '1' do |s|
41
- s.add_development_dependency 'b'
34
+ @b1, @b1_gem = util_gem "b", "1" do |s|
35
+ s.add_dependency "a"
36
+ s.add_development_dependency "aa"
42
37
  end
43
38
 
44
- @d1, @d1_gem = util_gem 'd', '1' do |s|
45
- s.add_development_dependency 'c'
39
+ @c1, @c1_gem = util_gem "c", "1" do |s|
40
+ s.add_development_dependency "b"
46
41
  end
47
42
 
48
- util_reset_gems
49
- end
50
-
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
43
+ @d1, @d1_gem = util_gem "d", "1" do |s|
44
+ s.add_development_dependency "c"
108
45
  end
109
46
 
110
- assert_equal %w[a-10.a],
111
- available.sorted.map { |s| s.spec.full_name }
47
+ util_setup_spec_fetcher(@a1, @a1_pre, @b1, @d1)
112
48
  end
113
49
 
114
50
  def test_install
@@ -119,7 +55,7 @@ class TestGemDependencyInstaller < Gem::TestCase
119
55
 
120
56
  Dir.chdir @tempdir do
121
57
  inst = Gem::DependencyInstaller.new
122
- inst.install 'a'
58
+ inst.install "a"
123
59
  end
124
60
 
125
61
  assert_equal %w[a-1], Gem::Specification.map(&:full_name)
@@ -129,13 +65,13 @@ class TestGemDependencyInstaller < Gem::TestCase
129
65
  def test_install_prerelease
130
66
  util_setup_gems
131
67
 
132
- p1a, gem = util_gem 'a', '10.a'
68
+ p1a, gem = util_gem "a", "10.a"
133
69
 
134
70
  util_setup_spec_fetcher(p1a, @a1, @a1_pre)
135
71
 
136
72
  p1a_data = Gem.read_binary(gem)
137
73
 
138
- @fetcher.data['http://gems.example.com/gems/a-10.a.gem'] = p1a_data
74
+ @fetcher.data["http://gems.example.com/gems/a-10.a.gem"] = p1a_data
139
75
 
140
76
  dep = Gem::Dependency.new "a"
141
77
  inst = Gem::DependencyInstaller.new :prerelease => true
@@ -147,18 +83,18 @@ class TestGemDependencyInstaller < Gem::TestCase
147
83
 
148
84
  def test_install_prerelease_bug_990
149
85
  spec_fetcher do |fetcher|
150
- fetcher.gem 'a', '1.b' do |s|
151
- s.add_dependency 'b', '~> 1.a'
86
+ fetcher.gem "a", "1.b" do |s|
87
+ s.add_dependency "b", "~> 1.a"
152
88
  end
153
89
 
154
- fetcher.gem 'b', '1.b' do |s|
155
- s.add_dependency 'c', '>= 1'
90
+ fetcher.gem "b", "1.b" do |s|
91
+ s.add_dependency "c", ">= 1"
156
92
  end
157
93
 
158
- fetcher.gem 'c', '1.1.b'
94
+ fetcher.gem "c", "1.1.b"
159
95
  end
160
96
 
161
- dep = Gem::Dependency.new 'a'
97
+ dep = Gem::Dependency.new "a"
162
98
 
163
99
  inst = Gem::DependencyInstaller.new :prerelease => true
164
100
  inst.install dep
@@ -167,17 +103,17 @@ class TestGemDependencyInstaller < Gem::TestCase
167
103
  end
168
104
 
169
105
  def test_install_when_only_prerelease
170
- p1a, gem = util_gem 'p', '1.a'
106
+ p1a, gem = util_gem "p", "1.a"
171
107
 
172
108
  util_setup_spec_fetcher(p1a)
173
109
 
174
110
  p1a_data = Gem.read_binary(gem)
175
111
 
176
- @fetcher.data['http://gems.example.com/gems/p-1.a.gem'] = p1a_data
112
+ @fetcher.data["http://gems.example.com/gems/p-1.a.gem"] = p1a_data
177
113
 
178
114
  dep = Gem::Dependency.new "p"
179
115
  inst = Gem::DependencyInstaller.new
180
- assert_raises Gem::UnsatisfiableDependencyError do
116
+ assert_raise Gem::UnsatisfiableDependencyError do
181
117
  inst.install dep
182
118
  end
183
119
 
@@ -192,7 +128,7 @@ class TestGemDependencyInstaller < Gem::TestCase
192
128
 
193
129
  p1a_data = Gem.read_binary(@a1_gem)
194
130
 
195
- @fetcher.data['http://gems.example.com/gems/a-1.gem'] = p1a_data
131
+ @fetcher.data["http://gems.example.com/gems/a-1.gem"] = p1a_data
196
132
 
197
133
  dep = Gem::Dependency.new "a"
198
134
  inst = Gem::DependencyInstaller.new :prerelease => true
@@ -205,30 +141,30 @@ class TestGemDependencyInstaller < Gem::TestCase
205
141
  def test_install_all_dependencies
206
142
  util_setup_gems
207
143
 
208
- _, e1_gem = util_gem 'e', '1' do |s|
209
- s.add_dependency 'b'
144
+ _, e1_gem = util_gem "e", "1" do |s|
145
+ s.add_dependency "b"
210
146
  end
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
 
218
154
  Dir.chdir @tempdir do
219
155
  inst = Gem::DependencyInstaller.new :ignore_dependencies => true
220
- inst.install 'b'
156
+ inst.install "b"
221
157
  end
222
158
 
223
- assert_equal %w[b-1], inst.installed_gems.map { |s| s.full_name },
224
- 'sanity check'
159
+ assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name },
160
+ "sanity check"
225
161
 
226
162
  Dir.chdir @tempdir do
227
163
  inst = Gem::DependencyInstaller.new
228
- inst.install 'e'
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
@@ -242,10 +178,10 @@ class TestGemDependencyInstaller < Gem::TestCase
242
178
 
243
179
  Dir.chdir dir do
244
180
  inst = Gem::DependencyInstaller.new :cache_dir => @tempdir
245
- inst.install 'b'
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)
@@ -254,9 +190,9 @@ class TestGemDependencyInstaller < Gem::TestCase
254
190
  def test_install_dependencies_satisfied
255
191
  util_setup_gems
256
192
 
257
- a2, a2_gem = util_gem 'a', '2'
193
+ a2, a2_gem = util_gem "a", "2"
258
194
 
259
- FileUtils.rm_rf File.join(@gemhome, 'gems')
195
+ FileUtils.rm_rf File.join(@gemhome, "gems")
260
196
 
261
197
  Gem::Specification.reset
262
198
 
@@ -267,21 +203,21 @@ class TestGemDependencyInstaller < Gem::TestCase
267
203
 
268
204
  Dir.chdir @tempdir do
269
205
  inst = Gem::DependencyInstaller.new
270
- inst.install 'a', req("= 2")
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 },
274
- 'sanity check'
209
+ assert_equal %w[a-2], inst.installed_gems.map {|s| s.full_name },
210
+ "sanity check"
275
211
 
276
212
  FileUtils.rm File.join(@tempdir, a2.file_name)
277
213
 
278
214
  Dir.chdir @tempdir do
279
215
  inst = Gem::DependencyInstaller.new
280
- inst.install 'b'
216
+ inst.install "b"
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
@@ -290,22 +226,22 @@ class TestGemDependencyInstaller < Gem::TestCase
290
226
  def test_install_doesnt_upgrade_installed_dependencies
291
227
  util_setup_gems
292
228
 
293
- a2, a2_gem = util_gem 'a', '2'
294
- a3, a3_gem = util_gem 'a', '3'
229
+ a2, a2_gem = util_gem "a", "2"
230
+ a3, a3_gem = util_gem "a", "3"
295
231
 
296
232
  util_setup_spec_fetcher @a1, a3, @b1
297
233
 
298
- FileUtils.rm_rf File.join(@gemhome, 'gems')
234
+ FileUtils.rm_rf File.join(@gemhome, "gems")
299
235
 
300
236
  Gem::Specification.reset
301
237
 
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
- Gem::DependencyInstaller.new.install 'a', req("= 2")
244
+ Gem::DependencyInstaller.new.install "a", req("= 2")
309
245
  end
310
246
 
311
247
  FileUtils.rm File.join(@tempdir, a2.file_name)
@@ -314,11 +250,11 @@ class TestGemDependencyInstaller < Gem::TestCase
314
250
 
315
251
  Dir.chdir @tempdir do
316
252
  inst = Gem::DependencyInstaller.new
317
- inst.install 'b'
253
+ inst.install "b"
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
@@ -338,20 +274,18 @@ class TestGemDependencyInstaller < Gem::TestCase
338
274
 
339
275
  Dir.chdir @tempdir do
340
276
  inst = Gem::DependencyInstaller.new(:build_docs_in_background => false)
341
- inst.install 'b'
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
- assert done_installing_ran, 'post installs hook was not run'
282
+ assert done_installing_ran, "post installs hook was not run"
347
283
  end
348
284
 
349
285
  def test_install_dependency_development
350
286
  util_setup_gems
351
287
 
352
- @aa1, @aa1_gem = util_gem 'aa', '1'
353
-
354
- util_reset_gems
288
+ @aa1, @aa1_gem = util_gem "aa", "1"
355
289
 
356
290
  FileUtils.mv @a1_gem, @tempdir
357
291
  FileUtils.mv @aa1_gem, @tempdir
@@ -360,18 +294,16 @@ class TestGemDependencyInstaller < Gem::TestCase
360
294
 
361
295
  Dir.chdir @tempdir do
362
296
  inst = Gem::DependencyInstaller.new(:development => true)
363
- inst.install 'b'
297
+ inst.install "b"
364
298
  end
365
299
 
366
- 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 }
367
301
  end
368
302
 
369
303
  def test_install_dependency_development_deep
370
304
  util_setup_gems
371
305
 
372
- @aa1, @aa1_gem = util_gem 'aa', '1'
373
-
374
- util_reset_gems
306
+ @aa1, @aa1_gem = util_gem "aa", "1"
375
307
 
376
308
  FileUtils.mv @a1_gem, @tempdir
377
309
  FileUtils.mv @aa1_gem, @tempdir
@@ -382,18 +314,16 @@ class TestGemDependencyInstaller < Gem::TestCase
382
314
 
383
315
  Dir.chdir @tempdir do
384
316
  inst = Gem::DependencyInstaller.new(:development => true)
385
- inst.install 'd'
317
+ inst.install "d"
386
318
  end
387
319
 
388
- 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 }
389
321
  end
390
322
 
391
323
  def test_install_dependency_development_shallow
392
324
  util_setup_gems
393
325
 
394
- @aa1, @aa1_gem = util_gem 'aa', '1'
395
-
396
- util_reset_gems
326
+ @aa1, @aa1_gem = util_gem "aa", "1"
397
327
 
398
328
  FileUtils.mv @a1_gem, @tempdir
399
329
  FileUtils.mv @aa1_gem, @tempdir
@@ -404,10 +334,10 @@ class TestGemDependencyInstaller < Gem::TestCase
404
334
 
405
335
  Dir.chdir @tempdir do
406
336
  inst = Gem::DependencyInstaller.new(:development => true, :dev_shallow => true)
407
- inst.install 'd'
337
+ inst.install "d"
408
338
  end
409
339
 
410
- 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 }
411
341
  end
412
342
 
413
343
  def test_install_dependency_existing
@@ -420,29 +350,29 @@ class TestGemDependencyInstaller < Gem::TestCase
420
350
 
421
351
  Dir.chdir @tempdir do
422
352
  inst = Gem::DependencyInstaller.new
423
- inst.install 'b'
353
+ inst.install "b"
424
354
  end
425
355
 
426
- 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 }
427
357
  end
428
358
 
429
359
  def test_install_dependency_existing_extension
430
- extconf_rb = File.join @gemhome, 'gems', 'e-1', 'extconf.rb'
360
+ extconf_rb = File.join @gemhome, "gems", "e-1", "extconf.rb"
431
361
  FileUtils.mkdir_p File.dirname extconf_rb
432
362
 
433
- File.open extconf_rb, 'w' do |io|
363
+ File.open extconf_rb, "w" do |io|
434
364
  io.write <<-EXTCONF_RB
435
365
  require 'mkmf'
436
366
  create_makefile 'e'
437
367
  EXTCONF_RB
438
368
  end
439
369
 
440
- e1 = util_spec 'e', '1', nil, 'extconf.rb' do |s|
441
- s.extensions << 'extconf.rb'
370
+ e1 = util_spec "e", "1", nil, "extconf.rb" do |s|
371
+ s.extensions << "extconf.rb"
442
372
  end
443
- e1_gem = File.join @tempdir, 'gems', "#{e1.full_name}.gem"
373
+ e1_gem = e1.cache_file
444
374
 
445
- _, f1_gem = util_gem 'f', '1', 'e' => nil
375
+ _, f1_gem = util_gem "f", "1", "e" => nil
446
376
 
447
377
  Gem::Installer.at(e1_gem).install
448
378
  FileUtils.rm_r e1.extension_dir
@@ -455,20 +385,20 @@ class TestGemDependencyInstaller < Gem::TestCase
455
385
  Dir.chdir @tempdir
456
386
  begin
457
387
  inst = Gem::DependencyInstaller.new
458
- inst.install 'f'
388
+ inst.install "f"
459
389
  ensure
460
390
  Dir.chdir pwd
461
391
  end
462
392
 
463
- 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 }
464
394
 
465
- assert_path_exists e1.extension_dir
395
+ assert_path_exist e1.extension_dir
466
396
  end
467
397
 
468
398
  def test_install_dependency_old
469
- _, e1_gem = util_gem 'e', '1'
470
- _, f1_gem = util_gem 'f', '1', 'e' => nil
471
- _, f2_gem = util_gem 'f', '2'
399
+ _, e1_gem = util_gem "e", "1"
400
+ _, f1_gem = util_gem "f", "1", "e" => nil
401
+ _, f2_gem = util_gem "f", "2"
472
402
 
473
403
  FileUtils.mv e1_gem, @tempdir
474
404
  FileUtils.mv f1_gem, @tempdir
@@ -477,10 +407,10 @@ class TestGemDependencyInstaller < Gem::TestCase
477
407
 
478
408
  Dir.chdir @tempdir do
479
409
  inst = Gem::DependencyInstaller.new
480
- inst.install 'f'
410
+ inst.install "f"
481
411
  end
482
412
 
483
- 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 }
484
414
  end
485
415
 
486
416
  def test_install_local
@@ -491,10 +421,10 @@ class TestGemDependencyInstaller < Gem::TestCase
491
421
 
492
422
  Dir.chdir @tempdir do
493
423
  inst = Gem::DependencyInstaller.new :domain => :local
494
- inst.install 'a-1.gem'
424
+ inst.install "a-1.gem"
495
425
  end
496
426
 
497
- 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 }
498
428
  end
499
429
 
500
430
  def test_install_local_prerelease
@@ -505,10 +435,10 @@ class TestGemDependencyInstaller < Gem::TestCase
505
435
 
506
436
  Dir.chdir @tempdir do
507
437
  inst = Gem::DependencyInstaller.new :domain => :local
508
- inst.install 'a-1.a.gem'
438
+ inst.install "a-1.a.gem"
509
439
  end
510
440
 
511
- 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 }
512
442
  end
513
443
 
514
444
  def test_install_local_dependency
@@ -521,10 +451,10 @@ class TestGemDependencyInstaller < Gem::TestCase
521
451
 
522
452
  Dir.chdir @tempdir do
523
453
  inst = Gem::DependencyInstaller.new :domain => :local
524
- inst.install 'b-1.gem'
454
+ inst.install "b-1.gem"
525
455
  end
526
456
 
527
- 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 }
528
458
  end
529
459
 
530
460
  def test_install_local_dependency_installed
@@ -536,13 +466,13 @@ class TestGemDependencyInstaller < Gem::TestCase
536
466
  inst = nil
537
467
 
538
468
  Dir.chdir @tempdir do
539
- Gem::Installer.at('a-1.gem').install
469
+ Gem::Installer.at("a-1.gem").install
540
470
 
541
471
  inst = Gem::DependencyInstaller.new :domain => :local
542
- inst.install 'b-1.gem'
472
+ inst.install "b-1.gem"
543
473
  end
544
474
 
545
- 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 }
546
476
  end
547
477
 
548
478
  def test_install_local_subdir
@@ -552,21 +482,21 @@ class TestGemDependencyInstaller < Gem::TestCase
552
482
 
553
483
  Dir.chdir @tempdir do
554
484
  inst = Gem::DependencyInstaller.new :domain => :local
555
- inst.install 'gems/a-1.gem'
485
+ inst.install "gems/a-1.gem"
556
486
  end
557
487
 
558
- 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 }
559
489
  end
560
490
 
561
491
  def test_install_minimal_deps
562
492
  util_setup_gems
563
493
 
564
- _, e1_gem = util_gem 'e', '1' do |s|
565
- s.add_dependency 'b'
494
+ _, e1_gem = util_gem "e", "1" do |s|
495
+ s.add_dependency "b"
566
496
  end
567
497
 
568
- _, b2_gem = util_gem 'b', '2' do |s|
569
- s.add_dependency 'a'
498
+ _, b2_gem = util_gem "b", "2" do |s|
499
+ s.add_dependency "a"
570
500
  end
571
501
 
572
502
  FileUtils.mv @a1_gem, @tempdir
@@ -578,18 +508,52 @@ class TestGemDependencyInstaller < Gem::TestCase
578
508
 
579
509
  Dir.chdir @tempdir do
580
510
  inst = Gem::DependencyInstaller.new :ignore_dependencies => true
581
- inst.install 'b', req('= 1')
511
+ inst.install "b", req("= 1")
582
512
  end
583
513
 
584
- assert_equal %w[b-1], inst.installed_gems.map { |s| s.full_name },
585
- 'sanity check'
514
+ assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name },
515
+ "sanity check"
586
516
 
587
517
  Dir.chdir @tempdir do
588
518
  inst = Gem::DependencyInstaller.new :minimal_deps => true
589
- inst.install 'e'
519
+ inst.install "e"
590
520
  end
591
521
 
592
- 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 }
593
557
  end
594
558
 
595
559
  def test_install_no_document
@@ -617,13 +581,13 @@ class TestGemDependencyInstaller < Gem::TestCase
617
581
 
618
582
  Dir.chdir @tempdir do
619
583
  inst = Gem::DependencyInstaller.new :env_shebang => true, :wrappers => true, :format_executable => false
620
- inst.install 'a'
584
+ inst.install "a"
621
585
  end
622
586
 
623
587
  env = "/\\S+/env" unless Gem.win_platform?
624
588
 
625
- assert_match %r|\A#!#{env} #{RbConfig::CONFIG['ruby_install_name']}\n|,
626
- File.read(File.join(@gemhome, 'bin', 'a_bin'))
589
+ assert_match %r{\A#!#{env} #{RbConfig::CONFIG['ruby_install_name']}\n},
590
+ File.read(File.join(@gemhome, "bin", "a_bin"))
627
591
  end
628
592
 
629
593
  def test_install_force
@@ -631,15 +595,15 @@ class TestGemDependencyInstaller < Gem::TestCase
631
595
 
632
596
  FileUtils.mv @b1_gem, @tempdir
633
597
  si = util_setup_spec_fetcher @b1
634
- @fetcher.data['http://gems.example.com/gems/yaml'] = si.to_yaml
598
+ @fetcher.data["http://gems.example.com/gems/yaml"] = si.to_yaml
635
599
  inst = nil
636
600
 
637
601
  Dir.chdir @tempdir do
638
602
  inst = Gem::DependencyInstaller.new :force => true
639
- inst.install 'b'
603
+ inst.install "b"
640
604
  end
641
605
 
642
- 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 }
643
607
  end
644
608
 
645
609
  def test_install_build_args
@@ -652,7 +616,7 @@ class TestGemDependencyInstaller < Gem::TestCase
652
616
  Dir.chdir @tempdir do
653
617
  inst = Gem::DependencyInstaller.new(
654
618
  :build_args => build_args)
655
- inst.install 'a'
619
+ inst.install "a"
656
620
  end
657
621
 
658
622
  assert_equal build_args.join("\n"), File.read(inst.installed_gems.first.build_info_file).strip
@@ -666,10 +630,10 @@ class TestGemDependencyInstaller < Gem::TestCase
666
630
 
667
631
  Dir.chdir @tempdir do
668
632
  inst = Gem::DependencyInstaller.new :ignore_dependencies => true
669
- inst.install 'b'
633
+ inst.install "b"
670
634
  end
671
635
 
672
- 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 }
673
637
  end
674
638
 
675
639
  def test_install_install_dir
@@ -681,40 +645,40 @@ class TestGemDependencyInstaller < Gem::TestCase
681
645
  inst = Gem::Installer.at @a1.file_name
682
646
  inst.install
683
647
 
684
- gemhome2 = File.join @tempdir, 'gemhome2'
648
+ gemhome2 = File.join @tempdir, "gemhome2"
685
649
  Dir.mkdir gemhome2
686
650
  inst = nil
687
651
 
688
652
  Dir.chdir @tempdir do
689
653
  inst = Gem::DependencyInstaller.new :install_dir => gemhome2
690
- inst.install 'b'
654
+ inst.install "b"
691
655
  end
692
656
 
693
- 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 }
694
658
 
695
- assert File.exist?(File.join(gemhome2, 'specifications', @a1.spec_name))
696
- assert File.exist?(File.join(gemhome2, 'cache', @a1.file_name))
659
+ assert File.exist?(File.join(gemhome2, "specifications", @a1.spec_name))
660
+ assert File.exist?(File.join(gemhome2, "cache", @a1.file_name))
697
661
  end
698
662
 
699
663
  def test_install_domain_both
700
664
  util_setup_gems
701
665
 
702
666
  a1_data = nil
703
- File.open @a1_gem, 'rb' do |fp|
667
+ File.open @a1_gem, "rb" do |fp|
704
668
  a1_data = fp.read
705
669
  end
706
670
 
707
- @fetcher.data['http://gems.example.com/gems/a-1.gem'] = a1_data
671
+ @fetcher.data["http://gems.example.com/gems/a-1.gem"] = a1_data
708
672
 
709
673
  FileUtils.mv @b1_gem, @tempdir
710
674
  inst = nil
711
675
 
712
676
  Dir.chdir @tempdir do
713
677
  inst = Gem::DependencyInstaller.new :domain => :both
714
- inst.install 'b'
678
+ inst.install "b"
715
679
  end
716
680
 
717
- 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 }
718
682
  a1, b1 = inst.installed_gems
719
683
 
720
684
  assert_equal a1.spec_file, a1.loaded_from
@@ -735,10 +699,10 @@ class TestGemDependencyInstaller < Gem::TestCase
735
699
 
736
700
  Dir.chdir @tempdir do
737
701
  inst = Gem::DependencyInstaller.new :domain => :both
738
- inst.install 'b'
702
+ inst.install "b"
739
703
  end
740
704
 
741
- 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 }
742
706
  end
743
707
 
744
708
  def test_install_domain_local
@@ -748,32 +712,32 @@ class TestGemDependencyInstaller < Gem::TestCase
748
712
  inst = nil
749
713
 
750
714
  Dir.chdir @tempdir do
751
- e = assert_raises Gem::UnsatisfiableDependencyError do
715
+ e = assert_raise Gem::UnsatisfiableDependencyError do
752
716
  inst = Gem::DependencyInstaller.new :domain => :local
753
- inst.install 'b'
717
+ inst.install "b"
754
718
  end
755
719
 
756
720
  expected = "Unable to resolve dependency: 'b (>= 0)' requires 'a (>= 0)'"
757
721
  assert_equal expected, e.message
758
722
  end
759
723
 
760
- assert_equal [], inst.installed_gems.map { |s| s.full_name }
724
+ assert_equal [], inst.installed_gems.map {|s| s.full_name }
761
725
  end
762
726
 
763
727
  def test_install_domain_remote
764
728
  util_setup_gems
765
729
 
766
730
  a1_data = nil
767
- File.open @a1_gem, 'rb' do |fp|
731
+ File.open @a1_gem, "rb" do |fp|
768
732
  a1_data = fp.read
769
733
  end
770
734
 
771
- @fetcher.data['http://gems.example.com/gems/a-1.gem'] = a1_data
735
+ @fetcher.data["http://gems.example.com/gems/a-1.gem"] = a1_data
772
736
 
773
737
  inst = Gem::DependencyInstaller.new :domain => :remote
774
- inst.install 'a'
738
+ inst.install "a"
775
739
 
776
- 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 }
777
741
  end
778
742
 
779
743
  def test_install_dual_repository
@@ -787,22 +751,22 @@ class TestGemDependencyInstaller < Gem::TestCase
787
751
 
788
752
  Dir.chdir @tempdir do
789
753
  inst = Gem::DependencyInstaller.new :install_dir => gemhome2
790
- inst.install 'a'
754
+ inst.install "a"
791
755
  end
792
756
 
793
- assert_equal %w[a-1], inst.installed_gems.map { |s| s.full_name },
794
- 'sanity check'
757
+ assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name },
758
+ "sanity check"
795
759
 
796
- ENV['GEM_HOME'] = @gemhome
797
- ENV['GEM_PATH'] = [@gemhome, gemhome2].join File::PATH_SEPARATOR
760
+ ENV["GEM_HOME"] = @gemhome
761
+ ENV["GEM_PATH"] = [@gemhome, gemhome2].join File::PATH_SEPARATOR
798
762
  Gem.clear_paths
799
763
 
800
764
  Dir.chdir @tempdir do
801
765
  inst = Gem::DependencyInstaller.new
802
- inst.install 'b'
766
+ inst.install "b"
803
767
  end
804
768
 
805
- 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 }
806
770
  end
807
771
 
808
772
  def test_install_reinstall
@@ -813,8 +777,8 @@ class TestGemDependencyInstaller < Gem::TestCase
813
777
  inst = nil
814
778
 
815
779
  Dir.chdir @tempdir do
816
- inst = Gem::DependencyInstaller.new
817
- inst.install 'a'
780
+ inst = Gem::DependencyInstaller.new :force => true
781
+ inst.install "a"
818
782
  end
819
783
 
820
784
  assert_equal %w[a-1], Gem::Specification.map(&:full_name)
@@ -825,30 +789,30 @@ class TestGemDependencyInstaller < Gem::TestCase
825
789
  util_setup_gems
826
790
 
827
791
  a1_data = nil
828
- File.open @a1_gem, 'rb' do |fp|
792
+ File.open @a1_gem, "rb" do |fp|
829
793
  a1_data = fp.read
830
794
  end
831
795
 
832
- @fetcher.data['http://gems.example.com/gems/a-1.gem'] = a1_data
796
+ @fetcher.data["http://gems.example.com/gems/a-1.gem"] = a1_data
833
797
 
834
798
  inst = Gem::DependencyInstaller.new
835
799
 
836
800
  Dir.chdir @tempdir do
837
- inst.install 'a'
801
+ inst.install "a"
838
802
  end
839
803
 
840
- 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 }
841
805
  end
842
806
 
843
807
  def test_install_remote_dep
844
808
  util_setup_gems
845
809
 
846
810
  a1_data = nil
847
- File.open @a1_gem, 'rb' do |fp|
811
+ File.open @a1_gem, "rb" do |fp|
848
812
  a1_data = fp.read
849
813
  end
850
814
 
851
- @fetcher.data['http://gems.example.com/gems/a-1.gem'] = a1_data
815
+ @fetcher.data["http://gems.example.com/gems/a-1.gem"] = a1_data
852
816
 
853
817
  inst = Gem::DependencyInstaller.new
854
818
 
@@ -857,28 +821,28 @@ class TestGemDependencyInstaller < Gem::TestCase
857
821
  inst.install dep
858
822
  end
859
823
 
860
- 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 }
861
825
  end
862
826
 
863
827
  def test_install_remote_platform_newer
864
828
  util_setup_gems
865
829
 
866
- a2_o, a2_o_gem = util_gem 'a', '2' do |s|
830
+ a2_o, a2_o_gem = util_gem "a", "2" do |s|
867
831
  s.platform = Gem::Platform.new %w[cpu other_platform 1]
868
832
  end
869
833
 
870
834
  si = util_setup_spec_fetcher @a1, a2_o
871
835
 
872
- @fetcher.data['http://gems.example.com/gems/yaml'] = si.to_yaml
836
+ @fetcher.data["http://gems.example.com/gems/yaml"] = si.to_yaml
873
837
 
874
838
  a1_data = nil
875
839
  a2_o_data = nil
876
840
 
877
- File.open @a1_gem, 'rb' do |fp|
841
+ File.open @a1_gem, "rb" do |fp|
878
842
  a1_data = fp.read
879
843
  end
880
844
 
881
- File.open a2_o_gem, 'rb' do |fp|
845
+ File.open a2_o_gem, "rb" do |fp|
882
846
  a2_o_data = fp.read
883
847
  end
884
848
 
@@ -888,43 +852,45 @@ class TestGemDependencyInstaller < Gem::TestCase
888
852
  a2_o_data
889
853
 
890
854
  inst = Gem::DependencyInstaller.new :domain => :remote
891
- inst.install 'a'
855
+ inst.install "a"
892
856
 
893
- 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 }
894
858
  end
895
859
 
896
860
  def test_install_platform_is_ignored_when_a_file_is_specified
897
- _, a_gem = util_gem 'a', '1' do |s|
861
+ _, a_gem = util_gem "a", "1" do |s|
898
862
  s.platform = Gem::Platform.new %w[cpu other_platform 1]
899
863
  end
900
864
 
901
865
  inst = Gem::DependencyInstaller.new :domain => :local
902
866
  inst.install a_gem
903
867
 
904
- 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 }
905
869
  end
906
870
 
907
- if defined? OpenSSL
871
+ require "rubygems/openssl"
872
+
873
+ if Gem::HAVE_OPENSSL
908
874
  def test_install_security_policy
909
875
  util_setup_gems
910
876
 
911
- data = File.open(@a1_gem, 'rb') { |f| f.read }
912
- @fetcher.data['http://gems.example.com/gems/a-1.gem'] = data
877
+ data = File.open(@a1_gem, "rb") {|f| f.read }
878
+ @fetcher.data["http://gems.example.com/gems/a-1.gem"] = data
913
879
 
914
- data = File.open(@b1_gem, 'rb') { |f| f.read }
915
- @fetcher.data['http://gems.example.com/gems/b-1.gem'] = data
880
+ data = File.open(@b1_gem, "rb") {|f| f.read }
881
+ @fetcher.data["http://gems.example.com/gems/b-1.gem"] = data
916
882
 
917
883
  policy = Gem::Security::HighSecurity
918
884
  inst = Gem::DependencyInstaller.new :security_policy => policy
919
885
 
920
- e = assert_raises Gem::Security::Exception do
921
- inst.install 'b'
886
+ e = assert_raise Gem::Security::Exception do
887
+ inst.install "b"
922
888
  end
923
889
 
924
- assert_equal 'unsigned gems are not allowed by the High Security policy',
890
+ assert_equal "unsigned gems are not allowed by the High Security policy",
925
891
  e.message
926
892
 
927
- assert_equal %w[], inst.installed_gems.map { |s| s.full_name }
893
+ assert_equal %w[], inst.installed_gems.map {|s| s.full_name }
928
894
  end
929
895
  end
930
896
 
@@ -933,139 +899,115 @@ class TestGemDependencyInstaller < Gem::TestCase
933
899
  def test_install_no_wrappers
934
900
  util_setup_gems
935
901
 
936
- @fetcher.data['http://gems.example.com/gems/a-1.gem'] = read_binary(@a1_gem)
902
+ @fetcher.data["http://gems.example.com/gems/a-1.gem"] = read_binary(@a1_gem)
937
903
 
938
904
  inst = Gem::DependencyInstaller.new :wrappers => false, :format_executable => false
939
- inst.install 'a'
905
+ inst.install "a"
940
906
 
941
- refute_match(%r|This file was generated by RubyGems.|,
942
- File.read(File.join(@gemhome, 'bin', 'a_bin')))
907
+ refute_match(%r{This file was generated by RubyGems.},
908
+ File.read(File.join(@gemhome, "bin", "a_bin")))
943
909
  end
944
910
  end
945
911
 
946
912
  def test_install_version
947
913
  util_setup_d
948
914
 
949
- data = File.open(@d2_gem, 'rb') { |f| f.read }
950
- @fetcher.data['http://gems.example.com/gems/d-2.gem'] = data
915
+ data = File.open(@d2_gem, "rb") {|f| f.read }
916
+ @fetcher.data["http://gems.example.com/gems/d-2.gem"] = data
951
917
 
952
- data = File.open(@d1_gem, 'rb') { |f| f.read }
953
- @fetcher.data['http://gems.example.com/gems/d-1.gem'] = data
918
+ data = File.open(@d1_gem, "rb") {|f| f.read }
919
+ @fetcher.data["http://gems.example.com/gems/d-1.gem"] = data
954
920
 
955
921
  inst = Gem::DependencyInstaller.new
956
922
 
957
- inst.install 'd', '= 1'
923
+ inst.install "d", "= 1"
958
924
 
959
- 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 }
960
926
  end
961
927
 
962
928
  def test_install_version_default
963
929
  util_setup_d
964
930
 
965
- data = File.open(@d2_gem, 'rb') { |f| f.read }
966
- @fetcher.data['http://gems.example.com/gems/d-2.gem'] = data
931
+ data = File.open(@d2_gem, "rb") {|f| f.read }
932
+ @fetcher.data["http://gems.example.com/gems/d-2.gem"] = data
967
933
 
968
- data = File.open(@d1_gem, 'rb') { |f| f.read }
969
- @fetcher.data['http://gems.example.com/gems/d-1.gem'] = data
934
+ data = File.open(@d1_gem, "rb") {|f| f.read }
935
+ @fetcher.data["http://gems.example.com/gems/d-1.gem"] = data
970
936
 
971
937
  inst = Gem::DependencyInstaller.new
972
- inst.install 'd'
938
+ inst.install "d"
973
939
 
974
- 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 }
975
941
  end
976
942
 
977
- def test_find_gems_gems_with_sources
978
- util_setup_gems
943
+ def test_install_legacy_spec_with_nil_required_ruby_version
944
+ path = File.expand_path "data/null-required-ruby-version.gemspec.rz", __dir__
945
+ spec = Marshal.load Gem.read_binary(path)
946
+ def spec.validate(*args); end
979
947
 
980
- inst = Gem::DependencyInstaller.new
981
- dep = Gem::Dependency.new 'b', '>= 0'
948
+ util_build_gem spec
982
949
 
983
- Gem::Specification.reset
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
984
953
 
985
- set = Gem::Deprecate.skip_during do
986
- inst.find_gems_with_sources(dep)
987
- end
954
+ util_setup_spec_fetcher spec
988
955
 
989
- assert_kind_of Gem::AvailableSet, set
956
+ data = Gem.read_binary(cache_file)
990
957
 
991
- s = set.set.first
992
-
993
- assert_equal @b1, s.spec
994
- assert_equal Gem::Source.new(@gem_repo), s.source
995
- end
996
-
997
- def test_find_spec_by_name_and_version_wildcard
998
- util_gem 'a', 1
999
- FileUtils.mv 'gems/a-1.gem', @tempdir
958
+ @fetcher.data["http://gems.example.com/gems/activesupport-1.0.0.gem"] = data
1000
959
 
1001
- FileUtils.touch 'rdoc.gem'
960
+ dep = Gem::Dependency.new "activesupport"
1002
961
 
1003
962
  inst = Gem::DependencyInstaller.new
963
+ inst.install dep
1004
964
 
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 }
965
+ assert_equal %w[activesupport-1.0.0], Gem::Specification.map(&:full_name)
1010
966
  end
1011
967
 
1012
- def test_find_spec_by_name_and_version_wildcard_bad_gem
1013
- FileUtils.touch 'rdoc.gem'
1014
-
1015
- inst = Gem::DependencyInstaller.new
968
+ def test_install_legacy_spec_with_nil_required_rubygems_version
969
+ path = File.expand_path "data/null-required-rubygems-version.gemspec.rz", __dir__
970
+ spec = Marshal.load Gem.read_binary(path)
971
+ def spec.validate(*args); end
1016
972
 
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
1022
- end
973
+ util_build_gem spec
1023
974
 
1024
- def test_find_spec_by_name_and_version_bad_gem
1025
- FileUtils.touch 'rdoc.gem'
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
1026
978
 
1027
- inst = Gem::DependencyInstaller.new
979
+ util_setup_spec_fetcher spec
1028
980
 
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
981
+ data = Gem.read_binary(cache_file)
1034
982
 
1035
- full_path = File.join @tempdir, 'rdoc.gem'
1036
- assert_equal "package metadata is missing in #{full_path}", e.message
1037
- end
983
+ @fetcher.data["http://gems.example.com/gems/activesupport-1.0.0.gem"] = data
1038
984
 
1039
- def test_find_spec_by_name_and_version_directory
1040
- Dir.mkdir 'rdoc'
985
+ dep = Gem::Dependency.new "activesupport"
1041
986
 
1042
987
  inst = Gem::DependencyInstaller.new
988
+ inst.install dep
1043
989
 
1044
- e = assert_raises Gem::SpecificGemNotFoundException do
1045
- Gem::Deprecate.skip_during do
1046
- inst.find_spec_by_name_and_version 'rdoc'
1047
- end
1048
- end
1049
-
1050
- assert_equal "Could not find a valid gem 'rdoc' (>= 0) " +
1051
- "locally or in a repository",
1052
- e.message
990
+ assert_equal %w[activesupport-1.0.0], Gem::Specification.map(&:full_name)
1053
991
  end
1054
992
 
1055
- def test_find_spec_by_name_and_version_file
1056
- FileUtils.touch 'rdoc'
993
+ def test_find_gems_gems_with_sources
994
+ util_setup_gems
1057
995
 
1058
996
  inst = Gem::DependencyInstaller.new
997
+ dep = Gem::Dependency.new "b", ">= 0"
1059
998
 
1060
- e = assert_raises Gem::SpecificGemNotFoundException do
1061
- Gem::Deprecate.skip_during do
1062
- inst.find_spec_by_name_and_version 'rdoc'
1063
- end
999
+ Gem::Specification.reset
1000
+
1001
+ set = Gem::Deprecate.skip_during do
1002
+ inst.find_gems_with_sources(dep)
1064
1003
  end
1065
1004
 
1066
- assert_equal "Could not find a valid gem 'rdoc' (>= 0) " +
1067
- "locally or in a repository",
1068
- 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
1069
1011
  end
1070
1012
 
1071
1013
  def test_find_gems_with_sources_local
@@ -1073,7 +1015,7 @@ class TestGemDependencyInstaller < Gem::TestCase
1073
1015
 
1074
1016
  FileUtils.mv @a1_gem, @tempdir
1075
1017
  inst = Gem::DependencyInstaller.new
1076
- dep = Gem::Dependency.new 'a', '>= 0'
1018
+ dep = Gem::Dependency.new "a", ">= 0"
1077
1019
  set = nil
1078
1020
 
1079
1021
  Dir.chdir @tempdir do
@@ -1088,12 +1030,12 @@ class TestGemDependencyInstaller < Gem::TestCase
1088
1030
 
1089
1031
  remote, local = gems
1090
1032
 
1091
- assert_equal 'a-1', local.spec.full_name, 'local spec'
1033
+ assert_equal "a-1", local.spec.full_name, "local spec"
1092
1034
  assert_equal File.join(@tempdir, @a1.file_name),
1093
- local.source.download(local.spec), 'local path'
1035
+ local.source.download(local.spec), "local path"
1094
1036
 
1095
- assert_equal 'a-1', remote.spec.full_name, 'remote spec'
1096
- assert_equal Gem::Source.new(@gem_repo), remote.source, 'remote path'
1037
+ assert_equal "a-1", remote.spec.full_name, "remote spec"
1038
+ assert_equal Gem::Source.new(@gem_repo), remote.source, "remote path"
1097
1039
  end
1098
1040
 
1099
1041
  def test_find_gems_with_sources_prerelease
@@ -1101,7 +1043,7 @@ class TestGemDependencyInstaller < Gem::TestCase
1101
1043
 
1102
1044
  installer = Gem::DependencyInstaller.new
1103
1045
 
1104
- dependency = Gem::Dependency.new('a', Gem::Requirement.default)
1046
+ dependency = Gem::Dependency.new("a", Gem::Requirement.default)
1105
1047
 
1106
1048
  set = Gem::Deprecate.skip_during do
1107
1049
  installer.find_gems_with_sources(dependency)
@@ -1109,8 +1051,8 @@ class TestGemDependencyInstaller < Gem::TestCase
1109
1051
 
1110
1052
  releases = set.all_specs
1111
1053
 
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' }
1054
+ assert releases.any? {|s| s.name == "a" && s.version.to_s == "1" }
1055
+ refute releases.any? {|s| s.name == "a" && s.version.to_s == "1.a" }
1114
1056
 
1115
1057
  dependency.prerelease = true
1116
1058
 
@@ -1125,15 +1067,15 @@ class TestGemDependencyInstaller < Gem::TestCase
1125
1067
 
1126
1068
  def test_find_gems_with_sources_with_best_only_and_platform
1127
1069
  util_setup_gems
1128
- a1_x86_mingw32, = util_gem 'a', '1' do |s|
1129
- s.platform = 'x86-mingw32'
1070
+ a1_x86_mingw32, = util_gem "a", "1" do |s|
1071
+ s.platform = "x86-mingw32"
1130
1072
  end
1131
1073
  util_setup_spec_fetcher @a1, a1_x86_mingw32
1132
- Gem.platforms << Gem::Platform.new('x86-mingw32')
1074
+ Gem.platforms << Gem::Platform.new("x86-mingw32")
1133
1075
 
1134
1076
  installer = Gem::DependencyInstaller.new
1135
1077
 
1136
- dependency = Gem::Dependency.new('a', Gem::Requirement.default)
1078
+ dependency = Gem::Dependency.new("a", Gem::Requirement.default)
1137
1079
 
1138
1080
  set = Gem::Deprecate.skip_during do
1139
1081
  installer.find_gems_with_sources(dependency, true)
@@ -1149,7 +1091,7 @@ class TestGemDependencyInstaller < Gem::TestCase
1149
1091
 
1150
1092
  installer = Gem::DependencyInstaller.new
1151
1093
 
1152
- dep = Gem::Dependency.new('a')
1094
+ dep = Gem::Dependency.new("a")
1153
1095
 
1154
1096
  out = Gem::Deprecate.skip_during do
1155
1097
  installer.find_gems_with_sources(dep)
@@ -1166,9 +1108,9 @@ class TestGemDependencyInstaller < Gem::TestCase
1166
1108
  FileUtils.mv @b1_gem, @tempdir
1167
1109
 
1168
1110
  inst = Gem::DependencyInstaller.new
1169
- request_set = inst.resolve_dependencies 'b', req('>= 0')
1111
+ request_set = inst.resolve_dependencies "b", req(">= 0")
1170
1112
 
1171
- requests = request_set.sorted_requests.map { |req| req.full_name }
1113
+ requests = request_set.sorted_requests.map {|req| req.full_name }
1172
1114
 
1173
1115
  assert_equal %w[a-1 b-1], requests
1174
1116
  end
@@ -1180,9 +1122,9 @@ class TestGemDependencyInstaller < Gem::TestCase
1180
1122
  FileUtils.mv @b1_gem, @tempdir
1181
1123
 
1182
1124
  inst = Gem::DependencyInstaller.new :ignore_dependencies => true
1183
- request_set = inst.resolve_dependencies 'b', req('>= 0')
1125
+ request_set = inst.resolve_dependencies "b", req(">= 0")
1184
1126
 
1185
- requests = request_set.sorted_requests.map { |req| req.full_name }
1127
+ requests = request_set.sorted_requests.map {|req| req.full_name }
1186
1128
 
1187
1129
  assert request_set.ignore_dependencies
1188
1130
 
@@ -1192,78 +1134,22 @@ class TestGemDependencyInstaller < Gem::TestCase
1192
1134
  def test_resolve_dependencies_local
1193
1135
  util_setup_gems
1194
1136
 
1195
- @a2, @a2_gem = util_gem 'a', '2'
1137
+ @a2, @a2_gem = util_gem "a", "2"
1196
1138
  FileUtils.mv @a1_gem, @tempdir
1197
1139
  FileUtils.mv @a2_gem, @tempdir
1198
1140
 
1199
1141
  inst = Gem::DependencyInstaller.new
1200
- request_set = inst.resolve_dependencies 'a-1.gem', req('>= 0')
1142
+ request_set = inst.resolve_dependencies "a-1.gem", req(">= 0")
1201
1143
 
1202
- requests = request_set.sorted_requests.map { |req| req.full_name }
1144
+ requests = request_set.sorted_requests.map {|req| req.full_name }
1203
1145
 
1204
1146
  assert_equal %w[a-1], requests
1205
1147
  end
1206
1148
 
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
1149
  def util_setup_d
1223
- @d1, @d1_gem = util_gem 'd', '1'
1224
- @d2, @d2_gem = util_gem 'd', '2'
1225
-
1226
- util_reset_gems
1227
- end
1228
-
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
1150
+ @d1, @d1_gem = util_gem "d", "1"
1151
+ @d2, @d2_gem = util_gem "d", "2"
1244
1152
 
1245
- @z1, @z1_gem = util_spec 'z', '1', 'y' => nil
1246
-
1247
- util_reset_gems
1248
- end
1249
-
1250
- def util_reset_gems
1251
- @a1 ||= nil
1252
- @b1 ||= nil
1253
- @a1_pre ||= nil
1254
- @c1_pre ||= nil
1255
- @d1 ||= nil
1256
- @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)
1153
+ util_setup_spec_fetcher(@d1, @d2)
1267
1154
  end
1268
-
1269
1155
  end