rubygems-update 2.6.0 → 3.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (812) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +5941 -0
  3. data/CODE_OF_CONDUCT.md +76 -35
  4. data/CONTRIBUTING.md +231 -0
  5. data/MAINTAINERS.txt +8 -0
  6. data/Manifest.txt +439 -216
  7. data/POLICIES.md +135 -0
  8. data/README.md +112 -0
  9. data/UPGRADING.md +15 -0
  10. data/bundler/CHANGELOG.md +4753 -0
  11. data/bundler/LICENSE.md +22 -0
  12. data/bundler/README.md +58 -0
  13. data/bundler/UPGRADING.md +222 -0
  14. data/bundler/bundler.gemspec +46 -0
  15. data/bundler/exe/bundle +29 -0
  16. data/bundler/exe/bundler +4 -0
  17. data/bundler/lib/bundler/.document +1 -0
  18. data/bundler/lib/bundler/build_metadata.rb +45 -0
  19. data/bundler/lib/bundler/capistrano.rb +22 -0
  20. data/bundler/lib/bundler/checksum.rb +254 -0
  21. data/bundler/lib/bundler/ci_detector.rb +75 -0
  22. data/bundler/lib/bundler/cli/add.rb +47 -0
  23. data/bundler/lib/bundler/cli/binstubs.rb +57 -0
  24. data/bundler/lib/bundler/cli/cache.rb +43 -0
  25. data/bundler/lib/bundler/cli/check.rb +40 -0
  26. data/bundler/lib/bundler/cli/clean.rb +25 -0
  27. data/bundler/lib/bundler/cli/common.rb +138 -0
  28. data/bundler/lib/bundler/cli/config.rb +204 -0
  29. data/bundler/lib/bundler/cli/console.rb +44 -0
  30. data/bundler/lib/bundler/cli/doctor.rb +157 -0
  31. data/bundler/lib/bundler/cli/exec.rb +88 -0
  32. data/bundler/lib/bundler/cli/fund.rb +36 -0
  33. data/bundler/lib/bundler/cli/gem.rb +471 -0
  34. data/bundler/lib/bundler/cli/info.rb +83 -0
  35. data/bundler/lib/bundler/cli/init.rb +51 -0
  36. data/bundler/lib/bundler/cli/inject.rb +60 -0
  37. data/bundler/lib/bundler/cli/install.rb +190 -0
  38. data/bundler/lib/bundler/cli/issue.rb +41 -0
  39. data/bundler/lib/bundler/cli/list.rb +66 -0
  40. data/bundler/lib/bundler/cli/lock.rb +73 -0
  41. data/bundler/lib/bundler/cli/open.rb +29 -0
  42. data/bundler/lib/bundler/cli/outdated.rb +297 -0
  43. data/bundler/lib/bundler/cli/platform.rb +48 -0
  44. data/bundler/lib/bundler/cli/plugin.rb +34 -0
  45. data/bundler/lib/bundler/cli/pristine.rb +60 -0
  46. data/bundler/lib/bundler/cli/remove.rb +17 -0
  47. data/bundler/lib/bundler/cli/show.rb +75 -0
  48. data/bundler/lib/bundler/cli/update.rb +123 -0
  49. data/bundler/lib/bundler/cli/viz.rb +31 -0
  50. data/bundler/lib/bundler/cli.rb +846 -0
  51. data/bundler/lib/bundler/compact_index_client/cache.rb +121 -0
  52. data/bundler/lib/bundler/compact_index_client/cache_file.rb +153 -0
  53. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +32 -0
  54. data/bundler/lib/bundler/compact_index_client/updater.rb +115 -0
  55. data/bundler/lib/bundler/compact_index_client.rb +126 -0
  56. data/bundler/lib/bundler/constants.rb +7 -0
  57. data/bundler/lib/bundler/current_ruby.rb +92 -0
  58. data/bundler/lib/bundler/definition.rb +1015 -0
  59. data/bundler/lib/bundler/dependency.rb +105 -0
  60. data/bundler/lib/bundler/deployment.rb +69 -0
  61. data/bundler/lib/bundler/deprecate.rb +44 -0
  62. data/bundler/lib/bundler/digest.rb +71 -0
  63. data/bundler/lib/bundler/dsl.rb +604 -0
  64. data/bundler/lib/bundler/endpoint_specification.rb +147 -0
  65. data/bundler/lib/bundler/env.rb +148 -0
  66. data/bundler/lib/bundler/environment_preserver.rb +86 -0
  67. data/bundler/lib/bundler/errors.rb +233 -0
  68. data/bundler/lib/bundler/feature_flag.rb +53 -0
  69. data/bundler/lib/bundler/fetcher/base.rb +52 -0
  70. data/bundler/lib/bundler/fetcher/compact_index.rb +129 -0
  71. data/bundler/lib/bundler/fetcher/dependency.rb +78 -0
  72. data/bundler/lib/bundler/fetcher/downloader.rb +91 -0
  73. data/bundler/lib/bundler/fetcher/gem_remote_fetcher.rb +16 -0
  74. data/bundler/lib/bundler/fetcher/index.rb +25 -0
  75. data/bundler/lib/bundler/fetcher.rb +324 -0
  76. data/bundler/lib/bundler/force_platform.rb +18 -0
  77. data/bundler/lib/bundler/friendly_errors.rb +126 -0
  78. data/bundler/lib/bundler/gem_helper.rb +237 -0
  79. data/bundler/lib/bundler/gem_helpers.rb +127 -0
  80. data/bundler/lib/bundler/gem_tasks.rb +7 -0
  81. data/bundler/lib/bundler/gem_version_promoter.rb +145 -0
  82. data/bundler/lib/bundler/graph.rb +152 -0
  83. data/bundler/lib/bundler/index.rb +205 -0
  84. data/bundler/lib/bundler/injector.rb +287 -0
  85. data/bundler/lib/bundler/inline.rb +73 -0
  86. data/bundler/lib/bundler/installer/gem_installer.rb +84 -0
  87. data/bundler/lib/bundler/installer/parallel_installer.rb +202 -0
  88. data/bundler/lib/bundler/installer/standalone.rb +116 -0
  89. data/bundler/lib/bundler/installer.rb +267 -0
  90. data/bundler/lib/bundler/lazy_specification.rb +172 -0
  91. data/bundler/lib/bundler/lockfile_generator.rb +104 -0
  92. data/bundler/lib/bundler/lockfile_parser.rb +289 -0
  93. data/bundler/lib/bundler/man/.document +1 -0
  94. data/bundler/lib/bundler/man/bundle-add.1 +59 -0
  95. data/bundler/lib/bundler/man/bundle-add.1.ronn +58 -0
  96. data/bundler/lib/bundler/man/bundle-binstubs.1 +30 -0
  97. data/bundler/lib/bundler/man/bundle-binstubs.1.ronn +41 -0
  98. data/bundler/lib/bundler/man/bundle-cache.1 +40 -0
  99. data/bundler/lib/bundler/man/bundle-cache.1.ronn +79 -0
  100. data/bundler/lib/bundler/man/bundle-check.1 +22 -0
  101. data/bundler/lib/bundler/man/bundle-check.1.ronn +26 -0
  102. data/bundler/lib/bundler/man/bundle-clean.1 +17 -0
  103. data/bundler/lib/bundler/man/bundle-clean.1.ronn +18 -0
  104. data/bundler/lib/bundler/man/bundle-config.1 +321 -0
  105. data/bundler/lib/bundler/man/bundle-config.1.ronn +411 -0
  106. data/bundler/lib/bundler/man/bundle-console.1 +35 -0
  107. data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
  108. data/bundler/lib/bundler/man/bundle-doctor.1 +30 -0
  109. data/bundler/lib/bundler/man/bundle-doctor.1.ronn +33 -0
  110. data/bundler/lib/bundler/man/bundle-exec.1 +104 -0
  111. data/bundler/lib/bundler/man/bundle-exec.1.ronn +151 -0
  112. data/bundler/lib/bundler/man/bundle-gem.1 +69 -0
  113. data/bundler/lib/bundler/man/bundle-gem.1.ronn +117 -0
  114. data/bundler/lib/bundler/man/bundle-help.1 +9 -0
  115. data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
  116. data/bundler/lib/bundler/man/bundle-info.1 +14 -0
  117. data/bundler/lib/bundler/man/bundle-info.1.ronn +17 -0
  118. data/bundler/lib/bundler/man/bundle-init.1 +20 -0
  119. data/bundler/lib/bundler/man/bundle-init.1.ronn +31 -0
  120. data/bundler/lib/bundler/man/bundle-inject.1 +23 -0
  121. data/bundler/lib/bundler/man/bundle-inject.1.ronn +24 -0
  122. data/bundler/lib/bundler/man/bundle-install.1 +215 -0
  123. data/bundler/lib/bundler/man/bundle-install.1.ronn +383 -0
  124. data/bundler/lib/bundler/man/bundle-list.1 +35 -0
  125. data/bundler/lib/bundler/man/bundle-list.1.ronn +33 -0
  126. data/bundler/lib/bundler/man/bundle-lock.1 +60 -0
  127. data/bundler/lib/bundler/man/bundle-lock.1.ronn +94 -0
  128. data/bundler/lib/bundler/man/bundle-open.1 +32 -0
  129. data/bundler/lib/bundler/man/bundle-open.1.ronn +27 -0
  130. data/bundler/lib/bundler/man/bundle-outdated.1 +100 -0
  131. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +106 -0
  132. data/bundler/lib/bundler/man/bundle-platform.1 +49 -0
  133. data/bundler/lib/bundler/man/bundle-platform.1.ronn +49 -0
  134. data/bundler/lib/bundler/man/bundle-plugin.1 +55 -0
  135. data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
  136. data/bundler/lib/bundler/man/bundle-pristine.1 +23 -0
  137. data/bundler/lib/bundler/man/bundle-pristine.1.ronn +34 -0
  138. data/bundler/lib/bundler/man/bundle-remove.1 +21 -0
  139. data/bundler/lib/bundler/man/bundle-remove.1.ronn +23 -0
  140. data/bundler/lib/bundler/man/bundle-show.1 +16 -0
  141. data/bundler/lib/bundler/man/bundle-show.1.ronn +21 -0
  142. data/bundler/lib/bundler/man/bundle-update.1 +275 -0
  143. data/bundler/lib/bundler/man/bundle-update.1.ronn +351 -0
  144. data/bundler/lib/bundler/man/bundle-version.1 +22 -0
  145. data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
  146. data/bundler/lib/bundler/man/bundle-viz.1 +30 -0
  147. data/bundler/lib/bundler/man/bundle-viz.1.ronn +32 -0
  148. data/bundler/lib/bundler/man/bundle.1 +102 -0
  149. data/bundler/lib/bundler/man/bundle.1.ronn +116 -0
  150. data/bundler/lib/bundler/man/gemfile.5 +470 -0
  151. data/bundler/lib/bundler/man/gemfile.5.ronn +552 -0
  152. data/bundler/lib/bundler/man/index.txt +29 -0
  153. data/bundler/lib/bundler/match_metadata.rb +17 -0
  154. data/bundler/lib/bundler/match_platform.rb +23 -0
  155. data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
  156. data/bundler/lib/bundler/mirror.rb +221 -0
  157. data/bundler/lib/bundler/plugin/api/source.rb +321 -0
  158. data/bundler/lib/bundler/plugin/api.rb +81 -0
  159. data/bundler/lib/bundler/plugin/dsl.rb +53 -0
  160. data/bundler/lib/bundler/plugin/events.rb +61 -0
  161. data/bundler/lib/bundler/plugin/index.rb +193 -0
  162. data/bundler/lib/bundler/plugin/installer/git.rb +34 -0
  163. data/bundler/lib/bundler/plugin/installer/rubygems.rb +19 -0
  164. data/bundler/lib/bundler/plugin/installer.rb +112 -0
  165. data/bundler/lib/bundler/plugin/source_list.rb +31 -0
  166. data/bundler/lib/bundler/plugin.rb +359 -0
  167. data/bundler/lib/bundler/process_lock.rb +24 -0
  168. data/bundler/lib/bundler/remote_specification.rb +121 -0
  169. data/bundler/lib/bundler/resolver/base.rb +107 -0
  170. data/bundler/lib/bundler/resolver/candidate.rb +94 -0
  171. data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
  172. data/bundler/lib/bundler/resolver/package.rb +77 -0
  173. data/bundler/lib/bundler/resolver/root.rb +25 -0
  174. data/bundler/lib/bundler/resolver/spec_group.rb +79 -0
  175. data/bundler/lib/bundler/resolver.rb +462 -0
  176. data/bundler/lib/bundler/retry.rb +66 -0
  177. data/bundler/lib/bundler/ruby_dsl.rb +53 -0
  178. data/bundler/lib/bundler/ruby_version.rb +131 -0
  179. data/bundler/lib/bundler/rubygems_ext.rb +328 -0
  180. data/bundler/lib/bundler/rubygems_gem_installer.rb +137 -0
  181. data/bundler/lib/bundler/rubygems_integration.rb +493 -0
  182. data/bundler/lib/bundler/runtime.rb +307 -0
  183. data/bundler/lib/bundler/safe_marshal.rb +31 -0
  184. data/bundler/lib/bundler/self_manager.rb +186 -0
  185. data/bundler/lib/bundler/settings/validator.rb +102 -0
  186. data/bundler/lib/bundler/settings.rb +588 -0
  187. data/bundler/lib/bundler/setup.rb +33 -0
  188. data/bundler/lib/bundler/shared_helpers.rb +380 -0
  189. data/bundler/lib/bundler/similarity_detector.rb +63 -0
  190. data/bundler/lib/bundler/source/gemspec.rb +18 -0
  191. data/bundler/lib/bundler/source/git/git_proxy.rb +455 -0
  192. data/bundler/lib/bundler/source/git.rb +380 -0
  193. data/bundler/lib/bundler/source/metadata.rb +62 -0
  194. data/bundler/lib/bundler/source/path/installer.rb +53 -0
  195. data/bundler/lib/bundler/source/path.rb +261 -0
  196. data/bundler/lib/bundler/source/rubygems/remote.rb +68 -0
  197. data/bundler/lib/bundler/source/rubygems.rb +516 -0
  198. data/bundler/lib/bundler/source/rubygems_aggregate.rb +68 -0
  199. data/bundler/lib/bundler/source.rb +116 -0
  200. data/bundler/lib/bundler/source_list.rb +227 -0
  201. data/bundler/lib/bundler/source_map.rb +71 -0
  202. data/bundler/lib/bundler/spec_set.rb +296 -0
  203. data/bundler/lib/bundler/stub_specification.rb +119 -0
  204. data/bundler/lib/bundler/templates/.document +1 -0
  205. data/bundler/lib/bundler/templates/Executable +27 -0
  206. data/bundler/lib/bundler/templates/Executable.bundler +109 -0
  207. data/bundler/lib/bundler/templates/Executable.standalone +14 -0
  208. data/bundler/lib/bundler/templates/Gemfile +5 -0
  209. data/bundler/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
  210. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +84 -0
  211. data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
  212. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +26 -0
  213. data/bundler/lib/bundler/templates/newgem/LICENSE.txt.tt +21 -0
  214. data/bundler/lib/bundler/templates/newgem/README.md.tt +45 -0
  215. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +67 -0
  216. data/bundler/lib/bundler/templates/newgem/bin/console.tt +11 -0
  217. data/bundler/lib/bundler/templates/newgem/bin/setup.tt +8 -0
  218. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +25 -0
  219. data/bundler/lib/bundler/templates/newgem/exe/newgem.tt +3 -0
  220. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
  221. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt +10 -0
  222. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
  223. data/bundler/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +9 -0
  224. data/bundler/lib/bundler/templates/newgem/ext/newgem/newgem.h.tt +6 -0
  225. data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
  226. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +37 -0
  227. data/bundler/lib/bundler/templates/newgem/gitignore.tt +23 -0
  228. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +18 -0
  229. data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +9 -0
  230. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +15 -0
  231. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +51 -0
  232. data/bundler/lib/bundler/templates/newgem/rspec.tt +3 -0
  233. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
  234. data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
  235. data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +11 -0
  236. data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +15 -0
  237. data/bundler/lib/bundler/templates/newgem/standard.yml.tt +3 -0
  238. data/bundler/lib/bundler/templates/newgem/test/minitest/test_helper.rb.tt +6 -0
  239. data/bundler/lib/bundler/templates/newgem/test/minitest/test_newgem.rb.tt +13 -0
  240. data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  241. data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  242. data/bundler/lib/bundler/ui/rg_proxy.rb +19 -0
  243. data/bundler/lib/bundler/ui/shell.rb +165 -0
  244. data/bundler/lib/bundler/ui/silent.rb +85 -0
  245. data/bundler/lib/bundler/ui.rb +9 -0
  246. data/bundler/lib/bundler/uri_credentials_filter.rb +43 -0
  247. data/bundler/lib/bundler/uri_normalizer.rb +23 -0
  248. data/bundler/lib/bundler/vendor/.document +1 -0
  249. data/bundler/lib/bundler/vendor/connection_pool/.document +1 -0
  250. data/bundler/lib/bundler/vendor/connection_pool/LICENSE +20 -0
  251. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +174 -0
  252. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
  253. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +56 -0
  254. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +175 -0
  255. data/bundler/lib/bundler/vendor/fileutils/.document +1 -0
  256. data/bundler/lib/bundler/vendor/fileutils/LICENSE.txt +22 -0
  257. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +2694 -0
  258. data/bundler/lib/bundler/vendor/net-http-persistent/.document +1 -0
  259. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
  260. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +41 -0
  261. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +65 -0
  262. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
  263. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1073 -0
  264. data/bundler/lib/bundler/vendor/pub_grub/.document +1 -0
  265. data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
  266. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
  267. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
  268. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
  269. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
  270. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
  271. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
  272. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
  273. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
  274. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
  275. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
  276. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
  277. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
  278. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
  279. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +248 -0
  280. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
  281. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
  282. data/bundler/lib/bundler/vendor/thor/.document +1 -0
  283. data/bundler/lib/bundler/vendor/thor/LICENSE.md +20 -0
  284. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +105 -0
  285. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +61 -0
  286. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +108 -0
  287. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb +143 -0
  288. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +373 -0
  289. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +130 -0
  290. data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +340 -0
  291. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +825 -0
  292. data/bundler/lib/bundler/vendor/thor/lib/thor/command.rb +151 -0
  293. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +107 -0
  294. data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +106 -0
  295. data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +281 -0
  296. data/bundler/lib/bundler/vendor/thor/lib/thor/invocation.rb +178 -0
  297. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +37 -0
  298. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +88 -0
  299. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor.rb +17 -0
  300. data/bundler/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
  301. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +89 -0
  302. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +195 -0
  303. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +178 -0
  304. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +293 -0
  305. data/bundler/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -0
  306. data/bundler/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +72 -0
  307. data/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +335 -0
  308. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +388 -0
  309. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +112 -0
  310. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/column_printer.rb +29 -0
  311. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +81 -0
  312. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +134 -0
  313. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/terminal.rb +42 -0
  314. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/wrapped_printer.rb +38 -0
  315. data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +81 -0
  316. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +285 -0
  317. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +3 -0
  318. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +663 -0
  319. data/bundler/lib/bundler/vendor/tsort/.document +1 -0
  320. data/bundler/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
  321. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +455 -0
  322. data/bundler/lib/bundler/vendor/uri/.document +1 -0
  323. data/bundler/lib/bundler/vendor/uri/LICENSE.txt +22 -0
  324. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +853 -0
  325. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +100 -0
  326. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
  327. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1588 -0
  328. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +125 -0
  329. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +23 -0
  330. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +261 -0
  331. data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +22 -0
  332. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +293 -0
  333. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +539 -0
  334. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +183 -0
  335. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
  336. data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +83 -0
  337. data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +23 -0
  338. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +104 -0
  339. data/bundler/lib/bundler/vendored_fileutils.rb +4 -0
  340. data/bundler/lib/bundler/vendored_net_http.rb +8 -0
  341. data/bundler/lib/bundler/vendored_persistent.rb +11 -0
  342. data/bundler/lib/bundler/vendored_pub_grub.rb +4 -0
  343. data/bundler/lib/bundler/vendored_thor.rb +8 -0
  344. data/bundler/lib/bundler/vendored_timeout.rb +8 -0
  345. data/bundler/lib/bundler/vendored_tsort.rb +4 -0
  346. data/bundler/lib/bundler/vendored_uri.rb +4 -0
  347. data/bundler/lib/bundler/version.rb +13 -0
  348. data/bundler/lib/bundler/vlad.rb +17 -0
  349. data/bundler/lib/bundler/worker.rb +117 -0
  350. data/bundler/lib/bundler/yaml_serializer.rb +93 -0
  351. data/bundler/lib/bundler.rb +663 -0
  352. data/{test/rubygems/bogussources.rb → exe/gem} +5 -2
  353. data/exe/update_rubygems +38 -0
  354. data/hide_lib_for_update/note.txt +0 -4
  355. data/lib/rubygems/available_set.rb +12 -12
  356. data/lib/rubygems/basic_specification.rb +82 -59
  357. data/lib/rubygems/bundler_version_finder.rb +77 -0
  358. data/lib/rubygems/ci_detector.rb +75 -0
  359. data/lib/rubygems/command.rb +144 -71
  360. data/lib/rubygems/command_manager.rb +64 -27
  361. data/lib/rubygems/commands/build_command.rb +88 -17
  362. data/lib/rubygems/commands/cert_command.rb +131 -83
  363. data/lib/rubygems/commands/check_command.rb +30 -27
  364. data/lib/rubygems/commands/cleanup_command.rb +57 -40
  365. data/lib/rubygems/commands/contents_command.rb +37 -39
  366. data/lib/rubygems/commands/dependency_command.rb +53 -65
  367. data/lib/rubygems/commands/environment_command.rb +32 -16
  368. data/lib/rubygems/commands/exec_command.rb +249 -0
  369. data/lib/rubygems/commands/fetch_command.rb +36 -19
  370. data/lib/rubygems/commands/generate_index_command.rb +40 -74
  371. data/lib/rubygems/commands/help_command.rb +22 -22
  372. data/lib/rubygems/commands/info_command.rb +38 -0
  373. data/lib/rubygems/commands/install_command.rb +67 -143
  374. data/lib/rubygems/commands/list_command.rb +10 -9
  375. data/lib/rubygems/commands/lock_command.rb +12 -14
  376. data/lib/rubygems/commands/mirror_command.rb +4 -4
  377. data/lib/rubygems/commands/open_command.rb +28 -26
  378. data/lib/rubygems/commands/outdated_command.rb +6 -6
  379. data/lib/rubygems/commands/owner_command.rb +51 -27
  380. data/lib/rubygems/commands/pristine_command.rb +99 -71
  381. data/lib/rubygems/commands/push_command.rb +53 -46
  382. data/lib/rubygems/commands/query_command.rb +21 -328
  383. data/lib/rubygems/commands/rdoc_command.rb +33 -33
  384. data/lib/rubygems/commands/search_command.rb +9 -9
  385. data/lib/rubygems/commands/server_command.rb +15 -76
  386. data/lib/rubygems/commands/setup_command.rb +370 -186
  387. data/lib/rubygems/commands/signin_command.rb +34 -0
  388. data/lib/rubygems/commands/signout_command.rb +32 -0
  389. data/lib/rubygems/commands/sources_command.rb +57 -41
  390. data/lib/rubygems/commands/specification_command.rb +38 -28
  391. data/lib/rubygems/commands/stale_command.rb +6 -5
  392. data/lib/rubygems/commands/uninstall_command.rb +96 -62
  393. data/lib/rubygems/commands/unpack_command.rb +44 -53
  394. data/lib/rubygems/commands/update_command.rb +153 -99
  395. data/lib/rubygems/commands/which_command.rb +14 -17
  396. data/lib/rubygems/commands/yank_command.rb +28 -32
  397. data/lib/rubygems/compatibility.rb +13 -32
  398. data/lib/rubygems/config_file.rb +214 -119
  399. data/lib/rubygems/core_ext/kernel_gem.rb +10 -16
  400. data/lib/rubygems/core_ext/kernel_require.rb +92 -90
  401. data/lib/rubygems/core_ext/kernel_warn.rb +49 -0
  402. data/lib/rubygems/core_ext/tcpsocket_init.rb +54 -0
  403. data/lib/rubygems/defaults.rb +184 -54
  404. data/lib/rubygems/dependency.rb +75 -62
  405. data/lib/rubygems/dependency_installer.rb +74 -230
  406. data/lib/rubygems/dependency_list.rb +32 -33
  407. data/lib/rubygems/deprecate.rb +113 -17
  408. data/lib/rubygems/doctor.rb +31 -31
  409. data/lib/rubygems/errors.rb +51 -13
  410. data/lib/rubygems/exceptions.rb +65 -35
  411. data/lib/rubygems/ext/build_error.rb +3 -1
  412. data/lib/rubygems/ext/builder.rb +103 -77
  413. data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +27 -0
  414. data/lib/rubygems/ext/cargo_builder.rb +360 -0
  415. data/lib/rubygems/ext/cmake_builder.rb +6 -7
  416. data/lib/rubygems/ext/configure_builder.rb +6 -9
  417. data/lib/rubygems/ext/ext_conf_builder.rb +40 -61
  418. data/lib/rubygems/ext/rake_builder.rb +18 -21
  419. data/lib/rubygems/ext.rb +8 -7
  420. data/lib/rubygems/gem_runner.rb +19 -21
  421. data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +163 -0
  422. data/lib/rubygems/gemcutter_utilities/webauthn_listener.rb +105 -0
  423. data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +78 -0
  424. data/lib/rubygems/gemcutter_utilities.rb +246 -43
  425. data/lib/rubygems/install_default_message.rb +3 -3
  426. data/lib/rubygems/install_message.rb +3 -3
  427. data/lib/rubygems/install_update_options.rb +104 -98
  428. data/lib/rubygems/installer.rb +407 -225
  429. data/lib/rubygems/installer_uninstaller_utils.rb +27 -0
  430. data/lib/rubygems/local_remote_options.rb +29 -32
  431. data/lib/rubygems/name_tuple.rb +18 -23
  432. data/lib/rubygems/net/http.rb +3 -0
  433. data/lib/rubygems/net-http/.document +1 -0
  434. data/lib/rubygems/net-http/LICENSE.txt +22 -0
  435. data/lib/rubygems/net-http/lib/net/http/backward.rb +40 -0
  436. data/lib/rubygems/net-http/lib/net/http/exceptions.rb +34 -0
  437. data/lib/rubygems/net-http/lib/net/http/generic_request.rb +414 -0
  438. data/lib/rubygems/net-http/lib/net/http/header.rb +981 -0
  439. data/lib/rubygems/net-http/lib/net/http/proxy_delta.rb +17 -0
  440. data/lib/rubygems/net-http/lib/net/http/request.rb +88 -0
  441. data/lib/rubygems/net-http/lib/net/http/requests.rb +425 -0
  442. data/lib/rubygems/net-http/lib/net/http/response.rb +738 -0
  443. data/lib/rubygems/net-http/lib/net/http/responses.rb +1174 -0
  444. data/lib/rubygems/net-http/lib/net/http/status.rb +84 -0
  445. data/lib/rubygems/net-http/lib/net/http.rb +2496 -0
  446. data/lib/rubygems/net-http/lib/net/https.rb +23 -0
  447. data/lib/rubygems/net-protocol/.document +1 -0
  448. data/lib/rubygems/net-protocol/LICENSE.txt +22 -0
  449. data/lib/rubygems/net-protocol/lib/net/protocol.rb +544 -0
  450. data/lib/rubygems/openssl.rb +7 -0
  451. data/lib/rubygems/optparse/.document +1 -0
  452. data/lib/rubygems/optparse/COPYING +56 -0
  453. data/lib/rubygems/optparse/lib/optionparser.rb +2 -0
  454. data/lib/rubygems/optparse/lib/optparse/ac.rb +54 -0
  455. data/lib/rubygems/optparse/lib/optparse/date.rb +18 -0
  456. data/lib/rubygems/optparse/lib/optparse/kwargs.rb +22 -0
  457. data/lib/rubygems/optparse/lib/optparse/shellwords.rb +7 -0
  458. data/lib/rubygems/optparse/lib/optparse/time.rb +11 -0
  459. data/lib/rubygems/optparse/lib/optparse/uri.rb +7 -0
  460. data/lib/rubygems/optparse/lib/optparse/version.rb +71 -0
  461. data/lib/rubygems/optparse/lib/optparse.rb +2330 -0
  462. data/lib/rubygems/optparse.rb +3 -0
  463. data/lib/rubygems/package/digest_io.rb +5 -7
  464. data/lib/rubygems/package/file_source.rb +6 -8
  465. data/lib/rubygems/package/io_source.rb +6 -4
  466. data/lib/rubygems/package/old.rb +19 -28
  467. data/lib/rubygems/package/source.rb +1 -1
  468. data/lib/rubygems/package/tar_header.rb +114 -93
  469. data/lib/rubygems/package/tar_reader/entry.rb +116 -22
  470. data/lib/rubygems/package/tar_reader.rb +18 -40
  471. data/lib/rubygems/package/tar_writer.rb +42 -56
  472. data/lib/rubygems/package.rb +254 -144
  473. data/lib/rubygems/package_task.rb +8 -14
  474. data/lib/rubygems/path_support.rb +21 -16
  475. data/lib/rubygems/platform.rb +135 -74
  476. data/lib/rubygems/psych_tree.rb +3 -2
  477. data/lib/rubygems/query_utils.rb +349 -0
  478. data/lib/rubygems/rdoc.rb +4 -326
  479. data/lib/rubygems/remote_fetcher.rb +99 -181
  480. data/lib/rubygems/request/connection_pools.rb +31 -24
  481. data/lib/rubygems/request/http_pool.rb +6 -7
  482. data/lib/rubygems/request/https_pool.rb +2 -3
  483. data/lib/rubygems/request.rb +107 -57
  484. data/lib/rubygems/request_set/gem_dependency_api.rb +182 -190
  485. data/lib/rubygems/request_set/lockfile/parser.rb +42 -52
  486. data/lib/rubygems/request_set/lockfile/tokenizer.rb +34 -24
  487. data/lib/rubygems/request_set/lockfile.rb +32 -35
  488. data/lib/rubygems/request_set.rb +115 -71
  489. data/lib/rubygems/requirement.rb +77 -68
  490. data/lib/rubygems/resolv/.document +1 -0
  491. data/lib/rubygems/resolv/LICENSE.txt +22 -0
  492. data/lib/rubygems/resolv/lib/resolv.rb +3387 -0
  493. data/lib/rubygems/resolver/activation_request.rb +34 -61
  494. data/lib/rubygems/resolver/api_set/gem_parser.rb +24 -0
  495. data/lib/rubygems/resolver/api_set.rb +40 -32
  496. data/lib/rubygems/resolver/api_specification.rb +37 -18
  497. data/lib/rubygems/resolver/best_set.rb +15 -17
  498. data/lib/rubygems/resolver/composed_set.rb +9 -11
  499. data/lib/rubygems/resolver/conflict.rb +19 -33
  500. data/lib/rubygems/resolver/current_set.rb +2 -4
  501. data/lib/rubygems/resolver/dependency_request.rb +8 -9
  502. data/lib/rubygems/resolver/git_set.rb +8 -10
  503. data/lib/rubygems/resolver/git_specification.rb +11 -13
  504. data/lib/rubygems/resolver/index_set.rb +13 -15
  505. data/lib/rubygems/resolver/index_specification.rb +42 -11
  506. data/lib/rubygems/resolver/installed_specification.rb +9 -11
  507. data/lib/rubygems/resolver/installer_set.rb +93 -47
  508. data/lib/rubygems/resolver/local_specification.rb +5 -7
  509. data/lib/rubygems/resolver/lock_set.rb +13 -15
  510. data/lib/rubygems/resolver/lock_specification.rb +13 -15
  511. data/lib/rubygems/resolver/molinillo/.document +1 -0
  512. data/lib/rubygems/resolver/molinillo/LICENSE +9 -0
  513. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +57 -0
  514. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +88 -0
  515. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +36 -0
  516. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +66 -0
  517. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +62 -0
  518. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +63 -0
  519. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +61 -0
  520. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +126 -0
  521. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +46 -0
  522. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +36 -0
  523. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +164 -0
  524. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +110 -146
  525. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +83 -9
  526. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
  527. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +13 -1
  528. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
  529. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +552 -172
  530. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
  531. data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +12 -6
  532. data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
  533. data/lib/rubygems/resolver/molinillo.rb +2 -1
  534. data/lib/rubygems/resolver/requirement_list.rb +2 -2
  535. data/lib/rubygems/resolver/set.rb +3 -5
  536. data/lib/rubygems/resolver/source_set.rb +6 -7
  537. data/lib/rubygems/resolver/spec_specification.rb +16 -4
  538. data/lib/rubygems/resolver/specification.rb +25 -10
  539. data/lib/rubygems/resolver/stats.rb +1 -0
  540. data/lib/rubygems/resolver/vendor_set.rb +6 -8
  541. data/lib/rubygems/resolver/vendor_specification.rb +6 -8
  542. data/lib/rubygems/resolver.rb +121 -72
  543. data/lib/rubygems/s3_uri_signer.rb +177 -0
  544. data/lib/rubygems/safe_marshal/elements.rb +146 -0
  545. data/lib/rubygems/safe_marshal/reader.rb +308 -0
  546. data/lib/rubygems/safe_marshal/visitors/stream_printer.rb +31 -0
  547. data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +415 -0
  548. data/lib/rubygems/safe_marshal/visitors/visitor.rb +74 -0
  549. data/lib/rubygems/safe_marshal.rb +74 -0
  550. data/lib/rubygems/safe_yaml.rb +36 -0
  551. data/lib/rubygems/security/policies.rb +49 -51
  552. data/lib/rubygems/security/policy.rb +46 -53
  553. data/lib/rubygems/security/signer.rb +86 -29
  554. data/lib/rubygems/security/trust_dir.rb +22 -24
  555. data/lib/rubygems/security.rb +101 -82
  556. data/lib/rubygems/security_option.rb +43 -0
  557. data/lib/rubygems/shellwords.rb +3 -0
  558. data/lib/rubygems/source/git.rb +40 -42
  559. data/lib/rubygems/source/installed.rb +5 -9
  560. data/lib/rubygems/source/local.rb +30 -33
  561. data/lib/rubygems/source/lock.rb +10 -10
  562. data/lib/rubygems/source/specific_file.rb +7 -9
  563. data/lib/rubygems/source/vendor.rb +3 -7
  564. data/lib/rubygems/source.rb +78 -68
  565. data/lib/rubygems/source_list.rb +11 -15
  566. data/lib/rubygems/spec_fetcher.rb +71 -83
  567. data/lib/rubygems/specification.rb +833 -1115
  568. data/lib/rubygems/specification_policy.rb +538 -0
  569. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA.pem +21 -0
  570. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
  571. data/lib/rubygems/stub_specification.rb +55 -57
  572. data/lib/rubygems/text.rb +39 -27
  573. data/lib/rubygems/timeout/.document +1 -0
  574. data/lib/rubygems/timeout/LICENSE.txt +22 -0
  575. data/lib/rubygems/timeout/lib/timeout.rb +199 -0
  576. data/lib/rubygems/timeout.rb +3 -0
  577. data/lib/rubygems/tsort/.document +1 -0
  578. data/lib/rubygems/tsort/LICENSE.txt +22 -0
  579. data/lib/rubygems/tsort/lib/tsort.rb +455 -0
  580. data/lib/rubygems/tsort.rb +3 -0
  581. data/lib/rubygems/uninstaller.rb +150 -87
  582. data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
  583. data/lib/rubygems/update_suggestion.rb +56 -0
  584. data/lib/rubygems/uri.rb +126 -0
  585. data/lib/rubygems/uri_formatter.rb +4 -7
  586. data/lib/rubygems/user_interaction.rb +92 -146
  587. data/lib/rubygems/util/licenses.rb +712 -317
  588. data/lib/rubygems/util/list.rb +5 -2
  589. data/lib/rubygems/util.rb +58 -75
  590. data/lib/rubygems/validator.rb +26 -48
  591. data/lib/rubygems/version.rb +106 -56
  592. data/lib/rubygems/version_option.rb +22 -14
  593. data/lib/rubygems/yaml_serializer.rb +93 -0
  594. data/lib/rubygems.rb +453 -358
  595. data/rubygems-update.gemspec +38 -0
  596. data/setup.rb +13 -27
  597. metadata +511 -363
  598. data/.autotest +0 -71
  599. data/.document +0 -5
  600. data/.travis.yml +0 -46
  601. data/CONTRIBUTING.rdoc +0 -129
  602. data/CVE-2013-4287.txt +0 -35
  603. data/CVE-2013-4363.txt +0 -45
  604. data/CVE-2015-3900.txt +0 -40
  605. data/History.txt +0 -3094
  606. data/MAINTAINERS.md +0 -5
  607. data/POLICIES.rdoc +0 -61
  608. data/README.rdoc +0 -54
  609. data/Rakefile +0 -449
  610. data/UPGRADING.rdoc +0 -92
  611. data/appveyor.yml +0 -36
  612. data/bin/gem +0 -25
  613. data/bin/update_rubygems +0 -37
  614. data/lib/gauntlet_rubygems.rb +0 -51
  615. data/lib/rubygems/indexer.rb +0 -434
  616. data/lib/rubygems/installer_test_case.rb +0 -194
  617. data/lib/rubygems/mock_gem_ui.rb +0 -89
  618. data/lib/rubygems/package/tar_test_case.rb +0 -147
  619. data/lib/rubygems/psych_additions.rb +0 -10
  620. data/lib/rubygems/server.rb +0 -869
  621. data/lib/rubygems/source_local.rb +0 -6
  622. data/lib/rubygems/source_specific_file.rb +0 -5
  623. data/lib/rubygems/ssl_certs/AddTrustExternalCARoot-2048.pem +0 -25
  624. data/lib/rubygems/ssl_certs/AddTrustExternalCARoot.pem +0 -32
  625. data/lib/rubygems/ssl_certs/Class3PublicPrimaryCertificationAuthority.pem +0 -14
  626. data/lib/rubygems/ssl_certs/DigiCertHighAssuranceEVRootCA.pem +0 -23
  627. data/lib/rubygems/ssl_certs/EntrustnetSecureServerCertificationAuthority.pem +0 -28
  628. data/lib/rubygems/ssl_certs/GeoTrustGlobalCA.pem +0 -20
  629. data/lib/rubygems/syck_hack.rb +0 -77
  630. data/lib/rubygems/test_case.rb +0 -1496
  631. data/lib/rubygems/test_utilities.rb +0 -384
  632. data/lib/ubygems.rb +0 -11
  633. data/test/rubygems/alternate_cert.pem +0 -18
  634. data/test/rubygems/alternate_cert_32.pem +0 -18
  635. data/test/rubygems/alternate_key.pem +0 -27
  636. data/test/rubygems/bad_rake.rb +0 -2
  637. data/test/rubygems/ca_cert.pem +0 -68
  638. data/test/rubygems/child_cert.pem +0 -18
  639. data/test/rubygems/child_cert_32.pem +0 -18
  640. data/test/rubygems/child_key.pem +0 -27
  641. data/test/rubygems/client.pem +0 -49
  642. data/test/rubygems/data/gem-private_key.pem +0 -27
  643. data/test/rubygems/data/gem-public_cert.pem +0 -20
  644. data/test/rubygems/data/null-type.gemspec.rz +0 -0
  645. data/test/rubygems/encrypted_private_key.pem +0 -30
  646. data/test/rubygems/expired_cert.pem +0 -18
  647. data/test/rubygems/fake_certlib/openssl.rb +0 -8
  648. data/test/rubygems/fix_openssl_warnings.rb +0 -13
  649. data/test/rubygems/foo/discover.rb +0 -1
  650. data/test/rubygems/future_cert.pem +0 -18
  651. data/test/rubygems/future_cert_32.pem +0 -18
  652. data/test/rubygems/good_rake.rb +0 -2
  653. data/test/rubygems/grandchild_cert.pem +0 -18
  654. data/test/rubygems/grandchild_cert_32.pem +0 -18
  655. data/test/rubygems/grandchild_key.pem +0 -27
  656. data/test/rubygems/invalid_client.pem +0 -49
  657. data/test/rubygems/invalid_issuer_cert.pem +0 -18
  658. data/test/rubygems/invalid_issuer_cert_32.pem +0 -18
  659. data/test/rubygems/invalid_key.pem +0 -27
  660. data/test/rubygems/invalid_signer_cert.pem +0 -18
  661. data/test/rubygems/invalid_signer_cert_32.pem +0 -18
  662. data/test/rubygems/invalidchild_cert.pem +0 -18
  663. data/test/rubygems/invalidchild_cert_32.pem +0 -18
  664. data/test/rubygems/invalidchild_key.pem +0 -27
  665. data/test/rubygems/plugin/exception/rubygems_plugin.rb +0 -3
  666. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -4
  667. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +0 -3
  668. data/test/rubygems/private_key.pem +0 -27
  669. data/test/rubygems/public_cert.pem +0 -18
  670. data/test/rubygems/public_cert_32.pem +0 -18
  671. data/test/rubygems/public_key.pem +0 -9
  672. data/test/rubygems/rubygems/commands/crash_command.rb +0 -6
  673. data/test/rubygems/rubygems_plugin.rb +0 -22
  674. data/test/rubygems/sff/discover.rb +0 -1
  675. data/test/rubygems/simple_gem.rb +0 -67
  676. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -9
  677. data/test/rubygems/specifications/foo-0.0.1-x86-mswin32.gemspec +0 -0
  678. data/test/rubygems/ssl_cert.pem +0 -19
  679. data/test/rubygems/ssl_key.pem +0 -15
  680. data/test/rubygems/test_bundled_ca.rb +0 -59
  681. data/test/rubygems/test_config.rb +0 -24
  682. data/test/rubygems/test_deprecate.rb +0 -77
  683. data/test/rubygems/test_gem.rb +0 -1679
  684. data/test/rubygems/test_gem_available_set.rb +0 -130
  685. data/test/rubygems/test_gem_command.rb +0 -248
  686. data/test/rubygems/test_gem_command_manager.rb +0 -264
  687. data/test/rubygems/test_gem_commands_build_command.rb +0 -121
  688. data/test/rubygems/test_gem_commands_cert_command.rb +0 -671
  689. data/test/rubygems/test_gem_commands_check_command.rb +0 -69
  690. data/test/rubygems/test_gem_commands_cleanup_command.rb +0 -197
  691. data/test/rubygems/test_gem_commands_contents_command.rb +0 -240
  692. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -230
  693. data/test/rubygems/test_gem_commands_environment_command.rb +0 -154
  694. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -127
  695. data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -51
  696. data/test/rubygems/test_gem_commands_help_command.rb +0 -75
  697. data/test/rubygems/test_gem_commands_install_command.rb +0 -987
  698. data/test/rubygems/test_gem_commands_list_command.rb +0 -34
  699. data/test/rubygems/test_gem_commands_lock_command.rb +0 -69
  700. data/test/rubygems/test_gem_commands_mirror.rb +0 -20
  701. data/test/rubygems/test_gem_commands_open_command.rb +0 -70
  702. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -33
  703. data/test/rubygems/test_gem_commands_owner_command.rb +0 -205
  704. data/test/rubygems/test_gem_commands_pristine_command.rb +0 -491
  705. data/test/rubygems/test_gem_commands_push_command.rb +0 -330
  706. data/test/rubygems/test_gem_commands_query_command.rb +0 -657
  707. data/test/rubygems/test_gem_commands_search_command.rb +0 -18
  708. data/test/rubygems/test_gem_commands_server_command.rb +0 -60
  709. data/test/rubygems/test_gem_commands_setup_command.rb +0 -136
  710. data/test/rubygems/test_gem_commands_sources_command.rb +0 -249
  711. data/test/rubygems/test_gem_commands_specification_command.rb +0 -251
  712. data/test/rubygems/test_gem_commands_stale_command.rb +0 -43
  713. data/test/rubygems/test_gem_commands_uninstall_command.rb +0 -283
  714. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -209
  715. data/test/rubygems/test_gem_commands_update_command.rb +0 -514
  716. data/test/rubygems/test_gem_commands_which_command.rb +0 -87
  717. data/test/rubygems/test_gem_commands_yank_command.rb +0 -100
  718. data/test/rubygems/test_gem_config_file.rb +0 -491
  719. data/test/rubygems/test_gem_dependency.rb +0 -362
  720. data/test/rubygems/test_gem_dependency_installer.rb +0 -1235
  721. data/test/rubygems/test_gem_dependency_list.rb +0 -260
  722. data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -29
  723. data/test/rubygems/test_gem_doctor.rb +0 -169
  724. data/test/rubygems/test_gem_ext_builder.rb +0 -341
  725. data/test/rubygems/test_gem_ext_cmake_builder.rb +0 -87
  726. data/test/rubygems/test_gem_ext_configure_builder.rb +0 -87
  727. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -211
  728. data/test/rubygems/test_gem_ext_rake_builder.rb +0 -65
  729. data/test/rubygems/test_gem_gem_runner.rb +0 -69
  730. data/test/rubygems/test_gem_gemcutter_utilities.rb +0 -235
  731. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -62
  732. data/test/rubygems/test_gem_indexer.rb +0 -367
  733. data/test/rubygems/test_gem_install_update_options.rb +0 -197
  734. data/test/rubygems/test_gem_installer.rb +0 -1552
  735. data/test/rubygems/test_gem_local_remote_options.rb +0 -134
  736. data/test/rubygems/test_gem_name_tuple.rb +0 -45
  737. data/test/rubygems/test_gem_package.rb +0 -876
  738. data/test/rubygems/test_gem_package_old.rb +0 -90
  739. data/test/rubygems/test_gem_package_tar_header.rb +0 -147
  740. data/test/rubygems/test_gem_package_tar_reader.rb +0 -90
  741. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -142
  742. data/test/rubygems/test_gem_package_tar_writer.rb +0 -264
  743. data/test/rubygems/test_gem_package_task.rb +0 -84
  744. data/test/rubygems/test_gem_path_support.rb +0 -121
  745. data/test/rubygems/test_gem_platform.rb +0 -308
  746. data/test/rubygems/test_gem_rdoc.rb +0 -270
  747. data/test/rubygems/test_gem_remote_fetcher.rb +0 -1051
  748. data/test/rubygems/test_gem_request.rb +0 -363
  749. data/test/rubygems/test_gem_request_connection_pools.rb +0 -130
  750. data/test/rubygems/test_gem_request_set.rb +0 -595
  751. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +0 -831
  752. data/test/rubygems/test_gem_request_set_lockfile.rb +0 -470
  753. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +0 -549
  754. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +0 -306
  755. data/test/rubygems/test_gem_requirement.rb +0 -387
  756. data/test/rubygems/test_gem_resolver.rb +0 -715
  757. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -74
  758. data/test/rubygems/test_gem_resolver_api_set.rb +0 -209
  759. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -145
  760. data/test/rubygems/test_gem_resolver_best_set.rb +0 -138
  761. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -46
  762. data/test/rubygems/test_gem_resolver_conflict.rb +0 -88
  763. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -85
  764. data/test/rubygems/test_gem_resolver_git_set.rb +0 -190
  765. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -114
  766. data/test/rubygems/test_gem_resolver_index_set.rb +0 -90
  767. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -90
  768. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -50
  769. data/test/rubygems/test_gem_resolver_installer_set.rb +0 -258
  770. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -46
  771. data/test/rubygems/test_gem_resolver_lock_set.rb +0 -64
  772. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -100
  773. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -21
  774. data/test/rubygems/test_gem_resolver_specification.rb +0 -65
  775. data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -84
  776. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -84
  777. data/test/rubygems/test_gem_security.rb +0 -307
  778. data/test/rubygems/test_gem_security_policy.rb +0 -541
  779. data/test/rubygems/test_gem_security_signer.rb +0 -209
  780. data/test/rubygems/test_gem_security_trust_dir.rb +0 -101
  781. data/test/rubygems/test_gem_server.rb +0 -409
  782. data/test/rubygems/test_gem_silent_ui.rb +0 -117
  783. data/test/rubygems/test_gem_source.rb +0 -242
  784. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -20
  785. data/test/rubygems/test_gem_source_git.rb +0 -309
  786. data/test/rubygems/test_gem_source_installed.rb +0 -37
  787. data/test/rubygems/test_gem_source_list.rb +0 -118
  788. data/test/rubygems/test_gem_source_local.rb +0 -107
  789. data/test/rubygems/test_gem_source_lock.rb +0 -115
  790. data/test/rubygems/test_gem_source_specific_file.rb +0 -76
  791. data/test/rubygems/test_gem_source_vendor.rb +0 -32
  792. data/test/rubygems/test_gem_spec_fetcher.rb +0 -311
  793. data/test/rubygems/test_gem_specification.rb +0 -3519
  794. data/test/rubygems/test_gem_stream_ui.rb +0 -239
  795. data/test/rubygems/test_gem_stub_specification.rb +0 -217
  796. data/test/rubygems/test_gem_text.rb +0 -77
  797. data/test/rubygems/test_gem_uninstaller.rb +0 -485
  798. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -33
  799. data/test/rubygems/test_gem_uri_formatter.rb +0 -29
  800. data/test/rubygems/test_gem_util.rb +0 -40
  801. data/test/rubygems/test_gem_validator.rb +0 -46
  802. data/test/rubygems/test_gem_version.rb +0 -222
  803. data/test/rubygems/test_gem_version_option.rb +0 -152
  804. data/test/rubygems/test_kernel.rb +0 -86
  805. data/test/rubygems/test_require.rb +0 -322
  806. data/test/rubygems/wrong_key_cert.pem +0 -18
  807. data/test/rubygems/wrong_key_cert_32.pem +0 -18
  808. data/util/CL2notes +0 -56
  809. data/util/create_certs.rb +0 -157
  810. data/util/create_encrypted_key.rb +0 -17
  811. data/util/generate_spdx_license_list.rb +0 -51
  812. data/util/update_bundled_ca_certificates.rb +0 -118
@@ -1,1679 +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
1014
- util_ensure_gem_dirs
1015
-
1016
- Gem.use_paths @gemhome, @additional
1017
-
1018
- assert_equal @gemhome, Gem.dir
1019
- assert_equal @additional + [Gem.dir], Gem.path
1020
- end
1021
-
1022
- def test_self_user_dir
1023
- parts = [@userhome, '.gem', Gem.ruby_engine]
1024
- parts << RbConfig::CONFIG['ruby_version'] unless RbConfig::CONFIG['ruby_version'].empty?
1025
-
1026
- assert_equal File.join(parts), Gem.user_dir
1027
- end
1028
-
1029
- def test_self_user_home
1030
- if ENV['HOME'] then
1031
- assert_equal ENV['HOME'], Gem.user_home
1032
- else
1033
- assert true, 'count this test'
1034
- end
1035
- end
1036
-
1037
- def test_self_needs
1038
- util_clear_gems
1039
- a = util_spec "a", "1"
1040
- b = util_spec "b", "1", "c" => nil
1041
- c = util_spec "c", "2"
1042
-
1043
- install_specs a, c, b
1044
-
1045
- Gem.needs do |r|
1046
- r.gem "a"
1047
- r.gem "b", "= 1"
1048
- end
1049
-
1050
- activated = Gem::Specification.map { |x| x.full_name }
1051
-
1052
- assert_equal %w!a-1 b-1 c-2!, activated.sort
1053
- end
1054
-
1055
- def test_self_needs_picks_up_unresolved_deps
1056
- skip 'loading from unsafe file' if RUBY_VERSION <= "1.8.7"
1057
- save_loaded_features do
1058
- util_clear_gems
1059
- a = util_spec "a", "1"
1060
- b = util_spec "b", "1", "c" => nil
1061
- c = util_spec "c", "2"
1062
- d = new_spec "d", "1", {'e' => '= 1'}, "lib/d.rb"
1063
- e = util_spec "e", "1"
1064
-
1065
- install_specs a, c, b, e, d
1066
-
1067
- Gem.needs do |r|
1068
- r.gem "a"
1069
- r.gem "b", "= 1"
1070
-
1071
- require 'd'
1072
- end
1073
-
1074
- assert_equal %w!a-1 b-1 c-2 d-1 e-1!, loaded_spec_names
1075
- end
1076
- end
1077
-
1078
- def test_self_gunzip
1079
- input = "\x1F\x8B\b\0\xED\xA3\x1AQ\0\x03\xCBH" +
1080
- "\xCD\xC9\xC9\a\0\x86\xA6\x106\x05\0\0\0"
1081
-
1082
- output = Gem.gunzip input
1083
-
1084
- assert_equal 'hello', output
1085
-
1086
- return unless Object.const_defined? :Encoding
1087
-
1088
- assert_equal Encoding::BINARY, output.encoding
1089
- end
1090
-
1091
- def test_self_gzip
1092
- input = 'hello'
1093
-
1094
- output = Gem.gzip input
1095
-
1096
- zipped = StringIO.new output
1097
-
1098
- assert_equal 'hello', Zlib::GzipReader.new(zipped).read
1099
-
1100
- return unless Object.const_defined? :Encoding
1101
-
1102
- assert_equal Encoding::BINARY, output.encoding
1103
- end
1104
-
1105
- if Gem.win_platform? && '1.9' > RUBY_VERSION
1106
- # Ruby 1.9 properly handles ~ path expansion, so no need to run such tests.
1107
- def test_self_user_home_userprofile
1108
-
1109
- Gem.clear_paths
1110
-
1111
- # safe-keep env variables
1112
- orig_home, orig_user_profile = ENV['HOME'], ENV['USERPROFILE']
1113
-
1114
- # prepare for the test
1115
- ENV.delete('HOME')
1116
- ENV['USERPROFILE'] = "W:\\Users\\RubyUser"
1117
-
1118
- assert_equal 'W:/Users/RubyUser', Gem.user_home
1119
-
1120
- ensure
1121
- ENV['HOME'] = orig_home
1122
- ENV['USERPROFILE'] = orig_user_profile
1123
- end
1124
-
1125
- def test_self_user_home_user_drive_and_path
1126
- Gem.clear_paths
1127
-
1128
- # safe-keep env variables
1129
- orig_home, orig_user_profile = ENV['HOME'], ENV['USERPROFILE']
1130
- orig_home_drive, orig_home_path = ENV['HOMEDRIVE'], ENV['HOMEPATH']
1131
-
1132
- # prepare the environment
1133
- ENV.delete('HOME')
1134
- ENV.delete('USERPROFILE')
1135
- ENV['HOMEDRIVE'] = 'Z:'
1136
- ENV['HOMEPATH'] = "\\Users\\RubyUser"
1137
-
1138
- assert_equal 'Z:/Users/RubyUser', Gem.user_home
1139
-
1140
- ensure
1141
- ENV['HOME'] = orig_home
1142
- ENV['USERPROFILE'] = orig_user_profile
1143
- ENV['HOMEDRIVE'] = orig_home_drive
1144
- ENV['HOMEPATH'] = orig_home_path
1145
- end
1146
- end
1147
-
1148
- def test_self_vendor_dir
1149
- expected =
1150
- File.join RbConfig::CONFIG['vendordir'], 'gems',
1151
- RbConfig::CONFIG['ruby_version']
1152
-
1153
- assert_equal expected, Gem.vendor_dir
1154
- end
1155
-
1156
- def test_self_vendor_dir_ENV_GEM_VENDOR
1157
- ENV['GEM_VENDOR'] = File.join @tempdir, 'vendor', 'gems'
1158
-
1159
- assert_equal ENV['GEM_VENDOR'], Gem.vendor_dir
1160
- refute Gem.vendor_dir.frozen?
1161
- end
1162
-
1163
- def test_self_vendor_dir_missing
1164
- orig_vendordir = RbConfig::CONFIG['vendordir']
1165
- RbConfig::CONFIG.delete 'vendordir'
1166
-
1167
- assert_nil Gem.vendor_dir
1168
- ensure
1169
- RbConfig::CONFIG['vendordir'] = orig_vendordir
1170
- end
1171
-
1172
- def test_load_plugins
1173
- skip 'Insecure operation - chdir' if RUBY_VERSION <= "1.8.7"
1174
- plugin_path = File.join "lib", "rubygems_plugin.rb"
1175
-
1176
- Dir.chdir @tempdir do
1177
- FileUtils.mkdir_p 'lib'
1178
- File.open plugin_path, "w" do |fp|
1179
- fp.puts "class TestGem; PLUGINS_LOADED << 'plugin'; end"
1180
- end
1181
-
1182
- foo1 = util_spec 'foo', '1' do |s|
1183
- s.files << plugin_path
1184
- end
1185
-
1186
- install_gem foo1
1187
-
1188
- foo2 = util_spec 'foo', '2' do |s|
1189
- s.files << plugin_path
1190
- end
1191
-
1192
- install_gem foo2
1193
- end
1194
-
1195
- Gem.searcher = nil
1196
- Gem::Specification.reset
1197
-
1198
- gem 'foo'
1199
-
1200
- Gem.load_plugins
1201
-
1202
- assert_equal %w[plugin], PLUGINS_LOADED
1203
- end
1204
-
1205
- def test_load_env_plugins
1206
- with_plugin('load') { Gem.load_env_plugins }
1207
- assert_equal :loaded, TEST_PLUGIN_LOAD rescue nil
1208
-
1209
- util_remove_interrupt_command
1210
-
1211
- # Should attempt to cause a StandardError
1212
- with_plugin('standarderror') { Gem.load_env_plugins }
1213
- assert_equal :loaded, TEST_PLUGIN_STANDARDERROR rescue nil
1214
-
1215
- util_remove_interrupt_command
1216
-
1217
- # Should attempt to cause an Exception
1218
- with_plugin('exception') { Gem.load_env_plugins }
1219
- assert_equal :loaded, TEST_PLUGIN_EXCEPTION rescue nil
1220
- end
1221
-
1222
- def test_gem_path_ordering
1223
- refute_equal Gem.dir, Gem.user_dir
1224
-
1225
- write_file File.join(@tempdir, 'lib', "g.rb") { |fp| fp.puts "" }
1226
- write_file File.join(@tempdir, 'lib', 'm.rb') { |fp| fp.puts "" }
1227
-
1228
- g = new_spec 'g', '1', nil, "lib/g.rb"
1229
- m = new_spec 'm', '1', nil, "lib/m.rb"
1230
-
1231
- install_gem g, :install_dir => Gem.dir
1232
- m0 = install_gem m, :install_dir => Gem.dir
1233
- m1 = install_gem m, :install_dir => Gem.user_dir
1234
-
1235
- assert_equal m0.gem_dir, File.join(Gem.dir, "gems", "m-1")
1236
- assert_equal m1.gem_dir, File.join(Gem.user_dir, "gems", "m-1")
1237
-
1238
- tests = [
1239
- [:dir0, [ Gem.dir, Gem.user_dir], m0],
1240
- [:dir1, [ Gem.user_dir, Gem.dir], m1]
1241
- ]
1242
-
1243
- tests.each do |_name, _paths, expected|
1244
- Gem.use_paths _paths.first, _paths
1245
- Gem::Specification.reset
1246
- Gem.searcher = nil
1247
-
1248
- assert_equal Gem::Dependency.new('m','1').to_specs,
1249
- Gem::Dependency.new('m','1').to_specs.sort
1250
-
1251
- assert_equal \
1252
- [expected.gem_dir],
1253
- Gem::Dependency.new('m','1').to_specs.map(&:gem_dir).sort,
1254
- "Wrong specs for #{_name}"
1255
-
1256
- spec = Gem::Dependency.new('m','1').to_spec
1257
-
1258
- assert_equal \
1259
- File.join(_paths.first, "gems", "m-1"),
1260
- spec.gem_dir,
1261
- "Wrong spec before require for #{_name}"
1262
- refute spec.activated?, "dependency already activated for #{_name}"
1263
-
1264
- gem "m"
1265
-
1266
- spec = Gem::Dependency.new('m','1').to_spec
1267
- assert spec.activated?, "dependency not activated for #{_name}"
1268
-
1269
- assert_equal \
1270
- File.join(_paths.first, "gems", "m-1"),
1271
- spec.gem_dir,
1272
- "Wrong spec after require for #{_name}"
1273
-
1274
- spec.instance_variable_set :@activated, false
1275
- Gem.loaded_specs.delete(spec.name)
1276
- $:.delete(File.join(spec.gem_dir, "lib"))
1277
- end
1278
- end
1279
-
1280
- def test_gem_path_ordering_short
1281
- write_file File.join(@tempdir, 'lib', "g.rb") { |fp| fp.puts "" }
1282
- write_file File.join(@tempdir, 'lib', 'm.rb') { |fp| fp.puts "" }
1283
-
1284
- g = new_spec 'g', '1', nil, "lib/g.rb"
1285
- m = new_spec 'm', '1', nil, "lib/m.rb"
1286
-
1287
- install_gem g, :install_dir => Gem.dir
1288
- install_gem m, :install_dir => Gem.dir
1289
- install_gem m, :install_dir => Gem.user_dir
1290
-
1291
- Gem.use_paths Gem.dir, [ Gem.dir, Gem.user_dir]
1292
-
1293
- assert_equal \
1294
- File.join(Gem.dir, "gems", "m-1"),
1295
- Gem::Dependency.new('m','1').to_spec.gem_dir,
1296
- "Wrong spec selected"
1297
- end
1298
-
1299
- def test_auto_activation_of_specific_gemdeps_file
1300
- util_clear_gems
1301
-
1302
- a = new_spec "a", "1", nil, "lib/a.rb"
1303
- b = new_spec "b", "1", nil, "lib/b.rb"
1304
- c = new_spec "c", "1", nil, "lib/c.rb"
1305
-
1306
- install_specs a, b, c
1307
-
1308
- path = File.join @tempdir, "gem.deps.rb"
1309
-
1310
- File.open path, "w" do |f|
1311
- f.puts "gem 'a'"
1312
- f.puts "gem 'b'"
1313
- f.puts "gem 'c'"
1314
- end
1315
-
1316
- ENV['RUBYGEMS_GEMDEPS'] = path
1317
-
1318
- Gem.detect_gemdeps
1319
-
1320
- assert_equal %w!a-1 b-1 c-1!, loaded_spec_names
1321
- end
1322
-
1323
- def test_auto_activation_of_detected_gemdeps_file
1324
- skip 'Insecure operation - chdir' if RUBY_VERSION <= "1.8.7"
1325
- util_clear_gems
1326
-
1327
- a = new_spec "a", "1", nil, "lib/a.rb"
1328
- b = new_spec "b", "1", nil, "lib/b.rb"
1329
- c = new_spec "c", "1", nil, "lib/c.rb"
1330
-
1331
- install_specs a, b, c
1332
-
1333
- path = File.join @tempdir, "gem.deps.rb"
1334
-
1335
- File.open path, "w" do |f|
1336
- f.puts "gem 'a'"
1337
- f.puts "gem 'b'"
1338
- f.puts "gem 'c'"
1339
- end
1340
-
1341
- ENV['RUBYGEMS_GEMDEPS'] = "-"
1342
-
1343
- assert_equal [a,b,c], Gem.detect_gemdeps.sort_by { |s| s.name }
1344
- end
1345
-
1346
- LIB_PATH = File.expand_path "../../../lib".dup.untaint, __FILE__.dup.untaint
1347
-
1348
- def test_looks_for_gemdeps_files_automatically_on_start
1349
- util_clear_gems
1350
-
1351
- a = new_spec "a", "1", nil, "lib/a.rb"
1352
- b = new_spec "b", "1", nil, "lib/b.rb"
1353
- c = new_spec "c", "1", nil, "lib/c.rb"
1354
-
1355
- install_specs a, b, c
1356
-
1357
- path = File.join @tempdir, "gem.deps.rb"
1358
-
1359
- File.open path, "w" do |f|
1360
- f.puts "gem 'a'"
1361
- f.puts "gem 'b'"
1362
- f.puts "gem 'c'"
1363
- end
1364
-
1365
- path = File.join(@tempdir, "gd-tmp")
1366
- install_gem a, :install_dir => path
1367
- install_gem b, :install_dir => path
1368
- install_gem c, :install_dir => path
1369
-
1370
- ENV['GEM_PATH'] = path
1371
- ENV['RUBYGEMS_GEMDEPS'] = "-"
1372
-
1373
- out = `#{Gem.ruby.dup.untaint} -I "#{LIB_PATH.untaint}" -rubygems -e "p Gem.loaded_specs.values.map(&:full_name).sort"`
1374
-
1375
- assert_equal '["a-1", "b-1", "c-1"]', out.strip
1376
- end
1377
-
1378
- def test_looks_for_gemdeps_files_automatically_on_start_in_parent_dir
1379
- util_clear_gems
1380
-
1381
- a = new_spec "a", "1", nil, "lib/a.rb"
1382
- b = new_spec "b", "1", nil, "lib/b.rb"
1383
- c = new_spec "c", "1", nil, "lib/c.rb"
1384
-
1385
- install_specs a, b, c
1386
-
1387
- path = File.join @tempdir, "gem.deps.rb"
1388
-
1389
- File.open path, "w" do |f|
1390
- f.puts "gem 'a'"
1391
- f.puts "gem 'b'"
1392
- f.puts "gem 'c'"
1393
- end
1394
-
1395
- path = File.join(@tempdir, "gd-tmp")
1396
- install_gem a, :install_dir => path
1397
- install_gem b, :install_dir => path
1398
- install_gem c, :install_dir => path
1399
-
1400
- ENV['GEM_PATH'] = path
1401
- ENV['RUBYGEMS_GEMDEPS'] = "-"
1402
-
1403
- Dir.mkdir "sub1"
1404
- out = Dir.chdir "sub1" do
1405
- `#{Gem.ruby.dup.untaint} -I "#{LIB_PATH.untaint}" -rubygems -e "p Gem.loaded_specs.values.map(&:full_name).sort"`
1406
- end
1407
-
1408
- Dir.rmdir "sub1"
1409
-
1410
- assert_equal '["a-1", "b-1", "c-1"]', out.strip
1411
- end
1412
-
1413
- def test_register_default_spec
1414
- Gem.clear_default_specs
1415
-
1416
- old_style = Gem::Specification.new do |spec|
1417
- spec.files = ["foo.rb", "bar.rb"]
1418
- end
1419
-
1420
- Gem.register_default_spec old_style
1421
-
1422
- assert_equal old_style, Gem.find_unresolved_default_spec("foo.rb")
1423
- assert_equal old_style, Gem.find_unresolved_default_spec("bar.rb")
1424
- assert_equal nil, Gem.find_unresolved_default_spec("baz.rb")
1425
-
1426
- Gem.clear_default_specs
1427
-
1428
- new_style = Gem::Specification.new do |spec|
1429
- spec.files = ["lib/foo.rb", "ext/bar.rb", "bin/exec", "README"]
1430
- spec.require_paths = ["lib", "ext"]
1431
- end
1432
-
1433
- Gem.register_default_spec new_style
1434
-
1435
- assert_equal new_style, Gem.find_unresolved_default_spec("foo.rb")
1436
- assert_equal new_style, Gem.find_unresolved_default_spec("bar.rb")
1437
- assert_equal nil, Gem.find_unresolved_default_spec("exec")
1438
- assert_equal nil, Gem.find_unresolved_default_spec("README")
1439
- end
1440
-
1441
- def test_default_gems_use_full_paths
1442
- begin
1443
- if defined?(RUBY_ENGINE) then
1444
- engine = RUBY_ENGINE
1445
- Object.send :remove_const, :RUBY_ENGINE
1446
- end
1447
- Object.const_set :RUBY_ENGINE, 'ruby'
1448
-
1449
- refute Gem.default_gems_use_full_paths?
1450
- ensure
1451
- Object.send :remove_const, :RUBY_ENGINE
1452
- Object.const_set :RUBY_ENGINE, engine if engine
1453
- end
1454
-
1455
- begin
1456
- if defined?(RUBY_ENGINE) then
1457
- engine = RUBY_ENGINE
1458
- Object.send :remove_const, :RUBY_ENGINE
1459
- end
1460
- Object.const_set :RUBY_ENGINE, 'jruby'
1461
- assert Gem.default_gems_use_full_paths?
1462
- ensure
1463
- Object.send :remove_const, :RUBY_ENGINE
1464
- Object.const_set :RUBY_ENGINE, engine if engine
1465
- end
1466
- end
1467
-
1468
- def test_use_gemdeps
1469
- gem_deps_file = 'gem.deps.rb'.untaint
1470
- spec = util_spec 'a', 1
1471
- install_specs spec
1472
-
1473
- spec = Gem::Specification.find { |s| s == spec }
1474
- refute spec.activated?
1475
-
1476
- open gem_deps_file, 'w' do |io|
1477
- io.write 'gem "a"'
1478
- end
1479
-
1480
- assert_nil Gem.gemdeps
1481
-
1482
- Gem.use_gemdeps gem_deps_file
1483
-
1484
- assert spec.activated?
1485
- refute_nil Gem.gemdeps
1486
- end
1487
-
1488
- def test_use_gemdeps_ENV
1489
- rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], nil
1490
-
1491
- spec = util_spec 'a', 1
1492
-
1493
- refute spec.activated?
1494
-
1495
- open 'gem.deps.rb', 'w' do |io|
1496
- io.write 'gem "a"'
1497
- end
1498
-
1499
- Gem.use_gemdeps
1500
-
1501
- refute spec.activated?
1502
- ensure
1503
- ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
1504
- end
1505
-
1506
- def test_use_gemdeps_argument_missing
1507
- e = assert_raises ArgumentError do
1508
- Gem.use_gemdeps 'gem.deps.rb'
1509
- end
1510
-
1511
- assert_equal 'Unable to find gem dependencies file at gem.deps.rb',
1512
- e.message
1513
- end
1514
-
1515
- def test_use_gemdeps_argument_missing_match_ENV
1516
- rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] =
1517
- ENV['RUBYGEMS_GEMDEPS'], 'gem.deps.rb'
1518
-
1519
- e = assert_raises ArgumentError do
1520
- Gem.use_gemdeps 'gem.deps.rb'
1521
- end
1522
-
1523
- assert_equal 'Unable to find gem dependencies file at gem.deps.rb',
1524
- e.message
1525
- ensure
1526
- ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
1527
- end
1528
-
1529
- def test_use_gemdeps_automatic
1530
- skip 'Insecure operation - chdir' if RUBY_VERSION <= "1.8.7"
1531
- rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], '-'
1532
-
1533
- spec = util_spec 'a', 1
1534
- install_specs spec
1535
- spec = Gem::Specification.find { |s| s == spec }
1536
-
1537
- refute spec.activated?
1538
-
1539
- open 'Gemfile', 'w' do |io|
1540
- io.write 'gem "a"'
1541
- end
1542
-
1543
- Gem.use_gemdeps
1544
-
1545
- assert spec.activated?
1546
- ensure
1547
- ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
1548
- end
1549
-
1550
- def test_use_gemdeps_automatic_missing
1551
- skip 'Insecure operation - chdir' if RUBY_VERSION <= "1.8.7"
1552
- rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], '-'
1553
-
1554
- Gem.use_gemdeps
1555
-
1556
- assert true # count
1557
- ensure
1558
- ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
1559
- end
1560
-
1561
- def test_use_gemdeps_disabled
1562
- rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], ''
1563
-
1564
- spec = util_spec 'a', 1
1565
-
1566
- refute spec.activated?
1567
-
1568
- open 'gem.deps.rb', 'w' do |io|
1569
- io.write 'gem "a"'
1570
- end
1571
-
1572
- Gem.use_gemdeps
1573
-
1574
- refute spec.activated?
1575
- ensure
1576
- ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
1577
- end
1578
-
1579
- def test_use_gemdeps_missing_gem
1580
- skip 'Insecure operation - read' if RUBY_VERSION <= "1.8.7"
1581
- rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], 'x'
1582
-
1583
- open 'x', 'w' do |io|
1584
- io.write 'gem "a"'
1585
- end
1586
-
1587
- expected = <<-EXPECTED
1588
- Unable to resolve dependency: user requested 'a (>= 0)'
1589
- You may need to `gem install -g` to install missing gems
1590
-
1591
- EXPECTED
1592
-
1593
- assert_output nil, expected do
1594
- Gem.use_gemdeps
1595
- end
1596
- ensure
1597
- ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
1598
- end
1599
-
1600
- def test_use_gemdeps_specific
1601
- skip 'Insecure operation - read' if RUBY_VERSION <= "1.8.7"
1602
- rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], 'x'
1603
-
1604
- spec = util_spec 'a', 1
1605
- install_specs spec
1606
-
1607
- spec = Gem::Specification.find { |s| s == spec }
1608
- refute spec.activated?
1609
-
1610
- open 'x', 'w' do |io|
1611
- io.write 'gem "a"'
1612
- end
1613
-
1614
- Gem.use_gemdeps
1615
-
1616
- assert spec.activated?
1617
- ensure
1618
- ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
1619
- end
1620
-
1621
- def ruby_install_name name
1622
- orig_RUBY_INSTALL_NAME = RbConfig::CONFIG['ruby_install_name']
1623
- RbConfig::CONFIG['ruby_install_name'] = name
1624
-
1625
- yield
1626
- ensure
1627
- if orig_RUBY_INSTALL_NAME then
1628
- RbConfig::CONFIG['ruby_install_name'] = orig_RUBY_INSTALL_NAME
1629
- else
1630
- RbConfig::CONFIG.delete 'ruby_install_name'
1631
- end
1632
- end
1633
-
1634
- def with_plugin(path)
1635
- test_plugin_path = File.expand_path("test/rubygems/plugin/#{path}",
1636
- @@project_dir)
1637
-
1638
- # A single test plugin should get loaded once only, in order to preserve
1639
- # sane test semantics.
1640
- refute_includes $LOAD_PATH, test_plugin_path
1641
- $LOAD_PATH.unshift test_plugin_path
1642
-
1643
- capture_io do
1644
- yield
1645
- end
1646
- ensure
1647
- $LOAD_PATH.delete test_plugin_path
1648
- end
1649
-
1650
- def util_ensure_gem_dirs
1651
- Gem.ensure_gem_subdirectories @gemhome
1652
-
1653
- #
1654
- # FIXME what does this solve precisely? -ebh
1655
- #
1656
- @additional.each do |dir|
1657
- Gem.ensure_gem_subdirectories @gemhome
1658
- end
1659
- end
1660
-
1661
- def util_exec_gem
1662
- spec, _ = util_spec 'a', '4' do |s|
1663
- s.executables = ['exec', 'abin']
1664
- end
1665
-
1666
- @exec_path = File.join spec.full_gem_path, spec.bindir, 'exec'
1667
- @abin_path = File.join spec.full_gem_path, spec.bindir, 'abin'
1668
- spec
1669
- end
1670
-
1671
- def util_remove_interrupt_command
1672
- Gem::Commands.send :remove_const, :InterruptCommand if
1673
- Gem::Commands.const_defined? :InterruptCommand
1674
- end
1675
-
1676
- def util_cache_dir
1677
- File.join Gem.dir, "cache"
1678
- end
1679
- end