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,1718 +0,0 @@
1
- # coding: US-ASCII
2
- require 'rubygems/test_case'
3
- require 'rubygems'
4
- require 'rubygems/command'
5
- require 'rubygems/installer'
6
- require 'pathname'
7
- require 'tmpdir'
8
-
9
- # TODO: push this up to test_case.rb once battle tested
10
- $SAFE=1
11
- $LOAD_PATH.map! do |path|
12
- path.dup.untaint
13
- end
14
-
15
- class TestGem < Gem::TestCase
16
-
17
- PLUGINS_LOADED = []
18
-
19
- def setup
20
- super
21
-
22
- PLUGINS_LOADED.clear
23
-
24
- common_installer_setup
25
-
26
- ENV.delete 'RUBYGEMS_GEMDEPS'
27
- @additional = %w[a b].map { |d| File.join @tempdir, d }
28
-
29
- util_remove_interrupt_command
30
- end
31
-
32
- def test_self_finish_resolve
33
- save_loaded_features do
34
- a1 = new_spec "a", "1", "b" => "> 0"
35
- b1 = new_spec "b", "1", "c" => ">= 1"
36
- b2 = new_spec "b", "2", "c" => ">= 2"
37
- c1 = new_spec "c", "1"
38
- c2 = new_spec "c", "2"
39
-
40
- install_specs c1, c2, b1, b2, a1
41
-
42
- a1.activate
43
-
44
- assert_equal %w(a-1), loaded_spec_names
45
- assert_equal ["b (> 0)"], unresolved_names
46
-
47
- Gem.finish_resolve
48
-
49
- assert_equal %w(a-1 b-2 c-2), loaded_spec_names
50
- assert_equal [], unresolved_names
51
- end
52
- end
53
-
54
- def test_self_finish_resolve_wtf
55
- save_loaded_features do
56
- a1 = new_spec "a", "1", "b" => "> 0", "d" => "> 0" # this
57
- b1 = new_spec "b", "1", { "c" => ">= 1" }, "lib/b.rb" # this
58
- b2 = new_spec "b", "2", { "c" => ">= 2" }, "lib/b.rb"
59
- c1 = new_spec "c", "1" # this
60
- c2 = new_spec "c", "2"
61
- d1 = new_spec "d", "1", { "c" => "< 2" }, "lib/d.rb"
62
- d2 = new_spec "d", "2", { "c" => "< 2" }, "lib/d.rb" # this
63
-
64
- install_specs c1, c2, b1, b2, d1, d2, a1
65
-
66
- a1.activate
67
-
68
- assert_equal %w(a-1), loaded_spec_names
69
- assert_equal ["b (> 0)", "d (> 0)"], unresolved_names
70
-
71
- Gem.finish_resolve
72
-
73
- assert_equal %w(a-1 b-1 c-1 d-2), loaded_spec_names
74
- assert_equal [], unresolved_names
75
- end
76
- end
77
-
78
- def test_self_install
79
- spec_fetcher do |f|
80
- f.gem 'a', 1
81
- f.spec 'a', 2
82
- end
83
-
84
- gemhome2 = "#{@gemhome}2"
85
-
86
- installed = Gem.install 'a', '= 1', :install_dir => gemhome2
87
-
88
- assert_equal %w[a-1], installed.map { |spec| spec.full_name }
89
-
90
- assert_path_exists File.join(gemhome2, 'gems', 'a-1')
91
- end
92
-
93
- def test_self_install_in_rescue
94
- spec_fetcher do |f|
95
- f.gem 'a', 1
96
- f.spec 'a', 2
97
- end
98
-
99
- gemhome2 = "#{@gemhome}2"
100
-
101
- installed =
102
- begin
103
- raise 'Error'
104
- rescue StandardError
105
- Gem.install 'a', '= 1', :install_dir => gemhome2
106
- end
107
- assert_equal %w[a-1], installed.map { |spec| spec.full_name }
108
- end
109
-
110
- def test_require_missing
111
- save_loaded_features do
112
- assert_raises ::LoadError do
113
- require "q"
114
- end
115
- end
116
- end
117
-
118
- def test_require_does_not_glob
119
- save_loaded_features do
120
- a1 = new_spec "a", "1", nil, "lib/a1.rb"
121
-
122
- install_specs a1
123
-
124
- assert_raises ::LoadError do
125
- require "a*"
126
- end
127
-
128
- assert_equal [], loaded_spec_names
129
- end
130
- end
131
-
132
- def test_self_bin_path_active
133
- a1 = util_spec 'a', '1' do |s|
134
- s.executables = ['exec']
135
- end
136
-
137
- util_spec 'a', '2' do |s|
138
- s.executables = ['exec']
139
- end
140
-
141
- a1.activate
142
-
143
- assert_match 'a-1/bin/exec', Gem.bin_path('a', 'exec', '>= 0')
144
- end
145
-
146
- def test_self_bin_path_no_exec_name
147
- e = assert_raises ArgumentError do
148
- Gem.bin_path 'a'
149
- end
150
-
151
- assert_equal 'you must supply exec_name', e.message
152
- end
153
-
154
- def test_self_bin_path_bin_name
155
- install_specs util_exec_gem
156
- assert_equal @abin_path, Gem.bin_path('a', 'abin')
157
- end
158
-
159
- def test_self_bin_path_bin_name_version
160
- install_specs util_exec_gem
161
- assert_equal @abin_path, Gem.bin_path('a', 'abin', '4')
162
- end
163
-
164
- def test_self_bin_path_nonexistent_binfile
165
- util_spec 'a', '2' do |s|
166
- s.executables = ['exec']
167
- end
168
- assert_raises(Gem::GemNotFoundException) do
169
- Gem.bin_path('a', 'other', '2')
170
- end
171
- end
172
-
173
- def test_self_bin_path_no_bin_file
174
- util_spec 'a', '1'
175
- assert_raises(ArgumentError) do
176
- Gem.bin_path('a', nil, '1')
177
- end
178
- end
179
-
180
- def test_self_bin_path_not_found
181
- assert_raises(Gem::GemNotFoundException) do
182
- Gem.bin_path('non-existent', 'blah')
183
- end
184
- end
185
-
186
- def test_self_bin_path_bin_file_gone_in_latest
187
- install_specs util_exec_gem
188
- spec = util_spec 'a', '10' do |s|
189
- s.executables = []
190
- end
191
- install_specs spec
192
- # Should not find a-10's non-abin (bug)
193
- assert_equal @abin_path, Gem.bin_path('a', 'abin')
194
- end
195
-
196
- def test_self_bindir
197
- assert_equal File.join(@gemhome, 'bin'), Gem.bindir
198
- assert_equal File.join(@gemhome, 'bin'), Gem.bindir(Gem.dir)
199
- assert_equal File.join(@gemhome, 'bin'), Gem.bindir(Pathname.new(Gem.dir))
200
- end
201
-
202
- def test_self_bindir_default_dir
203
- default = Gem.default_dir
204
-
205
- assert_equal Gem.default_bindir, Gem.bindir(default)
206
- end
207
-
208
- def test_self_clear_paths
209
- assert_match(/gemhome$/, Gem.dir)
210
- assert_match(/gemhome$/, Gem.path.first)
211
-
212
- Gem.clear_paths
213
-
214
- assert_nil Gem::Specification.send(:class_variable_get, :@@all)
215
- end
216
-
217
- def test_self_configuration
218
- expected = Gem::ConfigFile.new []
219
- Gem.configuration = nil
220
-
221
- assert_equal expected, Gem.configuration
222
- end
223
-
224
- def test_self_datadir
225
- foo = nil
226
-
227
- Dir.chdir @tempdir do
228
- FileUtils.mkdir_p 'data'
229
- File.open File.join('data', 'foo.txt'), 'w' do |fp|
230
- fp.puts 'blah'
231
- end
232
-
233
- foo = util_spec 'foo' do |s| s.files = %w[data/foo.txt] end
234
- install_gem foo
235
- end
236
-
237
- gem 'foo'
238
-
239
- expected = File.join @gemhome, 'gems', foo.full_name, 'data', 'foo'
240
-
241
- assert_equal expected, Gem.datadir('foo')
242
- end
243
-
244
- def test_self_datadir_nonexistent_package
245
- assert_nil Gem.datadir('xyzzy')
246
- end
247
-
248
- def test_self_default_exec_format
249
- ruby_install_name 'ruby' do
250
- assert_equal '%s', Gem.default_exec_format
251
- end
252
- end
253
-
254
- def test_self_default_exec_format_18
255
- ruby_install_name 'ruby18' do
256
- assert_equal '%s18', Gem.default_exec_format
257
- end
258
- end
259
-
260
- def test_self_default_exec_format_jruby
261
- ruby_install_name 'jruby' do
262
- assert_equal 'j%s', Gem.default_exec_format
263
- end
264
- end
265
-
266
- def test_default_path
267
- orig_vendordir = RbConfig::CONFIG['vendordir']
268
- RbConfig::CONFIG['vendordir'] = File.join @tempdir, 'vendor'
269
-
270
- FileUtils.rm_rf Gem.user_home
271
-
272
- expected = [Gem.default_dir]
273
-
274
- assert_equal expected, Gem.default_path
275
- ensure
276
- RbConfig::CONFIG['vendordir'] = orig_vendordir
277
- end
278
-
279
- def test_default_path_missing_vendor
280
- orig_vendordir = RbConfig::CONFIG['vendordir']
281
- RbConfig::CONFIG.delete 'vendordir'
282
-
283
- FileUtils.rm_rf Gem.user_home
284
-
285
- expected = [Gem.default_dir]
286
-
287
- assert_equal expected, Gem.default_path
288
- ensure
289
- RbConfig::CONFIG['vendordir'] = orig_vendordir
290
- end
291
-
292
- def test_default_path_user_home
293
- orig_vendordir = RbConfig::CONFIG['vendordir']
294
- RbConfig::CONFIG['vendordir'] = File.join @tempdir, 'vendor'
295
-
296
- expected = [Gem.user_dir, Gem.default_dir]
297
-
298
- assert_equal expected, Gem.default_path
299
- ensure
300
- RbConfig::CONFIG['vendordir'] = orig_vendordir
301
- end
302
-
303
- def test_default_path_vendor_dir
304
- orig_vendordir = RbConfig::CONFIG['vendordir']
305
- RbConfig::CONFIG['vendordir'] = File.join @tempdir, 'vendor'
306
-
307
- FileUtils.mkdir_p Gem.vendor_dir
308
-
309
- FileUtils.rm_rf Gem.user_home
310
-
311
- expected = [Gem.default_dir, Gem.vendor_dir]
312
-
313
- assert_equal expected, Gem.default_path
314
- ensure
315
- RbConfig::CONFIG['vendordir'] = orig_vendordir
316
- end
317
-
318
- def test_self_default_sources
319
- assert_equal %w[https://rubygems.org/], Gem.default_sources
320
- end
321
-
322
- def test_self_detect_gemdeps
323
- skip 'Insecure operation - chdir' if RUBY_VERSION <= "1.8.7"
324
- rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], '-'
325
-
326
- FileUtils.mkdir_p 'detect/a/b'
327
- FileUtils.mkdir_p 'detect/a/Isolate'
328
-
329
- FileUtils.touch 'detect/Isolate'
330
-
331
- begin
332
- Dir.chdir 'detect/a/b'
333
-
334
- assert_empty Gem.detect_gemdeps
335
- ensure
336
- Dir.chdir @tempdir
337
- end
338
- ensure
339
- ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
340
- end
341
-
342
- def test_self_dir
343
- assert_equal @gemhome, Gem.dir
344
- end
345
-
346
- def test_self_ensure_gem_directories
347
- FileUtils.rm_r @gemhome
348
- Gem.use_paths @gemhome
349
-
350
- Gem.ensure_gem_subdirectories @gemhome
351
-
352
- assert_path_exists File.join @gemhome, 'build_info'
353
- assert_path_exists File.join @gemhome, 'cache'
354
- assert_path_exists File.join @gemhome, 'doc'
355
- assert_path_exists File.join @gemhome, 'extensions'
356
- assert_path_exists File.join @gemhome, 'gems'
357
- assert_path_exists File.join @gemhome, 'specifications'
358
- end
359
-
360
- def test_self_ensure_gem_directories_permissions
361
- FileUtils.rm_r @gemhome
362
- Gem.use_paths @gemhome
363
-
364
- Gem.ensure_gem_subdirectories @gemhome, 0750
365
-
366
- assert File.directory? File.join(@gemhome, "cache")
367
-
368
- assert_equal 0750, File::Stat.new(@gemhome).mode & 0777
369
- assert_equal 0750, File::Stat.new(File.join(@gemhome, "cache")).mode & 0777
370
- end unless win_platform?
371
-
372
- def test_self_ensure_gem_directories_safe_permissions
373
- FileUtils.rm_r @gemhome
374
- Gem.use_paths @gemhome
375
-
376
- old_umask = File.umask
377
- File.umask 0
378
- Gem.ensure_gem_subdirectories @gemhome
379
-
380
- assert_equal 0, File::Stat.new(@gemhome).mode & 002
381
- assert_equal 0, File::Stat.new(File.join(@gemhome, "cache")).mode & 002
382
- ensure
383
- File.umask old_umask
384
- end unless win_platform?
385
-
386
- def test_self_ensure_gem_directories_missing_parents
387
- gemdir = File.join @tempdir, 'a/b/c/gemdir'
388
- FileUtils.rm_rf File.join(@tempdir, 'a') rescue nil
389
- refute File.exist?(File.join(@tempdir, 'a')),
390
- "manually remove #{File.join @tempdir, 'a'}, tests are broken"
391
- Gem.use_paths gemdir
392
-
393
- Gem.ensure_gem_subdirectories gemdir
394
-
395
- assert File.directory?(util_cache_dir)
396
- end
397
-
398
- unless win_platform? then # only for FS that support write protection
399
- def test_self_ensure_gem_directories_write_protected
400
- gemdir = File.join @tempdir, "egd"
401
- FileUtils.rm_r gemdir rescue nil
402
- refute File.exist?(gemdir), "manually remove #{gemdir}, tests are broken"
403
- FileUtils.mkdir_p gemdir
404
- FileUtils.chmod 0400, gemdir
405
- Gem.use_paths gemdir
406
-
407
- Gem.ensure_gem_subdirectories gemdir
408
-
409
- refute File.exist?(util_cache_dir)
410
- ensure
411
- FileUtils.chmod 0600, gemdir
412
- end
413
-
414
- def test_self_ensure_gem_directories_write_protected_parents
415
- parent = File.join(@tempdir, "egd")
416
- gemdir = "#{parent}/a/b/c"
417
-
418
- FileUtils.rm_r parent rescue nil
419
- refute File.exist?(parent), "manually remove #{parent}, tests are broken"
420
- FileUtils.mkdir_p parent
421
- FileUtils.chmod 0400, parent
422
- Gem.use_paths(gemdir)
423
-
424
- Gem.ensure_gem_subdirectories gemdir
425
-
426
- refute File.exist? File.join(gemdir, "gems")
427
- ensure
428
- FileUtils.chmod 0600, parent
429
- end
430
- end
431
-
432
- def test_self_extension_dir_shared
433
- enable_shared 'yes' do
434
- assert_equal Gem.ruby_api_version, Gem.extension_api_version
435
- end
436
- end
437
-
438
- def test_self_extension_dir_static
439
- enable_shared 'no' do
440
- assert_equal "#{Gem.ruby_api_version}-static", Gem.extension_api_version
441
- end
442
- end
443
-
444
- def test_self_find_files
445
- cwd = File.expand_path("test/rubygems", @@project_dir)
446
- $LOAD_PATH.unshift cwd
447
-
448
- discover_path = File.join 'lib', 'sff', 'discover.rb'
449
-
450
- foo1, foo2 = %w(1 2).map { |version|
451
- spec = quick_gem 'sff', version do |s|
452
- s.files << discover_path
453
- end
454
-
455
- write_file(File.join 'gems', spec.full_name, discover_path) do |fp|
456
- fp.puts "# #{spec.full_name}"
457
- end
458
-
459
- spec
460
- }
461
-
462
- Gem.refresh
463
-
464
- expected = [
465
- File.expand_path('test/rubygems/sff/discover.rb', @@project_dir),
466
- File.join(foo2.full_gem_path, discover_path),
467
- File.join(foo1.full_gem_path, discover_path),
468
- ]
469
-
470
- assert_equal expected, Gem.find_files('sff/discover')
471
- assert_equal expected, Gem.find_files('sff/**.rb'), '[ruby-core:31730]'
472
- ensure
473
- assert_equal cwd, $LOAD_PATH.shift
474
- end
475
-
476
- def test_self_find_files_with_gemfile
477
- # write_file(File.join Dir.pwd, 'Gemfile') fails on travis 1.8.7 with $SAFE=1
478
- skip if RUBY_VERSION <= "1.8.7"
479
-
480
- cwd = File.expand_path("test/rubygems", @@project_dir)
481
- $LOAD_PATH.unshift cwd
482
-
483
- discover_path = File.join 'lib', 'sff', 'discover.rb'
484
-
485
- foo1, _ = %w(1 2).map { |version|
486
- spec = quick_gem 'sff', version do |s|
487
- s.files << discover_path
488
- end
489
-
490
- write_file(File.join 'gems', spec.full_name, discover_path) do |fp|
491
- fp.puts "# #{spec.full_name}"
492
- end
493
-
494
- spec
495
- }
496
- Gem.refresh
497
-
498
- write_file(File.join Dir.pwd, 'Gemfile') do |fp|
499
- fp.puts "source 'https://rubygems.org'"
500
- fp.puts "gem '#{foo1.name}', '#{foo1.version}'"
501
- end
502
- Gem.use_gemdeps(File.join Dir.pwd, 'Gemfile')
503
-
504
- expected = [
505
- File.expand_path('test/rubygems/sff/discover.rb', @@project_dir),
506
- File.join(foo1.full_gem_path, discover_path)
507
- ]
508
-
509
- assert_equal expected, Gem.find_files('sff/discover')
510
- assert_equal expected, Gem.find_files('sff/**.rb'), '[ruby-core:31730]'
511
- ensure
512
- assert_equal cwd, $LOAD_PATH.shift unless RUBY_VERSION <= "1.8.7"
513
- end
514
-
515
- def test_self_find_latest_files
516
- cwd = File.expand_path("test/rubygems", @@project_dir)
517
- $LOAD_PATH.unshift cwd
518
-
519
- discover_path = File.join 'lib', 'sff', 'discover.rb'
520
-
521
- _, foo2 = %w(1 2).map { |version|
522
- spec = quick_gem 'sff', version do |s|
523
- s.files << discover_path
524
- end
525
-
526
- write_file(File.join 'gems', spec.full_name, discover_path) do |fp|
527
- fp.puts "# #{spec.full_name}"
528
- end
529
-
530
- spec
531
- }
532
-
533
- Gem.refresh
534
-
535
- expected = [
536
- File.expand_path('test/rubygems/sff/discover.rb', @@project_dir),
537
- File.join(foo2.full_gem_path, discover_path),
538
- ]
539
-
540
- assert_equal expected, Gem.find_latest_files('sff/discover')
541
- assert_equal expected, Gem.find_latest_files('sff/**.rb'), '[ruby-core:31730]'
542
- ensure
543
- assert_equal cwd, $LOAD_PATH.shift
544
- end
545
-
546
- def test_self_latest_spec_for
547
- gems = spec_fetcher do |fetcher|
548
- fetcher.spec 'a', 1
549
- fetcher.spec 'a', '3.a'
550
- fetcher.spec 'a', 2
551
- end
552
-
553
- spec = Gem.latest_spec_for 'a'
554
-
555
- assert_equal gems['a-2'], spec
556
- end
557
-
558
- def test_self_latest_rubygems_version
559
- spec_fetcher do |fetcher|
560
- fetcher.spec 'rubygems-update', '1.8.23'
561
- fetcher.spec 'rubygems-update', '1.8.24'
562
- fetcher.spec 'rubygems-update', '2.0.0.preview3'
563
- end
564
-
565
- version = Gem.latest_rubygems_version
566
-
567
- assert_equal Gem::Version.new('1.8.24'), version
568
- end
569
-
570
- def test_self_latest_version_for
571
- spec_fetcher do |fetcher|
572
- fetcher.spec 'a', 1
573
- fetcher.spec 'a', 2
574
- fetcher.spec 'a', '3.a'
575
- end
576
-
577
- version = Gem.latest_version_for 'a'
578
-
579
- assert_equal Gem::Version.new(2), version
580
- end
581
-
582
- def test_self_loaded_specs
583
- foo = util_spec 'foo'
584
- install_gem foo
585
-
586
- foo.activate
587
-
588
- assert_equal true, Gem.loaded_specs.keys.include?('foo')
589
- end
590
-
591
- def util_path
592
- ENV.delete "GEM_HOME"
593
- ENV.delete "GEM_PATH"
594
- end
595
-
596
- def test_self_path
597
- assert_equal [Gem.dir], Gem.path
598
- end
599
-
600
- def test_self_path_default
601
- util_path
602
-
603
- if defined?(APPLE_GEM_HOME)
604
- orig_APPLE_GEM_HOME = APPLE_GEM_HOME
605
- Object.send :remove_const, :APPLE_GEM_HOME
606
- end
607
-
608
- Gem.instance_variable_set :@paths, nil
609
-
610
- assert_equal [Gem.default_path, Gem.dir].flatten.uniq, Gem.path
611
- ensure
612
- Object.const_set :APPLE_GEM_HOME, orig_APPLE_GEM_HOME if orig_APPLE_GEM_HOME
613
- end
614
-
615
- unless win_platform?
616
- def test_self_path_APPLE_GEM_HOME
617
- util_path
618
-
619
- Gem.clear_paths
620
- apple_gem_home = File.join @tempdir, 'apple_gem_home'
621
-
622
- old, $-w = $-w, nil
623
- Object.const_set :APPLE_GEM_HOME, apple_gem_home
624
- $-w = old
625
-
626
- assert_includes Gem.path, apple_gem_home
627
- ensure
628
- Object.send :remove_const, :APPLE_GEM_HOME
629
- end
630
-
631
- def test_self_path_APPLE_GEM_HOME_GEM_PATH
632
- Gem.clear_paths
633
- ENV['GEM_PATH'] = @gemhome
634
- apple_gem_home = File.join @tempdir, 'apple_gem_home'
635
- Gem.const_set :APPLE_GEM_HOME, apple_gem_home
636
-
637
- refute Gem.path.include?(apple_gem_home)
638
- ensure
639
- Gem.send :remove_const, :APPLE_GEM_HOME
640
- end
641
- end
642
-
643
- def test_self_path_ENV_PATH
644
- path_count = Gem.path.size
645
- Gem.clear_paths
646
-
647
- ENV['GEM_PATH'] = @additional.join(File::PATH_SEPARATOR)
648
-
649
- assert_equal @additional, Gem.path[0,2]
650
-
651
- assert_equal path_count + @additional.size, Gem.path.size,
652
- "extra path components: #{Gem.path[2..-1].inspect}"
653
- assert_equal Gem.dir, Gem.path.last
654
- end
655
-
656
- def test_self_path_duplicate
657
- Gem.clear_paths
658
- util_ensure_gem_dirs
659
- dirs = @additional + [@gemhome] + [File.join(@tempdir, 'a')]
660
-
661
- ENV['GEM_HOME'] = @gemhome
662
- ENV['GEM_PATH'] = dirs.join File::PATH_SEPARATOR
663
-
664
- assert_equal @gemhome, Gem.dir
665
-
666
- paths = [Gem.dir]
667
- assert_equal @additional + paths, Gem.path
668
- end
669
-
670
- def test_self_path_overlap
671
- Gem.clear_paths
672
-
673
- util_ensure_gem_dirs
674
- ENV['GEM_HOME'] = @gemhome
675
- ENV['GEM_PATH'] = @additional.join(File::PATH_SEPARATOR)
676
-
677
- assert_equal @gemhome, Gem.dir
678
-
679
- paths = [Gem.dir]
680
- assert_equal @additional + paths, Gem.path
681
- end
682
-
683
- def test_self_platforms
684
- assert_equal [Gem::Platform::RUBY, Gem::Platform.local], Gem.platforms
685
- end
686
-
687
- def test_self_prefix
688
- assert_equal @@project_dir, Gem.prefix
689
- end
690
-
691
- def test_self_prefix_libdir
692
- orig_libdir = RbConfig::CONFIG['libdir']
693
- RbConfig::CONFIG['libdir'] = @@project_dir
694
-
695
- assert_nil Gem.prefix
696
- ensure
697
- RbConfig::CONFIG['libdir'] = orig_libdir
698
- end
699
-
700
- def test_self_prefix_sitelibdir
701
- orig_sitelibdir = RbConfig::CONFIG['sitelibdir']
702
- RbConfig::CONFIG['sitelibdir'] = @@project_dir
703
-
704
- assert_nil Gem.prefix
705
- ensure
706
- RbConfig::CONFIG['sitelibdir'] = orig_sitelibdir
707
- end
708
-
709
- def test_self_read_binary
710
- open 'test', 'w' do |io|
711
- io.write "\xCF\x80"
712
- end
713
-
714
- assert_equal ["\xCF", "\x80"], Gem.read_binary('test').chars.to_a
715
-
716
- skip 'chmod not supported' if Gem.win_platform?
717
-
718
- begin
719
- File.chmod 0444, 'test'
720
-
721
- assert_equal ["\xCF", "\x80"], Gem.read_binary('test').chars.to_a
722
- ensure
723
- File.chmod 0644, 'test'
724
- end
725
- end
726
-
727
- def test_self_refresh
728
- skip 'Insecure operation - mkdir' if RUBY_VERSION <= "1.8.7"
729
- util_make_gems
730
-
731
- a1_spec = @a1.spec_file
732
- moved_path = File.join @tempdir, File.basename(a1_spec)
733
-
734
- FileUtils.mv a1_spec, moved_path
735
-
736
- Gem.refresh
737
-
738
- refute_includes Gem::Specification.all_names, @a1.full_name
739
-
740
- FileUtils.mv moved_path, a1_spec
741
-
742
- Gem.refresh
743
-
744
- assert_includes Gem::Specification.all_names, @a1.full_name
745
- end
746
-
747
- def test_self_refresh_keeps_loaded_specs_activated
748
- skip 'Insecure operation - mkdir' if RUBY_VERSION <= "1.8.7"
749
- util_make_gems
750
-
751
- a1_spec = @a1.spec_file
752
- moved_path = File.join @tempdir, File.basename(a1_spec)
753
-
754
- FileUtils.mv a1_spec, moved_path
755
-
756
- Gem.refresh
757
-
758
- s = Gem::Specification.first
759
- s.activate
760
-
761
- Gem.refresh
762
-
763
- Gem::Specification.each{|spec| assert spec.activated? if spec == s}
764
-
765
- Gem.loaded_specs.delete(s)
766
- Gem.refresh
767
- end
768
-
769
- def test_self_ruby_escaping_spaces_in_path
770
- orig_ruby = Gem.ruby
771
- orig_bindir = RbConfig::CONFIG['bindir']
772
- orig_ruby_install_name = RbConfig::CONFIG['ruby_install_name']
773
- orig_exe_ext = RbConfig::CONFIG['EXEEXT']
774
-
775
- RbConfig::CONFIG['bindir'] = "C:/Ruby 1.8/bin"
776
- RbConfig::CONFIG['ruby_install_name'] = "ruby"
777
- RbConfig::CONFIG['EXEEXT'] = ".exe"
778
- Gem.instance_variable_set("@ruby", nil)
779
-
780
- assert_equal "\"C:/Ruby 1.8/bin/ruby.exe\"", Gem.ruby
781
- ensure
782
- Gem.instance_variable_set("@ruby", orig_ruby)
783
- RbConfig::CONFIG['bindir'] = orig_bindir
784
- RbConfig::CONFIG['ruby_install_name'] = orig_ruby_install_name
785
- RbConfig::CONFIG['EXEEXT'] = orig_exe_ext
786
- end
787
-
788
- def test_self_ruby_path_without_spaces
789
- orig_ruby = Gem.ruby
790
- orig_bindir = RbConfig::CONFIG['bindir']
791
- orig_ruby_install_name = RbConfig::CONFIG['ruby_install_name']
792
- orig_exe_ext = RbConfig::CONFIG['EXEEXT']
793
-
794
- RbConfig::CONFIG['bindir'] = "C:/Ruby18/bin"
795
- RbConfig::CONFIG['ruby_install_name'] = "ruby"
796
- RbConfig::CONFIG['EXEEXT'] = ".exe"
797
- Gem.instance_variable_set("@ruby", nil)
798
-
799
- assert_equal "C:/Ruby18/bin/ruby.exe", Gem.ruby
800
- ensure
801
- Gem.instance_variable_set("@ruby", orig_ruby)
802
- RbConfig::CONFIG['bindir'] = orig_bindir
803
- RbConfig::CONFIG['ruby_install_name'] = orig_ruby_install_name
804
- RbConfig::CONFIG['EXEEXT'] = orig_exe_ext
805
- end
806
-
807
- def test_self_ruby_api_version
808
- orig_ruby_version, RbConfig::CONFIG['ruby_version'] = RbConfig::CONFIG['ruby_version'], '1.2.3'
809
-
810
- Gem.instance_variable_set :@ruby_api_version, nil
811
-
812
- assert_equal '1.2.3', Gem.ruby_api_version
813
- ensure
814
- Gem.instance_variable_set :@ruby_api_version, nil
815
-
816
- RbConfig::CONFIG['ruby_version'] = orig_ruby_version
817
- end
818
-
819
- def test_self_ruby_version_1_8_5
820
- util_set_RUBY_VERSION '1.8.5'
821
-
822
- assert_equal Gem::Version.new('1.8.5'), Gem.ruby_version
823
- ensure
824
- util_restore_RUBY_VERSION
825
- end
826
-
827
- def test_self_ruby_version_1_8_6p287
828
- util_set_RUBY_VERSION '1.8.6', 287
829
-
830
- assert_equal Gem::Version.new('1.8.6.287'), Gem.ruby_version
831
- ensure
832
- util_restore_RUBY_VERSION
833
- end
834
-
835
- def test_self_ruby_version_1_9_2dev_r23493
836
- util_set_RUBY_VERSION '1.9.2', -1, 23493
837
-
838
- assert_equal Gem::Version.new('1.9.2.dev.23493'), Gem.ruby_version
839
- ensure
840
- util_restore_RUBY_VERSION
841
- end
842
-
843
- def test_self_rubygems_version
844
- assert_equal Gem::Version.new(Gem::VERSION), Gem.rubygems_version
845
- end
846
-
847
- def test_self_paths_eq
848
- other = File.join @tempdir, 'other'
849
- path = [@userhome, other].join File::PATH_SEPARATOR
850
-
851
- #
852
- # FIXME remove after fixing test_case
853
- #
854
- ENV["GEM_HOME"] = @gemhome
855
- Gem.paths = { "GEM_PATH" => path }
856
-
857
- assert_equal [@userhome, other, @gemhome], Gem.path
858
- end
859
-
860
- def test_self_paths_eq_nonexistent_home
861
- ENV['GEM_HOME'] = @gemhome
862
- Gem.clear_paths
863
-
864
- other = File.join @tempdir, 'other'
865
-
866
- ENV['HOME'] = other
867
-
868
- Gem.paths = { "GEM_PATH" => other }
869
-
870
- assert_equal [other, @gemhome], Gem.path
871
- end
872
-
873
- def test_self_post_build
874
- assert_equal 1, Gem.post_build_hooks.length
875
-
876
- Gem.post_build do |installer| end
877
-
878
- assert_equal 2, Gem.post_build_hooks.length
879
- end
880
-
881
- def test_self_post_install
882
- assert_equal 1, Gem.post_install_hooks.length
883
-
884
- Gem.post_install do |installer| end
885
-
886
- assert_equal 2, Gem.post_install_hooks.length
887
- end
888
-
889
- def test_self_done_installing
890
- assert_empty Gem.done_installing_hooks
891
-
892
- Gem.done_installing do |gems| end
893
-
894
- assert_equal 1, Gem.done_installing_hooks.length
895
- end
896
-
897
- def test_self_post_reset
898
- assert_empty Gem.post_reset_hooks
899
-
900
- Gem.post_reset { }
901
-
902
- assert_equal 1, Gem.post_reset_hooks.length
903
- end
904
-
905
- def test_self_post_uninstall
906
- assert_equal 1, Gem.post_uninstall_hooks.length
907
-
908
- Gem.post_uninstall do |installer| end
909
-
910
- assert_equal 2, Gem.post_uninstall_hooks.length
911
- end
912
-
913
- def test_self_pre_install
914
- assert_equal 1, Gem.pre_install_hooks.length
915
-
916
- Gem.pre_install do |installer| end
917
-
918
- assert_equal 2, Gem.pre_install_hooks.length
919
- end
920
-
921
- def test_self_pre_reset
922
- assert_empty Gem.pre_reset_hooks
923
-
924
- Gem.pre_reset { }
925
-
926
- assert_equal 1, Gem.pre_reset_hooks.length
927
- end
928
-
929
- def test_self_pre_uninstall
930
- assert_equal 1, Gem.pre_uninstall_hooks.length
931
-
932
- Gem.pre_uninstall do |installer| end
933
-
934
- assert_equal 2, Gem.pre_uninstall_hooks.length
935
- end
936
-
937
- def test_self_sources
938
- assert_equal %w[http://gems.example.com/], Gem.sources
939
- end
940
-
941
- def test_try_activate_returns_true_for_activated_specs
942
- b = util_spec 'b', '1.0' do |spec|
943
- spec.files << 'lib/b.rb'
944
- end
945
- install_specs b
946
-
947
- assert Gem.try_activate('b'), 'try_activate should return true'
948
- assert Gem.try_activate('b'), 'try_activate should still return true'
949
- end
950
-
951
- def test_self_try_activate_missing_dep
952
- b = util_spec 'b', '1.0'
953
- a = util_spec 'a', '1.0', 'b' => '>= 1.0'
954
-
955
- install_specs b, a
956
- uninstall_gem b
957
-
958
- a_file = File.join a.gem_dir, 'lib', 'a_file.rb'
959
-
960
- write_file a_file do |io|
961
- io.puts '# a_file.rb'
962
- end
963
-
964
- e = assert_raises Gem::LoadError do
965
- Gem.try_activate 'a_file'
966
- end
967
-
968
- assert_match %r%Could not find 'b' %, e.message
969
- end
970
-
971
- def test_self_try_activate_missing_prerelease
972
- b = util_spec 'b', '1.0rc1'
973
- a = util_spec 'a', '1.0rc1', 'b' => '1.0rc1'
974
-
975
- install_specs b, a
976
- uninstall_gem b
977
-
978
- a_file = File.join a.gem_dir, 'lib', 'a_file.rb'
979
-
980
- write_file a_file do |io|
981
- io.puts '# a_file.rb'
982
- end
983
-
984
- e = assert_raises Gem::LoadError do
985
- Gem.try_activate 'a_file'
986
- end
987
-
988
- assert_match %r%Could not find 'b' \(= 1.0rc1\)%, e.message
989
- end
990
-
991
- def test_self_try_activate_missing_extensions
992
- spec = util_spec 'ext', '1' do |s|
993
- s.extensions = %w[ext/extconf.rb]
994
- s.mark_version
995
- s.installed_by_version = v('2.2')
996
- end
997
-
998
- # write the spec without install to simulate a failed install
999
- write_file spec.spec_file do |io|
1000
- io.write spec.to_ruby_for_cache
1001
- end
1002
-
1003
- _, err = capture_io do
1004
- refute Gem.try_activate 'nonexistent'
1005
- end
1006
-
1007
- expected = "Ignoring ext-1 because its extensions are not built. " +
1008
- "Try: gem pristine ext --version 1\n"
1009
-
1010
- assert_equal expected, err
1011
- end
1012
-
1013
- def test_self_use_paths_with_nils
1014
- orig_home = ENV.delete 'GEM_HOME'
1015
- orig_path = ENV.delete 'GEM_PATH'
1016
- Gem.use_paths nil, nil
1017
- assert_equal Gem.default_dir, Gem.paths.home
1018
- assert_equal (Gem.default_path + [Gem.paths.home]).uniq, Gem.paths.path
1019
- ensure
1020
- ENV['GEM_HOME'] = orig_home
1021
- ENV['GEM_PATH'] = orig_path
1022
- end
1023
-
1024
- def test_setting_paths_does_not_warn_about_unknown_keys
1025
- stdout, stderr = capture_io do
1026
- Gem.paths = { 'foo' => [],
1027
- 'bar' => Object.new,
1028
- 'GEM_HOME' => Gem.paths.home,
1029
- 'GEM_PATH' => 'foo' }
1030
- end
1031
- assert_equal ['foo', Gem.paths.home], Gem.paths.path
1032
- assert_equal '', stderr
1033
- assert_equal '', stdout
1034
- end
1035
-
1036
- def test_setting_paths_does_not_mutate_parameter_object
1037
- Gem.paths = { 'GEM_HOME' => Gem.paths.home,
1038
- 'GEM_PATH' => 'foo' }.freeze
1039
- assert_equal ['foo', Gem.paths.home], Gem.paths.path
1040
- end
1041
-
1042
- def test_deprecated_paths=
1043
- stdout, stderr = capture_io do
1044
- Gem.paths = { 'GEM_HOME' => Gem.paths.home,
1045
- 'GEM_PATH' => [Gem.paths.home, 'foo'] }
1046
- end
1047
- assert_equal [Gem.paths.home, 'foo'], Gem.paths.path
1048
- assert_match(/Array values in the parameter are deprecated. Please use a String or nil/, stderr)
1049
- assert_equal '', stdout
1050
- end
1051
-
1052
- def test_self_use_paths
1053
- util_ensure_gem_dirs
1054
-
1055
- Gem.use_paths @gemhome, @additional
1056
-
1057
- assert_equal @gemhome, Gem.dir
1058
- assert_equal @additional + [Gem.dir], Gem.path
1059
- end
1060
-
1061
- def test_self_user_dir
1062
- parts = [@userhome, '.gem', Gem.ruby_engine]
1063
- parts << RbConfig::CONFIG['ruby_version'] unless RbConfig::CONFIG['ruby_version'].empty?
1064
-
1065
- assert_equal File.join(parts), Gem.user_dir
1066
- end
1067
-
1068
- def test_self_user_home
1069
- if ENV['HOME'] then
1070
- assert_equal ENV['HOME'], Gem.user_home
1071
- else
1072
- assert true, 'count this test'
1073
- end
1074
- end
1075
-
1076
- def test_self_needs
1077
- util_clear_gems
1078
- a = util_spec "a", "1"
1079
- b = util_spec "b", "1", "c" => nil
1080
- c = util_spec "c", "2"
1081
-
1082
- install_specs a, c, b
1083
-
1084
- Gem.needs do |r|
1085
- r.gem "a"
1086
- r.gem "b", "= 1"
1087
- end
1088
-
1089
- activated = Gem::Specification.map { |x| x.full_name }
1090
-
1091
- assert_equal %w!a-1 b-1 c-2!, activated.sort
1092
- end
1093
-
1094
- def test_self_needs_picks_up_unresolved_deps
1095
- skip 'loading from unsafe file' if RUBY_VERSION <= "1.8.7"
1096
- save_loaded_features do
1097
- util_clear_gems
1098
- a = util_spec "a", "1"
1099
- b = util_spec "b", "1", "c" => nil
1100
- c = util_spec "c", "2"
1101
- d = new_spec "d", "1", {'e' => '= 1'}, "lib/d.rb"
1102
- e = util_spec "e", "1"
1103
-
1104
- install_specs a, c, b, e, d
1105
-
1106
- Gem.needs do |r|
1107
- r.gem "a"
1108
- r.gem "b", "= 1"
1109
-
1110
- require 'd'
1111
- end
1112
-
1113
- assert_equal %w!a-1 b-1 c-2 d-1 e-1!, loaded_spec_names
1114
- end
1115
- end
1116
-
1117
- def test_self_gunzip
1118
- input = "\x1F\x8B\b\0\xED\xA3\x1AQ\0\x03\xCBH" +
1119
- "\xCD\xC9\xC9\a\0\x86\xA6\x106\x05\0\0\0"
1120
-
1121
- output = Gem.gunzip input
1122
-
1123
- assert_equal 'hello', output
1124
-
1125
- return unless Object.const_defined? :Encoding
1126
-
1127
- assert_equal Encoding::BINARY, output.encoding
1128
- end
1129
-
1130
- def test_self_gzip
1131
- input = 'hello'
1132
-
1133
- output = Gem.gzip input
1134
-
1135
- zipped = StringIO.new output
1136
-
1137
- assert_equal 'hello', Zlib::GzipReader.new(zipped).read
1138
-
1139
- return unless Object.const_defined? :Encoding
1140
-
1141
- assert_equal Encoding::BINARY, output.encoding
1142
- end
1143
-
1144
- if Gem.win_platform? && '1.9' > RUBY_VERSION
1145
- # Ruby 1.9 properly handles ~ path expansion, so no need to run such tests.
1146
- def test_self_user_home_userprofile
1147
-
1148
- Gem.clear_paths
1149
-
1150
- # safe-keep env variables
1151
- orig_home, orig_user_profile = ENV['HOME'], ENV['USERPROFILE']
1152
-
1153
- # prepare for the test
1154
- ENV.delete('HOME')
1155
- ENV['USERPROFILE'] = "W:\\Users\\RubyUser"
1156
-
1157
- assert_equal 'W:/Users/RubyUser', Gem.user_home
1158
-
1159
- ensure
1160
- ENV['HOME'] = orig_home
1161
- ENV['USERPROFILE'] = orig_user_profile
1162
- end
1163
-
1164
- def test_self_user_home_user_drive_and_path
1165
- Gem.clear_paths
1166
-
1167
- # safe-keep env variables
1168
- orig_home, orig_user_profile = ENV['HOME'], ENV['USERPROFILE']
1169
- orig_home_drive, orig_home_path = ENV['HOMEDRIVE'], ENV['HOMEPATH']
1170
-
1171
- # prepare the environment
1172
- ENV.delete('HOME')
1173
- ENV.delete('USERPROFILE')
1174
- ENV['HOMEDRIVE'] = 'Z:'
1175
- ENV['HOMEPATH'] = "\\Users\\RubyUser"
1176
-
1177
- assert_equal 'Z:/Users/RubyUser', Gem.user_home
1178
-
1179
- ensure
1180
- ENV['HOME'] = orig_home
1181
- ENV['USERPROFILE'] = orig_user_profile
1182
- ENV['HOMEDRIVE'] = orig_home_drive
1183
- ENV['HOMEPATH'] = orig_home_path
1184
- end
1185
- end
1186
-
1187
- def test_self_vendor_dir
1188
- expected =
1189
- File.join RbConfig::CONFIG['vendordir'], 'gems',
1190
- RbConfig::CONFIG['ruby_version']
1191
-
1192
- assert_equal expected, Gem.vendor_dir
1193
- end
1194
-
1195
- def test_self_vendor_dir_ENV_GEM_VENDOR
1196
- ENV['GEM_VENDOR'] = File.join @tempdir, 'vendor', 'gems'
1197
-
1198
- assert_equal ENV['GEM_VENDOR'], Gem.vendor_dir
1199
- refute Gem.vendor_dir.frozen?
1200
- end
1201
-
1202
- def test_self_vendor_dir_missing
1203
- orig_vendordir = RbConfig::CONFIG['vendordir']
1204
- RbConfig::CONFIG.delete 'vendordir'
1205
-
1206
- assert_nil Gem.vendor_dir
1207
- ensure
1208
- RbConfig::CONFIG['vendordir'] = orig_vendordir
1209
- end
1210
-
1211
- def test_load_plugins
1212
- skip 'Insecure operation - chdir' if RUBY_VERSION <= "1.8.7"
1213
- plugin_path = File.join "lib", "rubygems_plugin.rb"
1214
-
1215
- Dir.chdir @tempdir do
1216
- FileUtils.mkdir_p 'lib'
1217
- File.open plugin_path, "w" do |fp|
1218
- fp.puts "class TestGem; PLUGINS_LOADED << 'plugin'; end"
1219
- end
1220
-
1221
- foo1 = util_spec 'foo', '1' do |s|
1222
- s.files << plugin_path
1223
- end
1224
-
1225
- install_gem foo1
1226
-
1227
- foo2 = util_spec 'foo', '2' do |s|
1228
- s.files << plugin_path
1229
- end
1230
-
1231
- install_gem foo2
1232
- end
1233
-
1234
- Gem.searcher = nil
1235
- Gem::Specification.reset
1236
-
1237
- gem 'foo'
1238
-
1239
- Gem.load_plugins
1240
-
1241
- assert_equal %w[plugin], PLUGINS_LOADED
1242
- end
1243
-
1244
- def test_load_env_plugins
1245
- with_plugin('load') { Gem.load_env_plugins }
1246
- assert_equal :loaded, TEST_PLUGIN_LOAD rescue nil
1247
-
1248
- util_remove_interrupt_command
1249
-
1250
- # Should attempt to cause a StandardError
1251
- with_plugin('standarderror') { Gem.load_env_plugins }
1252
- assert_equal :loaded, TEST_PLUGIN_STANDARDERROR rescue nil
1253
-
1254
- util_remove_interrupt_command
1255
-
1256
- # Should attempt to cause an Exception
1257
- with_plugin('exception') { Gem.load_env_plugins }
1258
- assert_equal :loaded, TEST_PLUGIN_EXCEPTION rescue nil
1259
- end
1260
-
1261
- def test_gem_path_ordering
1262
- refute_equal Gem.dir, Gem.user_dir
1263
-
1264
- write_file File.join(@tempdir, 'lib', "g.rb") { |fp| fp.puts "" }
1265
- write_file File.join(@tempdir, 'lib', 'm.rb') { |fp| fp.puts "" }
1266
-
1267
- g = new_spec 'g', '1', nil, "lib/g.rb"
1268
- m = new_spec 'm', '1', nil, "lib/m.rb"
1269
-
1270
- install_gem g, :install_dir => Gem.dir
1271
- m0 = install_gem m, :install_dir => Gem.dir
1272
- m1 = install_gem m, :install_dir => Gem.user_dir
1273
-
1274
- assert_equal m0.gem_dir, File.join(Gem.dir, "gems", "m-1")
1275
- assert_equal m1.gem_dir, File.join(Gem.user_dir, "gems", "m-1")
1276
-
1277
- tests = [
1278
- [:dir0, [ Gem.dir, Gem.user_dir], m0],
1279
- [:dir1, [ Gem.user_dir, Gem.dir], m1]
1280
- ]
1281
-
1282
- tests.each do |_name, _paths, expected|
1283
- Gem.use_paths _paths.first, _paths
1284
- Gem::Specification.reset
1285
- Gem.searcher = nil
1286
-
1287
- assert_equal Gem::Dependency.new('m','1').to_specs,
1288
- Gem::Dependency.new('m','1').to_specs.sort
1289
-
1290
- assert_equal \
1291
- [expected.gem_dir],
1292
- Gem::Dependency.new('m','1').to_specs.map(&:gem_dir).sort,
1293
- "Wrong specs for #{_name}"
1294
-
1295
- spec = Gem::Dependency.new('m','1').to_spec
1296
-
1297
- assert_equal \
1298
- File.join(_paths.first, "gems", "m-1"),
1299
- spec.gem_dir,
1300
- "Wrong spec before require for #{_name}"
1301
- refute spec.activated?, "dependency already activated for #{_name}"
1302
-
1303
- gem "m"
1304
-
1305
- spec = Gem::Dependency.new('m','1').to_spec
1306
- assert spec.activated?, "dependency not activated for #{_name}"
1307
-
1308
- assert_equal \
1309
- File.join(_paths.first, "gems", "m-1"),
1310
- spec.gem_dir,
1311
- "Wrong spec after require for #{_name}"
1312
-
1313
- spec.instance_variable_set :@activated, false
1314
- Gem.loaded_specs.delete(spec.name)
1315
- $:.delete(File.join(spec.gem_dir, "lib"))
1316
- end
1317
- end
1318
-
1319
- def test_gem_path_ordering_short
1320
- write_file File.join(@tempdir, 'lib', "g.rb") { |fp| fp.puts "" }
1321
- write_file File.join(@tempdir, 'lib', 'm.rb') { |fp| fp.puts "" }
1322
-
1323
- g = new_spec 'g', '1', nil, "lib/g.rb"
1324
- m = new_spec 'm', '1', nil, "lib/m.rb"
1325
-
1326
- install_gem g, :install_dir => Gem.dir
1327
- install_gem m, :install_dir => Gem.dir
1328
- install_gem m, :install_dir => Gem.user_dir
1329
-
1330
- Gem.use_paths Gem.dir, [ Gem.dir, Gem.user_dir]
1331
-
1332
- assert_equal \
1333
- File.join(Gem.dir, "gems", "m-1"),
1334
- Gem::Dependency.new('m','1').to_spec.gem_dir,
1335
- "Wrong spec selected"
1336
- end
1337
-
1338
- def test_auto_activation_of_specific_gemdeps_file
1339
- util_clear_gems
1340
-
1341
- a = new_spec "a", "1", nil, "lib/a.rb"
1342
- b = new_spec "b", "1", nil, "lib/b.rb"
1343
- c = new_spec "c", "1", nil, "lib/c.rb"
1344
-
1345
- install_specs a, b, c
1346
-
1347
- path = File.join @tempdir, "gem.deps.rb"
1348
-
1349
- File.open path, "w" do |f|
1350
- f.puts "gem 'a'"
1351
- f.puts "gem 'b'"
1352
- f.puts "gem 'c'"
1353
- end
1354
-
1355
- ENV['RUBYGEMS_GEMDEPS'] = path
1356
-
1357
- Gem.detect_gemdeps
1358
-
1359
- assert_equal %w!a-1 b-1 c-1!, loaded_spec_names
1360
- end
1361
-
1362
- def test_auto_activation_of_detected_gemdeps_file
1363
- skip 'Insecure operation - chdir' if RUBY_VERSION <= "1.8.7"
1364
- util_clear_gems
1365
-
1366
- a = new_spec "a", "1", nil, "lib/a.rb"
1367
- b = new_spec "b", "1", nil, "lib/b.rb"
1368
- c = new_spec "c", "1", nil, "lib/c.rb"
1369
-
1370
- install_specs a, b, c
1371
-
1372
- path = File.join @tempdir, "gem.deps.rb"
1373
-
1374
- File.open path, "w" do |f|
1375
- f.puts "gem 'a'"
1376
- f.puts "gem 'b'"
1377
- f.puts "gem 'c'"
1378
- end
1379
-
1380
- ENV['RUBYGEMS_GEMDEPS'] = "-"
1381
-
1382
- assert_equal [a,b,c], Gem.detect_gemdeps.sort_by { |s| s.name }
1383
- end
1384
-
1385
- LIB_PATH = File.expand_path "../../../lib".dup.untaint, __FILE__.dup.untaint
1386
-
1387
- def test_looks_for_gemdeps_files_automatically_on_start
1388
- util_clear_gems
1389
-
1390
- a = new_spec "a", "1", nil, "lib/a.rb"
1391
- b = new_spec "b", "1", nil, "lib/b.rb"
1392
- c = new_spec "c", "1", nil, "lib/c.rb"
1393
-
1394
- install_specs a, b, c
1395
-
1396
- path = File.join @tempdir, "gem.deps.rb"
1397
-
1398
- File.open path, "w" do |f|
1399
- f.puts "gem 'a'"
1400
- f.puts "gem 'b'"
1401
- f.puts "gem 'c'"
1402
- end
1403
-
1404
- path = File.join(@tempdir, "gd-tmp")
1405
- install_gem a, :install_dir => path
1406
- install_gem b, :install_dir => path
1407
- install_gem c, :install_dir => path
1408
-
1409
- ENV['GEM_PATH'] = path
1410
- ENV['RUBYGEMS_GEMDEPS'] = "-"
1411
-
1412
- out = `#{Gem.ruby.dup.untaint} -I "#{LIB_PATH.untaint}" -rubygems -e "p Gem.loaded_specs.values.map(&:full_name).sort"`
1413
-
1414
- assert_equal '["a-1", "b-1", "c-1"]', out.strip
1415
- end
1416
-
1417
- def test_looks_for_gemdeps_files_automatically_on_start_in_parent_dir
1418
- util_clear_gems
1419
-
1420
- a = new_spec "a", "1", nil, "lib/a.rb"
1421
- b = new_spec "b", "1", nil, "lib/b.rb"
1422
- c = new_spec "c", "1", nil, "lib/c.rb"
1423
-
1424
- install_specs a, b, c
1425
-
1426
- path = File.join @tempdir, "gem.deps.rb"
1427
-
1428
- File.open path, "w" do |f|
1429
- f.puts "gem 'a'"
1430
- f.puts "gem 'b'"
1431
- f.puts "gem 'c'"
1432
- end
1433
-
1434
- path = File.join(@tempdir, "gd-tmp")
1435
- install_gem a, :install_dir => path
1436
- install_gem b, :install_dir => path
1437
- install_gem c, :install_dir => path
1438
-
1439
- ENV['GEM_PATH'] = path
1440
- ENV['RUBYGEMS_GEMDEPS'] = "-"
1441
-
1442
- Dir.mkdir "sub1"
1443
- out = Dir.chdir "sub1" do
1444
- `#{Gem.ruby.dup.untaint} -I "#{LIB_PATH.untaint}" -rubygems -e "p Gem.loaded_specs.values.map(&:full_name).sort"`
1445
- end
1446
-
1447
- Dir.rmdir "sub1"
1448
-
1449
- assert_equal '["a-1", "b-1", "c-1"]', out.strip
1450
- end
1451
-
1452
- def test_register_default_spec
1453
- Gem.clear_default_specs
1454
-
1455
- old_style = Gem::Specification.new do |spec|
1456
- spec.files = ["foo.rb", "bar.rb"]
1457
- end
1458
-
1459
- Gem.register_default_spec old_style
1460
-
1461
- assert_equal old_style, Gem.find_unresolved_default_spec("foo.rb")
1462
- assert_equal old_style, Gem.find_unresolved_default_spec("bar.rb")
1463
- assert_equal nil, Gem.find_unresolved_default_spec("baz.rb")
1464
-
1465
- Gem.clear_default_specs
1466
-
1467
- new_style = Gem::Specification.new do |spec|
1468
- spec.files = ["lib/foo.rb", "ext/bar.rb", "bin/exec", "README"]
1469
- spec.require_paths = ["lib", "ext"]
1470
- end
1471
-
1472
- Gem.register_default_spec new_style
1473
-
1474
- assert_equal new_style, Gem.find_unresolved_default_spec("foo.rb")
1475
- assert_equal new_style, Gem.find_unresolved_default_spec("bar.rb")
1476
- assert_equal nil, Gem.find_unresolved_default_spec("exec")
1477
- assert_equal nil, Gem.find_unresolved_default_spec("README")
1478
- end
1479
-
1480
- def test_default_gems_use_full_paths
1481
- begin
1482
- if defined?(RUBY_ENGINE) then
1483
- engine = RUBY_ENGINE
1484
- Object.send :remove_const, :RUBY_ENGINE
1485
- end
1486
- Object.const_set :RUBY_ENGINE, 'ruby'
1487
-
1488
- refute Gem.default_gems_use_full_paths?
1489
- ensure
1490
- Object.send :remove_const, :RUBY_ENGINE
1491
- Object.const_set :RUBY_ENGINE, engine if engine
1492
- end
1493
-
1494
- begin
1495
- if defined?(RUBY_ENGINE) then
1496
- engine = RUBY_ENGINE
1497
- Object.send :remove_const, :RUBY_ENGINE
1498
- end
1499
- Object.const_set :RUBY_ENGINE, 'jruby'
1500
- assert Gem.default_gems_use_full_paths?
1501
- ensure
1502
- Object.send :remove_const, :RUBY_ENGINE
1503
- Object.const_set :RUBY_ENGINE, engine if engine
1504
- end
1505
- end
1506
-
1507
- def test_use_gemdeps
1508
- gem_deps_file = 'gem.deps.rb'.untaint
1509
- spec = util_spec 'a', 1
1510
- install_specs spec
1511
-
1512
- spec = Gem::Specification.find { |s| s == spec }
1513
- refute spec.activated?
1514
-
1515
- open gem_deps_file, 'w' do |io|
1516
- io.write 'gem "a"'
1517
- end
1518
-
1519
- assert_nil Gem.gemdeps
1520
-
1521
- Gem.use_gemdeps gem_deps_file
1522
-
1523
- assert spec.activated?
1524
- refute_nil Gem.gemdeps
1525
- end
1526
-
1527
- def test_use_gemdeps_ENV
1528
- rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], nil
1529
-
1530
- spec = util_spec 'a', 1
1531
-
1532
- refute spec.activated?
1533
-
1534
- open 'gem.deps.rb', 'w' do |io|
1535
- io.write 'gem "a"'
1536
- end
1537
-
1538
- Gem.use_gemdeps
1539
-
1540
- refute spec.activated?
1541
- ensure
1542
- ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
1543
- end
1544
-
1545
- def test_use_gemdeps_argument_missing
1546
- e = assert_raises ArgumentError do
1547
- Gem.use_gemdeps 'gem.deps.rb'
1548
- end
1549
-
1550
- assert_equal 'Unable to find gem dependencies file at gem.deps.rb',
1551
- e.message
1552
- end
1553
-
1554
- def test_use_gemdeps_argument_missing_match_ENV
1555
- rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] =
1556
- ENV['RUBYGEMS_GEMDEPS'], 'gem.deps.rb'
1557
-
1558
- e = assert_raises ArgumentError do
1559
- Gem.use_gemdeps 'gem.deps.rb'
1560
- end
1561
-
1562
- assert_equal 'Unable to find gem dependencies file at gem.deps.rb',
1563
- e.message
1564
- ensure
1565
- ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
1566
- end
1567
-
1568
- def test_use_gemdeps_automatic
1569
- skip 'Insecure operation - chdir' if RUBY_VERSION <= "1.8.7"
1570
- rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], '-'
1571
-
1572
- spec = util_spec 'a', 1
1573
- install_specs spec
1574
- spec = Gem::Specification.find { |s| s == spec }
1575
-
1576
- refute spec.activated?
1577
-
1578
- open 'Gemfile', 'w' do |io|
1579
- io.write 'gem "a"'
1580
- end
1581
-
1582
- Gem.use_gemdeps
1583
-
1584
- assert spec.activated?
1585
- ensure
1586
- ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
1587
- end
1588
-
1589
- def test_use_gemdeps_automatic_missing
1590
- skip 'Insecure operation - chdir' if RUBY_VERSION <= "1.8.7"
1591
- rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], '-'
1592
-
1593
- Gem.use_gemdeps
1594
-
1595
- assert true # count
1596
- ensure
1597
- ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
1598
- end
1599
-
1600
- def test_use_gemdeps_disabled
1601
- rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], ''
1602
-
1603
- spec = util_spec 'a', 1
1604
-
1605
- refute spec.activated?
1606
-
1607
- open 'gem.deps.rb', 'w' do |io|
1608
- io.write 'gem "a"'
1609
- end
1610
-
1611
- Gem.use_gemdeps
1612
-
1613
- refute spec.activated?
1614
- ensure
1615
- ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
1616
- end
1617
-
1618
- def test_use_gemdeps_missing_gem
1619
- skip 'Insecure operation - read' if RUBY_VERSION <= "1.8.7"
1620
- rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], 'x'
1621
-
1622
- open 'x', 'w' do |io|
1623
- io.write 'gem "a"'
1624
- end
1625
-
1626
- expected = <<-EXPECTED
1627
- Unable to resolve dependency: user requested 'a (>= 0)'
1628
- You may need to `gem install -g` to install missing gems
1629
-
1630
- EXPECTED
1631
-
1632
- assert_output nil, expected do
1633
- Gem.use_gemdeps
1634
- end
1635
- ensure
1636
- ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
1637
- end
1638
-
1639
- def test_use_gemdeps_specific
1640
- skip 'Insecure operation - read' if RUBY_VERSION <= "1.8.7"
1641
- rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], 'x'
1642
-
1643
- spec = util_spec 'a', 1
1644
- install_specs spec
1645
-
1646
- spec = Gem::Specification.find { |s| s == spec }
1647
- refute spec.activated?
1648
-
1649
- open 'x', 'w' do |io|
1650
- io.write 'gem "a"'
1651
- end
1652
-
1653
- Gem.use_gemdeps
1654
-
1655
- assert spec.activated?
1656
- ensure
1657
- ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
1658
- end
1659
-
1660
- def ruby_install_name name
1661
- orig_RUBY_INSTALL_NAME = RbConfig::CONFIG['ruby_install_name']
1662
- RbConfig::CONFIG['ruby_install_name'] = name
1663
-
1664
- yield
1665
- ensure
1666
- if orig_RUBY_INSTALL_NAME then
1667
- RbConfig::CONFIG['ruby_install_name'] = orig_RUBY_INSTALL_NAME
1668
- else
1669
- RbConfig::CONFIG.delete 'ruby_install_name'
1670
- end
1671
- end
1672
-
1673
- def with_plugin(path)
1674
- test_plugin_path = File.expand_path("test/rubygems/plugin/#{path}",
1675
- @@project_dir)
1676
-
1677
- # A single test plugin should get loaded once only, in order to preserve
1678
- # sane test semantics.
1679
- refute_includes $LOAD_PATH, test_plugin_path
1680
- $LOAD_PATH.unshift test_plugin_path
1681
-
1682
- capture_io do
1683
- yield
1684
- end
1685
- ensure
1686
- $LOAD_PATH.delete test_plugin_path
1687
- end
1688
-
1689
- def util_ensure_gem_dirs
1690
- Gem.ensure_gem_subdirectories @gemhome
1691
-
1692
- #
1693
- # FIXME what does this solve precisely? -ebh
1694
- #
1695
- @additional.each do |dir|
1696
- Gem.ensure_gem_subdirectories @gemhome
1697
- end
1698
- end
1699
-
1700
- def util_exec_gem
1701
- spec, _ = util_spec 'a', '4' do |s|
1702
- s.executables = ['exec', 'abin']
1703
- end
1704
-
1705
- @exec_path = File.join spec.full_gem_path, spec.bindir, 'exec'
1706
- @abin_path = File.join spec.full_gem_path, spec.bindir, 'abin'
1707
- spec
1708
- end
1709
-
1710
- def util_remove_interrupt_command
1711
- Gem::Commands.send :remove_const, :InterruptCommand if
1712
- Gem::Commands.const_defined? :InterruptCommand
1713
- end
1714
-
1715
- def util_cache_dir
1716
- File.join Gem.dir, "cache"
1717
- end
1718
- end