rubygems-update 2.6.0 → 3.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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,876 +0,0 @@
1
- # coding: UTF-8
2
- # frozen_string_literal: true
3
-
4
- require 'rubygems/package/tar_test_case'
5
- require 'rubygems/simple_gem'
6
-
7
- class TestGemPackage < Gem::Package::TarTestCase
8
-
9
- def setup
10
- super
11
-
12
- @spec = quick_gem 'a' do |s|
13
- s.description = 'π'
14
- s.files = %w[lib/code.rb]
15
- end
16
-
17
- util_build_gem @spec
18
-
19
- @gem = @spec.cache_file
20
-
21
- @destination = File.join @tempdir, 'extract'
22
-
23
- FileUtils.mkdir_p @destination
24
- end
25
-
26
- def test_class_new_old_format
27
- open 'old_format.gem', 'wb' do |io|
28
- io.write SIMPLE_GEM
29
- end
30
-
31
- package = Gem::Package.new 'old_format.gem'
32
-
33
- assert package.spec
34
- end
35
-
36
- def test_add_checksums
37
- gem_io = StringIO.new
38
-
39
- spec = Gem::Specification.new 'build', '1'
40
- spec.summary = 'build'
41
- spec.authors = 'build'
42
- spec.files = ['lib/code.rb']
43
- spec.date = Time.at 0
44
- spec.rubygems_version = Gem::Version.new '0'
45
-
46
- FileUtils.mkdir 'lib'
47
-
48
- open 'lib/code.rb', 'w' do |io|
49
- io.write '# lib/code.rb'
50
- end
51
-
52
- package = Gem::Package.new spec.file_name
53
- package.spec = spec
54
- package.build_time = 1 # 0 uses current time
55
- package.setup_signer
56
-
57
- Gem::Package::TarWriter.new gem_io do |gem|
58
- package.add_metadata gem
59
- package.add_contents gem
60
- package.add_checksums gem
61
- end
62
-
63
- gem_io.rewind
64
-
65
- reader = Gem::Package::TarReader.new gem_io
66
-
67
- checksums = nil
68
- tar = nil
69
-
70
- reader.each_entry do |entry|
71
- case entry.full_name
72
- when 'checksums.yaml.gz' then
73
- Zlib::GzipReader.wrap entry do |io|
74
- checksums = io.read
75
- end
76
- when 'data.tar.gz' then
77
- tar = entry.read
78
- end
79
- end
80
-
81
- s = StringIO.new
82
-
83
- package.gzip_to s do |io|
84
- io.write spec.to_yaml
85
- end
86
-
87
- metadata_sha1 = Digest::SHA1.hexdigest s.string
88
- metadata_sha512 = Digest::SHA512.hexdigest s.string
89
-
90
- expected = {
91
- 'SHA512' => {
92
- 'metadata.gz' => metadata_sha512,
93
- 'data.tar.gz' => Digest::SHA512.hexdigest(tar),
94
- }
95
- }
96
-
97
- if defined?(OpenSSL::Digest) then
98
- expected['SHA1'] = {
99
- 'metadata.gz' => metadata_sha1,
100
- 'data.tar.gz' => Digest::SHA1.hexdigest(tar),
101
- }
102
- end
103
-
104
- assert_equal expected, YAML.load(checksums)
105
- end
106
-
107
- def test_add_files
108
- spec = Gem::Specification.new
109
- spec.files = %w[lib/code.rb lib/empty]
110
-
111
- FileUtils.mkdir_p 'lib/empty'
112
-
113
- open 'lib/code.rb', 'w' do |io| io.write '# lib/code.rb' end
114
- open 'lib/extra.rb', 'w' do |io| io.write '# lib/extra.rb' end
115
-
116
- package = Gem::Package.new 'bogus.gem'
117
- package.spec = spec
118
-
119
- tar = util_tar do |tar_io|
120
- package.add_files tar_io
121
- end
122
-
123
- tar.rewind
124
-
125
- files = []
126
-
127
- Gem::Package::TarReader.new tar do |tar_io|
128
- tar_io.each_entry do |entry|
129
- files << entry.full_name
130
- end
131
- end
132
-
133
- assert_equal %w[lib/code.rb], files
134
- end
135
-
136
- def test_add_files_symlink
137
- skip 'symlink not supported' if Gem.win_platform?
138
-
139
- spec = Gem::Specification.new
140
- spec.files = %w[lib/code.rb lib/code_sym.rb]
141
-
142
- FileUtils.mkdir_p 'lib'
143
- open 'lib/code.rb', 'w' do |io| io.write '# lib/code.rb' end
144
- File.symlink('lib/code.rb', 'lib/code_sym.rb')
145
-
146
- package = Gem::Package.new 'bogus.gem'
147
- package.spec = spec
148
-
149
- tar = util_tar do |tar_io|
150
- package.add_files tar_io
151
- end
152
-
153
- tar.rewind
154
-
155
- files, symlinks = [], []
156
-
157
- Gem::Package::TarReader.new tar do |tar_io|
158
- tar_io.each_entry do |entry|
159
- (entry.symlink? ? symlinks : files) << entry.full_name
160
- end
161
- end
162
-
163
- assert_equal %w[lib/code.rb], files
164
- assert_equal %w[lib/code_sym.rb], symlinks
165
- end
166
-
167
- def test_build
168
- spec = Gem::Specification.new 'build', '1'
169
- spec.summary = 'build'
170
- spec.authors = 'build'
171
- spec.files = ['lib/code.rb']
172
- spec.rubygems_version = :junk
173
-
174
- FileUtils.mkdir 'lib'
175
-
176
- open 'lib/code.rb', 'w' do |io|
177
- io.write '# lib/code.rb'
178
- end
179
-
180
- package = Gem::Package.new spec.file_name
181
- package.spec = spec
182
-
183
- package.build
184
-
185
- assert_equal Gem::VERSION, spec.rubygems_version
186
- assert_path_exists spec.file_name
187
-
188
- reader = Gem::Package.new spec.file_name
189
- assert_equal spec, reader.spec
190
-
191
- assert_equal %w[metadata.gz data.tar.gz checksums.yaml.gz],
192
- reader.files
193
-
194
- assert_equal %w[lib/code.rb], reader.contents
195
- end
196
-
197
- def test_build_auto_signed
198
- skip 'openssl is missing' unless defined?(OpenSSL::SSL)
199
-
200
- FileUtils.mkdir_p File.join(Gem.user_home, '.gem')
201
-
202
- private_key_path = File.join Gem.user_home, '.gem', 'gem-private_key.pem'
203
- Gem::Security.write PRIVATE_KEY, private_key_path
204
-
205
- public_cert_path = File.join Gem.user_home, '.gem', 'gem-public_cert.pem'
206
- FileUtils.cp PUBLIC_CERT_PATH, public_cert_path
207
-
208
- spec = Gem::Specification.new 'build', '1'
209
- spec.summary = 'build'
210
- spec.authors = 'build'
211
- spec.files = ['lib/code.rb']
212
-
213
- FileUtils.mkdir 'lib'
214
-
215
- open 'lib/code.rb', 'w' do |io|
216
- io.write '# lib/code.rb'
217
- end
218
-
219
- package = Gem::Package.new spec.file_name
220
- package.spec = spec
221
-
222
- package.build
223
-
224
- assert_equal Gem::VERSION, spec.rubygems_version
225
- assert_path_exists spec.file_name
226
-
227
- reader = Gem::Package.new spec.file_name
228
- assert reader.verify
229
-
230
- assert_equal [PUBLIC_CERT.to_pem], reader.spec.cert_chain
231
-
232
- assert_equal %w[metadata.gz metadata.gz.sig
233
- data.tar.gz data.tar.gz.sig
234
- checksums.yaml.gz checksums.yaml.gz.sig],
235
- reader.files
236
-
237
- assert_equal %w[lib/code.rb], reader.contents
238
- end
239
-
240
- def test_build_auto_signed_encrypted_key
241
- skip 'openssl is missing' unless defined?(OpenSSL::SSL)
242
-
243
- FileUtils.mkdir_p File.join(Gem.user_home, '.gem')
244
-
245
- private_key_path = File.join Gem.user_home, '.gem', 'gem-private_key.pem'
246
- FileUtils.cp ENCRYPTED_PRIVATE_KEY_PATH, private_key_path
247
-
248
- public_cert_path = File.join Gem.user_home, '.gem', 'gem-public_cert.pem'
249
- Gem::Security.write PUBLIC_CERT, public_cert_path
250
-
251
- spec = Gem::Specification.new 'build', '1'
252
- spec.summary = 'build'
253
- spec.authors = 'build'
254
- spec.files = ['lib/code.rb']
255
-
256
- FileUtils.mkdir 'lib'
257
-
258
- open 'lib/code.rb', 'w' do |io|
259
- io.write '# lib/code.rb'
260
- end
261
-
262
- package = Gem::Package.new spec.file_name
263
- package.spec = spec
264
-
265
- package.build
266
-
267
- assert_equal Gem::VERSION, spec.rubygems_version
268
- assert_path_exists spec.file_name
269
-
270
- reader = Gem::Package.new spec.file_name
271
- assert reader.verify
272
-
273
- assert_equal [PUBLIC_CERT.to_pem], reader.spec.cert_chain
274
-
275
- assert_equal %w[metadata.gz metadata.gz.sig
276
- data.tar.gz data.tar.gz.sig
277
- checksums.yaml.gz checksums.yaml.gz.sig],
278
- reader.files
279
-
280
- assert_equal %w[lib/code.rb], reader.contents
281
- end
282
-
283
- def test_build_invalid
284
- spec = Gem::Specification.new 'build', '1'
285
-
286
- package = Gem::Package.new spec.file_name
287
- package.spec = spec
288
-
289
- e = assert_raises Gem::InvalidSpecificationException do
290
- package.build
291
- end
292
-
293
- assert_equal 'missing value for attribute summary', e.message
294
- end
295
-
296
- def test_build_signed
297
- skip 'openssl is missing' unless defined?(OpenSSL::SSL)
298
-
299
- spec = Gem::Specification.new 'build', '1'
300
- spec.summary = 'build'
301
- spec.authors = 'build'
302
- spec.files = ['lib/code.rb']
303
- spec.cert_chain = [PUBLIC_CERT.to_pem]
304
- spec.signing_key = PRIVATE_KEY
305
-
306
- FileUtils.mkdir 'lib'
307
-
308
- open 'lib/code.rb', 'w' do |io|
309
- io.write '# lib/code.rb'
310
- end
311
-
312
- package = Gem::Package.new spec.file_name
313
- package.spec = spec
314
-
315
- package.build
316
-
317
- assert_equal Gem::VERSION, spec.rubygems_version
318
- assert_path_exists spec.file_name
319
-
320
- reader = Gem::Package.new spec.file_name
321
- assert reader.verify
322
-
323
- assert_equal spec, reader.spec
324
-
325
- assert_equal %w[metadata.gz metadata.gz.sig
326
- data.tar.gz data.tar.gz.sig
327
- checksums.yaml.gz checksums.yaml.gz.sig],
328
- reader.files
329
-
330
- assert_equal %w[lib/code.rb], reader.contents
331
- end
332
-
333
- def test_build_signed_encrypted_key
334
- skip 'openssl is missing' unless defined?(OpenSSL::SSL)
335
-
336
- spec = Gem::Specification.new 'build', '1'
337
- spec.summary = 'build'
338
- spec.authors = 'build'
339
- spec.files = ['lib/code.rb']
340
- spec.cert_chain = [PUBLIC_CERT.to_pem]
341
- spec.signing_key = ENCRYPTED_PRIVATE_KEY
342
-
343
- FileUtils.mkdir 'lib'
344
-
345
- open 'lib/code.rb', 'w' do |io|
346
- io.write '# lib/code.rb'
347
- end
348
-
349
- package = Gem::Package.new spec.file_name
350
- package.spec = spec
351
-
352
- package.build
353
-
354
- assert_equal Gem::VERSION, spec.rubygems_version
355
- assert_path_exists spec.file_name
356
-
357
- reader = Gem::Package.new spec.file_name
358
- assert reader.verify
359
-
360
- assert_equal spec, reader.spec
361
-
362
- assert_equal %w[metadata.gz metadata.gz.sig
363
- data.tar.gz data.tar.gz.sig
364
- checksums.yaml.gz checksums.yaml.gz.sig],
365
- reader.files
366
-
367
- assert_equal %w[lib/code.rb], reader.contents
368
- end
369
-
370
- def test_contents
371
- package = Gem::Package.new @gem
372
-
373
- assert_equal %w[lib/code.rb], package.contents
374
- end
375
-
376
- def test_extract_files
377
- package = Gem::Package.new @gem
378
-
379
- package.extract_files @destination
380
-
381
- extracted = File.join @destination, 'lib/code.rb'
382
- assert_path_exists extracted
383
-
384
- mask = 0100666 & (~File.umask)
385
-
386
- assert_equal mask.to_s(8), File.stat(extracted).mode.to_s(8) unless
387
- win_platform?
388
- end
389
-
390
- def test_extract_files_empty
391
- data_tgz = util_tar_gz do end
392
-
393
- gem = util_tar do |tar|
394
- tar.add_file 'data.tar.gz', 0644 do |io|
395
- io.write data_tgz.string
396
- end
397
-
398
- tar.add_file 'metadata.gz', 0644 do |io|
399
- Zlib::GzipWriter.wrap io do |gzio|
400
- gzio.write @spec.to_yaml
401
- end
402
- end
403
- end
404
-
405
- open 'empty.gem', 'wb' do |io|
406
- io.write gem.string
407
- end
408
-
409
- package = Gem::Package.new 'empty.gem'
410
-
411
- package.extract_files @destination
412
-
413
- assert_path_exists @destination
414
- end
415
-
416
- def test_extract_tar_gz_absolute
417
- package = Gem::Package.new @gem
418
-
419
- tgz_io = util_tar_gz do |tar|
420
- tar.add_file '/absolute.rb', 0644 do |io| io.write 'hi' end
421
- end
422
-
423
- e = assert_raises Gem::Package::PathError do
424
- package.extract_tar_gz tgz_io, @destination
425
- end
426
-
427
- assert_equal("installing into parent path /absolute.rb of " +
428
- "#{@destination} is not allowed", e.message)
429
- end
430
-
431
- def test_extract_tar_gz_symlink_relative_path
432
- skip 'symlink not supported' if Gem.win_platform?
433
-
434
- package = Gem::Package.new @gem
435
-
436
- tgz_io = util_tar_gz do |tar|
437
- tar.add_file 'relative.rb', 0644 do |io| io.write 'hi' end
438
- tar.mkdir 'lib', 0755
439
- tar.add_symlink 'lib/foo.rb', '../relative.rb', 0644
440
- end
441
-
442
- package.extract_tar_gz tgz_io, @destination
443
-
444
- extracted = File.join @destination, 'lib/foo.rb'
445
- assert_path_exists extracted
446
- assert_equal '../relative.rb',
447
- File.readlink(extracted)
448
- assert_equal 'hi',
449
- File.read(extracted)
450
- end
451
-
452
- def test_extract_tar_gz_directory
453
- package = Gem::Package.new @gem
454
-
455
- tgz_io = util_tar_gz do |tar|
456
- tar.mkdir 'lib', 0755
457
- tar.add_file 'lib/foo.rb', 0644 do |io| io.write 'hi' end
458
- tar.mkdir 'lib/foo', 0755
459
- end
460
-
461
- package.extract_tar_gz tgz_io, @destination
462
-
463
- extracted = File.join @destination, 'lib/foo.rb'
464
- assert_path_exists extracted
465
-
466
- extracted = File.join @destination, 'lib/foo'
467
- assert_path_exists extracted
468
- end
469
-
470
- def test_extract_tar_gz_dot_slash
471
- package = Gem::Package.new @gem
472
-
473
- tgz_io = util_tar_gz do |tar|
474
- tar.add_file './dot_slash.rb', 0644 do |io| io.write 'hi' end
475
- end
476
-
477
- package.extract_tar_gz tgz_io, @destination
478
-
479
- extracted = File.join @destination, 'dot_slash.rb'
480
- assert_path_exists extracted
481
- end
482
-
483
- def test_extract_tar_gz_dot_file
484
- package = Gem::Package.new @gem
485
-
486
- tgz_io = util_tar_gz do |tar|
487
- tar.add_file '.dot_file.rb', 0644 do |io| io.write 'hi' end
488
- end
489
-
490
- package.extract_tar_gz tgz_io, @destination
491
-
492
- extracted = File.join @destination, '.dot_file.rb'
493
- assert_path_exists extracted
494
- end
495
-
496
- def test_install_location
497
- package = Gem::Package.new @gem
498
-
499
- file = 'file.rb'.dup
500
- file.taint
501
-
502
- destination = package.install_location file, @destination
503
-
504
- assert_equal File.join(@destination, 'file.rb'), destination
505
- refute destination.tainted?
506
- end
507
-
508
- def test_install_location_absolute
509
- package = Gem::Package.new @gem
510
-
511
- e = assert_raises Gem::Package::PathError do
512
- package.install_location '/absolute.rb', @destination
513
- end
514
-
515
- assert_equal("installing into parent path /absolute.rb of " +
516
- "#{@destination} is not allowed", e.message)
517
- end
518
-
519
- def test_install_location_dots
520
- package = Gem::Package.new @gem
521
-
522
- file = 'file.rb'
523
-
524
- destination = File.join @destination, 'foo', '..', 'bar'
525
-
526
- FileUtils.mkdir_p File.join @destination, 'foo'
527
- FileUtils.mkdir_p File.expand_path destination
528
-
529
- destination = package.install_location file, destination
530
-
531
- # this test only fails on ruby missing File.realpath
532
- assert_equal File.join(@destination, 'bar', 'file.rb'), destination
533
- end
534
-
535
- def test_install_location_extra_slash
536
- skip 'no File.realpath on 1.8' if RUBY_VERSION < '1.9'
537
- package = Gem::Package.new @gem
538
-
539
- file = 'foo//file.rb'.dup
540
- file.taint
541
-
542
- destination = @destination.sub '/', '//'
543
-
544
- destination = package.install_location file, destination
545
-
546
- assert_equal File.join(@destination, 'foo', 'file.rb'), destination
547
- refute destination.tainted?
548
- end
549
-
550
- def test_install_location_relative
551
- package = Gem::Package.new @gem
552
-
553
- e = assert_raises Gem::Package::PathError do
554
- package.install_location '../relative.rb', @destination
555
- end
556
-
557
- parent = File.expand_path File.join @destination, "../relative.rb"
558
-
559
- assert_equal("installing into parent path #{parent} of " +
560
- "#{@destination} is not allowed", e.message)
561
- end
562
-
563
- def test_load_spec
564
- entry = StringIO.new Gem.gzip @spec.to_yaml
565
- def entry.full_name() 'metadata.gz' end
566
-
567
- package = Gem::Package.new 'nonexistent.gem'
568
-
569
- spec = package.load_spec entry
570
-
571
- assert_equal @spec, spec
572
- end
573
-
574
- def test_verify
575
- package = Gem::Package.new @gem
576
-
577
- package.verify
578
-
579
- assert_equal @spec, package.spec
580
- assert_equal %w[checksums.yaml.gz data.tar.gz metadata.gz],
581
- package.files.sort
582
- end
583
-
584
- def test_verify_checksum_bad
585
- data_tgz = util_tar_gz do |tar|
586
- tar.add_file 'lib/code.rb', 0444 do |io|
587
- io.write '# lib/code.rb'
588
- end
589
- end
590
-
591
- data_tgz = data_tgz.string
592
-
593
- gem = util_tar do |tar|
594
- metadata_gz = Gem.gzip @spec.to_yaml
595
-
596
- tar.add_file 'metadata.gz', 0444 do |io|
597
- io.write metadata_gz
598
- end
599
-
600
- tar.add_file 'data.tar.gz', 0444 do |io|
601
- io.write data_tgz
602
- end
603
-
604
- bogus_checksums = {
605
- 'SHA1' => {
606
- 'data.tar.gz' => 'bogus',
607
- 'metadata.gz' => 'bogus',
608
- },
609
- }
610
- tar.add_file 'checksums.yaml.gz', 0444 do |io|
611
- Zlib::GzipWriter.wrap io do |gz_io|
612
- gz_io.write YAML.dump bogus_checksums
613
- end
614
- end
615
- end
616
-
617
- open 'mismatch.gem', 'wb' do |io|
618
- io.write gem.string
619
- end
620
-
621
- package = Gem::Package.new 'mismatch.gem'
622
-
623
- e = assert_raises Gem::Package::FormatError do
624
- package.verify
625
- end
626
-
627
- assert_equal 'SHA1 checksum mismatch for data.tar.gz in mismatch.gem',
628
- e.message
629
- end
630
-
631
- def test_verify_checksum_missing
632
- data_tgz = util_tar_gz do |tar|
633
- tar.add_file 'lib/code.rb', 0444 do |io|
634
- io.write '# lib/code.rb'
635
- end
636
- end
637
-
638
- data_tgz = data_tgz.string
639
-
640
- gem = util_tar do |tar|
641
- metadata_gz = Gem.gzip @spec.to_yaml
642
-
643
- tar.add_file 'metadata.gz', 0444 do |io|
644
- io.write metadata_gz
645
- end
646
-
647
- digest = Digest::SHA1.new
648
- digest << metadata_gz
649
-
650
- checksums = {
651
- 'SHA1' => {
652
- 'metadata.gz' => digest.hexdigest,
653
- },
654
- }
655
-
656
- tar.add_file 'checksums.yaml.gz', 0444 do |io|
657
- Zlib::GzipWriter.wrap io do |gz_io|
658
- gz_io.write YAML.dump checksums
659
- end
660
- end
661
-
662
- tar.add_file 'data.tar.gz', 0444 do |io|
663
- io.write data_tgz
664
- end
665
- end
666
-
667
- open 'data_checksum_missing.gem', 'wb' do |io|
668
- io.write gem.string
669
- end
670
-
671
- package = Gem::Package.new 'data_checksum_missing.gem'
672
-
673
- assert package.verify
674
- end
675
-
676
- def test_verify_corrupt
677
- tf = Tempfile.open 'corrupt' do |io|
678
- data = Gem.gzip 'a' * 10
679
- io.write \
680
- tar_file_header('metadata.gz', "\000x", 0644, data.length, Time.now)
681
- io.write data
682
- io.rewind
683
-
684
- package = Gem::Package.new io.path
685
-
686
- e = assert_raises Gem::Package::FormatError do
687
- package.verify
688
- end
689
-
690
- assert_equal "tar is corrupt, name contains null byte in #{io.path}",
691
- e.message
692
- io
693
- end
694
- tf.close! if tf.respond_to? :close!
695
- end
696
-
697
- def test_verify_empty
698
- FileUtils.touch 'empty.gem'
699
-
700
- package = Gem::Package.new 'empty.gem'
701
-
702
- e = assert_raises Gem::Package::FormatError do
703
- package.verify
704
- end
705
-
706
- assert_equal 'package metadata is missing in empty.gem', e.message
707
- end
708
-
709
- def test_verify_nonexistent
710
- package = Gem::Package.new 'nonexistent.gem'
711
-
712
- e = assert_raises Gem::Package::FormatError do
713
- package.verify
714
- end
715
-
716
- assert_match %r%^No such file or directory%, e.message
717
- assert_match %r%nonexistent.gem$%, e.message
718
- end
719
-
720
- def test_verify_security_policy
721
- skip 'openssl is missing' unless defined?(OpenSSL::SSL)
722
-
723
- package = Gem::Package.new @gem
724
- package.security_policy = Gem::Security::HighSecurity
725
-
726
- e = assert_raises Gem::Security::Exception do
727
- package.verify
728
- end
729
-
730
- assert_equal 'unsigned gems are not allowed by the High Security policy',
731
- e.message
732
-
733
- refute package.instance_variable_get(:@spec), '@spec must not be loaded'
734
- assert_empty package.instance_variable_get(:@files), '@files must empty'
735
- end
736
-
737
- def test_verify_security_policy_low_security
738
- skip 'openssl is missing' unless defined?(OpenSSL::SSL)
739
-
740
- @spec.cert_chain = [PUBLIC_CERT.to_pem]
741
- @spec.signing_key = PRIVATE_KEY
742
-
743
- FileUtils.mkdir_p 'lib'
744
- FileUtils.touch 'lib/code.rb'
745
-
746
- build = Gem::Package.new @gem
747
- build.spec = @spec
748
-
749
- build.build
750
-
751
- package = Gem::Package.new @gem
752
- package.security_policy = Gem::Security::LowSecurity
753
-
754
- assert package.verify
755
- end
756
-
757
- def test_verify_security_policy_checksum_missing
758
- skip 'openssl is missing' unless defined?(OpenSSL::SSL)
759
-
760
- @spec.cert_chain = [PUBLIC_CERT.to_pem]
761
- @spec.signing_key = PRIVATE_KEY
762
-
763
- build = Gem::Package.new @gem
764
- build.spec = @spec
765
- build.setup_signer
766
-
767
- FileUtils.mkdir 'lib'
768
- FileUtils.touch 'lib/code.rb'
769
-
770
- open @gem, 'wb' do |gem_io|
771
- Gem::Package::TarWriter.new gem_io do |gem|
772
- build.add_metadata gem
773
- build.add_contents gem
774
-
775
- # write bogus data.tar.gz to foil signature
776
- bogus_data = Gem.gzip 'hello'
777
- gem.add_file_simple 'data.tar.gz', 0444, bogus_data.length do |io|
778
- io.write bogus_data
779
- end
780
-
781
- # pre rubygems 2.0 gems do not add checksums
782
- end
783
- end
784
-
785
- Gem::Security.trust_dir.trust_cert PUBLIC_CERT
786
-
787
- package = Gem::Package.new @gem
788
- package.security_policy = Gem::Security::HighSecurity
789
-
790
- e = assert_raises Gem::Security::Exception do
791
- package.verify
792
- end
793
-
794
- assert_equal 'invalid signature', e.message
795
-
796
- refute package.instance_variable_get(:@spec), '@spec must not be loaded'
797
- assert_empty package.instance_variable_get(:@files), '@files must empty'
798
- end
799
-
800
- def test_verify_truncate
801
- open 'bad.gem', 'wb' do |io|
802
- io.write File.read(@gem, 1024) # don't care about newlines
803
- end
804
-
805
- package = Gem::Package.new 'bad.gem'
806
-
807
- e = assert_raises Gem::Package::FormatError do
808
- package.verify
809
- end
810
-
811
- assert_equal 'package content (data.tar.gz) is missing in bad.gem',
812
- e.message
813
- end
814
-
815
- # end #verify tests
816
-
817
- def test_verify_entry
818
- entry = Object.new
819
- def entry.full_name() raise ArgumentError, 'whatever' end
820
-
821
- package = Gem::Package.new @gem
822
-
823
- e = assert_raises Gem::Package::FormatError do
824
- package.verify_entry entry
825
- end
826
-
827
- assert_equal "package is corrupt, exception while verifying: whatever (ArgumentError) in #{@gem}", e.message
828
- end
829
-
830
- def test_spec
831
- package = Gem::Package.new @gem
832
-
833
- assert_equal @spec, package.spec
834
- end
835
-
836
- def test_spec_from_io
837
- # This functionality is used by rubygems.org to extract spec data from an
838
- # uploaded gem before it is written to storage.
839
- io = StringIO.new Gem.read_binary @gem
840
- package = Gem::Package.new io
841
-
842
- assert_equal @spec, package.spec
843
- end
844
-
845
- def test_spec_from_io_raises_gem_error_for_io_not_at_start
846
- io = StringIO.new Gem.read_binary @gem
847
- io.read(1)
848
- assert_raises(Gem::Package::Error) do
849
- Gem::Package.new io
850
- end
851
- end
852
-
853
- def util_tar
854
- tar_io = StringIO.new
855
-
856
- Gem::Package::TarWriter.new tar_io do |tar|
857
- yield tar
858
- end
859
-
860
- tar_io.rewind
861
-
862
- tar_io
863
- end
864
-
865
- def util_tar_gz(&block)
866
- tar_io = util_tar(&block)
867
-
868
- tgz_io = StringIO.new
869
-
870
- # can't wrap TarWriter because it seeks
871
- Zlib::GzipWriter.wrap tgz_io do |io| io.write tar_io.string end
872
-
873
- StringIO.new tgz_io.string
874
- end
875
-
876
- end