rubygems-update 2.6.1 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (801) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +5899 -0
  3. data/CODE_OF_CONDUCT.md +76 -35
  4. data/CONTRIBUTING.md +231 -0
  5. data/MAINTAINERS.txt +8 -0
  6. data/Manifest.txt +428 -216
  7. data/POLICIES.md +135 -0
  8. data/README.md +112 -0
  9. data/UPGRADING.md +15 -0
  10. data/bundler/CHANGELOG.md +4719 -0
  11. data/bundler/LICENSE.md +22 -0
  12. data/bundler/README.md +58 -0
  13. data/bundler/UPGRADING.md +222 -0
  14. data/bundler/bundler.gemspec +46 -0
  15. data/bundler/exe/bundle +29 -0
  16. data/bundler/exe/bundler +4 -0
  17. data/bundler/lib/bundler/.document +1 -0
  18. data/bundler/lib/bundler/build_metadata.rb +45 -0
  19. data/bundler/lib/bundler/capistrano.rb +22 -0
  20. data/bundler/lib/bundler/checksum.rb +245 -0
  21. data/bundler/lib/bundler/ci_detector.rb +75 -0
  22. data/bundler/lib/bundler/cli/add.rb +47 -0
  23. data/bundler/lib/bundler/cli/binstubs.rb +57 -0
  24. data/bundler/lib/bundler/cli/cache.rb +43 -0
  25. data/bundler/lib/bundler/cli/check.rb +40 -0
  26. data/bundler/lib/bundler/cli/clean.rb +25 -0
  27. data/bundler/lib/bundler/cli/common.rb +138 -0
  28. data/bundler/lib/bundler/cli/config.rb +204 -0
  29. data/bundler/lib/bundler/cli/console.rb +44 -0
  30. data/bundler/lib/bundler/cli/doctor.rb +157 -0
  31. data/bundler/lib/bundler/cli/exec.rb +88 -0
  32. data/bundler/lib/bundler/cli/fund.rb +36 -0
  33. data/bundler/lib/bundler/cli/gem.rb +471 -0
  34. data/bundler/lib/bundler/cli/info.rb +83 -0
  35. data/bundler/lib/bundler/cli/init.rb +51 -0
  36. data/bundler/lib/bundler/cli/inject.rb +60 -0
  37. data/bundler/lib/bundler/cli/install.rb +190 -0
  38. data/bundler/lib/bundler/cli/issue.rb +41 -0
  39. data/bundler/lib/bundler/cli/list.rb +66 -0
  40. data/bundler/lib/bundler/cli/lock.rb +73 -0
  41. data/bundler/lib/bundler/cli/open.rb +29 -0
  42. data/bundler/lib/bundler/cli/outdated.rb +297 -0
  43. data/bundler/lib/bundler/cli/platform.rb +48 -0
  44. data/bundler/lib/bundler/cli/plugin.rb +34 -0
  45. data/bundler/lib/bundler/cli/pristine.rb +60 -0
  46. data/bundler/lib/bundler/cli/remove.rb +17 -0
  47. data/bundler/lib/bundler/cli/show.rb +75 -0
  48. data/bundler/lib/bundler/cli/update.rb +123 -0
  49. data/bundler/lib/bundler/cli/viz.rb +31 -0
  50. data/bundler/lib/bundler/cli.rb +846 -0
  51. data/bundler/lib/bundler/compact_index_client/cache.rb +121 -0
  52. data/bundler/lib/bundler/compact_index_client/cache_file.rb +153 -0
  53. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +32 -0
  54. data/bundler/lib/bundler/compact_index_client/updater.rb +115 -0
  55. data/bundler/lib/bundler/compact_index_client.rb +126 -0
  56. data/bundler/lib/bundler/constants.rb +7 -0
  57. data/bundler/lib/bundler/current_ruby.rb +92 -0
  58. data/bundler/lib/bundler/definition.rb +1005 -0
  59. data/bundler/lib/bundler/dependency.rb +101 -0
  60. data/bundler/lib/bundler/deployment.rb +69 -0
  61. data/bundler/lib/bundler/deprecate.rb +44 -0
  62. data/bundler/lib/bundler/digest.rb +71 -0
  63. data/bundler/lib/bundler/dsl.rb +601 -0
  64. data/bundler/lib/bundler/endpoint_specification.rb +147 -0
  65. data/bundler/lib/bundler/env.rb +148 -0
  66. data/bundler/lib/bundler/environment_preserver.rb +86 -0
  67. data/bundler/lib/bundler/errors.rb +233 -0
  68. data/bundler/lib/bundler/feature_flag.rb +53 -0
  69. data/bundler/lib/bundler/fetcher/base.rb +52 -0
  70. data/bundler/lib/bundler/fetcher/compact_index.rb +129 -0
  71. data/bundler/lib/bundler/fetcher/dependency.rb +78 -0
  72. data/bundler/lib/bundler/fetcher/downloader.rb +91 -0
  73. data/bundler/lib/bundler/fetcher/gem_remote_fetcher.rb +16 -0
  74. data/bundler/lib/bundler/fetcher/index.rb +25 -0
  75. data/bundler/lib/bundler/fetcher.rb +324 -0
  76. data/bundler/lib/bundler/force_platform.rb +18 -0
  77. data/bundler/lib/bundler/friendly_errors.rb +126 -0
  78. data/bundler/lib/bundler/gem_helper.rb +237 -0
  79. data/bundler/lib/bundler/gem_helpers.rb +127 -0
  80. data/bundler/lib/bundler/gem_tasks.rb +7 -0
  81. data/bundler/lib/bundler/gem_version_promoter.rb +145 -0
  82. data/bundler/lib/bundler/graph.rb +152 -0
  83. data/bundler/lib/bundler/index.rb +205 -0
  84. data/bundler/lib/bundler/injector.rb +287 -0
  85. data/bundler/lib/bundler/inline.rb +73 -0
  86. data/bundler/lib/bundler/installer/gem_installer.rb +84 -0
  87. data/bundler/lib/bundler/installer/parallel_installer.rb +202 -0
  88. data/bundler/lib/bundler/installer/standalone.rb +116 -0
  89. data/bundler/lib/bundler/installer.rb +267 -0
  90. data/bundler/lib/bundler/lazy_specification.rb +170 -0
  91. data/bundler/lib/bundler/lockfile_generator.rb +104 -0
  92. data/bundler/lib/bundler/lockfile_parser.rb +289 -0
  93. data/bundler/lib/bundler/man/.document +1 -0
  94. data/bundler/lib/bundler/man/bundle-add.1 +59 -0
  95. data/bundler/lib/bundler/man/bundle-add.1.ronn +58 -0
  96. data/bundler/lib/bundler/man/bundle-binstubs.1 +30 -0
  97. data/bundler/lib/bundler/man/bundle-binstubs.1.ronn +41 -0
  98. data/bundler/lib/bundler/man/bundle-cache.1 +40 -0
  99. data/bundler/lib/bundler/man/bundle-cache.1.ronn +79 -0
  100. data/bundler/lib/bundler/man/bundle-check.1 +22 -0
  101. data/bundler/lib/bundler/man/bundle-check.1.ronn +26 -0
  102. data/bundler/lib/bundler/man/bundle-clean.1 +17 -0
  103. data/bundler/lib/bundler/man/bundle-clean.1.ronn +18 -0
  104. data/bundler/lib/bundler/man/bundle-config.1 +321 -0
  105. data/bundler/lib/bundler/man/bundle-config.1.ronn +411 -0
  106. data/bundler/lib/bundler/man/bundle-console.1 +35 -0
  107. data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
  108. data/bundler/lib/bundler/man/bundle-doctor.1 +30 -0
  109. data/bundler/lib/bundler/man/bundle-doctor.1.ronn +33 -0
  110. data/bundler/lib/bundler/man/bundle-exec.1 +104 -0
  111. data/bundler/lib/bundler/man/bundle-exec.1.ronn +151 -0
  112. data/bundler/lib/bundler/man/bundle-gem.1 +69 -0
  113. data/bundler/lib/bundler/man/bundle-gem.1.ronn +117 -0
  114. data/bundler/lib/bundler/man/bundle-help.1 +9 -0
  115. data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
  116. data/bundler/lib/bundler/man/bundle-info.1 +14 -0
  117. data/bundler/lib/bundler/man/bundle-info.1.ronn +17 -0
  118. data/bundler/lib/bundler/man/bundle-init.1 +20 -0
  119. data/bundler/lib/bundler/man/bundle-init.1.ronn +31 -0
  120. data/bundler/lib/bundler/man/bundle-inject.1 +23 -0
  121. data/bundler/lib/bundler/man/bundle-inject.1.ronn +24 -0
  122. data/bundler/lib/bundler/man/bundle-install.1 +215 -0
  123. data/bundler/lib/bundler/man/bundle-install.1.ronn +383 -0
  124. data/bundler/lib/bundler/man/bundle-list.1 +35 -0
  125. data/bundler/lib/bundler/man/bundle-list.1.ronn +33 -0
  126. data/bundler/lib/bundler/man/bundle-lock.1 +60 -0
  127. data/bundler/lib/bundler/man/bundle-lock.1.ronn +94 -0
  128. data/bundler/lib/bundler/man/bundle-open.1 +32 -0
  129. data/bundler/lib/bundler/man/bundle-open.1.ronn +27 -0
  130. data/bundler/lib/bundler/man/bundle-outdated.1 +100 -0
  131. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +106 -0
  132. data/bundler/lib/bundler/man/bundle-platform.1 +49 -0
  133. data/bundler/lib/bundler/man/bundle-platform.1.ronn +49 -0
  134. data/bundler/lib/bundler/man/bundle-plugin.1 +55 -0
  135. data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
  136. data/bundler/lib/bundler/man/bundle-pristine.1 +23 -0
  137. data/bundler/lib/bundler/man/bundle-pristine.1.ronn +34 -0
  138. data/bundler/lib/bundler/man/bundle-remove.1 +21 -0
  139. data/bundler/lib/bundler/man/bundle-remove.1.ronn +23 -0
  140. data/bundler/lib/bundler/man/bundle-show.1 +16 -0
  141. data/bundler/lib/bundler/man/bundle-show.1.ronn +21 -0
  142. data/bundler/lib/bundler/man/bundle-update.1 +275 -0
  143. data/bundler/lib/bundler/man/bundle-update.1.ronn +351 -0
  144. data/bundler/lib/bundler/man/bundle-version.1 +22 -0
  145. data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
  146. data/bundler/lib/bundler/man/bundle-viz.1 +30 -0
  147. data/bundler/lib/bundler/man/bundle-viz.1.ronn +32 -0
  148. data/bundler/lib/bundler/man/bundle.1 +102 -0
  149. data/bundler/lib/bundler/man/bundle.1.ronn +116 -0
  150. data/bundler/lib/bundler/man/gemfile.5 +470 -0
  151. data/bundler/lib/bundler/man/gemfile.5.ronn +552 -0
  152. data/bundler/lib/bundler/man/index.txt +29 -0
  153. data/bundler/lib/bundler/match_metadata.rb +17 -0
  154. data/bundler/lib/bundler/match_platform.rb +23 -0
  155. data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
  156. data/bundler/lib/bundler/mirror.rb +221 -0
  157. data/bundler/lib/bundler/plugin/api/source.rb +321 -0
  158. data/bundler/lib/bundler/plugin/api.rb +81 -0
  159. data/bundler/lib/bundler/plugin/dsl.rb +53 -0
  160. data/bundler/lib/bundler/plugin/events.rb +61 -0
  161. data/bundler/lib/bundler/plugin/index.rb +193 -0
  162. data/bundler/lib/bundler/plugin/installer/git.rb +34 -0
  163. data/bundler/lib/bundler/plugin/installer/rubygems.rb +19 -0
  164. data/bundler/lib/bundler/plugin/installer.rb +112 -0
  165. data/bundler/lib/bundler/plugin/source_list.rb +31 -0
  166. data/bundler/lib/bundler/plugin.rb +359 -0
  167. data/bundler/lib/bundler/process_lock.rb +24 -0
  168. data/bundler/lib/bundler/remote_specification.rb +117 -0
  169. data/bundler/lib/bundler/resolver/base.rb +107 -0
  170. data/bundler/lib/bundler/resolver/candidate.rb +94 -0
  171. data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
  172. data/bundler/lib/bundler/resolver/package.rb +77 -0
  173. data/bundler/lib/bundler/resolver/root.rb +25 -0
  174. data/bundler/lib/bundler/resolver/spec_group.rb +79 -0
  175. data/bundler/lib/bundler/resolver.rb +462 -0
  176. data/bundler/lib/bundler/retry.rb +66 -0
  177. data/bundler/lib/bundler/ruby_dsl.rb +53 -0
  178. data/bundler/lib/bundler/ruby_version.rb +131 -0
  179. data/bundler/lib/bundler/rubygems_ext.rb +328 -0
  180. data/bundler/lib/bundler/rubygems_gem_installer.rb +137 -0
  181. data/bundler/lib/bundler/rubygems_integration.rb +493 -0
  182. data/bundler/lib/bundler/runtime.rb +307 -0
  183. data/bundler/lib/bundler/safe_marshal.rb +31 -0
  184. data/bundler/lib/bundler/self_manager.rb +186 -0
  185. data/bundler/lib/bundler/settings/validator.rb +102 -0
  186. data/bundler/lib/bundler/settings.rb +588 -0
  187. data/bundler/lib/bundler/setup.rb +33 -0
  188. data/bundler/lib/bundler/shared_helpers.rb +380 -0
  189. data/bundler/lib/bundler/similarity_detector.rb +63 -0
  190. data/bundler/lib/bundler/source/gemspec.rb +18 -0
  191. data/bundler/lib/bundler/source/git/git_proxy.rb +455 -0
  192. data/bundler/lib/bundler/source/git.rb +380 -0
  193. data/bundler/lib/bundler/source/metadata.rb +62 -0
  194. data/bundler/lib/bundler/source/path/installer.rb +53 -0
  195. data/bundler/lib/bundler/source/path.rb +261 -0
  196. data/bundler/lib/bundler/source/rubygems/remote.rb +68 -0
  197. data/bundler/lib/bundler/source/rubygems.rb +516 -0
  198. data/bundler/lib/bundler/source/rubygems_aggregate.rb +68 -0
  199. data/bundler/lib/bundler/source.rb +116 -0
  200. data/bundler/lib/bundler/source_list.rb +227 -0
  201. data/bundler/lib/bundler/source_map.rb +71 -0
  202. data/bundler/lib/bundler/spec_set.rb +247 -0
  203. data/bundler/lib/bundler/stub_specification.rb +119 -0
  204. data/bundler/lib/bundler/templates/.document +1 -0
  205. data/bundler/lib/bundler/templates/Executable +27 -0
  206. data/bundler/lib/bundler/templates/Executable.bundler +109 -0
  207. data/bundler/lib/bundler/templates/Executable.standalone +14 -0
  208. data/bundler/lib/bundler/templates/Gemfile +5 -0
  209. data/bundler/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
  210. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +84 -0
  211. data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
  212. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +26 -0
  213. data/bundler/lib/bundler/templates/newgem/LICENSE.txt.tt +21 -0
  214. data/bundler/lib/bundler/templates/newgem/README.md.tt +45 -0
  215. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +67 -0
  216. data/bundler/lib/bundler/templates/newgem/bin/console.tt +11 -0
  217. data/bundler/lib/bundler/templates/newgem/bin/setup.tt +8 -0
  218. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +25 -0
  219. data/bundler/lib/bundler/templates/newgem/exe/newgem.tt +3 -0
  220. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
  221. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt +10 -0
  222. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
  223. data/bundler/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +9 -0
  224. data/bundler/lib/bundler/templates/newgem/ext/newgem/newgem.h.tt +6 -0
  225. data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
  226. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +37 -0
  227. data/bundler/lib/bundler/templates/newgem/gitignore.tt +23 -0
  228. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +18 -0
  229. data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +9 -0
  230. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +15 -0
  231. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +51 -0
  232. data/bundler/lib/bundler/templates/newgem/rspec.tt +3 -0
  233. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
  234. data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
  235. data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +11 -0
  236. data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +15 -0
  237. data/bundler/lib/bundler/templates/newgem/standard.yml.tt +3 -0
  238. data/bundler/lib/bundler/templates/newgem/test/minitest/test_helper.rb.tt +6 -0
  239. data/bundler/lib/bundler/templates/newgem/test/minitest/test_newgem.rb.tt +13 -0
  240. data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  241. data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  242. data/bundler/lib/bundler/ui/rg_proxy.rb +19 -0
  243. data/bundler/lib/bundler/ui/shell.rb +165 -0
  244. data/bundler/lib/bundler/ui/silent.rb +85 -0
  245. data/bundler/lib/bundler/ui.rb +9 -0
  246. data/bundler/lib/bundler/uri_credentials_filter.rb +43 -0
  247. data/bundler/lib/bundler/uri_normalizer.rb +23 -0
  248. data/bundler/lib/bundler/vendor/.document +1 -0
  249. data/bundler/lib/bundler/vendor/connection_pool/LICENSE +20 -0
  250. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +174 -0
  251. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
  252. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +56 -0
  253. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +175 -0
  254. data/bundler/lib/bundler/vendor/fileutils/LICENSE.txt +22 -0
  255. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +2694 -0
  256. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
  257. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +41 -0
  258. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +65 -0
  259. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
  260. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1073 -0
  261. data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
  262. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
  263. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
  264. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
  265. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
  266. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
  267. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
  268. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
  269. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
  270. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
  271. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
  272. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
  273. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
  274. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
  275. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +248 -0
  276. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
  277. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
  278. data/bundler/lib/bundler/vendor/thor/LICENSE.md +20 -0
  279. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +105 -0
  280. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +61 -0
  281. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +108 -0
  282. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb +143 -0
  283. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +373 -0
  284. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +130 -0
  285. data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +340 -0
  286. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +825 -0
  287. data/bundler/lib/bundler/vendor/thor/lib/thor/command.rb +151 -0
  288. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +107 -0
  289. data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +106 -0
  290. data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +281 -0
  291. data/bundler/lib/bundler/vendor/thor/lib/thor/invocation.rb +178 -0
  292. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +37 -0
  293. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +88 -0
  294. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor.rb +17 -0
  295. data/bundler/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
  296. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +89 -0
  297. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +195 -0
  298. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +178 -0
  299. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +293 -0
  300. data/bundler/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -0
  301. data/bundler/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +72 -0
  302. data/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +335 -0
  303. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +388 -0
  304. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +115 -0
  305. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/column_printer.rb +29 -0
  306. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +84 -0
  307. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/lcs_diff.rb +49 -0
  308. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +134 -0
  309. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/terminal.rb +42 -0
  310. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/wrapped_printer.rb +38 -0
  311. data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +81 -0
  312. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +285 -0
  313. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +3 -0
  314. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +663 -0
  315. data/bundler/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
  316. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +455 -0
  317. data/bundler/lib/bundler/vendor/uri/LICENSE.txt +22 -0
  318. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +853 -0
  319. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +100 -0
  320. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
  321. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1588 -0
  322. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +125 -0
  323. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +23 -0
  324. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +261 -0
  325. data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +22 -0
  326. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +293 -0
  327. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +539 -0
  328. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +183 -0
  329. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
  330. data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +83 -0
  331. data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +23 -0
  332. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +104 -0
  333. data/bundler/lib/bundler/vendored_fileutils.rb +4 -0
  334. data/bundler/lib/bundler/vendored_net_http.rb +8 -0
  335. data/bundler/lib/bundler/vendored_persistent.rb +11 -0
  336. data/bundler/lib/bundler/vendored_pub_grub.rb +4 -0
  337. data/bundler/lib/bundler/vendored_thor.rb +8 -0
  338. data/bundler/lib/bundler/vendored_timeout.rb +8 -0
  339. data/bundler/lib/bundler/vendored_tsort.rb +4 -0
  340. data/bundler/lib/bundler/vendored_uri.rb +4 -0
  341. data/bundler/lib/bundler/version.rb +13 -0
  342. data/bundler/lib/bundler/vlad.rb +17 -0
  343. data/bundler/lib/bundler/worker.rb +117 -0
  344. data/bundler/lib/bundler/yaml_serializer.rb +93 -0
  345. data/bundler/lib/bundler.rb +665 -0
  346. data/{test/rubygems/bogussources.rb → exe/gem} +5 -2
  347. data/exe/update_rubygems +38 -0
  348. data/hide_lib_for_update/note.txt +0 -4
  349. data/lib/rubygems/available_set.rb +12 -12
  350. data/lib/rubygems/basic_specification.rb +75 -58
  351. data/lib/rubygems/bundler_version_finder.rb +77 -0
  352. data/lib/rubygems/ci_detector.rb +75 -0
  353. data/lib/rubygems/command.rb +144 -71
  354. data/lib/rubygems/command_manager.rb +64 -27
  355. data/lib/rubygems/commands/build_command.rb +88 -17
  356. data/lib/rubygems/commands/cert_command.rb +131 -83
  357. data/lib/rubygems/commands/check_command.rb +30 -27
  358. data/lib/rubygems/commands/cleanup_command.rb +57 -40
  359. data/lib/rubygems/commands/contents_command.rb +37 -39
  360. data/lib/rubygems/commands/dependency_command.rb +53 -65
  361. data/lib/rubygems/commands/environment_command.rb +32 -16
  362. data/lib/rubygems/commands/exec_command.rb +249 -0
  363. data/lib/rubygems/commands/fetch_command.rb +36 -19
  364. data/lib/rubygems/commands/generate_index_command.rb +40 -74
  365. data/lib/rubygems/commands/help_command.rb +22 -22
  366. data/lib/rubygems/commands/info_command.rb +38 -0
  367. data/lib/rubygems/commands/install_command.rb +67 -143
  368. data/lib/rubygems/commands/list_command.rb +10 -9
  369. data/lib/rubygems/commands/lock_command.rb +12 -14
  370. data/lib/rubygems/commands/mirror_command.rb +4 -4
  371. data/lib/rubygems/commands/open_command.rb +28 -26
  372. data/lib/rubygems/commands/outdated_command.rb +6 -6
  373. data/lib/rubygems/commands/owner_command.rb +51 -27
  374. data/lib/rubygems/commands/pristine_command.rb +99 -71
  375. data/lib/rubygems/commands/push_command.rb +53 -46
  376. data/lib/rubygems/commands/query_command.rb +21 -328
  377. data/lib/rubygems/commands/rdoc_command.rb +33 -33
  378. data/lib/rubygems/commands/search_command.rb +9 -9
  379. data/lib/rubygems/commands/server_command.rb +15 -76
  380. data/lib/rubygems/commands/setup_command.rb +370 -186
  381. data/lib/rubygems/commands/signin_command.rb +34 -0
  382. data/lib/rubygems/commands/signout_command.rb +32 -0
  383. data/lib/rubygems/commands/sources_command.rb +57 -41
  384. data/lib/rubygems/commands/specification_command.rb +38 -28
  385. data/lib/rubygems/commands/stale_command.rb +6 -5
  386. data/lib/rubygems/commands/uninstall_command.rb +96 -62
  387. data/lib/rubygems/commands/unpack_command.rb +44 -53
  388. data/lib/rubygems/commands/update_command.rb +155 -99
  389. data/lib/rubygems/commands/which_command.rb +14 -17
  390. data/lib/rubygems/commands/yank_command.rb +28 -32
  391. data/lib/rubygems/compatibility.rb +13 -32
  392. data/lib/rubygems/config_file.rb +214 -119
  393. data/lib/rubygems/core_ext/kernel_gem.rb +10 -16
  394. data/lib/rubygems/core_ext/kernel_require.rb +92 -90
  395. data/lib/rubygems/core_ext/kernel_warn.rb +49 -0
  396. data/lib/rubygems/core_ext/tcpsocket_init.rb +54 -0
  397. data/lib/rubygems/defaults.rb +184 -54
  398. data/lib/rubygems/dependency.rb +75 -62
  399. data/lib/rubygems/dependency_installer.rb +74 -230
  400. data/lib/rubygems/dependency_list.rb +32 -33
  401. data/lib/rubygems/deprecate.rb +113 -17
  402. data/lib/rubygems/doctor.rb +31 -31
  403. data/lib/rubygems/errors.rb +51 -13
  404. data/lib/rubygems/exceptions.rb +65 -35
  405. data/lib/rubygems/ext/build_error.rb +3 -1
  406. data/lib/rubygems/ext/builder.rb +103 -77
  407. data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +27 -0
  408. data/lib/rubygems/ext/cargo_builder.rb +360 -0
  409. data/lib/rubygems/ext/cmake_builder.rb +6 -7
  410. data/lib/rubygems/ext/configure_builder.rb +6 -9
  411. data/lib/rubygems/ext/ext_conf_builder.rb +40 -61
  412. data/lib/rubygems/ext/rake_builder.rb +18 -21
  413. data/lib/rubygems/ext.rb +8 -7
  414. data/lib/rubygems/gem_runner.rb +19 -21
  415. data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +163 -0
  416. data/lib/rubygems/gemcutter_utilities/webauthn_listener.rb +105 -0
  417. data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +78 -0
  418. data/lib/rubygems/gemcutter_utilities.rb +246 -43
  419. data/lib/rubygems/install_default_message.rb +3 -3
  420. data/lib/rubygems/install_message.rb +3 -3
  421. data/lib/rubygems/install_update_options.rb +104 -98
  422. data/lib/rubygems/installer.rb +407 -225
  423. data/lib/rubygems/installer_uninstaller_utils.rb +27 -0
  424. data/lib/rubygems/local_remote_options.rb +29 -32
  425. data/lib/rubygems/name_tuple.rb +18 -23
  426. data/lib/rubygems/net/http.rb +3 -0
  427. data/lib/rubygems/net-http/LICENSE.txt +22 -0
  428. data/lib/rubygems/net-http/lib/net/http/backward.rb +40 -0
  429. data/lib/rubygems/net-http/lib/net/http/exceptions.rb +34 -0
  430. data/lib/rubygems/net-http/lib/net/http/generic_request.rb +414 -0
  431. data/lib/rubygems/net-http/lib/net/http/header.rb +981 -0
  432. data/lib/rubygems/net-http/lib/net/http/proxy_delta.rb +17 -0
  433. data/lib/rubygems/net-http/lib/net/http/request.rb +88 -0
  434. data/lib/rubygems/net-http/lib/net/http/requests.rb +425 -0
  435. data/lib/rubygems/net-http/lib/net/http/response.rb +738 -0
  436. data/lib/rubygems/net-http/lib/net/http/responses.rb +1174 -0
  437. data/lib/rubygems/net-http/lib/net/http/status.rb +84 -0
  438. data/lib/rubygems/net-http/lib/net/http.rb +2496 -0
  439. data/lib/rubygems/net-http/lib/net/https.rb +23 -0
  440. data/lib/rubygems/net-protocol/LICENSE.txt +22 -0
  441. data/lib/rubygems/net-protocol/lib/net/protocol.rb +544 -0
  442. data/lib/rubygems/openssl.rb +7 -0
  443. data/lib/rubygems/optparse/.document +1 -0
  444. data/lib/rubygems/optparse/COPYING +56 -0
  445. data/lib/rubygems/optparse/lib/optionparser.rb +2 -0
  446. data/lib/rubygems/optparse/lib/optparse/ac.rb +54 -0
  447. data/lib/rubygems/optparse/lib/optparse/date.rb +18 -0
  448. data/lib/rubygems/optparse/lib/optparse/kwargs.rb +22 -0
  449. data/lib/rubygems/optparse/lib/optparse/shellwords.rb +7 -0
  450. data/lib/rubygems/optparse/lib/optparse/time.rb +11 -0
  451. data/lib/rubygems/optparse/lib/optparse/uri.rb +7 -0
  452. data/lib/rubygems/optparse/lib/optparse/version.rb +71 -0
  453. data/lib/rubygems/optparse/lib/optparse.rb +2330 -0
  454. data/lib/rubygems/optparse.rb +3 -0
  455. data/lib/rubygems/package/digest_io.rb +5 -7
  456. data/lib/rubygems/package/file_source.rb +6 -8
  457. data/lib/rubygems/package/io_source.rb +6 -4
  458. data/lib/rubygems/package/old.rb +19 -28
  459. data/lib/rubygems/package/source.rb +1 -1
  460. data/lib/rubygems/package/tar_header.rb +114 -93
  461. data/lib/rubygems/package/tar_reader/entry.rb +116 -22
  462. data/lib/rubygems/package/tar_reader.rb +18 -40
  463. data/lib/rubygems/package/tar_writer.rb +42 -56
  464. data/lib/rubygems/package.rb +245 -145
  465. data/lib/rubygems/package_task.rb +8 -14
  466. data/lib/rubygems/path_support.rb +21 -16
  467. data/lib/rubygems/platform.rb +135 -74
  468. data/lib/rubygems/psych_tree.rb +3 -2
  469. data/lib/rubygems/query_utils.rb +349 -0
  470. data/lib/rubygems/rdoc.rb +4 -326
  471. data/lib/rubygems/remote_fetcher.rb +99 -181
  472. data/lib/rubygems/request/connection_pools.rb +31 -24
  473. data/lib/rubygems/request/http_pool.rb +6 -7
  474. data/lib/rubygems/request/https_pool.rb +2 -3
  475. data/lib/rubygems/request.rb +103 -53
  476. data/lib/rubygems/request_set/gem_dependency_api.rb +182 -190
  477. data/lib/rubygems/request_set/lockfile/parser.rb +42 -52
  478. data/lib/rubygems/request_set/lockfile/tokenizer.rb +34 -24
  479. data/lib/rubygems/request_set/lockfile.rb +32 -35
  480. data/lib/rubygems/request_set.rb +115 -71
  481. data/lib/rubygems/requirement.rb +77 -68
  482. data/lib/rubygems/resolv/LICENSE.txt +22 -0
  483. data/lib/rubygems/resolv/lib/resolv.rb +3387 -0
  484. data/lib/rubygems/resolver/activation_request.rb +34 -61
  485. data/lib/rubygems/resolver/api_set/gem_parser.rb +24 -0
  486. data/lib/rubygems/resolver/api_set.rb +40 -32
  487. data/lib/rubygems/resolver/api_specification.rb +37 -18
  488. data/lib/rubygems/resolver/best_set.rb +15 -17
  489. data/lib/rubygems/resolver/composed_set.rb +9 -11
  490. data/lib/rubygems/resolver/conflict.rb +19 -33
  491. data/lib/rubygems/resolver/current_set.rb +2 -4
  492. data/lib/rubygems/resolver/dependency_request.rb +8 -9
  493. data/lib/rubygems/resolver/git_set.rb +8 -10
  494. data/lib/rubygems/resolver/git_specification.rb +11 -13
  495. data/lib/rubygems/resolver/index_set.rb +13 -15
  496. data/lib/rubygems/resolver/index_specification.rb +42 -11
  497. data/lib/rubygems/resolver/installed_specification.rb +9 -11
  498. data/lib/rubygems/resolver/installer_set.rb +87 -45
  499. data/lib/rubygems/resolver/local_specification.rb +5 -7
  500. data/lib/rubygems/resolver/lock_set.rb +13 -15
  501. data/lib/rubygems/resolver/lock_specification.rb +13 -15
  502. data/lib/rubygems/resolver/molinillo/LICENSE +9 -0
  503. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +57 -0
  504. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +88 -0
  505. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +36 -0
  506. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +66 -0
  507. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +62 -0
  508. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +63 -0
  509. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +61 -0
  510. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +126 -0
  511. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +46 -0
  512. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +36 -0
  513. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +164 -0
  514. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +110 -146
  515. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +83 -9
  516. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
  517. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +13 -1
  518. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
  519. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +552 -172
  520. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
  521. data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +12 -6
  522. data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
  523. data/lib/rubygems/resolver/molinillo.rb +2 -1
  524. data/lib/rubygems/resolver/requirement_list.rb +2 -2
  525. data/lib/rubygems/resolver/set.rb +3 -5
  526. data/lib/rubygems/resolver/source_set.rb +6 -7
  527. data/lib/rubygems/resolver/spec_specification.rb +16 -4
  528. data/lib/rubygems/resolver/specification.rb +25 -10
  529. data/lib/rubygems/resolver/stats.rb +1 -0
  530. data/lib/rubygems/resolver/vendor_set.rb +6 -8
  531. data/lib/rubygems/resolver/vendor_specification.rb +6 -8
  532. data/lib/rubygems/resolver.rb +121 -72
  533. data/lib/rubygems/s3_uri_signer.rb +177 -0
  534. data/lib/rubygems/safe_marshal/elements.rb +138 -0
  535. data/lib/rubygems/safe_marshal/reader.rb +306 -0
  536. data/lib/rubygems/safe_marshal/visitors/stream_printer.rb +31 -0
  537. data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +385 -0
  538. data/lib/rubygems/safe_marshal/visitors/visitor.rb +74 -0
  539. data/lib/rubygems/safe_marshal.rb +74 -0
  540. data/lib/rubygems/safe_yaml.rb +36 -0
  541. data/lib/rubygems/security/policies.rb +49 -51
  542. data/lib/rubygems/security/policy.rb +46 -53
  543. data/lib/rubygems/security/signer.rb +86 -29
  544. data/lib/rubygems/security/trust_dir.rb +22 -24
  545. data/lib/rubygems/security.rb +101 -82
  546. data/lib/rubygems/security_option.rb +43 -0
  547. data/lib/rubygems/shellwords.rb +3 -0
  548. data/lib/rubygems/source/git.rb +40 -42
  549. data/lib/rubygems/source/installed.rb +5 -9
  550. data/lib/rubygems/source/local.rb +30 -33
  551. data/lib/rubygems/source/lock.rb +10 -10
  552. data/lib/rubygems/source/specific_file.rb +7 -9
  553. data/lib/rubygems/source/vendor.rb +3 -7
  554. data/lib/rubygems/source.rb +78 -68
  555. data/lib/rubygems/source_list.rb +11 -15
  556. data/lib/rubygems/spec_fetcher.rb +71 -83
  557. data/lib/rubygems/specification.rb +833 -1115
  558. data/lib/rubygems/specification_policy.rb +538 -0
  559. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA.pem +21 -0
  560. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
  561. data/lib/rubygems/stub_specification.rb +55 -57
  562. data/lib/rubygems/text.rb +39 -27
  563. data/lib/rubygems/timeout/LICENSE.txt +22 -0
  564. data/lib/rubygems/timeout/lib/timeout.rb +199 -0
  565. data/lib/rubygems/timeout.rb +3 -0
  566. data/lib/rubygems/tsort/.document +1 -0
  567. data/lib/rubygems/tsort/LICENSE.txt +22 -0
  568. data/lib/rubygems/tsort/lib/tsort.rb +455 -0
  569. data/lib/rubygems/tsort.rb +3 -0
  570. data/lib/rubygems/uninstaller.rb +150 -87
  571. data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
  572. data/lib/rubygems/update_suggestion.rb +56 -0
  573. data/lib/rubygems/uri.rb +126 -0
  574. data/lib/rubygems/uri_formatter.rb +4 -7
  575. data/lib/rubygems/user_interaction.rb +92 -146
  576. data/lib/rubygems/util/licenses.rb +712 -317
  577. data/lib/rubygems/util/list.rb +5 -2
  578. data/lib/rubygems/util.rb +58 -75
  579. data/lib/rubygems/validator.rb +26 -48
  580. data/lib/rubygems/version.rb +106 -56
  581. data/lib/rubygems/version_option.rb +22 -14
  582. data/lib/rubygems/yaml_serializer.rb +93 -0
  583. data/lib/rubygems.rb +427 -361
  584. data/rubygems-update.gemspec +38 -0
  585. data/setup.rb +13 -27
  586. metadata +500 -363
  587. data/.autotest +0 -71
  588. data/.document +0 -5
  589. data/.travis.yml +0 -46
  590. data/CONTRIBUTING.rdoc +0 -129
  591. data/CVE-2013-4287.txt +0 -35
  592. data/CVE-2013-4363.txt +0 -45
  593. data/CVE-2015-3900.txt +0 -40
  594. data/History.txt +0 -3105
  595. data/MAINTAINERS.md +0 -5
  596. data/POLICIES.rdoc +0 -61
  597. data/README.rdoc +0 -54
  598. data/Rakefile +0 -449
  599. data/UPGRADING.rdoc +0 -92
  600. data/appveyor.yml +0 -36
  601. data/bin/gem +0 -25
  602. data/bin/update_rubygems +0 -37
  603. data/lib/gauntlet_rubygems.rb +0 -51
  604. data/lib/rubygems/indexer.rb +0 -434
  605. data/lib/rubygems/installer_test_case.rb +0 -194
  606. data/lib/rubygems/mock_gem_ui.rb +0 -89
  607. data/lib/rubygems/package/tar_test_case.rb +0 -147
  608. data/lib/rubygems/psych_additions.rb +0 -10
  609. data/lib/rubygems/server.rb +0 -869
  610. data/lib/rubygems/source_local.rb +0 -6
  611. data/lib/rubygems/source_specific_file.rb +0 -5
  612. data/lib/rubygems/ssl_certs/AddTrustExternalCARoot-2048.pem +0 -25
  613. data/lib/rubygems/ssl_certs/AddTrustExternalCARoot.pem +0 -32
  614. data/lib/rubygems/ssl_certs/Class3PublicPrimaryCertificationAuthority.pem +0 -14
  615. data/lib/rubygems/ssl_certs/DigiCertHighAssuranceEVRootCA.pem +0 -23
  616. data/lib/rubygems/ssl_certs/EntrustnetSecureServerCertificationAuthority.pem +0 -28
  617. data/lib/rubygems/ssl_certs/GeoTrustGlobalCA.pem +0 -20
  618. data/lib/rubygems/syck_hack.rb +0 -77
  619. data/lib/rubygems/test_case.rb +0 -1496
  620. data/lib/rubygems/test_utilities.rb +0 -384
  621. data/lib/ubygems.rb +0 -11
  622. data/test/rubygems/alternate_cert.pem +0 -18
  623. data/test/rubygems/alternate_cert_32.pem +0 -18
  624. data/test/rubygems/alternate_key.pem +0 -27
  625. data/test/rubygems/bad_rake.rb +0 -2
  626. data/test/rubygems/ca_cert.pem +0 -68
  627. data/test/rubygems/child_cert.pem +0 -18
  628. data/test/rubygems/child_cert_32.pem +0 -18
  629. data/test/rubygems/child_key.pem +0 -27
  630. data/test/rubygems/client.pem +0 -49
  631. data/test/rubygems/data/gem-private_key.pem +0 -27
  632. data/test/rubygems/data/gem-public_cert.pem +0 -20
  633. data/test/rubygems/data/null-type.gemspec.rz +0 -0
  634. data/test/rubygems/encrypted_private_key.pem +0 -30
  635. data/test/rubygems/expired_cert.pem +0 -18
  636. data/test/rubygems/fake_certlib/openssl.rb +0 -8
  637. data/test/rubygems/fix_openssl_warnings.rb +0 -13
  638. data/test/rubygems/foo/discover.rb +0 -1
  639. data/test/rubygems/future_cert.pem +0 -18
  640. data/test/rubygems/future_cert_32.pem +0 -18
  641. data/test/rubygems/good_rake.rb +0 -2
  642. data/test/rubygems/grandchild_cert.pem +0 -18
  643. data/test/rubygems/grandchild_cert_32.pem +0 -18
  644. data/test/rubygems/grandchild_key.pem +0 -27
  645. data/test/rubygems/invalid_client.pem +0 -49
  646. data/test/rubygems/invalid_issuer_cert.pem +0 -18
  647. data/test/rubygems/invalid_issuer_cert_32.pem +0 -18
  648. data/test/rubygems/invalid_key.pem +0 -27
  649. data/test/rubygems/invalid_signer_cert.pem +0 -18
  650. data/test/rubygems/invalid_signer_cert_32.pem +0 -18
  651. data/test/rubygems/invalidchild_cert.pem +0 -18
  652. data/test/rubygems/invalidchild_cert_32.pem +0 -18
  653. data/test/rubygems/invalidchild_key.pem +0 -27
  654. data/test/rubygems/plugin/exception/rubygems_plugin.rb +0 -3
  655. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -4
  656. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +0 -3
  657. data/test/rubygems/private_key.pem +0 -27
  658. data/test/rubygems/public_cert.pem +0 -18
  659. data/test/rubygems/public_cert_32.pem +0 -18
  660. data/test/rubygems/public_key.pem +0 -9
  661. data/test/rubygems/rubygems/commands/crash_command.rb +0 -6
  662. data/test/rubygems/rubygems_plugin.rb +0 -22
  663. data/test/rubygems/sff/discover.rb +0 -1
  664. data/test/rubygems/simple_gem.rb +0 -67
  665. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -9
  666. data/test/rubygems/specifications/foo-0.0.1-x86-mswin32.gemspec +0 -0
  667. data/test/rubygems/ssl_cert.pem +0 -19
  668. data/test/rubygems/ssl_key.pem +0 -15
  669. data/test/rubygems/test_bundled_ca.rb +0 -59
  670. data/test/rubygems/test_config.rb +0 -24
  671. data/test/rubygems/test_deprecate.rb +0 -77
  672. data/test/rubygems/test_gem.rb +0 -1718
  673. data/test/rubygems/test_gem_available_set.rb +0 -130
  674. data/test/rubygems/test_gem_command.rb +0 -248
  675. data/test/rubygems/test_gem_command_manager.rb +0 -264
  676. data/test/rubygems/test_gem_commands_build_command.rb +0 -121
  677. data/test/rubygems/test_gem_commands_cert_command.rb +0 -671
  678. data/test/rubygems/test_gem_commands_check_command.rb +0 -69
  679. data/test/rubygems/test_gem_commands_cleanup_command.rb +0 -197
  680. data/test/rubygems/test_gem_commands_contents_command.rb +0 -240
  681. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -230
  682. data/test/rubygems/test_gem_commands_environment_command.rb +0 -154
  683. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -127
  684. data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -51
  685. data/test/rubygems/test_gem_commands_help_command.rb +0 -75
  686. data/test/rubygems/test_gem_commands_install_command.rb +0 -1007
  687. data/test/rubygems/test_gem_commands_list_command.rb +0 -34
  688. data/test/rubygems/test_gem_commands_lock_command.rb +0 -69
  689. data/test/rubygems/test_gem_commands_mirror.rb +0 -20
  690. data/test/rubygems/test_gem_commands_open_command.rb +0 -70
  691. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -33
  692. data/test/rubygems/test_gem_commands_owner_command.rb +0 -205
  693. data/test/rubygems/test_gem_commands_pristine_command.rb +0 -491
  694. data/test/rubygems/test_gem_commands_push_command.rb +0 -330
  695. data/test/rubygems/test_gem_commands_query_command.rb +0 -657
  696. data/test/rubygems/test_gem_commands_search_command.rb +0 -18
  697. data/test/rubygems/test_gem_commands_server_command.rb +0 -60
  698. data/test/rubygems/test_gem_commands_setup_command.rb +0 -136
  699. data/test/rubygems/test_gem_commands_sources_command.rb +0 -249
  700. data/test/rubygems/test_gem_commands_specification_command.rb +0 -251
  701. data/test/rubygems/test_gem_commands_stale_command.rb +0 -43
  702. data/test/rubygems/test_gem_commands_uninstall_command.rb +0 -283
  703. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -209
  704. data/test/rubygems/test_gem_commands_update_command.rb +0 -514
  705. data/test/rubygems/test_gem_commands_which_command.rb +0 -87
  706. data/test/rubygems/test_gem_commands_yank_command.rb +0 -100
  707. data/test/rubygems/test_gem_config_file.rb +0 -491
  708. data/test/rubygems/test_gem_dependency.rb +0 -362
  709. data/test/rubygems/test_gem_dependency_installer.rb +0 -1235
  710. data/test/rubygems/test_gem_dependency_list.rb +0 -260
  711. data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -29
  712. data/test/rubygems/test_gem_doctor.rb +0 -169
  713. data/test/rubygems/test_gem_ext_builder.rb +0 -341
  714. data/test/rubygems/test_gem_ext_cmake_builder.rb +0 -87
  715. data/test/rubygems/test_gem_ext_configure_builder.rb +0 -87
  716. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -211
  717. data/test/rubygems/test_gem_ext_rake_builder.rb +0 -65
  718. data/test/rubygems/test_gem_gem_runner.rb +0 -69
  719. data/test/rubygems/test_gem_gemcutter_utilities.rb +0 -235
  720. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -62
  721. data/test/rubygems/test_gem_indexer.rb +0 -367
  722. data/test/rubygems/test_gem_install_update_options.rb +0 -197
  723. data/test/rubygems/test_gem_installer.rb +0 -1552
  724. data/test/rubygems/test_gem_local_remote_options.rb +0 -134
  725. data/test/rubygems/test_gem_name_tuple.rb +0 -45
  726. data/test/rubygems/test_gem_package.rb +0 -876
  727. data/test/rubygems/test_gem_package_old.rb +0 -90
  728. data/test/rubygems/test_gem_package_tar_header.rb +0 -147
  729. data/test/rubygems/test_gem_package_tar_reader.rb +0 -90
  730. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -142
  731. data/test/rubygems/test_gem_package_tar_writer.rb +0 -264
  732. data/test/rubygems/test_gem_package_task.rb +0 -84
  733. data/test/rubygems/test_gem_path_support.rb +0 -121
  734. data/test/rubygems/test_gem_platform.rb +0 -308
  735. data/test/rubygems/test_gem_rdoc.rb +0 -270
  736. data/test/rubygems/test_gem_remote_fetcher.rb +0 -1051
  737. data/test/rubygems/test_gem_request.rb +0 -363
  738. data/test/rubygems/test_gem_request_connection_pools.rb +0 -130
  739. data/test/rubygems/test_gem_request_set.rb +0 -595
  740. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +0 -831
  741. data/test/rubygems/test_gem_request_set_lockfile.rb +0 -470
  742. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +0 -549
  743. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +0 -306
  744. data/test/rubygems/test_gem_requirement.rb +0 -387
  745. data/test/rubygems/test_gem_resolver.rb +0 -715
  746. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -74
  747. data/test/rubygems/test_gem_resolver_api_set.rb +0 -209
  748. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -145
  749. data/test/rubygems/test_gem_resolver_best_set.rb +0 -138
  750. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -46
  751. data/test/rubygems/test_gem_resolver_conflict.rb +0 -88
  752. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -85
  753. data/test/rubygems/test_gem_resolver_git_set.rb +0 -190
  754. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -114
  755. data/test/rubygems/test_gem_resolver_index_set.rb +0 -90
  756. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -90
  757. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -50
  758. data/test/rubygems/test_gem_resolver_installer_set.rb +0 -258
  759. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -46
  760. data/test/rubygems/test_gem_resolver_lock_set.rb +0 -64
  761. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -100
  762. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -21
  763. data/test/rubygems/test_gem_resolver_specification.rb +0 -65
  764. data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -84
  765. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -84
  766. data/test/rubygems/test_gem_security.rb +0 -307
  767. data/test/rubygems/test_gem_security_policy.rb +0 -541
  768. data/test/rubygems/test_gem_security_signer.rb +0 -209
  769. data/test/rubygems/test_gem_security_trust_dir.rb +0 -101
  770. data/test/rubygems/test_gem_server.rb +0 -409
  771. data/test/rubygems/test_gem_silent_ui.rb +0 -117
  772. data/test/rubygems/test_gem_source.rb +0 -242
  773. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -20
  774. data/test/rubygems/test_gem_source_git.rb +0 -309
  775. data/test/rubygems/test_gem_source_installed.rb +0 -37
  776. data/test/rubygems/test_gem_source_list.rb +0 -118
  777. data/test/rubygems/test_gem_source_local.rb +0 -107
  778. data/test/rubygems/test_gem_source_lock.rb +0 -115
  779. data/test/rubygems/test_gem_source_specific_file.rb +0 -76
  780. data/test/rubygems/test_gem_source_vendor.rb +0 -32
  781. data/test/rubygems/test_gem_spec_fetcher.rb +0 -311
  782. data/test/rubygems/test_gem_specification.rb +0 -3519
  783. data/test/rubygems/test_gem_stream_ui.rb +0 -239
  784. data/test/rubygems/test_gem_stub_specification.rb +0 -217
  785. data/test/rubygems/test_gem_text.rb +0 -77
  786. data/test/rubygems/test_gem_uninstaller.rb +0 -485
  787. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -33
  788. data/test/rubygems/test_gem_uri_formatter.rb +0 -29
  789. data/test/rubygems/test_gem_util.rb +0 -40
  790. data/test/rubygems/test_gem_validator.rb +0 -46
  791. data/test/rubygems/test_gem_version.rb +0 -222
  792. data/test/rubygems/test_gem_version_option.rb +0 -152
  793. data/test/rubygems/test_kernel.rb +0 -86
  794. data/test/rubygems/test_require.rb +0 -322
  795. data/test/rubygems/wrong_key_cert.pem +0 -18
  796. data/test/rubygems/wrong_key_cert_32.pem +0 -18
  797. data/util/CL2notes +0 -56
  798. data/util/create_certs.rb +0 -157
  799. data/util/create_encrypted_key.rb +0 -17
  800. data/util/generate_spdx_license_list.rb +0 -51
  801. data/util/update_bundled_ca_certificates.rb +0 -118
@@ -1,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