rubygems-update 2.6.1 → 3.5.0

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