rubygems-update 2.6.0 → 3.5.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (812) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +5941 -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 +439 -216
  7. data/POLICIES.md +135 -0
  8. data/README.md +112 -0
  9. data/UPGRADING.md +15 -0
  10. data/bundler/CHANGELOG.md +4753 -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 +254 -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 +1015 -0
  59. data/bundler/lib/bundler/dependency.rb +105 -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 +604 -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 +172 -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 +121 -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 +296 -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/.document +1 -0
  250. data/bundler/lib/bundler/vendor/connection_pool/LICENSE +20 -0
  251. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +174 -0
  252. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
  253. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +56 -0
  254. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +175 -0
  255. data/bundler/lib/bundler/vendor/fileutils/.document +1 -0
  256. data/bundler/lib/bundler/vendor/fileutils/LICENSE.txt +22 -0
  257. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +2694 -0
  258. data/bundler/lib/bundler/vendor/net-http-persistent/.document +1 -0
  259. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
  260. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +41 -0
  261. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +65 -0
  262. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
  263. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1073 -0
  264. data/bundler/lib/bundler/vendor/pub_grub/.document +1 -0
  265. data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
  266. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
  267. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
  268. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
  269. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
  270. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
  271. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
  272. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
  273. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
  274. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
  275. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
  276. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
  277. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
  278. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
  279. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +248 -0
  280. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
  281. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
  282. data/bundler/lib/bundler/vendor/thor/.document +1 -0
  283. data/bundler/lib/bundler/vendor/thor/LICENSE.md +20 -0
  284. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +105 -0
  285. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +61 -0
  286. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +108 -0
  287. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb +143 -0
  288. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +373 -0
  289. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +130 -0
  290. data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +340 -0
  291. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +825 -0
  292. data/bundler/lib/bundler/vendor/thor/lib/thor/command.rb +151 -0
  293. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +107 -0
  294. data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +106 -0
  295. data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +281 -0
  296. data/bundler/lib/bundler/vendor/thor/lib/thor/invocation.rb +178 -0
  297. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +37 -0
  298. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +88 -0
  299. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor.rb +17 -0
  300. data/bundler/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
  301. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +89 -0
  302. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +195 -0
  303. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +178 -0
  304. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +293 -0
  305. data/bundler/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -0
  306. data/bundler/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +72 -0
  307. data/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +335 -0
  308. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +388 -0
  309. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +112 -0
  310. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/column_printer.rb +29 -0
  311. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +81 -0
  312. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +134 -0
  313. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/terminal.rb +42 -0
  314. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/wrapped_printer.rb +38 -0
  315. data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +81 -0
  316. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +285 -0
  317. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +3 -0
  318. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +663 -0
  319. data/bundler/lib/bundler/vendor/tsort/.document +1 -0
  320. data/bundler/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
  321. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +455 -0
  322. data/bundler/lib/bundler/vendor/uri/.document +1 -0
  323. data/bundler/lib/bundler/vendor/uri/LICENSE.txt +22 -0
  324. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +853 -0
  325. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +100 -0
  326. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
  327. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1588 -0
  328. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +125 -0
  329. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +23 -0
  330. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +261 -0
  331. data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +22 -0
  332. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +293 -0
  333. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +539 -0
  334. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +183 -0
  335. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
  336. data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +83 -0
  337. data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +23 -0
  338. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +104 -0
  339. data/bundler/lib/bundler/vendored_fileutils.rb +4 -0
  340. data/bundler/lib/bundler/vendored_net_http.rb +8 -0
  341. data/bundler/lib/bundler/vendored_persistent.rb +11 -0
  342. data/bundler/lib/bundler/vendored_pub_grub.rb +4 -0
  343. data/bundler/lib/bundler/vendored_thor.rb +8 -0
  344. data/bundler/lib/bundler/vendored_timeout.rb +8 -0
  345. data/bundler/lib/bundler/vendored_tsort.rb +4 -0
  346. data/bundler/lib/bundler/vendored_uri.rb +4 -0
  347. data/bundler/lib/bundler/version.rb +13 -0
  348. data/bundler/lib/bundler/vlad.rb +17 -0
  349. data/bundler/lib/bundler/worker.rb +117 -0
  350. data/bundler/lib/bundler/yaml_serializer.rb +93 -0
  351. data/bundler/lib/bundler.rb +663 -0
  352. data/{test/rubygems/bogussources.rb → exe/gem} +5 -2
  353. data/exe/update_rubygems +38 -0
  354. data/hide_lib_for_update/note.txt +0 -4
  355. data/lib/rubygems/available_set.rb +12 -12
  356. data/lib/rubygems/basic_specification.rb +82 -59
  357. data/lib/rubygems/bundler_version_finder.rb +77 -0
  358. data/lib/rubygems/ci_detector.rb +75 -0
  359. data/lib/rubygems/command.rb +144 -71
  360. data/lib/rubygems/command_manager.rb +64 -27
  361. data/lib/rubygems/commands/build_command.rb +88 -17
  362. data/lib/rubygems/commands/cert_command.rb +131 -83
  363. data/lib/rubygems/commands/check_command.rb +30 -27
  364. data/lib/rubygems/commands/cleanup_command.rb +57 -40
  365. data/lib/rubygems/commands/contents_command.rb +37 -39
  366. data/lib/rubygems/commands/dependency_command.rb +53 -65
  367. data/lib/rubygems/commands/environment_command.rb +32 -16
  368. data/lib/rubygems/commands/exec_command.rb +249 -0
  369. data/lib/rubygems/commands/fetch_command.rb +36 -19
  370. data/lib/rubygems/commands/generate_index_command.rb +40 -74
  371. data/lib/rubygems/commands/help_command.rb +22 -22
  372. data/lib/rubygems/commands/info_command.rb +38 -0
  373. data/lib/rubygems/commands/install_command.rb +67 -143
  374. data/lib/rubygems/commands/list_command.rb +10 -9
  375. data/lib/rubygems/commands/lock_command.rb +12 -14
  376. data/lib/rubygems/commands/mirror_command.rb +4 -4
  377. data/lib/rubygems/commands/open_command.rb +28 -26
  378. data/lib/rubygems/commands/outdated_command.rb +6 -6
  379. data/lib/rubygems/commands/owner_command.rb +51 -27
  380. data/lib/rubygems/commands/pristine_command.rb +99 -71
  381. data/lib/rubygems/commands/push_command.rb +53 -46
  382. data/lib/rubygems/commands/query_command.rb +21 -328
  383. data/lib/rubygems/commands/rdoc_command.rb +33 -33
  384. data/lib/rubygems/commands/search_command.rb +9 -9
  385. data/lib/rubygems/commands/server_command.rb +15 -76
  386. data/lib/rubygems/commands/setup_command.rb +370 -186
  387. data/lib/rubygems/commands/signin_command.rb +34 -0
  388. data/lib/rubygems/commands/signout_command.rb +32 -0
  389. data/lib/rubygems/commands/sources_command.rb +57 -41
  390. data/lib/rubygems/commands/specification_command.rb +38 -28
  391. data/lib/rubygems/commands/stale_command.rb +6 -5
  392. data/lib/rubygems/commands/uninstall_command.rb +96 -62
  393. data/lib/rubygems/commands/unpack_command.rb +44 -53
  394. data/lib/rubygems/commands/update_command.rb +153 -99
  395. data/lib/rubygems/commands/which_command.rb +14 -17
  396. data/lib/rubygems/commands/yank_command.rb +28 -32
  397. data/lib/rubygems/compatibility.rb +13 -32
  398. data/lib/rubygems/config_file.rb +214 -119
  399. data/lib/rubygems/core_ext/kernel_gem.rb +10 -16
  400. data/lib/rubygems/core_ext/kernel_require.rb +92 -90
  401. data/lib/rubygems/core_ext/kernel_warn.rb +49 -0
  402. data/lib/rubygems/core_ext/tcpsocket_init.rb +54 -0
  403. data/lib/rubygems/defaults.rb +184 -54
  404. data/lib/rubygems/dependency.rb +75 -62
  405. data/lib/rubygems/dependency_installer.rb +74 -230
  406. data/lib/rubygems/dependency_list.rb +32 -33
  407. data/lib/rubygems/deprecate.rb +113 -17
  408. data/lib/rubygems/doctor.rb +31 -31
  409. data/lib/rubygems/errors.rb +51 -13
  410. data/lib/rubygems/exceptions.rb +65 -35
  411. data/lib/rubygems/ext/build_error.rb +3 -1
  412. data/lib/rubygems/ext/builder.rb +103 -77
  413. data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +27 -0
  414. data/lib/rubygems/ext/cargo_builder.rb +360 -0
  415. data/lib/rubygems/ext/cmake_builder.rb +6 -7
  416. data/lib/rubygems/ext/configure_builder.rb +6 -9
  417. data/lib/rubygems/ext/ext_conf_builder.rb +40 -61
  418. data/lib/rubygems/ext/rake_builder.rb +18 -21
  419. data/lib/rubygems/ext.rb +8 -7
  420. data/lib/rubygems/gem_runner.rb +19 -21
  421. data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +163 -0
  422. data/lib/rubygems/gemcutter_utilities/webauthn_listener.rb +105 -0
  423. data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +78 -0
  424. data/lib/rubygems/gemcutter_utilities.rb +246 -43
  425. data/lib/rubygems/install_default_message.rb +3 -3
  426. data/lib/rubygems/install_message.rb +3 -3
  427. data/lib/rubygems/install_update_options.rb +104 -98
  428. data/lib/rubygems/installer.rb +407 -225
  429. data/lib/rubygems/installer_uninstaller_utils.rb +27 -0
  430. data/lib/rubygems/local_remote_options.rb +29 -32
  431. data/lib/rubygems/name_tuple.rb +18 -23
  432. data/lib/rubygems/net/http.rb +3 -0
  433. data/lib/rubygems/net-http/.document +1 -0
  434. data/lib/rubygems/net-http/LICENSE.txt +22 -0
  435. data/lib/rubygems/net-http/lib/net/http/backward.rb +40 -0
  436. data/lib/rubygems/net-http/lib/net/http/exceptions.rb +34 -0
  437. data/lib/rubygems/net-http/lib/net/http/generic_request.rb +414 -0
  438. data/lib/rubygems/net-http/lib/net/http/header.rb +981 -0
  439. data/lib/rubygems/net-http/lib/net/http/proxy_delta.rb +17 -0
  440. data/lib/rubygems/net-http/lib/net/http/request.rb +88 -0
  441. data/lib/rubygems/net-http/lib/net/http/requests.rb +425 -0
  442. data/lib/rubygems/net-http/lib/net/http/response.rb +738 -0
  443. data/lib/rubygems/net-http/lib/net/http/responses.rb +1174 -0
  444. data/lib/rubygems/net-http/lib/net/http/status.rb +84 -0
  445. data/lib/rubygems/net-http/lib/net/http.rb +2496 -0
  446. data/lib/rubygems/net-http/lib/net/https.rb +23 -0
  447. data/lib/rubygems/net-protocol/.document +1 -0
  448. data/lib/rubygems/net-protocol/LICENSE.txt +22 -0
  449. data/lib/rubygems/net-protocol/lib/net/protocol.rb +544 -0
  450. data/lib/rubygems/openssl.rb +7 -0
  451. data/lib/rubygems/optparse/.document +1 -0
  452. data/lib/rubygems/optparse/COPYING +56 -0
  453. data/lib/rubygems/optparse/lib/optionparser.rb +2 -0
  454. data/lib/rubygems/optparse/lib/optparse/ac.rb +54 -0
  455. data/lib/rubygems/optparse/lib/optparse/date.rb +18 -0
  456. data/lib/rubygems/optparse/lib/optparse/kwargs.rb +22 -0
  457. data/lib/rubygems/optparse/lib/optparse/shellwords.rb +7 -0
  458. data/lib/rubygems/optparse/lib/optparse/time.rb +11 -0
  459. data/lib/rubygems/optparse/lib/optparse/uri.rb +7 -0
  460. data/lib/rubygems/optparse/lib/optparse/version.rb +71 -0
  461. data/lib/rubygems/optparse/lib/optparse.rb +2330 -0
  462. data/lib/rubygems/optparse.rb +3 -0
  463. data/lib/rubygems/package/digest_io.rb +5 -7
  464. data/lib/rubygems/package/file_source.rb +6 -8
  465. data/lib/rubygems/package/io_source.rb +6 -4
  466. data/lib/rubygems/package/old.rb +19 -28
  467. data/lib/rubygems/package/source.rb +1 -1
  468. data/lib/rubygems/package/tar_header.rb +114 -93
  469. data/lib/rubygems/package/tar_reader/entry.rb +116 -22
  470. data/lib/rubygems/package/tar_reader.rb +18 -40
  471. data/lib/rubygems/package/tar_writer.rb +42 -56
  472. data/lib/rubygems/package.rb +254 -144
  473. data/lib/rubygems/package_task.rb +8 -14
  474. data/lib/rubygems/path_support.rb +21 -16
  475. data/lib/rubygems/platform.rb +135 -74
  476. data/lib/rubygems/psych_tree.rb +3 -2
  477. data/lib/rubygems/query_utils.rb +349 -0
  478. data/lib/rubygems/rdoc.rb +4 -326
  479. data/lib/rubygems/remote_fetcher.rb +99 -181
  480. data/lib/rubygems/request/connection_pools.rb +31 -24
  481. data/lib/rubygems/request/http_pool.rb +6 -7
  482. data/lib/rubygems/request/https_pool.rb +2 -3
  483. data/lib/rubygems/request.rb +107 -57
  484. data/lib/rubygems/request_set/gem_dependency_api.rb +182 -190
  485. data/lib/rubygems/request_set/lockfile/parser.rb +42 -52
  486. data/lib/rubygems/request_set/lockfile/tokenizer.rb +34 -24
  487. data/lib/rubygems/request_set/lockfile.rb +32 -35
  488. data/lib/rubygems/request_set.rb +115 -71
  489. data/lib/rubygems/requirement.rb +77 -68
  490. data/lib/rubygems/resolv/.document +1 -0
  491. data/lib/rubygems/resolv/LICENSE.txt +22 -0
  492. data/lib/rubygems/resolv/lib/resolv.rb +3387 -0
  493. data/lib/rubygems/resolver/activation_request.rb +34 -61
  494. data/lib/rubygems/resolver/api_set/gem_parser.rb +24 -0
  495. data/lib/rubygems/resolver/api_set.rb +40 -32
  496. data/lib/rubygems/resolver/api_specification.rb +37 -18
  497. data/lib/rubygems/resolver/best_set.rb +15 -17
  498. data/lib/rubygems/resolver/composed_set.rb +9 -11
  499. data/lib/rubygems/resolver/conflict.rb +19 -33
  500. data/lib/rubygems/resolver/current_set.rb +2 -4
  501. data/lib/rubygems/resolver/dependency_request.rb +8 -9
  502. data/lib/rubygems/resolver/git_set.rb +8 -10
  503. data/lib/rubygems/resolver/git_specification.rb +11 -13
  504. data/lib/rubygems/resolver/index_set.rb +13 -15
  505. data/lib/rubygems/resolver/index_specification.rb +42 -11
  506. data/lib/rubygems/resolver/installed_specification.rb +9 -11
  507. data/lib/rubygems/resolver/installer_set.rb +93 -47
  508. data/lib/rubygems/resolver/local_specification.rb +5 -7
  509. data/lib/rubygems/resolver/lock_set.rb +13 -15
  510. data/lib/rubygems/resolver/lock_specification.rb +13 -15
  511. data/lib/rubygems/resolver/molinillo/.document +1 -0
  512. data/lib/rubygems/resolver/molinillo/LICENSE +9 -0
  513. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +57 -0
  514. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +88 -0
  515. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +36 -0
  516. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +66 -0
  517. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +62 -0
  518. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +63 -0
  519. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +61 -0
  520. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +126 -0
  521. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +46 -0
  522. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +36 -0
  523. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +164 -0
  524. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +110 -146
  525. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +83 -9
  526. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
  527. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +13 -1
  528. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
  529. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +552 -172
  530. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
  531. data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +12 -6
  532. data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
  533. data/lib/rubygems/resolver/molinillo.rb +2 -1
  534. data/lib/rubygems/resolver/requirement_list.rb +2 -2
  535. data/lib/rubygems/resolver/set.rb +3 -5
  536. data/lib/rubygems/resolver/source_set.rb +6 -7
  537. data/lib/rubygems/resolver/spec_specification.rb +16 -4
  538. data/lib/rubygems/resolver/specification.rb +25 -10
  539. data/lib/rubygems/resolver/stats.rb +1 -0
  540. data/lib/rubygems/resolver/vendor_set.rb +6 -8
  541. data/lib/rubygems/resolver/vendor_specification.rb +6 -8
  542. data/lib/rubygems/resolver.rb +121 -72
  543. data/lib/rubygems/s3_uri_signer.rb +177 -0
  544. data/lib/rubygems/safe_marshal/elements.rb +146 -0
  545. data/lib/rubygems/safe_marshal/reader.rb +308 -0
  546. data/lib/rubygems/safe_marshal/visitors/stream_printer.rb +31 -0
  547. data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +415 -0
  548. data/lib/rubygems/safe_marshal/visitors/visitor.rb +74 -0
  549. data/lib/rubygems/safe_marshal.rb +74 -0
  550. data/lib/rubygems/safe_yaml.rb +36 -0
  551. data/lib/rubygems/security/policies.rb +49 -51
  552. data/lib/rubygems/security/policy.rb +46 -53
  553. data/lib/rubygems/security/signer.rb +86 -29
  554. data/lib/rubygems/security/trust_dir.rb +22 -24
  555. data/lib/rubygems/security.rb +101 -82
  556. data/lib/rubygems/security_option.rb +43 -0
  557. data/lib/rubygems/shellwords.rb +3 -0
  558. data/lib/rubygems/source/git.rb +40 -42
  559. data/lib/rubygems/source/installed.rb +5 -9
  560. data/lib/rubygems/source/local.rb +30 -33
  561. data/lib/rubygems/source/lock.rb +10 -10
  562. data/lib/rubygems/source/specific_file.rb +7 -9
  563. data/lib/rubygems/source/vendor.rb +3 -7
  564. data/lib/rubygems/source.rb +78 -68
  565. data/lib/rubygems/source_list.rb +11 -15
  566. data/lib/rubygems/spec_fetcher.rb +71 -83
  567. data/lib/rubygems/specification.rb +833 -1115
  568. data/lib/rubygems/specification_policy.rb +538 -0
  569. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA.pem +21 -0
  570. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
  571. data/lib/rubygems/stub_specification.rb +55 -57
  572. data/lib/rubygems/text.rb +39 -27
  573. data/lib/rubygems/timeout/.document +1 -0
  574. data/lib/rubygems/timeout/LICENSE.txt +22 -0
  575. data/lib/rubygems/timeout/lib/timeout.rb +199 -0
  576. data/lib/rubygems/timeout.rb +3 -0
  577. data/lib/rubygems/tsort/.document +1 -0
  578. data/lib/rubygems/tsort/LICENSE.txt +22 -0
  579. data/lib/rubygems/tsort/lib/tsort.rb +455 -0
  580. data/lib/rubygems/tsort.rb +3 -0
  581. data/lib/rubygems/uninstaller.rb +150 -87
  582. data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
  583. data/lib/rubygems/update_suggestion.rb +56 -0
  584. data/lib/rubygems/uri.rb +126 -0
  585. data/lib/rubygems/uri_formatter.rb +4 -7
  586. data/lib/rubygems/user_interaction.rb +92 -146
  587. data/lib/rubygems/util/licenses.rb +712 -317
  588. data/lib/rubygems/util/list.rb +5 -2
  589. data/lib/rubygems/util.rb +58 -75
  590. data/lib/rubygems/validator.rb +26 -48
  591. data/lib/rubygems/version.rb +106 -56
  592. data/lib/rubygems/version_option.rb +22 -14
  593. data/lib/rubygems/yaml_serializer.rb +93 -0
  594. data/lib/rubygems.rb +453 -358
  595. data/rubygems-update.gemspec +38 -0
  596. data/setup.rb +13 -27
  597. metadata +511 -363
  598. data/.autotest +0 -71
  599. data/.document +0 -5
  600. data/.travis.yml +0 -46
  601. data/CONTRIBUTING.rdoc +0 -129
  602. data/CVE-2013-4287.txt +0 -35
  603. data/CVE-2013-4363.txt +0 -45
  604. data/CVE-2015-3900.txt +0 -40
  605. data/History.txt +0 -3094
  606. data/MAINTAINERS.md +0 -5
  607. data/POLICIES.rdoc +0 -61
  608. data/README.rdoc +0 -54
  609. data/Rakefile +0 -449
  610. data/UPGRADING.rdoc +0 -92
  611. data/appveyor.yml +0 -36
  612. data/bin/gem +0 -25
  613. data/bin/update_rubygems +0 -37
  614. data/lib/gauntlet_rubygems.rb +0 -51
  615. data/lib/rubygems/indexer.rb +0 -434
  616. data/lib/rubygems/installer_test_case.rb +0 -194
  617. data/lib/rubygems/mock_gem_ui.rb +0 -89
  618. data/lib/rubygems/package/tar_test_case.rb +0 -147
  619. data/lib/rubygems/psych_additions.rb +0 -10
  620. data/lib/rubygems/server.rb +0 -869
  621. data/lib/rubygems/source_local.rb +0 -6
  622. data/lib/rubygems/source_specific_file.rb +0 -5
  623. data/lib/rubygems/ssl_certs/AddTrustExternalCARoot-2048.pem +0 -25
  624. data/lib/rubygems/ssl_certs/AddTrustExternalCARoot.pem +0 -32
  625. data/lib/rubygems/ssl_certs/Class3PublicPrimaryCertificationAuthority.pem +0 -14
  626. data/lib/rubygems/ssl_certs/DigiCertHighAssuranceEVRootCA.pem +0 -23
  627. data/lib/rubygems/ssl_certs/EntrustnetSecureServerCertificationAuthority.pem +0 -28
  628. data/lib/rubygems/ssl_certs/GeoTrustGlobalCA.pem +0 -20
  629. data/lib/rubygems/syck_hack.rb +0 -77
  630. data/lib/rubygems/test_case.rb +0 -1496
  631. data/lib/rubygems/test_utilities.rb +0 -384
  632. data/lib/ubygems.rb +0 -11
  633. data/test/rubygems/alternate_cert.pem +0 -18
  634. data/test/rubygems/alternate_cert_32.pem +0 -18
  635. data/test/rubygems/alternate_key.pem +0 -27
  636. data/test/rubygems/bad_rake.rb +0 -2
  637. data/test/rubygems/ca_cert.pem +0 -68
  638. data/test/rubygems/child_cert.pem +0 -18
  639. data/test/rubygems/child_cert_32.pem +0 -18
  640. data/test/rubygems/child_key.pem +0 -27
  641. data/test/rubygems/client.pem +0 -49
  642. data/test/rubygems/data/gem-private_key.pem +0 -27
  643. data/test/rubygems/data/gem-public_cert.pem +0 -20
  644. data/test/rubygems/data/null-type.gemspec.rz +0 -0
  645. data/test/rubygems/encrypted_private_key.pem +0 -30
  646. data/test/rubygems/expired_cert.pem +0 -18
  647. data/test/rubygems/fake_certlib/openssl.rb +0 -8
  648. data/test/rubygems/fix_openssl_warnings.rb +0 -13
  649. data/test/rubygems/foo/discover.rb +0 -1
  650. data/test/rubygems/future_cert.pem +0 -18
  651. data/test/rubygems/future_cert_32.pem +0 -18
  652. data/test/rubygems/good_rake.rb +0 -2
  653. data/test/rubygems/grandchild_cert.pem +0 -18
  654. data/test/rubygems/grandchild_cert_32.pem +0 -18
  655. data/test/rubygems/grandchild_key.pem +0 -27
  656. data/test/rubygems/invalid_client.pem +0 -49
  657. data/test/rubygems/invalid_issuer_cert.pem +0 -18
  658. data/test/rubygems/invalid_issuer_cert_32.pem +0 -18
  659. data/test/rubygems/invalid_key.pem +0 -27
  660. data/test/rubygems/invalid_signer_cert.pem +0 -18
  661. data/test/rubygems/invalid_signer_cert_32.pem +0 -18
  662. data/test/rubygems/invalidchild_cert.pem +0 -18
  663. data/test/rubygems/invalidchild_cert_32.pem +0 -18
  664. data/test/rubygems/invalidchild_key.pem +0 -27
  665. data/test/rubygems/plugin/exception/rubygems_plugin.rb +0 -3
  666. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -4
  667. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +0 -3
  668. data/test/rubygems/private_key.pem +0 -27
  669. data/test/rubygems/public_cert.pem +0 -18
  670. data/test/rubygems/public_cert_32.pem +0 -18
  671. data/test/rubygems/public_key.pem +0 -9
  672. data/test/rubygems/rubygems/commands/crash_command.rb +0 -6
  673. data/test/rubygems/rubygems_plugin.rb +0 -22
  674. data/test/rubygems/sff/discover.rb +0 -1
  675. data/test/rubygems/simple_gem.rb +0 -67
  676. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -9
  677. data/test/rubygems/specifications/foo-0.0.1-x86-mswin32.gemspec +0 -0
  678. data/test/rubygems/ssl_cert.pem +0 -19
  679. data/test/rubygems/ssl_key.pem +0 -15
  680. data/test/rubygems/test_bundled_ca.rb +0 -59
  681. data/test/rubygems/test_config.rb +0 -24
  682. data/test/rubygems/test_deprecate.rb +0 -77
  683. data/test/rubygems/test_gem.rb +0 -1679
  684. data/test/rubygems/test_gem_available_set.rb +0 -130
  685. data/test/rubygems/test_gem_command.rb +0 -248
  686. data/test/rubygems/test_gem_command_manager.rb +0 -264
  687. data/test/rubygems/test_gem_commands_build_command.rb +0 -121
  688. data/test/rubygems/test_gem_commands_cert_command.rb +0 -671
  689. data/test/rubygems/test_gem_commands_check_command.rb +0 -69
  690. data/test/rubygems/test_gem_commands_cleanup_command.rb +0 -197
  691. data/test/rubygems/test_gem_commands_contents_command.rb +0 -240
  692. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -230
  693. data/test/rubygems/test_gem_commands_environment_command.rb +0 -154
  694. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -127
  695. data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -51
  696. data/test/rubygems/test_gem_commands_help_command.rb +0 -75
  697. data/test/rubygems/test_gem_commands_install_command.rb +0 -987
  698. data/test/rubygems/test_gem_commands_list_command.rb +0 -34
  699. data/test/rubygems/test_gem_commands_lock_command.rb +0 -69
  700. data/test/rubygems/test_gem_commands_mirror.rb +0 -20
  701. data/test/rubygems/test_gem_commands_open_command.rb +0 -70
  702. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -33
  703. data/test/rubygems/test_gem_commands_owner_command.rb +0 -205
  704. data/test/rubygems/test_gem_commands_pristine_command.rb +0 -491
  705. data/test/rubygems/test_gem_commands_push_command.rb +0 -330
  706. data/test/rubygems/test_gem_commands_query_command.rb +0 -657
  707. data/test/rubygems/test_gem_commands_search_command.rb +0 -18
  708. data/test/rubygems/test_gem_commands_server_command.rb +0 -60
  709. data/test/rubygems/test_gem_commands_setup_command.rb +0 -136
  710. data/test/rubygems/test_gem_commands_sources_command.rb +0 -249
  711. data/test/rubygems/test_gem_commands_specification_command.rb +0 -251
  712. data/test/rubygems/test_gem_commands_stale_command.rb +0 -43
  713. data/test/rubygems/test_gem_commands_uninstall_command.rb +0 -283
  714. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -209
  715. data/test/rubygems/test_gem_commands_update_command.rb +0 -514
  716. data/test/rubygems/test_gem_commands_which_command.rb +0 -87
  717. data/test/rubygems/test_gem_commands_yank_command.rb +0 -100
  718. data/test/rubygems/test_gem_config_file.rb +0 -491
  719. data/test/rubygems/test_gem_dependency.rb +0 -362
  720. data/test/rubygems/test_gem_dependency_installer.rb +0 -1235
  721. data/test/rubygems/test_gem_dependency_list.rb +0 -260
  722. data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -29
  723. data/test/rubygems/test_gem_doctor.rb +0 -169
  724. data/test/rubygems/test_gem_ext_builder.rb +0 -341
  725. data/test/rubygems/test_gem_ext_cmake_builder.rb +0 -87
  726. data/test/rubygems/test_gem_ext_configure_builder.rb +0 -87
  727. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -211
  728. data/test/rubygems/test_gem_ext_rake_builder.rb +0 -65
  729. data/test/rubygems/test_gem_gem_runner.rb +0 -69
  730. data/test/rubygems/test_gem_gemcutter_utilities.rb +0 -235
  731. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -62
  732. data/test/rubygems/test_gem_indexer.rb +0 -367
  733. data/test/rubygems/test_gem_install_update_options.rb +0 -197
  734. data/test/rubygems/test_gem_installer.rb +0 -1552
  735. data/test/rubygems/test_gem_local_remote_options.rb +0 -134
  736. data/test/rubygems/test_gem_name_tuple.rb +0 -45
  737. data/test/rubygems/test_gem_package.rb +0 -876
  738. data/test/rubygems/test_gem_package_old.rb +0 -90
  739. data/test/rubygems/test_gem_package_tar_header.rb +0 -147
  740. data/test/rubygems/test_gem_package_tar_reader.rb +0 -90
  741. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -142
  742. data/test/rubygems/test_gem_package_tar_writer.rb +0 -264
  743. data/test/rubygems/test_gem_package_task.rb +0 -84
  744. data/test/rubygems/test_gem_path_support.rb +0 -121
  745. data/test/rubygems/test_gem_platform.rb +0 -308
  746. data/test/rubygems/test_gem_rdoc.rb +0 -270
  747. data/test/rubygems/test_gem_remote_fetcher.rb +0 -1051
  748. data/test/rubygems/test_gem_request.rb +0 -363
  749. data/test/rubygems/test_gem_request_connection_pools.rb +0 -130
  750. data/test/rubygems/test_gem_request_set.rb +0 -595
  751. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +0 -831
  752. data/test/rubygems/test_gem_request_set_lockfile.rb +0 -470
  753. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +0 -549
  754. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +0 -306
  755. data/test/rubygems/test_gem_requirement.rb +0 -387
  756. data/test/rubygems/test_gem_resolver.rb +0 -715
  757. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -74
  758. data/test/rubygems/test_gem_resolver_api_set.rb +0 -209
  759. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -145
  760. data/test/rubygems/test_gem_resolver_best_set.rb +0 -138
  761. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -46
  762. data/test/rubygems/test_gem_resolver_conflict.rb +0 -88
  763. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -85
  764. data/test/rubygems/test_gem_resolver_git_set.rb +0 -190
  765. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -114
  766. data/test/rubygems/test_gem_resolver_index_set.rb +0 -90
  767. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -90
  768. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -50
  769. data/test/rubygems/test_gem_resolver_installer_set.rb +0 -258
  770. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -46
  771. data/test/rubygems/test_gem_resolver_lock_set.rb +0 -64
  772. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -100
  773. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -21
  774. data/test/rubygems/test_gem_resolver_specification.rb +0 -65
  775. data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -84
  776. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -84
  777. data/test/rubygems/test_gem_security.rb +0 -307
  778. data/test/rubygems/test_gem_security_policy.rb +0 -541
  779. data/test/rubygems/test_gem_security_signer.rb +0 -209
  780. data/test/rubygems/test_gem_security_trust_dir.rb +0 -101
  781. data/test/rubygems/test_gem_server.rb +0 -409
  782. data/test/rubygems/test_gem_silent_ui.rb +0 -117
  783. data/test/rubygems/test_gem_source.rb +0 -242
  784. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -20
  785. data/test/rubygems/test_gem_source_git.rb +0 -309
  786. data/test/rubygems/test_gem_source_installed.rb +0 -37
  787. data/test/rubygems/test_gem_source_list.rb +0 -118
  788. data/test/rubygems/test_gem_source_local.rb +0 -107
  789. data/test/rubygems/test_gem_source_lock.rb +0 -115
  790. data/test/rubygems/test_gem_source_specific_file.rb +0 -76
  791. data/test/rubygems/test_gem_source_vendor.rb +0 -32
  792. data/test/rubygems/test_gem_spec_fetcher.rb +0 -311
  793. data/test/rubygems/test_gem_specification.rb +0 -3519
  794. data/test/rubygems/test_gem_stream_ui.rb +0 -239
  795. data/test/rubygems/test_gem_stub_specification.rb +0 -217
  796. data/test/rubygems/test_gem_text.rb +0 -77
  797. data/test/rubygems/test_gem_uninstaller.rb +0 -485
  798. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -33
  799. data/test/rubygems/test_gem_uri_formatter.rb +0 -29
  800. data/test/rubygems/test_gem_util.rb +0 -40
  801. data/test/rubygems/test_gem_validator.rb +0 -46
  802. data/test/rubygems/test_gem_version.rb +0 -222
  803. data/test/rubygems/test_gem_version_option.rb +0 -152
  804. data/test/rubygems/test_kernel.rb +0 -86
  805. data/test/rubygems/test_require.rb +0 -322
  806. data/test/rubygems/wrong_key_cert.pem +0 -18
  807. data/test/rubygems/wrong_key_cert_32.pem +0 -18
  808. data/util/CL2notes +0 -56
  809. data/util/create_certs.rb +0 -157
  810. data/util/create_encrypted_key.rb +0 -17
  811. data/util/generate_spdx_license_list.rb +0 -51
  812. data/util/update_bundled_ca_certificates.rb +0 -118
@@ -1,1496 +0,0 @@
1
- # frozen_string_literal: true
2
- # TODO: $SAFE = 1
3
-
4
- begin
5
- gem 'minitest', '~> 4.0'
6
- rescue NoMethodError, Gem::LoadError
7
- # for ruby tests
8
- end
9
-
10
- if defined? Gem::QuickLoader
11
- Gem::QuickLoader.load_full_rubygems_library
12
- else
13
- require 'rubygems'
14
- end
15
-
16
- begin
17
- gem 'minitest'
18
- rescue Gem::LoadError
19
- end
20
-
21
- # We have to load these up front because otherwise we'll try to load
22
- # them while we're testing rubygems, and thus we can't actually load them.
23
- unless Gem::Dependency.new('rdoc', '>= 3.10').matching_specs.empty?
24
- gem 'rdoc'
25
- gem 'json'
26
- end
27
-
28
- require 'minitest/autorun'
29
-
30
- require 'rubygems/deprecate'
31
-
32
- require 'fileutils'
33
- require 'pathname'
34
- require 'pp'
35
- require 'rubygems/package'
36
- require 'shellwords'
37
- require 'tmpdir'
38
- require 'uri'
39
- require 'zlib'
40
- require 'benchmark' # stdlib
41
- require 'rubygems/mock_gem_ui'
42
-
43
- module Gem
44
-
45
- ##
46
- # Allows setting the gem path searcher. This method is available when
47
- # requiring 'rubygems/test_case'
48
-
49
- def self.searcher=(searcher)
50
- @searcher = searcher
51
- end
52
-
53
- ##
54
- # Allows toggling Windows behavior. This method is available when requiring
55
- # 'rubygems/test_case'
56
-
57
- def self.win_platform=(val)
58
- @@win_platform = val
59
- end
60
-
61
- ##
62
- # Allows setting path to Ruby. This method is available when requiring
63
- # 'rubygems/test_case'
64
-
65
- def self.ruby= ruby
66
- @ruby = ruby
67
- end
68
-
69
- ##
70
- # When rubygems/test_case is required the default user interaction is a
71
- # MockGemUi.
72
-
73
- module DefaultUserInteraction
74
- @ui = Gem::MockGemUi.new
75
- end
76
- end
77
-
78
- ##
79
- # RubyGemTestCase provides a variety of methods for testing rubygems and
80
- # gem-related behavior in a sandbox. Through RubyGemTestCase you can install
81
- # and uninstall gems, fetch remote gems through a stub fetcher and be assured
82
- # your normal set of gems is not affected.
83
- #
84
- # Tests are always run at a safe level of 1.
85
-
86
- class Gem::TestCase < MiniTest::Unit::TestCase
87
-
88
- attr_accessor :fetcher # :nodoc:
89
-
90
- attr_accessor :gem_repo # :nodoc:
91
-
92
- attr_accessor :uri # :nodoc:
93
-
94
- def assert_activate expected, *specs
95
- specs.each do |spec|
96
- case spec
97
- when String then
98
- Gem::Specification.find_by_name(spec).activate
99
- when Gem::Specification then
100
- spec.activate
101
- else
102
- flunk spec.inspect
103
- end
104
- end
105
-
106
- loaded = Gem.loaded_specs.values.map(&:full_name)
107
-
108
- assert_equal expected.sort, loaded.sort if expected
109
- end
110
-
111
- # TODO: move to minitest
112
- def assert_path_exists path, msg = nil
113
- msg = message(msg) { "Expected path '#{path}' to exist" }
114
- assert File.exist?(path), msg
115
- end
116
-
117
- ##
118
- # Sets the ENABLE_SHARED entry in RbConfig::CONFIG to +value+ and restores
119
- # the original value when the block ends
120
-
121
- def enable_shared value
122
- enable_shared = RbConfig::CONFIG['ENABLE_SHARED']
123
- RbConfig::CONFIG['ENABLE_SHARED'] = value
124
-
125
- yield
126
- ensure
127
- if enable_shared then
128
- RbConfig::CONFIG['enable_shared'] = enable_shared
129
- else
130
- RbConfig::CONFIG.delete 'enable_shared'
131
- end
132
- end
133
-
134
- # TODO: move to minitest
135
- def refute_path_exists path, msg = nil
136
- msg = message(msg) { "Expected path '#{path}' to not exist" }
137
- refute File.exist?(path), msg
138
- end
139
-
140
- def scan_make_command_lines(output)
141
- output.scan(/^#{Regexp.escape make_command}(?:[[:blank:]].*)?$/)
142
- end
143
-
144
- def parse_make_command_line(line)
145
- command, *args = line.shellsplit
146
-
147
- targets = []
148
- macros = {}
149
-
150
- args.each do |arg|
151
- case arg
152
- when /\A(\w+)=/
153
- macros[$1] = $'
154
- else
155
- targets << arg
156
- end
157
- end
158
-
159
- targets << '' if targets.empty?
160
-
161
- {
162
- :command => command,
163
- :targets => targets,
164
- :macros => macros,
165
- }
166
- end
167
-
168
- def assert_contains_make_command(target, output, msg = nil)
169
- if output.match(/\n/)
170
- msg = message(msg) {
171
- 'Expected output containing make command "%s": %s' % [
172
- ('%s %s' % [make_command, target]).rstrip,
173
- output.inspect
174
- ]
175
- }
176
- else
177
- msg = message(msg) {
178
- 'Expected make command "%s": %s' % [
179
- ('%s %s' % [make_command, target]).rstrip,
180
- output.inspect
181
- ]
182
- }
183
- end
184
-
185
- assert scan_make_command_lines(output).any? { |line|
186
- make = parse_make_command_line(line)
187
-
188
- if make[:targets].include?(target)
189
- yield make, line if block_given?
190
- true
191
- else
192
- false
193
- end
194
- }, msg
195
- end
196
-
197
- include Gem::DefaultUserInteraction
198
-
199
- undef_method :default_test if instance_methods.include? 'default_test' or
200
- instance_methods.include? :default_test
201
-
202
- @@project_dir = Dir.pwd.untaint unless defined?(@@project_dir)
203
-
204
- @@initial_reset = false
205
-
206
- ##
207
- # #setup prepares a sandboxed location to install gems. All installs are
208
- # directed to a temporary directory. All install plugins are removed.
209
- #
210
- # If the +RUBY+ environment variable is set the given path is used for
211
- # Gem::ruby. The local platform is set to <tt>i386-mswin32</tt> for Windows
212
- # or <tt>i686-darwin8.10.1</tt> otherwise.
213
- #
214
- # If the +KEEP_FILES+ environment variable is set the files will not be
215
- # removed from <tt>/tmp/test_rubygems_#{$$}.#{Time.now.to_i}</tt>.
216
-
217
- def setup
218
- super
219
-
220
- @orig_gem_home = ENV['GEM_HOME']
221
- @orig_gem_path = ENV['GEM_PATH']
222
- @orig_gem_vendor = ENV['GEM_VENDOR']
223
- @orig_gem_spec_cache = ENV['GEM_SPEC_CACHE']
224
- @orig_rubygems_gemdeps = ENV['RUBYGEMS_GEMDEPS']
225
- @orig_rubygems_host = ENV['RUBYGEMS_HOST']
226
-
227
- ENV['GEM_VENDOR'] = nil
228
-
229
- @current_dir = Dir.pwd
230
- @fetcher = nil
231
- @ui = Gem::MockGemUi.new
232
-
233
- tmpdir = File.expand_path Dir.tmpdir
234
- tmpdir.untaint
235
-
236
- if ENV['KEEP_FILES'] then
237
- @tempdir = File.join(tmpdir, "test_rubygems_#{$$}.#{Time.now.to_i}")
238
- else
239
- @tempdir = File.join(tmpdir, "test_rubygems_#{$$}")
240
- end
241
- @tempdir.untaint
242
-
243
- FileUtils.mkdir_p @tempdir
244
-
245
- # This makes the tempdir consistent on OS X.
246
- # File.expand_path Dir.tmpdir #=> "/var/..."
247
- # Dir.chdir Dir.tmpdir do File.expand_path '.' end #=> "/private/var/..."
248
- # TODO use File#realpath above instead of #expand_path once 1.8 support is
249
- # dropped.
250
- Dir.chdir @tempdir do
251
- @tempdir = File.expand_path '.'
252
- @tempdir.untaint
253
- end
254
-
255
- @gemhome = File.join @tempdir, 'gemhome'
256
- @userhome = File.join @tempdir, 'userhome'
257
- ENV["GEM_SPEC_CACHE"] = File.join @tempdir, 'spec_cache'
258
-
259
- @orig_ruby = if ENV['RUBY'] then
260
- ruby = Gem.ruby
261
- Gem.ruby = ENV['RUBY']
262
- ruby
263
- end
264
-
265
- @git = ENV['GIT'] || 'git'
266
-
267
- Gem.ensure_gem_subdirectories @gemhome
268
-
269
- @orig_LOAD_PATH = $LOAD_PATH.dup
270
- $LOAD_PATH.map! { |s|
271
- (expand_path = File.expand_path(s)) == s ? s : expand_path.untaint
272
- }
273
-
274
- Dir.chdir @tempdir
275
-
276
- @orig_ENV_HOME = ENV['HOME']
277
- ENV['HOME'] = @userhome
278
- Gem.instance_variable_set :@user_home, nil
279
- Gem.instance_variable_set :@gemdeps, nil
280
- Gem.send :remove_instance_variable, :@ruby_version if
281
- Gem.instance_variables.include? :@ruby_version
282
-
283
- FileUtils.mkdir_p @gemhome
284
- FileUtils.mkdir_p @userhome
285
-
286
- @orig_gem_private_key_passphrase = ENV['GEM_PRIVATE_KEY_PASSPHRASE']
287
- ENV['GEM_PRIVATE_KEY_PASSPHRASE'] = PRIVATE_KEY_PASSPHRASE
288
-
289
- @default_dir = File.join @tempdir, 'default'
290
- @default_spec_dir = File.join @default_dir, "specifications", "default"
291
- Gem.instance_variable_set :@default_dir, @default_dir
292
- FileUtils.mkdir_p @default_spec_dir
293
-
294
- # We use Gem::Specification.reset the first time only so that if there
295
- # are unresolved deps that leak into the whole test suite, they're at least
296
- # reported once.
297
- if @@initial_reset
298
- Gem::Specification.unresolved_deps.clear # done to avoid cross-test warnings
299
- else
300
- @@initial_reset = true
301
- Gem::Specification.reset
302
- end
303
- Gem.use_paths(@gemhome)
304
-
305
- Gem::Security.reset
306
-
307
- Gem.loaded_specs.clear
308
- Gem.clear_default_specs
309
- Gem::Specification.unresolved_deps.clear
310
-
311
- Gem.configuration.verbose = true
312
- Gem.configuration.update_sources = true
313
-
314
- Gem::RemoteFetcher.fetcher = Gem::FakeFetcher.new
315
-
316
- @gem_repo = "http://gems.example.com/"
317
- @uri = URI.parse @gem_repo
318
- Gem.sources.replace [@gem_repo]
319
-
320
- Gem.searcher = nil
321
- Gem::SpecFetcher.fetcher = nil
322
- @orig_BASERUBY = RbConfig::CONFIG['BASERUBY']
323
- RbConfig::CONFIG['BASERUBY'] = RbConfig::CONFIG['ruby_install_name']
324
-
325
- @orig_arch = RbConfig::CONFIG['arch']
326
-
327
- if win_platform?
328
- util_set_arch 'i386-mswin32'
329
- else
330
- util_set_arch 'i686-darwin8.10.1'
331
- end
332
-
333
- @marshal_version = "#{Marshal::MAJOR_VERSION}.#{Marshal::MINOR_VERSION}"
334
- @orig_LOADED_FEATURES = $LOADED_FEATURES.dup
335
- end
336
-
337
- ##
338
- # #teardown restores the process to its original state and removes the
339
- # tempdir unless the +KEEP_FILES+ environment variable was set.
340
-
341
- def teardown
342
- $LOAD_PATH.replace @orig_LOAD_PATH if @orig_LOAD_PATH
343
- if @orig_LOADED_FEATURES
344
- if @orig_LOAD_PATH
345
- paths = @orig_LOAD_PATH.map {|path| File.join(File.expand_path(path), "/")}
346
- ($LOADED_FEATURES - @orig_LOADED_FEATURES).each do |feat|
347
- unless paths.any? {|path| feat.start_with?(path)}
348
- $LOADED_FEATURES.delete(feat)
349
- end
350
- end
351
- else
352
- $LOADED_FEATURES.replace @orig_LOADED_FEATURES
353
- end
354
- end
355
-
356
- if @orig_BASERUBY
357
- RbConfig::CONFIG['BASERUBY'] = @orig_BASERUBY
358
- else
359
- RbConfig::CONFIG.delete('BASERUBY')
360
- end
361
- RbConfig::CONFIG['arch'] = @orig_arch
362
-
363
- if defined? Gem::RemoteFetcher then
364
- Gem::RemoteFetcher.fetcher = nil
365
- end
366
-
367
- Dir.chdir @current_dir
368
-
369
- FileUtils.rm_rf @tempdir unless ENV['KEEP_FILES']
370
-
371
- ENV['GEM_HOME'] = @orig_gem_home
372
- ENV['GEM_PATH'] = @orig_gem_path
373
- ENV['GEM_VENDOR'] = @orig_gem_vendor
374
- ENV['GEM_SPEC_CACHE'] = @orig_gem_spec_cache
375
- ENV['RUBYGEMS_GEMDEPS'] = @orig_rubygems_gemdeps
376
- ENV['RUBYGEMS_HOST'] = @orig_rubygems_host
377
-
378
- Gem.ruby = @orig_ruby if @orig_ruby
379
-
380
- if @orig_ENV_HOME then
381
- ENV['HOME'] = @orig_ENV_HOME
382
- else
383
- ENV.delete 'HOME'
384
- end
385
-
386
- Gem.instance_variable_set :@default_dir, nil
387
-
388
- ENV['GEM_PRIVATE_KEY_PASSPHRASE'] = @orig_gem_private_key_passphrase
389
-
390
- Gem::Specification._clear_load_cache
391
- Gem::Specification.unresolved_deps.clear
392
- end
393
-
394
- def common_installer_setup
395
- common_installer_teardown
396
-
397
- Gem.post_build do |installer|
398
- @post_build_hook_arg = installer
399
- true
400
- end
401
-
402
- Gem.post_install do |installer|
403
- @post_install_hook_arg = installer
404
- end
405
-
406
- Gem.post_uninstall do |uninstaller|
407
- @post_uninstall_hook_arg = uninstaller
408
- end
409
-
410
- Gem.pre_install do |installer|
411
- @pre_install_hook_arg = installer
412
- true
413
- end
414
-
415
- Gem.pre_uninstall do |uninstaller|
416
- @pre_uninstall_hook_arg = uninstaller
417
- end
418
- end
419
-
420
- def common_installer_teardown
421
- Gem.post_build_hooks.clear
422
- Gem.post_install_hooks.clear
423
- Gem.done_installing_hooks.clear
424
- Gem.post_reset_hooks.clear
425
- Gem.post_uninstall_hooks.clear
426
- Gem.pre_install_hooks.clear
427
- Gem.pre_reset_hooks.clear
428
- Gem.pre_uninstall_hooks.clear
429
- end
430
-
431
- ##
432
- # A git_gem is used with a gem dependencies file. The gem created here
433
- # has no files, just a gem specification for the given +name+ and +version+.
434
- #
435
- # Yields the +specification+ to the block, if given
436
-
437
- def git_gem name = 'a', version = 1
438
- have_git?
439
-
440
- directory = File.join 'git', name
441
- directory = File.expand_path directory
442
-
443
- git_spec = Gem::Specification.new name, version do |specification|
444
- yield specification if block_given?
445
- end
446
-
447
- FileUtils.mkdir_p directory
448
-
449
- gemspec = "#{name}.gemspec"
450
-
451
- open File.join(directory, gemspec), 'w' do |io|
452
- io.write git_spec.to_ruby
453
- end
454
-
455
- head = nil
456
-
457
- Dir.chdir directory do
458
- unless File.exist? '.git' then
459
- system @git, 'init', '--quiet'
460
- system @git, 'config', 'user.name', 'RubyGems Tests'
461
- system @git, 'config', 'user.email', 'rubygems@example'
462
- end
463
-
464
- system @git, 'add', gemspec
465
- system @git, 'commit', '-a', '-m', 'a non-empty commit message', '--quiet'
466
- head = Gem::Util.popen('git', 'rev-parse', 'master').strip
467
- end
468
-
469
- return name, git_spec.version, directory, head
470
- end
471
-
472
- ##
473
- # Skips this test unless you have a git executable
474
-
475
- def have_git?
476
- return if in_path? @git
477
-
478
- skip 'cannot find git executable, use GIT environment variable to set'
479
- end
480
-
481
- def in_path? executable # :nodoc:
482
- return true if %r%\A([A-Z]:|/)% =~ executable and File.exist? executable
483
-
484
- ENV['PATH'].split(File::PATH_SEPARATOR).any? do |directory|
485
- File.exist? File.join directory, executable
486
- end
487
- end
488
-
489
- ##
490
- # Builds and installs the Gem::Specification +spec+
491
-
492
- def install_gem spec, options = {}
493
- require 'rubygems/installer'
494
-
495
- gem = File.join @tempdir, "gems", "#{spec.full_name}.gem"
496
-
497
- unless File.exist? gem then
498
- use_ui Gem::MockGemUi.new do
499
- Dir.chdir @tempdir do
500
- Gem::Package.build spec
501
- end
502
- end
503
-
504
- gem = File.join(@tempdir, File.basename(spec.cache_file)).untaint
505
- end
506
-
507
- Gem::Installer.at(gem, options.merge({:wrappers => true})).install
508
- end
509
-
510
- ##
511
- # Builds and installs the Gem::Specification +spec+ into the user dir
512
-
513
- def install_gem_user spec
514
- install_gem spec, :user_install => true
515
- end
516
-
517
- ##
518
- # Uninstalls the Gem::Specification +spec+
519
- def uninstall_gem spec
520
- require 'rubygems/uninstaller'
521
-
522
- Class.new(Gem::Uninstaller) {
523
- def ask_if_ok spec
524
- true
525
- end
526
- }.new(spec.name, :executables => true, :user_install => true).uninstall
527
- end
528
-
529
- ##
530
- # creates a temporary directory with hax
531
- # TODO: deprecate and remove
532
-
533
- def create_tmpdir
534
- tmpdir = nil
535
- Dir.chdir Dir.tmpdir do tmpdir = Dir.pwd end # HACK OSX /private/tmp
536
- tmpdir = File.join tmpdir, "test_rubygems_#{$$}"
537
- FileUtils.mkdir_p tmpdir
538
- return tmpdir
539
- end
540
-
541
- ##
542
- # Enables pretty-print for all tests
543
-
544
- def mu_pp(obj)
545
- s = String.new
546
- s = PP.pp obj, s
547
- s = s.force_encoding(Encoding.default_external) if defined? Encoding
548
- s.chomp
549
- end
550
-
551
- ##
552
- # Reads a Marshal file at +path+
553
-
554
- def read_cache(path)
555
- open path.dup.untaint, 'rb' do |io|
556
- Marshal.load io.read
557
- end
558
- end
559
-
560
- ##
561
- # Reads a binary file at +path+
562
-
563
- def read_binary(path)
564
- Gem.read_binary path
565
- end
566
-
567
- ##
568
- # Writes a binary file to +path+ which is relative to +@gemhome+
569
-
570
- def write_file(path)
571
- path = File.join @gemhome, path unless Pathname.new(path).absolute?
572
- dir = File.dirname path
573
- FileUtils.mkdir_p dir unless File.directory? dir
574
-
575
- open path, 'wb' do |io|
576
- yield io if block_given?
577
- end
578
-
579
- path
580
- end
581
-
582
- def all_spec_names
583
- Gem::Specification.map(&:full_name)
584
- end
585
-
586
- ##
587
- # Creates a Gem::Specification with a minimum of extra work. +name+ and
588
- # +version+ are the gem's name and version, platform, author, email,
589
- # homepage, summary and description are defaulted. The specification is
590
- # yielded for customization.
591
- #
592
- # The gem is added to the installed gems in +@gemhome+ and the runtime.
593
- #
594
- # Use this with #write_file to build an installed gem.
595
-
596
- def quick_gem(name, version='2')
597
- require 'rubygems/specification'
598
-
599
- spec = Gem::Specification.new do |s|
600
- s.platform = Gem::Platform::RUBY
601
- s.name = name
602
- s.version = version
603
- s.author = 'A User'
604
- s.email = 'example@example.com'
605
- s.homepage = 'http://example.com'
606
- s.summary = "this is a summary"
607
- s.description = "This is a test description"
608
-
609
- yield(s) if block_given?
610
- end
611
-
612
- Gem::Specification.map # HACK: force specs to (re-)load before we write
613
-
614
- written_path = write_file spec.spec_file do |io|
615
- io.write spec.to_ruby_for_cache
616
- end
617
-
618
- spec.loaded_from = spec.loaded_from = written_path
619
-
620
- Gem::Specification.reset
621
-
622
- return spec
623
- end
624
-
625
- ##
626
- # TODO: remove in RubyGems 3.0
627
-
628
- def quick_spec name, version = '2' # :nodoc:
629
- util_spec name, version
630
- end
631
-
632
- ##
633
- # Builds a gem from +spec+ and places it in <tt>File.join @gemhome,
634
- # 'cache'</tt>. Automatically creates files based on +spec.files+
635
-
636
- def util_build_gem(spec)
637
- dir = spec.gem_dir
638
- FileUtils.mkdir_p dir
639
-
640
- Dir.chdir dir do
641
- spec.files.each do |file|
642
- next if File.exist? file
643
- FileUtils.mkdir_p File.dirname(file)
644
- File.open file, 'w' do |fp| fp.puts "# #{file}" end
645
- end
646
-
647
- use_ui Gem::MockGemUi.new do
648
- Gem::Package.build spec
649
- end
650
-
651
- cache = spec.cache_file
652
- FileUtils.mv File.basename(cache), cache
653
- end
654
- end
655
-
656
- def util_remove_gem(spec)
657
- FileUtils.rm_rf spec.cache_file
658
- FileUtils.rm_rf spec.spec_file
659
- end
660
-
661
- ##
662
- # Removes all installed gems from +@gemhome+.
663
-
664
- def util_clear_gems
665
- FileUtils.rm_rf File.join(@gemhome, "gems") # TODO: use Gem::Dirs
666
- FileUtils.mkdir File.join(@gemhome, "gems")
667
- FileUtils.rm_rf File.join(@gemhome, "specifications")
668
- FileUtils.mkdir File.join(@gemhome, "specifications")
669
- Gem::Specification.reset
670
- end
671
-
672
- ##
673
- # Install the provided specs
674
-
675
- def install_specs(*specs)
676
- specs.each do |spec|
677
- Gem::Installer.for_spec(spec).install
678
- end
679
-
680
- Gem.searcher = nil
681
- end
682
-
683
- ##
684
- # Installs the provided default specs including writing the spec file
685
-
686
- def install_default_gems(*specs)
687
- install_default_specs(*specs)
688
-
689
- specs.each do |spec|
690
- open spec.loaded_from, 'w' do |io|
691
- io.write spec.to_ruby_for_cache
692
- end
693
- end
694
- end
695
-
696
- ##
697
- # Install the provided default specs
698
-
699
- def install_default_specs(*specs)
700
- specs.each do |spec|
701
- installer = Gem::Installer.for_spec(spec, :install_as_default => true)
702
- installer.install
703
- Gem.register_default_spec(spec)
704
- end
705
- end
706
-
707
- def loaded_spec_names
708
- Gem.loaded_specs.values.map(&:full_name).sort
709
- end
710
-
711
- def unresolved_names
712
- Gem::Specification.unresolved_deps.values.map(&:to_s).sort
713
- end
714
-
715
- def save_loaded_features
716
- old_loaded_features = $LOADED_FEATURES.dup
717
- yield
718
- ensure
719
- $LOADED_FEATURES.replace old_loaded_features
720
- end
721
-
722
- ##
723
- # new_spec is deprecated as it is never used.
724
- #
725
- # TODO: remove in RubyGems 3.0
726
-
727
- def new_spec name, version, deps = nil, *files # :nodoc:
728
- require 'rubygems/specification'
729
-
730
- spec = Gem::Specification.new do |s|
731
- s.platform = Gem::Platform::RUBY
732
- s.name = name
733
- s.version = version
734
- s.author = 'A User'
735
- s.email = 'example@example.com'
736
- s.homepage = 'http://example.com'
737
- s.summary = "this is a summary"
738
- s.description = "This is a test description"
739
-
740
- Array(deps).each do |n, req|
741
- s.add_dependency n, (req || '>= 0')
742
- end
743
-
744
- s.files.push(*files) unless files.empty?
745
-
746
- yield s if block_given?
747
- end
748
-
749
- spec.loaded_from = spec.spec_file
750
-
751
- unless files.empty? then
752
- write_file spec.spec_file do |io|
753
- io.write spec.to_ruby_for_cache
754
- end
755
-
756
- util_build_gem spec
757
-
758
- cache_file = File.join @tempdir, 'gems', "#{spec.full_name}.gem"
759
- FileUtils.mkdir_p File.dirname cache_file
760
- FileUtils.mv spec.cache_file, cache_file
761
- FileUtils.rm spec.spec_file
762
- end
763
-
764
- spec
765
- end
766
-
767
- def new_default_spec(name, version, deps = nil, *files)
768
- spec = util_spec name, version, deps
769
-
770
- spec.loaded_from = File.join(@default_spec_dir, spec.spec_name)
771
- spec.files = files
772
-
773
- lib_dir = File.join(@tempdir, "default_gems", "lib")
774
- $LOAD_PATH.unshift(lib_dir)
775
- files.each do |file|
776
- rb_path = File.join(lib_dir, file)
777
- FileUtils.mkdir_p(File.dirname(rb_path))
778
- File.open(rb_path, "w") do |rb|
779
- rb << "# #{file}"
780
- end
781
- end
782
-
783
- spec
784
- end
785
-
786
- ##
787
- # Creates a spec with +name+, +version+. +deps+ can specify the dependency
788
- # or a +block+ can be given for full customization of the specification.
789
-
790
- def util_spec name, version = 2, deps = nil # :yields: specification
791
- raise "deps or block, not both" if deps and block_given?
792
-
793
- spec = Gem::Specification.new do |s|
794
- s.platform = Gem::Platform::RUBY
795
- s.name = name
796
- s.version = version
797
- s.author = 'A User'
798
- s.email = 'example@example.com'
799
- s.homepage = 'http://example.com'
800
- s.summary = "this is a summary"
801
- s.description = "This is a test description"
802
-
803
- yield s if block_given?
804
- end
805
-
806
- if deps then
807
- # Since Hash#each is unordered in 1.8, sort the keys and iterate that
808
- # way so the tests are deterministic on all implementations.
809
- deps.keys.sort.each do |n|
810
- spec.add_dependency n, (deps[n] || '>= 0')
811
- end
812
- end
813
-
814
- Gem::Specification.reset
815
-
816
- return spec
817
- end
818
-
819
- ##
820
- # Creates a gem with +name+, +version+ and +deps+. The specification will
821
- # be yielded before gem creation for customization. The gem will be placed
822
- # in <tt>File.join @tempdir, 'gems'</tt>. The specification and .gem file
823
- # location are returned.
824
-
825
- def util_gem(name, version, deps = nil, &block)
826
- # TODO: deprecate
827
- raise "deps or block, not both" if deps and block
828
-
829
- if deps then
830
- block = proc do |s|
831
- # Since Hash#each is unordered in 1.8, sort
832
- # the keys and iterate that way so the tests are
833
- # deterministic on all implementations.
834
- deps.keys.sort.each do |n|
835
- s.add_dependency n, (deps[n] || '>= 0')
836
- end
837
- end
838
- end
839
-
840
- spec = quick_gem(name, version, &block)
841
-
842
- util_build_gem spec
843
-
844
- cache_file = File.join @tempdir, 'gems', "#{spec.original_name}.gem"
845
- FileUtils.mkdir_p File.dirname cache_file
846
- FileUtils.mv spec.cache_file, cache_file
847
- FileUtils.rm spec.spec_file
848
-
849
- spec.loaded_from = nil
850
-
851
- [spec, cache_file]
852
- end
853
-
854
- ##
855
- # Gzips +data+.
856
-
857
- def util_gzip(data)
858
- out = StringIO.new
859
-
860
- Zlib::GzipWriter.wrap out do |io|
861
- io.write data
862
- end
863
-
864
- out.string
865
- end
866
-
867
- ##
868
- # Creates several default gems which all have a lib/code.rb file. The gems
869
- # are not installed but are available in the cache dir.
870
- #
871
- # +@a1+:: gem a version 1, this is the best-described gem.
872
- # +@a2+:: gem a version 2
873
- # +@a3a:: gem a version 3.a
874
- # +@a_evil9+:: gem a_evil version 9, use this to ensure similarly-named gems
875
- # don't collide with a.
876
- # +@b2+:: gem b version 2
877
- # +@c1_2+:: gem c version 1.2
878
- # +@pl1+:: gem pl version 1, this gem has a legacy platform of i386-linux.
879
- #
880
- # Additional +prerelease+ gems may also be created:
881
- #
882
- # +@a2_pre+:: gem a version 2.a
883
- # TODO: nuke this and fix tests. this should speed up a lot
884
-
885
- def util_make_gems(prerelease = false)
886
- @a1 = quick_gem 'a', '1' do |s|
887
- s.files = %w[lib/code.rb]
888
- s.require_paths = %w[lib]
889
- s.date = Gem::Specification::TODAY - 86400
890
- s.homepage = 'http://a.example.com'
891
- s.email = %w[example@example.com example2@example.com]
892
- s.authors = %w[Example Example2]
893
- s.description = <<-DESC
894
- This line is really, really long. So long, in fact, that it is more than eighty characters long! The purpose of this line is for testing wrapping behavior because sometimes people don't wrap their text to eighty characters. Without the wrapping, the text might not look good in the RSS feed.
895
-
896
- Also, a list:
897
- * An entry that\'s actually kind of sort
898
- * an entry that\'s really long, which will probably get wrapped funny. That's ok, somebody wasn't thinking straight when they made it more than eighty characters.
899
- DESC
900
- end
901
-
902
- init = proc do |s|
903
- s.files = %w[lib/code.rb]
904
- s.require_paths = %w[lib]
905
- end
906
-
907
- @a2 = quick_gem('a', '2', &init)
908
- @a3a = quick_gem('a', '3.a', &init)
909
- @a_evil9 = quick_gem('a_evil', '9', &init)
910
- @b2 = quick_gem('b', '2', &init)
911
- @c1_2 = quick_gem('c', '1.2', &init)
912
- @x = quick_gem('x', '1', &init)
913
- @dep_x = quick_gem('dep_x', '1') do |s|
914
- s.files = %w[lib/code.rb]
915
- s.require_paths = %w[lib]
916
- s.add_dependency 'x', '>= 1'
917
- end
918
-
919
- @pl1 = quick_gem 'pl', '1' do |s| # l for legacy
920
- s.files = %w[lib/code.rb]
921
- s.require_paths = %w[lib]
922
- s.platform = Gem::Platform.new 'i386-linux'
923
- s.instance_variable_set :@original_platform, 'i386-linux'
924
- end
925
-
926
- if prerelease
927
- @a2_pre = quick_gem('a', '2.a', &init)
928
- write_file File.join(*%W[gems #{@a2_pre.original_name} lib code.rb])
929
- util_build_gem @a2_pre
930
- end
931
-
932
- write_file File.join(*%W[gems #{@a1.original_name} lib code.rb])
933
- write_file File.join(*%W[gems #{@a2.original_name} lib code.rb])
934
- write_file File.join(*%W[gems #{@a3a.original_name} lib code.rb])
935
- write_file File.join(*%W[gems #{@a_evil9.original_name} lib code.rb])
936
- write_file File.join(*%W[gems #{@b2.original_name} lib code.rb])
937
- write_file File.join(*%W[gems #{@c1_2.original_name} lib code.rb])
938
- write_file File.join(*%W[gems #{@pl1.original_name} lib code.rb])
939
- write_file File.join(*%W[gems #{@x.original_name} lib code.rb])
940
- write_file File.join(*%W[gems #{@dep_x.original_name} lib code.rb])
941
-
942
- [@a1, @a2, @a3a, @a_evil9, @b2, @c1_2, @pl1, @x, @dep_x].each do |spec|
943
- util_build_gem spec
944
- end
945
-
946
- FileUtils.rm_r File.join(@gemhome, "gems", @pl1.original_name)
947
- end
948
-
949
- ##
950
- # Set the platform to +arch+
951
-
952
- def util_set_arch(arch)
953
- RbConfig::CONFIG['arch'] = arch
954
- platform = Gem::Platform.new arch
955
-
956
- Gem.instance_variable_set :@platforms, nil
957
- Gem::Platform.instance_variable_set :@local, nil
958
-
959
- platform
960
- end
961
-
962
- ##
963
- # Sets up a fake fetcher using the gems from #util_make_gems. Optionally
964
- # additional +prerelease+ gems may be included.
965
- #
966
- # Gems created by this method may be fetched using Gem::RemoteFetcher.
967
-
968
- def util_setup_fake_fetcher(prerelease = false)
969
- require 'zlib'
970
- require 'socket'
971
- require 'rubygems/remote_fetcher'
972
-
973
- @fetcher = Gem::FakeFetcher.new
974
-
975
- util_make_gems(prerelease)
976
- Gem::Specification.reset
977
-
978
- @all_gems = [@a1, @a2, @a3a, @a_evil9, @b2, @c1_2].sort
979
- @all_gem_names = @all_gems.map { |gem| gem.full_name }
980
-
981
- gem_names = [@a1.full_name, @a2.full_name, @a3a.full_name, @b2.full_name]
982
- @gem_names = gem_names.sort.join("\n")
983
-
984
- Gem::RemoteFetcher.fetcher = @fetcher
985
- end
986
-
987
- ##
988
- # Add +spec+ to +@fetcher+ serving the data in the file +path+.
989
- # +repo+ indicates which repo to make +spec+ appear to be in.
990
-
991
- def add_to_fetcher(spec, path=nil, repo=@gem_repo)
992
- path ||= spec.cache_file
993
- @fetcher.data["#{@gem_repo}gems/#{spec.file_name}"] = read_binary(path)
994
- end
995
-
996
- ##
997
- # Sets up Gem::SpecFetcher to return information from the gems in +specs+.
998
- # Best used with +@all_gems+ from #util_setup_fake_fetcher.
999
-
1000
- def util_setup_spec_fetcher(*specs)
1001
- all_specs = Gem::Specification.to_a + specs
1002
- Gem::Specification._resort! all_specs
1003
-
1004
- spec_fetcher = Gem::SpecFetcher.fetcher
1005
-
1006
- prerelease, all = all_specs.partition { |spec| spec.version.prerelease? }
1007
- latest = Gem::Specification._latest_specs all_specs
1008
-
1009
- spec_fetcher.specs[@uri] = []
1010
- all.each do |spec|
1011
- spec_fetcher.specs[@uri] << spec.name_tuple
1012
- end
1013
-
1014
- spec_fetcher.latest_specs[@uri] = []
1015
- latest.each do |spec|
1016
- spec_fetcher.latest_specs[@uri] << spec.name_tuple
1017
- end
1018
-
1019
- spec_fetcher.prerelease_specs[@uri] = []
1020
- prerelease.each do |spec|
1021
- spec_fetcher.prerelease_specs[@uri] << spec.name_tuple
1022
- end
1023
-
1024
- # HACK for test_download_to_cache
1025
- unless Gem::RemoteFetcher === @fetcher then
1026
- v = Gem.marshal_version
1027
-
1028
- specs = all.map { |spec| spec.name_tuple }
1029
- s_zip = util_gzip Marshal.dump Gem::NameTuple.to_basic specs
1030
-
1031
- latest_specs = latest.map do |spec|
1032
- spec.name_tuple
1033
- end
1034
-
1035
- l_zip = util_gzip Marshal.dump Gem::NameTuple.to_basic latest_specs
1036
-
1037
- prerelease_specs = prerelease.map { |spec| spec.name_tuple }
1038
- p_zip = util_gzip Marshal.dump Gem::NameTuple.to_basic prerelease_specs
1039
-
1040
- @fetcher.data["#{@gem_repo}specs.#{v}.gz"] = s_zip
1041
- @fetcher.data["#{@gem_repo}latest_specs.#{v}.gz"] = l_zip
1042
- @fetcher.data["#{@gem_repo}prerelease_specs.#{v}.gz"] = p_zip
1043
-
1044
- v = Gem.marshal_version
1045
-
1046
- all_specs.each do |spec|
1047
- path = "#{@gem_repo}quick/Marshal.#{v}/#{spec.original_name}.gemspec.rz"
1048
- data = Marshal.dump spec
1049
- data_deflate = Zlib::Deflate.deflate data
1050
- @fetcher.data[path] = data_deflate
1051
- end
1052
- end
1053
-
1054
- nil # force errors
1055
- end
1056
-
1057
- ##
1058
- # Deflates +data+
1059
-
1060
- def util_zip(data)
1061
- Zlib::Deflate.deflate data
1062
- end
1063
-
1064
- def util_set_RUBY_VERSION(version, patchlevel = nil, revision = nil)
1065
- if Gem.instance_variables.include? :@ruby_version or
1066
- Gem.instance_variables.include? '@ruby_version' then
1067
- Gem.send :remove_instance_variable, :@ruby_version
1068
- end
1069
-
1070
- @RUBY_VERSION = RUBY_VERSION
1071
- @RUBY_PATCHLEVEL = RUBY_PATCHLEVEL if defined?(RUBY_PATCHLEVEL)
1072
- @RUBY_REVISION = RUBY_REVISION if defined?(RUBY_REVISION)
1073
-
1074
- Object.send :remove_const, :RUBY_VERSION
1075
- Object.send :remove_const, :RUBY_PATCHLEVEL if defined?(RUBY_PATCHLEVEL)
1076
- Object.send :remove_const, :RUBY_REVISION if defined?(RUBY_REVISION)
1077
-
1078
- Object.const_set :RUBY_VERSION, version
1079
- Object.const_set :RUBY_PATCHLEVEL, patchlevel if patchlevel
1080
- Object.const_set :RUBY_REVISION, revision if revision
1081
- end
1082
-
1083
- def util_restore_RUBY_VERSION
1084
- Object.send :remove_const, :RUBY_VERSION
1085
- Object.send :remove_const, :RUBY_PATCHLEVEL if defined?(RUBY_PATCHLEVEL)
1086
- Object.send :remove_const, :RUBY_REVISION if defined?(RUBY_REVISION)
1087
-
1088
- Object.const_set :RUBY_VERSION, @RUBY_VERSION
1089
- Object.const_set :RUBY_PATCHLEVEL, @RUBY_PATCHLEVEL if
1090
- defined?(@RUBY_PATCHLEVEL)
1091
- Object.const_set :RUBY_REVISION, @RUBY_REVISION if
1092
- defined?(@RUBY_REVISION)
1093
- end
1094
-
1095
- ##
1096
- # Is this test being run on a Windows platform?
1097
-
1098
- def self.win_platform?
1099
- Gem.win_platform?
1100
- end
1101
-
1102
- ##
1103
- # Is this test being run on a Windows platform?
1104
-
1105
- def win_platform?
1106
- Gem.win_platform?
1107
- end
1108
-
1109
- ##
1110
- # Returns whether or not we're on a version of Ruby built with VC++ (or
1111
- # Borland) versus Cygwin, Mingw, etc.
1112
-
1113
- def self.vc_windows?
1114
- RUBY_PLATFORM.match('mswin')
1115
- end
1116
-
1117
- ##
1118
- # Returns whether or not we're on a version of Ruby built with VC++ (or
1119
- # Borland) versus Cygwin, Mingw, etc.
1120
-
1121
- def vc_windows?
1122
- RUBY_PLATFORM.match('mswin')
1123
- end
1124
-
1125
- ##
1126
- # Returns the make command for the current platform. For versions of Ruby
1127
- # built on MS Windows with VC++ or Borland it will return 'nmake'. On all
1128
- # other platforms, including Cygwin, it will return 'make'.
1129
-
1130
- def self.make_command
1131
- ENV["make"] || ENV["MAKE"] || (vc_windows? ? 'nmake' : 'make')
1132
- end
1133
-
1134
- ##
1135
- # Returns the make command for the current platform. For versions of Ruby
1136
- # built on MS Windows with VC++ or Borland it will return 'nmake'. On all
1137
- # other platforms, including Cygwin, it will return 'make'.
1138
-
1139
- def make_command
1140
- ENV["make"] || ENV["MAKE"] || (vc_windows? ? 'nmake' : 'make')
1141
- end
1142
-
1143
- ##
1144
- # Returns whether or not the nmake command could be found.
1145
-
1146
- def nmake_found?
1147
- system('nmake /? 1>NUL 2>&1')
1148
- end
1149
-
1150
- # In case we're building docs in a background process, this method waits for
1151
- # that process to exit (or if it's already been reaped, or never happened,
1152
- # swallows the Errno::ECHILD error).
1153
- def wait_for_child_process_to_exit
1154
- Process.wait if Process.respond_to?(:fork)
1155
- rescue Errno::ECHILD
1156
- end
1157
-
1158
- ##
1159
- # Allows tests to use a random (but controlled) port number instead of
1160
- # a hardcoded one. This helps CI tools when running parallels builds on
1161
- # the same builder slave.
1162
-
1163
- def self.process_based_port
1164
- @@process_based_port ||= 8000 + $$ % 1000
1165
- end
1166
-
1167
- ##
1168
- # See ::process_based_port
1169
-
1170
- def process_based_port
1171
- self.class.process_based_port
1172
- end
1173
-
1174
- ##
1175
- # Allows the proper version of +rake+ to be used for the test.
1176
-
1177
- def build_rake_in(good=true)
1178
- gem_ruby = Gem.ruby
1179
- Gem.ruby = @@ruby
1180
- env_rake = ENV["rake"]
1181
- rake = (good ? @@good_rake : @@bad_rake)
1182
- ENV["rake"] = rake
1183
- yield rake
1184
- ensure
1185
- Gem.ruby = gem_ruby
1186
- if env_rake
1187
- ENV["rake"] = env_rake
1188
- else
1189
- ENV.delete("rake")
1190
- end
1191
- end
1192
-
1193
- ##
1194
- # Finds the path to the Ruby executable
1195
-
1196
- def self.rubybin
1197
- ruby = ENV["RUBY"]
1198
- return ruby if ruby
1199
- ruby = "ruby"
1200
- rubyexe = "#{ruby}.exe"
1201
-
1202
- 3.times do
1203
- if File.exist? ruby and File.executable? ruby and !File.directory? ruby
1204
- return File.expand_path(ruby)
1205
- end
1206
- if File.exist? rubyexe and File.executable? rubyexe
1207
- return File.expand_path(rubyexe)
1208
- end
1209
- ruby = File.join("..", ruby)
1210
- end
1211
-
1212
- begin
1213
- require "rbconfig"
1214
- File.join(RbConfig::CONFIG["bindir"],
1215
- RbConfig::CONFIG["ruby_install_name"] +
1216
- RbConfig::CONFIG["EXEEXT"])
1217
- rescue LoadError
1218
- "ruby"
1219
- end
1220
- end
1221
-
1222
- @@ruby = rubybin
1223
- @@good_rake = "#{rubybin} \"#{File.expand_path('../../../test/rubygems/good_rake.rb', __FILE__)}\""
1224
- @@bad_rake = "#{rubybin} \"#{File.expand_path('../../../test/rubygems/bad_rake.rb', __FILE__)}\""
1225
-
1226
- ##
1227
- # Construct a new Gem::Dependency.
1228
-
1229
- def dep name, *requirements
1230
- Gem::Dependency.new name, *requirements
1231
- end
1232
-
1233
- ##
1234
- # Constructs a Gem::Resolver::DependencyRequest from a
1235
- # Gem::Dependency +dep+, a +from_name+ and +from_version+ requesting the
1236
- # dependency and a +parent+ DependencyRequest
1237
-
1238
- def dependency_request dep, from_name, from_version, parent = nil
1239
- remote = Gem::Source.new @uri
1240
-
1241
- unless parent then
1242
- parent_dep = dep from_name, from_version
1243
- parent = Gem::Resolver::DependencyRequest.new parent_dep, nil
1244
- end
1245
-
1246
- spec = Gem::Resolver::IndexSpecification.new \
1247
- nil, from_name, from_version, remote, Gem::Platform::RUBY
1248
- activation = Gem::Resolver::ActivationRequest.new spec, parent
1249
-
1250
- Gem::Resolver::DependencyRequest.new dep, activation
1251
- end
1252
-
1253
- ##
1254
- # Constructs a new Gem::Requirement.
1255
-
1256
- def req *requirements
1257
- return requirements.first if Gem::Requirement === requirements.first
1258
- Gem::Requirement.create requirements
1259
- end
1260
-
1261
- ##
1262
- # Constructs a new Gem::Specification.
1263
-
1264
- def spec name, version, &block
1265
- Gem::Specification.new name, v(version), &block
1266
- end
1267
-
1268
- ##
1269
- # Creates a SpecFetcher pre-filled with the gems or specs defined in the
1270
- # block.
1271
- #
1272
- # Yields a +fetcher+ object that responds to +spec+ and +gem+. +spec+ adds
1273
- # a specification to the SpecFetcher while +gem+ adds both a specification
1274
- # and the gem data to the RemoteFetcher so the built gem can be downloaded.
1275
- #
1276
- # If only the a-3 gem is supposed to be downloaded you can save setup
1277
- # time by creating only specs for the other versions:
1278
- #
1279
- # spec_fetcher do |fetcher|
1280
- # fetcher.spec 'a', 1
1281
- # fetcher.spec 'a', 2, 'b' => 3 # dependency on b = 3
1282
- # fetcher.gem 'a', 3 do |spec|
1283
- # # spec is a Gem::Specification
1284
- # # ...
1285
- # end
1286
- # end
1287
-
1288
- def spec_fetcher repository = @gem_repo
1289
- Gem::TestCase::SpecFetcherSetup.declare self, repository do |spec_fetcher_setup|
1290
- yield spec_fetcher_setup if block_given?
1291
- end
1292
- end
1293
-
1294
- ##
1295
- # Construct a new Gem::Version.
1296
-
1297
- def v string
1298
- Gem::Version.create string
1299
- end
1300
-
1301
- ##
1302
- # A vendor_gem is used with a gem dependencies file. The gem created here
1303
- # has no files, just a gem specification for the given +name+ and +version+.
1304
- #
1305
- # Yields the +specification+ to the block, if given
1306
-
1307
- def vendor_gem name = 'a', version = 1
1308
- directory = File.join 'vendor', name
1309
-
1310
- FileUtils.mkdir_p directory
1311
-
1312
- save_gemspec name, version, directory
1313
- end
1314
-
1315
- ##
1316
- # create_gemspec creates gem specification in given +direcotry+ or '.'
1317
- # for the given +name+ and +version+.
1318
- #
1319
- # Yields the +specification+ to the block, if given
1320
-
1321
- def save_gemspec name = 'a', version = 1, directory = '.'
1322
- vendor_spec = Gem::Specification.new name, version do |specification|
1323
- yield specification if block_given?
1324
- end
1325
-
1326
- open File.join(directory, "#{name}.gemspec"), 'w' do |io|
1327
- io.write vendor_spec.to_ruby
1328
- end
1329
-
1330
- return name, vendor_spec.version, directory
1331
- end
1332
-
1333
- ##
1334
- # The StaticSet is a static set of gem specifications used for testing only.
1335
- # It is available by requiring Gem::TestCase.
1336
-
1337
- class StaticSet < Gem::Resolver::Set
1338
-
1339
- ##
1340
- # A StaticSet ignores remote because it has a fixed set of gems.
1341
-
1342
- attr_accessor :remote
1343
-
1344
- ##
1345
- # Creates a new StaticSet for the given +specs+
1346
-
1347
- def initialize(specs)
1348
- super()
1349
-
1350
- @specs = specs
1351
-
1352
- @remote = true
1353
- end
1354
-
1355
- ##
1356
- # Adds +spec+ to this set.
1357
-
1358
- def add spec
1359
- @specs << spec
1360
- end
1361
-
1362
- ##
1363
- # Finds +dep+ in this set.
1364
-
1365
- def find_spec(dep)
1366
- @specs.reverse_each do |s|
1367
- return s if dep.matches_spec? s
1368
- end
1369
- end
1370
-
1371
- ##
1372
- # Finds all gems matching +dep+ in this set.
1373
-
1374
- def find_all(dep)
1375
- @specs.find_all { |s| dep.match? s, @prerelease }
1376
- end
1377
-
1378
- ##
1379
- # Loads a Gem::Specification from this set which has the given +name+,
1380
- # version +ver+, +platform+. The +source+ is ignored.
1381
-
1382
- def load_spec name, ver, platform, source
1383
- dep = Gem::Dependency.new name, ver
1384
- spec = find_spec dep
1385
-
1386
- Gem::Specification.new spec.name, spec.version do |s|
1387
- s.platform = spec.platform
1388
- end
1389
- end
1390
-
1391
- def prefetch reqs # :nodoc:
1392
- end
1393
- end
1394
-
1395
- ##
1396
- # Loads certificate named +cert_name+ from <tt>test/rubygems/</tt>.
1397
-
1398
- def self.load_cert cert_name
1399
- cert_file = cert_path cert_name
1400
-
1401
- cert = File.read cert_file
1402
-
1403
- OpenSSL::X509::Certificate.new cert
1404
- end
1405
-
1406
- ##
1407
- # Returns the path to the certificate named +cert_name+ from
1408
- # <tt>test/rubygems/</tt>.
1409
-
1410
- def self.cert_path cert_name
1411
- if 32 == (Time.at(2**32) rescue 32) then
1412
- cert_file =
1413
- File.expand_path "../../../test/rubygems/#{cert_name}_cert_32.pem",
1414
- __FILE__
1415
-
1416
- return cert_file if File.exist? cert_file
1417
- end
1418
-
1419
- File.expand_path "../../../test/rubygems/#{cert_name}_cert.pem", __FILE__
1420
- end
1421
-
1422
- ##
1423
- # Loads an RSA private key named +key_name+ with +passphrase+ in <tt>test/rubygems/</tt>
1424
-
1425
- def self.load_key key_name, passphrase = nil
1426
- key_file = key_path key_name
1427
-
1428
- key = File.read key_file
1429
-
1430
- OpenSSL::PKey::RSA.new key, passphrase
1431
- end
1432
-
1433
- ##
1434
- # Returns the path to the key named +key_name+ from <tt>test/rubygems</tt>
1435
-
1436
- def self.key_path key_name
1437
- File.expand_path "../../../test/rubygems/#{key_name}_key.pem", __FILE__
1438
- end
1439
-
1440
- # :stopdoc:
1441
- # only available in RubyGems tests
1442
-
1443
- PRIVATE_KEY_PASSPHRASE = 'Foo bar'
1444
-
1445
- begin
1446
- PRIVATE_KEY = load_key 'private'
1447
- PRIVATE_KEY_PATH = key_path 'private'
1448
-
1449
- # ENCRYPTED_PRIVATE_KEY is PRIVATE_KEY encrypted with PRIVATE_KEY_PASSPHRASE
1450
- ENCRYPTED_PRIVATE_KEY = load_key 'encrypted_private', PRIVATE_KEY_PASSPHRASE
1451
- ENCRYPTED_PRIVATE_KEY_PATH = key_path 'encrypted_private'
1452
-
1453
- PUBLIC_KEY = PRIVATE_KEY.public_key
1454
-
1455
- PUBLIC_CERT = load_cert 'public'
1456
- PUBLIC_CERT_PATH = cert_path 'public'
1457
- rescue Errno::ENOENT
1458
- PRIVATE_KEY = nil
1459
- PUBLIC_KEY = nil
1460
- PUBLIC_CERT = nil
1461
- end if defined?(OpenSSL::SSL)
1462
-
1463
- end
1464
-
1465
- # require dependencies that are not discoverable once GEM_HOME and GEM_PATH
1466
- # are wiped
1467
- begin
1468
- gem 'rake'
1469
- rescue Gem::LoadError
1470
- end
1471
-
1472
- begin
1473
- require 'rake/packagetask'
1474
- rescue LoadError
1475
- end
1476
-
1477
- begin
1478
- gem 'rdoc'
1479
- require 'rdoc'
1480
- rescue LoadError, Gem::LoadError
1481
- end
1482
-
1483
- begin
1484
- gem 'builder'
1485
- require 'builder/xchar'
1486
- rescue LoadError, Gem::LoadError
1487
- end
1488
-
1489
- require 'rubygems/test_utilities'
1490
- tmpdirs = []
1491
- tmpdirs << (ENV['GEM_HOME'] = Dir.mktmpdir("home"))
1492
- tmpdirs << (ENV['GEM_PATH'] = Dir.mktmpdir("path"))
1493
- pid = $$
1494
- END {tmpdirs.each {|dir| Dir.rmdir(dir)} if $$ == pid}
1495
- Gem.clear_paths
1496
-