rubygems-update 3.3.18 → 3.6.2

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