rubygems-update 3.2.30 → 3.4.10

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 (641) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1666 -994
  3. data/CONTRIBUTING.md +71 -15
  4. data/Manifest.txt +93 -37
  5. data/POLICIES.md +65 -16
  6. data/README.md +28 -13
  7. data/UPGRADING.md +5 -81
  8. data/bin/gem +2 -10
  9. data/bin/update_rubygems +5 -5
  10. data/bundler/CHANGELOG.md +647 -1
  11. data/bundler/README.md +3 -6
  12. data/bundler/UPGRADING.md +11 -4
  13. data/bundler/bundler.gemspec +8 -10
  14. data/bundler/exe/bundle +7 -11
  15. data/bundler/exe/bundler +1 -1
  16. data/bundler/lib/bundler/.document +1 -0
  17. data/bundler/lib/bundler/build_metadata.rb +3 -3
  18. data/bundler/lib/bundler/cli/add.rb +1 -1
  19. data/bundler/lib/bundler/cli/binstubs.rb +5 -1
  20. data/bundler/lib/bundler/cli/check.rb +1 -1
  21. data/bundler/lib/bundler/cli/common.rb +4 -2
  22. data/bundler/lib/bundler/cli/config.rb +10 -1
  23. data/bundler/lib/bundler/cli/console.rb +2 -2
  24. data/bundler/lib/bundler/cli/doctor.rb +10 -3
  25. data/bundler/lib/bundler/cli/gem.rb +136 -42
  26. data/bundler/lib/bundler/cli/info.rb +17 -3
  27. data/bundler/lib/bundler/cli/init.rb +6 -2
  28. data/bundler/lib/bundler/cli/install.rb +15 -33
  29. data/bundler/lib/bundler/cli/lock.rb +8 -5
  30. data/bundler/lib/bundler/cli/open.rb +6 -4
  31. data/bundler/lib/bundler/cli/outdated.rb +13 -6
  32. data/bundler/lib/bundler/cli/platform.rb +2 -2
  33. data/bundler/lib/bundler/cli/show.rb +1 -1
  34. data/bundler/lib/bundler/cli/update.rb +8 -4
  35. data/bundler/lib/bundler/cli/viz.rb +1 -1
  36. data/bundler/lib/bundler/cli.rb +67 -21
  37. data/bundler/lib/bundler/compact_index_client/cache.rb +1 -10
  38. data/bundler/lib/bundler/compact_index_client/updater.rb +53 -44
  39. data/bundler/lib/bundler/compact_index_client.rb +0 -6
  40. data/bundler/lib/bundler/constants.rb +1 -1
  41. data/bundler/lib/bundler/current_ruby.rb +18 -6
  42. data/bundler/lib/bundler/definition.rb +259 -242
  43. data/bundler/lib/bundler/dependency.rb +24 -71
  44. data/bundler/lib/bundler/digest.rb +1 -1
  45. data/bundler/lib/bundler/dsl.rb +29 -46
  46. data/bundler/lib/bundler/endpoint_specification.rb +15 -13
  47. data/bundler/lib/bundler/env.rb +2 -2
  48. data/bundler/lib/bundler/environment_preserver.rb +7 -3
  49. data/bundler/lib/bundler/errors.rb +15 -15
  50. data/bundler/lib/bundler/feature_flag.rb +0 -1
  51. data/bundler/lib/bundler/fetcher/base.rb +6 -8
  52. data/bundler/lib/bundler/fetcher/compact_index.rb +18 -25
  53. data/bundler/lib/bundler/fetcher/dependency.rb +2 -6
  54. data/bundler/lib/bundler/fetcher/downloader.rb +2 -5
  55. data/bundler/lib/bundler/fetcher/index.rb +0 -26
  56. data/bundler/lib/bundler/fetcher.rb +22 -29
  57. data/bundler/lib/bundler/force_platform.rb +18 -0
  58. data/bundler/lib/bundler/friendly_errors.rb +21 -7
  59. data/bundler/lib/bundler/gem_helper.rb +4 -4
  60. data/bundler/lib/bundler/gem_helpers.rb +9 -2
  61. data/bundler/lib/bundler/gem_version_promoter.rb +53 -98
  62. data/bundler/lib/bundler/graph.rb +3 -3
  63. data/bundler/lib/bundler/index.rb +13 -51
  64. data/bundler/lib/bundler/injector.rb +18 -4
  65. data/bundler/lib/bundler/inline.rb +9 -21
  66. data/bundler/lib/bundler/installer/gem_installer.rb +13 -5
  67. data/bundler/lib/bundler/installer/parallel_installer.rb +3 -33
  68. data/bundler/lib/bundler/installer/standalone.rb +42 -11
  69. data/bundler/lib/bundler/installer.rb +20 -44
  70. data/bundler/lib/bundler/lazy_specification.rb +72 -55
  71. data/bundler/lib/bundler/lockfile_generator.rb +3 -3
  72. data/bundler/lib/bundler/lockfile_parser.rb +28 -26
  73. data/bundler/lib/bundler/man/bundle-add.1 +21 -5
  74. data/bundler/lib/bundler/man/bundle-add.1.ronn +16 -4
  75. data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
  76. data/bundler/lib/bundler/man/bundle-cache.1 +7 -1
  77. data/bundler/lib/bundler/man/bundle-cache.1.ronn +7 -0
  78. data/bundler/lib/bundler/man/bundle-check.1 +1 -1
  79. data/bundler/lib/bundler/man/bundle-clean.1 +2 -2
  80. data/bundler/lib/bundler/man/bundle-clean.1.ronn +1 -1
  81. data/bundler/lib/bundler/man/bundle-config.1 +34 -15
  82. data/bundler/lib/bundler/man/bundle-config.1.ronn +31 -19
  83. data/bundler/lib/bundler/man/bundle-console.1 +53 -0
  84. data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
  85. data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
  86. data/bundler/lib/bundler/man/bundle-exec.1 +6 -6
  87. data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -6
  88. data/bundler/lib/bundler/man/bundle-gem.1 +37 -34
  89. data/bundler/lib/bundler/man/bundle-gem.1.ronn +21 -5
  90. data/bundler/lib/bundler/man/bundle-help.1 +13 -0
  91. data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
  92. data/bundler/lib/bundler/man/bundle-info.1 +1 -1
  93. data/bundler/lib/bundler/man/bundle-init.1 +5 -1
  94. data/bundler/lib/bundler/man/bundle-init.1.ronn +2 -0
  95. data/bundler/lib/bundler/man/bundle-inject.1 +5 -2
  96. data/bundler/lib/bundler/man/bundle-inject.1.ronn +3 -1
  97. data/bundler/lib/bundler/man/bundle-install.1 +6 -31
  98. data/bundler/lib/bundler/man/bundle-install.1.ronn +8 -31
  99. data/bundler/lib/bundler/man/bundle-list.1 +1 -1
  100. data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
  101. data/bundler/lib/bundler/man/bundle-open.1 +22 -2
  102. data/bundler/lib/bundler/man/bundle-open.1.ronn +9 -1
  103. data/bundler/lib/bundler/man/bundle-outdated.1 +3 -10
  104. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +1 -10
  105. data/bundler/lib/bundler/man/bundle-platform.1 +16 -6
  106. data/bundler/lib/bundler/man/bundle-platform.1.ronn +14 -7
  107. data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
  108. data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
  109. data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
  110. data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
  111. data/bundler/lib/bundler/man/bundle-show.1 +1 -1
  112. data/bundler/lib/bundler/man/bundle-update.1 +2 -2
  113. data/bundler/lib/bundler/man/bundle-update.1.ronn +2 -1
  114. data/bundler/lib/bundler/man/bundle-version.1 +35 -0
  115. data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
  116. data/bundler/lib/bundler/man/bundle-viz.1 +4 -1
  117. data/bundler/lib/bundler/man/bundle-viz.1.ronn +2 -0
  118. data/bundler/lib/bundler/man/bundle.1 +15 -10
  119. data/bundler/lib/bundler/man/bundle.1.ronn +12 -7
  120. data/bundler/lib/bundler/man/gemfile.5 +117 -80
  121. data/bundler/lib/bundler/man/gemfile.5.ronn +105 -84
  122. data/bundler/lib/bundler/man/index.txt +4 -0
  123. data/bundler/lib/bundler/match_metadata.rb +13 -0
  124. data/bundler/lib/bundler/match_platform.rb +0 -1
  125. data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
  126. data/bundler/lib/bundler/mirror.rb +5 -7
  127. data/bundler/lib/bundler/plugin/api/source.rb +4 -9
  128. data/bundler/lib/bundler/plugin/index.rb +4 -4
  129. data/bundler/lib/bundler/plugin/installer/git.rb +0 -4
  130. data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -8
  131. data/bundler/lib/bundler/plugin/installer.rb +6 -3
  132. data/bundler/lib/bundler/plugin.rb +3 -1
  133. data/bundler/lib/bundler/process_lock.rb +1 -1
  134. data/bundler/lib/bundler/remote_specification.rb +7 -5
  135. data/bundler/lib/bundler/resolver/base.rb +109 -0
  136. data/bundler/lib/bundler/resolver/candidate.rb +94 -0
  137. data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
  138. data/bundler/lib/bundler/resolver/package.rb +72 -0
  139. data/bundler/lib/bundler/resolver/root.rb +25 -0
  140. data/bundler/lib/bundler/resolver/spec_group.rb +43 -71
  141. data/bundler/lib/bundler/resolver.rb +332 -308
  142. data/bundler/lib/bundler/ruby_dsl.rb +1 -1
  143. data/bundler/lib/bundler/ruby_version.rb +5 -18
  144. data/bundler/lib/bundler/rubygems_ext.rb +144 -25
  145. data/bundler/lib/bundler/rubygems_gem_installer.rb +32 -20
  146. data/bundler/lib/bundler/rubygems_integration.rb +24 -95
  147. data/bundler/lib/bundler/runtime.rb +2 -7
  148. data/bundler/lib/bundler/self_manager.rb +168 -0
  149. data/bundler/lib/bundler/settings.rb +5 -10
  150. data/bundler/lib/bundler/setup.rb +4 -1
  151. data/bundler/lib/bundler/shared_helpers.rb +17 -25
  152. data/bundler/lib/bundler/source/git/git_proxy.rb +219 -71
  153. data/bundler/lib/bundler/source/git.rb +23 -26
  154. data/bundler/lib/bundler/source/metadata.rb +3 -4
  155. data/bundler/lib/bundler/source/path/installer.rb +1 -22
  156. data/bundler/lib/bundler/source/path.rb +7 -7
  157. data/bundler/lib/bundler/source/rubygems.rb +91 -130
  158. data/bundler/lib/bundler/source/rubygems_aggregate.rb +1 -1
  159. data/bundler/lib/bundler/source.rb +4 -5
  160. data/bundler/lib/bundler/source_list.rb +19 -31
  161. data/bundler/lib/bundler/source_map.rb +15 -2
  162. data/bundler/lib/bundler/spec_set.rb +63 -35
  163. data/bundler/lib/bundler/stub_specification.rb +5 -3
  164. data/bundler/lib/bundler/templates/Executable +3 -5
  165. data/bundler/lib/bundler/templates/Executable.bundler +6 -11
  166. data/bundler/lib/bundler/templates/Executable.standalone +4 -4
  167. data/bundler/lib/bundler/templates/Gemfile +0 -2
  168. data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
  169. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +8 -2
  170. data/bundler/lib/bundler/templates/newgem/README.md.tt +7 -11
  171. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +27 -3
  172. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
  173. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
  174. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
  175. data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
  176. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +13 -3
  177. data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
  178. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +13 -4
  179. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +22 -16
  180. data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
  181. data/bundler/lib/bundler/templates/newgem/standard.yml.tt +3 -0
  182. data/bundler/lib/bundler/templates/newgem/test/minitest/{newgem_test.rb.tt → test_newgem.rb.tt} +1 -1
  183. data/bundler/lib/bundler/ui/shell.rb +36 -13
  184. data/bundler/lib/bundler/ui/silent.rb +21 -5
  185. data/bundler/lib/bundler/uri_normalizer.rb +23 -0
  186. data/bundler/lib/bundler/vendor/.document +1 -0
  187. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
  188. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
  189. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
  190. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1350 -408
  191. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
  192. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
  193. data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
  194. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
  195. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
  196. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
  197. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
  198. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
  199. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
  200. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
  201. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
  202. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
  203. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
  204. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
  205. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
  206. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
  207. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +243 -0
  208. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
  209. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
  210. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +6 -6
  211. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -2
  212. data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +6 -2
  213. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +6 -0
  214. data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +9 -4
  215. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +19 -1
  216. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +23 -5
  217. data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
  218. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
  219. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  220. data/bundler/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
  221. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +452 -0
  222. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +76 -91
  223. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
  224. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -2
  225. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +32 -13
  226. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -3
  227. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -2
  228. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +2 -2
  229. data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
  230. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -3
  231. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +14 -21
  232. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +11 -17
  233. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  234. data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +83 -0
  235. data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +23 -0
  236. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -3
  237. data/bundler/lib/bundler/vendored_persistent.rb +1 -33
  238. data/bundler/lib/bundler/{vendored_molinillo.rb → vendored_pub_grub.rb} +1 -1
  239. data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_tsort.rb} +1 -1
  240. data/bundler/lib/bundler/version.rb +5 -1
  241. data/bundler/lib/bundler/worker.rb +5 -7
  242. data/bundler/lib/bundler.rb +50 -77
  243. data/hide_lib_for_update/note.txt +0 -4
  244. data/lib/rubygems/available_set.rb +3 -3
  245. data/lib/rubygems/basic_specification.rb +12 -12
  246. data/lib/rubygems/bundler_version_finder.rb +14 -46
  247. data/lib/rubygems/command.rb +47 -39
  248. data/lib/rubygems/command_manager.rb +34 -13
  249. data/lib/rubygems/commands/build_command.rb +11 -8
  250. data/lib/rubygems/commands/cert_command.rb +39 -39
  251. data/lib/rubygems/commands/check_command.rb +20 -20
  252. data/lib/rubygems/commands/cleanup_command.rb +23 -23
  253. data/lib/rubygems/commands/contents_command.rb +13 -13
  254. data/lib/rubygems/commands/dependency_command.rb +35 -45
  255. data/lib/rubygems/commands/environment_command.rb +10 -7
  256. data/lib/rubygems/commands/exec_command.rb +248 -0
  257. data/lib/rubygems/commands/fetch_command.rb +32 -13
  258. data/lib/rubygems/commands/generate_index_command.rb +17 -17
  259. data/lib/rubygems/commands/help_command.rb +6 -6
  260. data/lib/rubygems/commands/info_command.rb +3 -3
  261. data/lib/rubygems/commands/install_command.rb +31 -24
  262. data/lib/rubygems/commands/list_command.rb +4 -4
  263. data/lib/rubygems/commands/lock_command.rb +4 -4
  264. data/lib/rubygems/commands/mirror_command.rb +3 -3
  265. data/lib/rubygems/commands/open_command.rb +9 -9
  266. data/lib/rubygems/commands/outdated_command.rb +5 -5
  267. data/lib/rubygems/commands/owner_command.rb +17 -12
  268. data/lib/rubygems/commands/pristine_command.rb +64 -49
  269. data/lib/rubygems/commands/push_command.rb +16 -16
  270. data/lib/rubygems/commands/query_command.rb +9 -9
  271. data/lib/rubygems/commands/rdoc_command.rb +26 -25
  272. data/lib/rubygems/commands/search_command.rb +4 -4
  273. data/lib/rubygems/commands/server_command.rb +16 -79
  274. data/lib/rubygems/commands/setup_command.rb +172 -173
  275. data/lib/rubygems/commands/signin_command.rb +9 -9
  276. data/lib/rubygems/commands/signout_command.rb +7 -7
  277. data/lib/rubygems/commands/sources_command.rb +22 -22
  278. data/lib/rubygems/commands/specification_command.rb +18 -18
  279. data/lib/rubygems/commands/stale_command.rb +2 -2
  280. data/lib/rubygems/commands/uninstall_command.rb +43 -40
  281. data/lib/rubygems/commands/unpack_command.rb +13 -13
  282. data/lib/rubygems/commands/update_command.rb +61 -72
  283. data/lib/rubygems/commands/which_command.rb +7 -7
  284. data/lib/rubygems/commands/yank_command.rb +11 -11
  285. data/lib/rubygems/compatibility.rb +4 -2
  286. data/lib/rubygems/config_file.rb +58 -25
  287. data/lib/rubygems/core_ext/kernel_gem.rb +1 -6
  288. data/lib/rubygems/core_ext/kernel_require.rb +108 -115
  289. data/lib/rubygems/core_ext/kernel_warn.rb +33 -37
  290. data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
  291. data/lib/rubygems/defaults.rb +32 -36
  292. data/lib/rubygems/dependency.rb +20 -17
  293. data/lib/rubygems/dependency_installer.rb +37 -37
  294. data/lib/rubygems/dependency_list.rb +7 -7
  295. data/lib/rubygems/deprecate.rb +55 -8
  296. data/lib/rubygems/doctor.rb +21 -21
  297. data/lib/rubygems/errors.rb +3 -6
  298. data/lib/rubygems/exceptions.rb +35 -7
  299. data/lib/rubygems/ext/build_error.rb +1 -1
  300. data/lib/rubygems/ext/builder.rb +51 -22
  301. data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +27 -0
  302. data/lib/rubygems/ext/cargo_builder.rb +360 -0
  303. data/lib/rubygems/ext/cmake_builder.rb +2 -2
  304. data/lib/rubygems/ext/configure_builder.rb +1 -1
  305. data/lib/rubygems/ext/ext_conf_builder.rb +35 -59
  306. data/lib/rubygems/ext/rake_builder.rb +3 -3
  307. data/lib/rubygems/ext.rb +7 -6
  308. data/lib/rubygems/gem_runner.rb +12 -16
  309. data/lib/rubygems/gemcutter_utilities.rb +60 -21
  310. data/lib/rubygems/indexer.rb +30 -28
  311. data/lib/rubygems/install_default_message.rb +2 -2
  312. data/lib/rubygems/install_message.rb +2 -2
  313. data/lib/rubygems/install_update_options.rb +70 -61
  314. data/lib/rubygems/installer.rb +135 -87
  315. data/lib/rubygems/installer_uninstaller_utils.rb +2 -2
  316. data/lib/rubygems/local_remote_options.rb +22 -24
  317. data/lib/rubygems/mock_gem_ui.rb +2 -2
  318. data/lib/rubygems/name_tuple.rb +6 -7
  319. data/lib/rubygems/optparse/.document +1 -0
  320. data/lib/rubygems/optparse/COPYING +56 -0
  321. data/lib/rubygems/optparse/lib/optionparser.rb +2 -0
  322. data/lib/rubygems/optparse/lib/optparse/ac.rb +54 -0
  323. data/lib/rubygems/optparse/lib/optparse/date.rb +18 -0
  324. data/lib/rubygems/optparse/lib/optparse/kwargs.rb +22 -0
  325. data/lib/rubygems/optparse/lib/optparse/shellwords.rb +7 -0
  326. data/lib/rubygems/optparse/lib/optparse/time.rb +11 -0
  327. data/lib/rubygems/optparse/lib/optparse/uri.rb +7 -0
  328. data/lib/rubygems/optparse/lib/optparse/version.rb +71 -0
  329. data/lib/rubygems/optparse/lib/optparse.rb +2308 -0
  330. data/lib/rubygems/optparse.rb +3 -0
  331. data/lib/rubygems/package/file_source.rb +2 -2
  332. data/lib/rubygems/package/old.rb +9 -9
  333. data/lib/rubygems/package/tar_header.rb +62 -62
  334. data/lib/rubygems/package/tar_reader/entry.rb +90 -9
  335. data/lib/rubygems/package/tar_reader.rb +1 -29
  336. data/lib/rubygems/package/tar_writer.rb +7 -7
  337. data/lib/rubygems/package.rb +77 -60
  338. data/lib/rubygems/package_task.rb +4 -4
  339. data/lib/rubygems/path_support.rb +1 -6
  340. data/lib/rubygems/platform.rb +94 -61
  341. data/lib/rubygems/psych_tree.rb +1 -1
  342. data/lib/rubygems/query_utils.rb +49 -51
  343. data/lib/rubygems/rdoc.rb +2 -2
  344. data/lib/rubygems/remote_fetcher.rb +27 -27
  345. data/lib/rubygems/request/connection_pools.rb +4 -4
  346. data/lib/rubygems/request/http_pool.rb +1 -1
  347. data/lib/rubygems/request.rb +24 -24
  348. data/lib/rubygems/request_set/gem_dependency_api.rb +122 -123
  349. data/lib/rubygems/request_set/lockfile/parser.rb +26 -26
  350. data/lib/rubygems/request_set/lockfile/tokenizer.rb +4 -4
  351. data/lib/rubygems/request_set/lockfile.rb +9 -9
  352. data/lib/rubygems/request_set.rb +18 -18
  353. data/lib/rubygems/requirement.rb +15 -15
  354. data/lib/rubygems/resolver/activation_request.rb +3 -3
  355. data/lib/rubygems/resolver/api_set.rb +4 -4
  356. data/lib/rubygems/resolver/api_specification.rb +6 -6
  357. data/lib/rubygems/resolver/best_set.rb +5 -5
  358. data/lib/rubygems/resolver/conflict.rb +10 -10
  359. data/lib/rubygems/resolver/dependency_request.rb +2 -2
  360. data/lib/rubygems/resolver/git_set.rb +2 -2
  361. data/lib/rubygems/resolver/git_specification.rb +6 -6
  362. data/lib/rubygems/resolver/index_set.rb +3 -3
  363. data/lib/rubygems/resolver/index_specification.rb +6 -5
  364. data/lib/rubygems/resolver/installed_specification.rb +4 -4
  365. data/lib/rubygems/resolver/installer_set.rb +21 -26
  366. data/lib/rubygems/resolver/local_specification.rb +2 -2
  367. data/lib/rubygems/resolver/lock_set.rb +4 -4
  368. data/lib/rubygems/resolver/lock_specification.rb +4 -4
  369. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +3 -3
  370. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
  371. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  372. data/lib/rubygems/resolver/molinillo.rb +1 -1
  373. data/lib/rubygems/resolver/specification.rb +1 -1
  374. data/lib/rubygems/resolver/stats.rb +1 -1
  375. data/lib/rubygems/resolver/vendor_set.rb +1 -1
  376. data/lib/rubygems/resolver/vendor_specification.rb +3 -3
  377. data/lib/rubygems/resolver.rb +40 -40
  378. data/lib/rubygems/s3_uri_signer.rb +6 -6
  379. data/lib/rubygems/safe_yaml.rb +10 -10
  380. data/lib/rubygems/security/policies.rb +47 -47
  381. data/lib/rubygems/security/policy.rb +19 -21
  382. data/lib/rubygems/security/signer.rb +5 -5
  383. data/lib/rubygems/security/trust_dir.rb +4 -4
  384. data/lib/rubygems/security.rb +37 -43
  385. data/lib/rubygems/security_option.rb +7 -7
  386. data/lib/rubygems/source/git.rb +25 -24
  387. data/lib/rubygems/source/installed.rb +1 -1
  388. data/lib/rubygems/source/local.rb +2 -2
  389. data/lib/rubygems/source/specific_file.rb +1 -1
  390. data/lib/rubygems/source.rb +27 -32
  391. data/lib/rubygems/source_list.rb +5 -9
  392. data/lib/rubygems/spec_fetcher.rb +37 -37
  393. data/lib/rubygems/specification.rb +265 -211
  394. data/lib/rubygems/specification_policy.rb +49 -30
  395. data/lib/rubygems/stub_specification.rb +24 -27
  396. data/lib/rubygems/text.rb +22 -21
  397. data/lib/rubygems/tsort/.document +1 -0
  398. data/lib/rubygems/tsort/LICENSE.txt +22 -0
  399. data/lib/rubygems/tsort/lib/tsort.rb +452 -0
  400. data/lib/rubygems/tsort.rb +3 -0
  401. data/lib/rubygems/uninstaller.rb +29 -26
  402. data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
  403. data/lib/rubygems/update_suggestion.rb +69 -0
  404. data/lib/rubygems/uri.rb +45 -30
  405. data/lib/rubygems/uri_formatter.rb +1 -1
  406. data/lib/rubygems/user_interaction.rb +42 -28
  407. data/lib/rubygems/util/licenses.rb +4 -2
  408. data/lib/rubygems/util.rb +12 -16
  409. data/lib/rubygems/validator.rb +6 -6
  410. data/lib/rubygems/version.rb +28 -17
  411. data/lib/rubygems/version_option.rb +5 -5
  412. data/lib/rubygems.rb +129 -117
  413. data/rubygems-update.gemspec +3 -3
  414. data/setup.rb +11 -16
  415. data/test/rubygems/alternate_cert.pem +14 -14
  416. data/test/rubygems/alternate_cert_32.pem +15 -15
  417. data/test/rubygems/alternate_key.pem +25 -25
  418. data/test/rubygems/bundler_test_gem.rb +419 -0
  419. data/test/rubygems/child_cert.pem +15 -16
  420. data/test/rubygems/child_cert_32.pem +15 -16
  421. data/test/rubygems/child_key.pem +25 -25
  422. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  423. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  424. data/test/rubygems/encrypted_private_key.pem +26 -26
  425. data/test/rubygems/expired_cert.pem +15 -15
  426. data/test/rubygems/future_cert.pem +15 -15
  427. data/test/rubygems/future_cert_32.pem +15 -15
  428. data/test/rubygems/grandchild_cert.pem +15 -16
  429. data/test/rubygems/grandchild_cert_32.pem +15 -16
  430. data/test/rubygems/grandchild_key.pem +25 -25
  431. data/test/rubygems/helper.rb +237 -207
  432. data/test/rubygems/installer_test_case.rb +13 -13
  433. data/test/rubygems/invalid_issuer_cert.pem +16 -16
  434. data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
  435. data/test/rubygems/invalid_key.pem +25 -25
  436. data/test/rubygems/invalid_signer_cert.pem +15 -15
  437. data/test/rubygems/invalid_signer_cert_32.pem +15 -15
  438. data/test/rubygems/invalidchild_cert.pem +15 -16
  439. data/test/rubygems/invalidchild_cert_32.pem +15 -16
  440. data/test/rubygems/invalidchild_key.pem +25 -25
  441. data/test/rubygems/package/tar_test_case.rb +52 -17
  442. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  443. data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
  444. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
  445. data/test/rubygems/private_key.pem +25 -25
  446. data/test/rubygems/public_cert.pem +16 -16
  447. data/test/rubygems/public_cert_32.pem +15 -15
  448. data/test/rubygems/public_key.pem +7 -7
  449. data/test/rubygems/rubygems_plugin.rb +2 -2
  450. data/test/rubygems/simple_gem.rb +1 -1
  451. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +4 -4
  452. data/test/rubygems/test_bundled_ca.rb +11 -11
  453. data/test/rubygems/test_config.rb +5 -5
  454. data/test/rubygems/test_deprecate.rb +3 -3
  455. data/test/rubygems/test_exit.rb +17 -0
  456. data/test/rubygems/test_gem.rb +367 -757
  457. data/test/rubygems/test_gem_available_set.rb +21 -21
  458. data/test/rubygems/test_gem_bundler_version_finder.rb +27 -47
  459. data/test/rubygems/test_gem_command.rb +45 -45
  460. data/test/rubygems/test_gem_command_manager.rb +124 -27
  461. data/test/rubygems/test_gem_commands_build_command.rb +73 -63
  462. data/test/rubygems/test_gem_commands_cert_command.rb +105 -107
  463. data/test/rubygems/test_gem_commands_check_command.rb +4 -4
  464. data/test/rubygems/test_gem_commands_cleanup_command.rb +40 -40
  465. data/test/rubygems/test_gem_commands_contents_command.rb +28 -28
  466. data/test/rubygems/test_gem_commands_dependency_command.rb +36 -36
  467. data/test/rubygems/test_gem_commands_environment_command.rb +38 -14
  468. data/test/rubygems/test_gem_commands_exec_command.rb +851 -0
  469. data/test/rubygems/test_gem_commands_fetch_command.rb +159 -26
  470. data/test/rubygems/test_gem_commands_generate_index_command.rb +7 -7
  471. data/test/rubygems/test_gem_commands_help_command.rb +13 -13
  472. data/test/rubygems/test_gem_commands_info_command.rb +28 -2
  473. data/test/rubygems/test_gem_commands_install_command.rb +200 -132
  474. data/test/rubygems/test_gem_commands_list_command.rb +4 -4
  475. data/test/rubygems/test_gem_commands_lock_command.rb +10 -10
  476. data/test/rubygems/test_gem_commands_mirror.rb +2 -2
  477. data/test/rubygems/test_gem_commands_open_command.rb +5 -5
  478. data/test/rubygems/test_gem_commands_outdated_command.rb +9 -9
  479. data/test/rubygems/test_gem_commands_owner_command.rb +126 -45
  480. data/test/rubygems/test_gem_commands_pristine_command.rb +141 -92
  481. data/test/rubygems/test_gem_commands_push_command.rb +85 -59
  482. data/test/rubygems/test_gem_commands_query_command.rb +73 -73
  483. data/test/rubygems/test_gem_commands_search_command.rb +2 -2
  484. data/test/rubygems/test_gem_commands_server_command.rb +6 -48
  485. data/test/rubygems/test_gem_commands_setup_command.rb +169 -92
  486. data/test/rubygems/test_gem_commands_signin_command.rb +154 -26
  487. data/test/rubygems/test_gem_commands_signout_command.rb +3 -3
  488. data/test/rubygems/test_gem_commands_sources_command.rb +74 -25
  489. data/test/rubygems/test_gem_commands_specification_command.rb +32 -32
  490. data/test/rubygems/test_gem_commands_stale_command.rb +4 -4
  491. data/test/rubygems/test_gem_commands_uninstall_command.rb +99 -82
  492. data/test/rubygems/test_gem_commands_unpack_command.rb +31 -31
  493. data/test/rubygems/test_gem_commands_update_command.rb +202 -91
  494. data/test/rubygems/test_gem_commands_which_command.rb +6 -6
  495. data/test/rubygems/test_gem_commands_yank_command.rb +43 -43
  496. data/test/rubygems/test_gem_config_file.rb +93 -81
  497. data/test/rubygems/test_gem_dependency.rb +78 -80
  498. data/test/rubygems/test_gem_dependency_installer.rb +165 -165
  499. data/test/rubygems/test_gem_dependency_list.rb +47 -47
  500. data/test/rubygems/test_gem_dependency_resolution_error.rb +4 -4
  501. data/test/rubygems/test_gem_doctor.rb +26 -26
  502. data/test/rubygems/test_gem_ext_builder.rb +60 -62
  503. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +1 -0
  504. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +8 -0
  505. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +233 -0
  506. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +10 -0
  507. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +27 -0
  508. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +1 -0
  509. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +1 -0
  510. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +247 -0
  511. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +10 -0
  512. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +8 -0
  513. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +51 -0
  514. data/test/rubygems/test_gem_ext_cargo_builder.rb +166 -0
  515. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +33 -0
  516. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +60 -0
  517. data/test/rubygems/test_gem_ext_cmake_builder.rb +17 -15
  518. data/test/rubygems/test_gem_ext_configure_builder.rb +13 -13
  519. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +53 -50
  520. data/test/rubygems/test_gem_ext_rake_builder.rb +15 -15
  521. data/test/rubygems/test_gem_gem_runner.rb +13 -8
  522. data/test/rubygems/test_gem_gemcutter_utilities.rb +71 -65
  523. data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -4
  524. data/test/rubygems/test_gem_indexer.rb +90 -67
  525. data/test/rubygems/test_gem_install_update_options.rb +18 -18
  526. data/test/rubygems/test_gem_installer.rb +511 -327
  527. data/test/rubygems/test_gem_local_remote_options.rb +10 -10
  528. data/test/rubygems/test_gem_name_tuple.rb +4 -4
  529. data/test/rubygems/test_gem_package.rb +246 -236
  530. data/test/rubygems/test_gem_package_old.rb +13 -13
  531. data/test/rubygems/test_gem_package_tar_header.rb +47 -47
  532. data/test/rubygems/test_gem_package_tar_reader.rb +55 -8
  533. data/test/rubygems/test_gem_package_tar_reader_entry.rb +161 -16
  534. data/test/rubygems/test_gem_package_tar_writer.rb +76 -76
  535. data/test/rubygems/test_gem_package_task.rb +18 -18
  536. data/test/rubygems/test_gem_path_support.rb +15 -19
  537. data/test/rubygems/test_gem_platform.rb +335 -214
  538. data/test/rubygems/test_gem_rdoc.rb +14 -14
  539. data/test/rubygems/test_gem_remote_fetcher.rb +169 -154
  540. data/test/rubygems/test_gem_request.rb +65 -59
  541. data/test/rubygems/test_gem_request_connection_pools.rb +29 -29
  542. data/test/rubygems/test_gem_request_set.rb +100 -100
  543. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +209 -211
  544. data/test/rubygems/test_gem_request_set_lockfile.rb +86 -86
  545. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +58 -58
  546. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +62 -62
  547. data/test/rubygems/test_gem_requirement.rb +47 -42
  548. data/test/rubygems/test_gem_resolver.rb +173 -106
  549. data/test/rubygems/test_gem_resolver_activation_request.rb +6 -6
  550. data/test/rubygems/test_gem_resolver_api_set.rb +33 -33
  551. data/test/rubygems/test_gem_resolver_api_specification.rb +47 -47
  552. data/test/rubygems/test_gem_resolver_best_set.rb +22 -22
  553. data/test/rubygems/test_gem_resolver_composed_set.rb +1 -1
  554. data/test/rubygems/test_gem_resolver_conflict.rb +12 -12
  555. data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -15
  556. data/test/rubygems/test_gem_resolver_git_set.rb +21 -21
  557. data/test/rubygems/test_gem_resolver_git_specification.rb +21 -21
  558. data/test/rubygems/test_gem_resolver_index_set.rb +12 -12
  559. data/test/rubygems/test_gem_resolver_index_specification.rb +16 -16
  560. data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -5
  561. data/test/rubygems/test_gem_resolver_installer_set.rb +79 -35
  562. data/test/rubygems/test_gem_resolver_local_specification.rb +7 -7
  563. data/test/rubygems/test_gem_resolver_lock_set.rb +12 -12
  564. data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -17
  565. data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -1
  566. data/test/rubygems/test_gem_resolver_specification.rb +8 -8
  567. data/test/rubygems/test_gem_resolver_vendor_set.rb +6 -6
  568. data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -10
  569. data/test/rubygems/test_gem_security.rb +69 -69
  570. data/test/rubygems/test_gem_security_policy.rb +72 -72
  571. data/test/rubygems/test_gem_security_signer.rb +34 -34
  572. data/test/rubygems/test_gem_security_trust_dir.rb +6 -6
  573. data/test/rubygems/test_gem_silent_ui.rb +38 -32
  574. data/test/rubygems/test_gem_source.rb +44 -44
  575. data/test/rubygems/test_gem_source_fetch_problem.rb +9 -9
  576. data/test/rubygems/test_gem_source_git.rb +69 -62
  577. data/test/rubygems/test_gem_source_installed.rb +16 -16
  578. data/test/rubygems/test_gem_source_list.rb +5 -5
  579. data/test/rubygems/test_gem_source_local.rb +14 -14
  580. data/test/rubygems/test_gem_source_lock.rb +31 -31
  581. data/test/rubygems/test_gem_source_specific_file.rb +17 -17
  582. data/test/rubygems/test_gem_source_subpath_problem.rb +7 -7
  583. data/test/rubygems/test_gem_source_vendor.rb +13 -13
  584. data/test/rubygems/test_gem_spec_fetcher.rb +72 -72
  585. data/test/rubygems/test_gem_specification.rb +560 -493
  586. data/test/rubygems/test_gem_stream_ui.rb +20 -20
  587. data/test/rubygems/test_gem_stub_specification.rb +32 -48
  588. data/test/rubygems/test_gem_text.rb +7 -1
  589. data/test/rubygems/test_gem_uninstaller.rb +113 -113
  590. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -3
  591. data/test/rubygems/test_gem_update_suggestion.rb +208 -0
  592. data/test/rubygems/test_gem_uri.rb +4 -4
  593. data/test/rubygems/test_gem_uri_formatter.rb +14 -14
  594. data/test/rubygems/test_gem_util.rb +23 -23
  595. data/test/rubygems/test_gem_validator.rb +8 -8
  596. data/test/rubygems/test_gem_version.rb +27 -16
  597. data/test/rubygems/test_gem_version_option.rb +15 -15
  598. data/test/rubygems/test_kernel.rb +42 -60
  599. data/test/rubygems/test_project_sanity.rb +2 -2
  600. data/test/rubygems/test_remote_fetch_error.rb +6 -6
  601. data/test/rubygems/test_require.rb +132 -174
  602. data/test/rubygems/test_rubygems.rb +42 -12
  603. data/test/rubygems/utilities.rb +59 -37
  604. data/test/rubygems/wrong_key_cert.pem +15 -15
  605. data/test/rubygems/wrong_key_cert_32.pem +15 -15
  606. data/test/test_changelog_generator.rb +1 -0
  607. metadata +97 -41
  608. data/bundler/lib/bundler/dep_proxy.rb +0 -55
  609. data/bundler/lib/bundler/gemdeps.rb +0 -29
  610. data/bundler/lib/bundler/psyched_yaml.rb +0 -22
  611. data/bundler/lib/bundler/templates/gems.rb +0 -8
  612. data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
  613. data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
  614. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
  615. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
  616. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
  617. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
  618. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
  619. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
  620. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
  621. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
  622. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
  623. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
  624. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
  625. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
  626. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -143
  627. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
  628. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
  629. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
  630. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
  631. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
  632. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
  633. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
  634. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
  635. data/bundler/lib/bundler/version_ranges.rb +0 -122
  636. data/lib/rubygems/psych_additions.rb +0 -10
  637. data/lib/rubygems/server.rb +0 -882
  638. data/test/rubygems/bogussources.rb +0 -9
  639. data/test/rubygems/data/null-type.gemspec.rz +0 -0
  640. data/test/rubygems/test_gem_server.rb +0 -608
  641. /data/bundler/lib/bundler/templates/newgem/ext/newgem/{extconf.rb.tt → extconf-c.rb.tt} +0 -0
@@ -1,53 +1,28 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rubygems'
4
-
5
- # If bundler gemspec exists, add to stubs
6
- bundler_gemspec = File.expand_path("../../../bundler/bundler.gemspec", __FILE__)
7
- if File.exist?(bundler_gemspec)
8
- Gem::Specification.dirs.unshift File.dirname(bundler_gemspec)
9
- Gem::Specification.class_variable_set :@@stubs, nil
10
- Gem::Specification.stubs
11
- Gem::Specification.dirs.shift
12
- end
3
+ require "rubygems"
13
4
 
14
5
  begin
15
- gem 'test-unit', '~> 3.0'
6
+ gem "test-unit", "~> 3.0"
16
7
  rescue Gem::LoadError
17
8
  end
18
9
 
19
- begin
20
- require 'simplecov'
21
- SimpleCov.start do
22
- add_filter "/test/"
23
- add_filter "/bundler/"
24
- add_filter "/lib/rubygems/resolver/molinillo"
25
- end
26
- rescue LoadError
27
- end
28
-
29
- if File.exist?(bundler_gemspec)
30
- require_relative '../../bundler/lib/bundler'
31
- else
32
- require 'bundler'
33
- end
34
-
35
- require 'test/unit'
10
+ require "test/unit"
36
11
 
37
12
  ENV["JARS_SKIP"] = "true" if Gem.java_platform? # avoid unnecessary and noisy `jar-dependencies` post install hook
38
13
 
39
- require 'rubygems/deprecate'
14
+ require "rubygems/deprecate"
40
15
 
41
- require 'fileutils'
42
- require 'pathname'
43
- require 'pp'
44
- require 'rubygems/package'
45
- require 'shellwords'
46
- require 'tmpdir'
47
- require 'uri'
48
- require 'zlib'
49
- require 'benchmark' # stdlib
50
- require 'rubygems/mock_gem_ui'
16
+ require "fileutils"
17
+ require "pathname"
18
+ require "pp"
19
+ require "rubygems/package"
20
+ require "shellwords"
21
+ require "tmpdir"
22
+ require "uri"
23
+ require "zlib"
24
+ require "benchmark" # stdlib
25
+ require "rubygems/mock_gem_ui"
51
26
 
52
27
  module Gem
53
28
 
@@ -129,6 +104,12 @@ class Gem::TestCase < Test::Unit::TestCase
129
104
  assert File.directory?(path), msg
130
105
  end
131
106
 
107
+ def refute_directory_exists(path, msg = nil)
108
+ msg = build_message(msg, "Expected path '#{path}' not to be a directory")
109
+ assert_path_not_exist path
110
+ refute File.directory?(path), msg
111
+ end
112
+
132
113
  # https://github.com/seattlerb/minitest/blob/21d9e804b63c619f602f3f4ece6c71b48974707a/lib/minitest/assertions.rb#L188
133
114
  def _synchronize
134
115
  yield
@@ -153,15 +134,13 @@ class Gem::TestCase < Test::Unit::TestCase
153
134
 
154
135
  return captured_stdout.read, captured_stderr.read
155
136
  ensure
156
- captured_stdout.unlink
157
- captured_stderr.unlink
158
137
  $stdout.reopen orig_stdout
159
138
  $stderr.reopen orig_stderr
160
139
 
161
140
  orig_stdout.close
162
141
  orig_stderr.close
163
- captured_stdout.close
164
- captured_stderr.close
142
+ captured_stdout.close!
143
+ captured_stderr.close!
165
144
  end
166
145
  end
167
146
  end
@@ -171,15 +150,15 @@ class Gem::TestCase < Test::Unit::TestCase
171
150
  # the original value when the block ends
172
151
 
173
152
  def enable_shared(value)
174
- enable_shared = RbConfig::CONFIG['ENABLE_SHARED']
175
- RbConfig::CONFIG['ENABLE_SHARED'] = value
153
+ enable_shared = RbConfig::CONFIG["ENABLE_SHARED"]
154
+ RbConfig::CONFIG["ENABLE_SHARED"] = value
176
155
 
177
156
  yield
178
157
  ensure
179
158
  if enable_shared
180
- RbConfig::CONFIG['enable_shared'] = enable_shared
159
+ RbConfig::CONFIG["ENABLE_SHARED"] = enable_shared
181
160
  else
182
- RbConfig::CONFIG.delete 'enable_shared'
161
+ RbConfig::CONFIG.delete "ENABLE_SHARED"
183
162
  end
184
163
  end
185
164
 
@@ -188,20 +167,20 @@ class Gem::TestCase < Test::Unit::TestCase
188
167
  # original value when the block ends
189
168
  #
190
169
  def vendordir(value)
191
- vendordir = RbConfig::CONFIG['vendordir']
170
+ vendordir = RbConfig::CONFIG["vendordir"]
192
171
 
193
172
  if value
194
- RbConfig::CONFIG['vendordir'] = value
173
+ RbConfig::CONFIG["vendordir"] = value
195
174
  else
196
- RbConfig::CONFIG.delete 'vendordir'
175
+ RbConfig::CONFIG.delete "vendordir"
197
176
  end
198
177
 
199
178
  yield
200
179
  ensure
201
180
  if vendordir
202
- RbConfig::CONFIG['vendordir'] = vendordir
181
+ RbConfig::CONFIG["vendordir"] = vendordir
203
182
  else
204
- RbConfig::CONFIG.delete 'vendordir'
183
+ RbConfig::CONFIG.delete "vendordir"
205
184
  end
206
185
  end
207
186
 
@@ -211,21 +190,21 @@ class Gem::TestCase < Test::Unit::TestCase
211
190
  #
212
191
  def bindir(value)
213
192
  with_clean_path_to_ruby do
214
- bindir = RbConfig::CONFIG['bindir']
193
+ bindir = RbConfig::CONFIG["bindir"]
215
194
 
216
195
  if value
217
- RbConfig::CONFIG['bindir'] = value
196
+ RbConfig::CONFIG["bindir"] = value
218
197
  else
219
- RbConfig::CONFIG.delete 'bindir'
198
+ RbConfig::CONFIG.delete "bindir"
220
199
  end
221
200
 
222
201
  begin
223
202
  yield
224
203
  ensure
225
204
  if bindir
226
- RbConfig::CONFIG['bindir'] = bindir
205
+ RbConfig::CONFIG["bindir"] = bindir
227
206
  else
228
- RbConfig::CONFIG.delete 'bindir'
207
+ RbConfig::CONFIG.delete "bindir"
229
208
  end
230
209
  end
231
210
  end
@@ -236,20 +215,20 @@ class Gem::TestCase < Test::Unit::TestCase
236
215
  # original value when the block ends
237
216
  #
238
217
  def exeext(value)
239
- exeext = RbConfig::CONFIG['EXEEXT']
218
+ exeext = RbConfig::CONFIG["EXEEXT"]
240
219
 
241
220
  if value
242
- RbConfig::CONFIG['EXEEXT'] = value
221
+ RbConfig::CONFIG["EXEEXT"] = value
243
222
  else
244
- RbConfig::CONFIG.delete 'EXEEXT'
223
+ RbConfig::CONFIG.delete "EXEEXT"
245
224
  end
246
225
 
247
226
  yield
248
227
  ensure
249
228
  if exeext
250
- RbConfig::CONFIG['EXEEXT'] = exeext
229
+ RbConfig::CONFIG["EXEEXT"] = exeext
251
230
  else
252
- RbConfig::CONFIG.delete 'EXEEXT'
231
+ RbConfig::CONFIG.delete "EXEEXT"
253
232
  end
254
233
  end
255
234
 
@@ -257,52 +236,45 @@ class Gem::TestCase < Test::Unit::TestCase
257
236
  output.scan(/^#{Regexp.escape make_command}(?:[[:blank:]].*)?$/)
258
237
  end
259
238
 
260
- def parse_make_command_line(line)
261
- command, *args = line.shellsplit
239
+ def parse_make_command_line_targets(line)
240
+ args = line.sub(/^#{Regexp.escape make_command}/, "").shellsplit
262
241
 
263
242
  targets = []
264
- macros = {}
265
243
 
266
244
  args.each do |arg|
267
245
  case arg
268
246
  when /\A(\w+)=/
269
- macros[$1] = $'
270
247
  else
271
248
  targets << arg
272
249
  end
273
250
  end
274
251
 
275
- targets << '' if targets.empty?
252
+ targets << "" if targets.empty?
276
253
 
277
- {
278
- :command => command,
279
- :targets => targets,
280
- :macros => macros,
281
- }
254
+ targets
282
255
  end
283
256
 
284
257
  def assert_contains_make_command(target, output, msg = nil)
285
- if output.match(/\n/)
258
+ if output.include?("\n")
286
259
  msg = build_message(msg,
287
260
  "Expected output containing make command \"%s\", but was \n\nBEGIN_OF_OUTPUT\n%sEND_OF_OUTPUT" % [
288
- ('%s %s' % [make_command, target]).rstrip,
261
+ ("%s %s" % [make_command, target]).rstrip,
289
262
  output,
290
263
  ]
291
264
  )
292
265
  else
293
266
  msg = build_message(msg,
294
- 'Expected make command "%s": %s' % [
295
- ('%s %s' % [make_command, target]).rstrip,
267
+ 'Expected make command "%s", but was "%s"' % [
268
+ ("%s %s" % [make_command, target]).rstrip,
296
269
  output,
297
270
  ]
298
271
  )
299
272
  end
300
273
 
301
274
  assert scan_make_command_lines(output).any? {|line|
302
- make = parse_make_command_line(line)
275
+ targets = parse_make_command_line_targets(line)
303
276
 
304
- if make[:targets].include?(target)
305
- yield make, line if block_given?
277
+ if targets.include?(target)
306
278
  true
307
279
  else
308
280
  false
@@ -321,18 +293,24 @@ class Gem::TestCase < Test::Unit::TestCase
321
293
  # or <tt>i686-darwin8.10.1</tt> otherwise.
322
294
 
323
295
  def setup
296
+ @orig_hooks = {}
324
297
  @orig_env = ENV.to_hash
325
298
  @tmp = File.expand_path("tmp")
326
299
 
327
300
  FileUtils.mkdir_p @tmp
328
301
 
329
- ENV['GEM_VENDOR'] = nil
330
- ENV['GEMRC'] = nil
331
- ENV['XDG_CACHE_HOME'] = nil
332
- ENV['XDG_CONFIG_HOME'] = nil
333
- ENV['XDG_DATA_HOME'] = nil
334
- ENV['SOURCE_DATE_EPOCH'] = nil
335
- ENV['BUNDLER_VERSION'] = nil
302
+ @tempdir = Dir.mktmpdir("test_rubygems_", @tmp)
303
+ @tempdir.tap(&Gem::UNTAINT)
304
+
305
+ ENV["GEM_VENDOR"] = nil
306
+ ENV["GEMRC"] = nil
307
+ ENV["XDG_CACHE_HOME"] = nil
308
+ ENV["XDG_CONFIG_HOME"] = nil
309
+ ENV["XDG_DATA_HOME"] = nil
310
+ ENV["XDG_STATE_HOME"] = nil
311
+ ENV["SOURCE_DATE_EPOCH"] = nil
312
+ ENV["BUNDLER_VERSION"] = nil
313
+ ENV["RUBYGEMS_PREVENT_UPDATE_SUGGESTION"] = "true"
336
314
 
337
315
  @current_dir = Dir.pwd
338
316
  @fetcher = nil
@@ -343,27 +321,23 @@ class Gem::TestCase < Test::Unit::TestCase
343
321
  # capture output
344
322
  Gem::DefaultUserInteraction.ui = Gem::MockGemUi.new
345
323
 
346
- @tempdir = Dir.mktmpdir("test_rubygems_", @tmp)
347
- @tempdir.tap(&Gem::UNTAINT)
348
-
349
- ENV["TMPDIR"] = @tempdir
350
-
351
324
  @orig_SYSTEM_WIDE_CONFIG_FILE = Gem::ConfigFile::SYSTEM_WIDE_CONFIG_FILE
352
325
  Gem::ConfigFile.send :remove_const, :SYSTEM_WIDE_CONFIG_FILE
353
326
  Gem::ConfigFile.send :const_set, :SYSTEM_WIDE_CONFIG_FILE,
354
- File.join(@tempdir, 'system-gemrc')
327
+ File.join(@tempdir, "system-gemrc")
355
328
 
356
- @gemhome = File.join @tempdir, 'gemhome'
357
- @userhome = File.join @tempdir, 'userhome'
358
- ENV["GEM_SPEC_CACHE"] = File.join @tempdir, 'spec_cache'
329
+ @gemhome = File.join @tempdir, "gemhome"
330
+ @userhome = File.join @tempdir, "userhome"
331
+ @statehome = File.join @tempdir, "statehome"
332
+ ENV["GEM_SPEC_CACHE"] = File.join @tempdir, "spec_cache"
359
333
 
360
- @orig_ruby = if ENV['RUBY']
361
- ruby = Gem.ruby
362
- Gem.ruby = ENV['RUBY']
363
- ruby
364
- end
334
+ @orig_ruby = if ENV["RUBY"]
335
+ ruby = Gem.ruby
336
+ Gem.ruby = ENV["RUBY"]
337
+ ruby
338
+ end
365
339
 
366
- @git = ENV['GIT'] || (win_platform? ? 'git.exe' : 'git')
340
+ @git = ENV["GIT"] || "git#{RbConfig::CONFIG['EXEEXT']}"
367
341
 
368
342
  Gem.ensure_gem_subdirectories @gemhome
369
343
  Gem.ensure_default_gem_subdirectories @gemhome
@@ -384,11 +358,12 @@ class Gem::TestCase < Test::Unit::TestCase
384
358
 
385
359
  Dir.chdir @tempdir
386
360
 
387
- ENV['HOME'] = @userhome
361
+ ENV["HOME"] = @userhome
388
362
  Gem.instance_variable_set :@config_file, nil
389
363
  Gem.instance_variable_set :@user_home, nil
390
364
  Gem.instance_variable_set :@config_home, nil
391
365
  Gem.instance_variable_set :@data_home, nil
366
+ Gem.instance_variable_set :@state_home, @statehome
392
367
  Gem.instance_variable_set :@gemdeps, nil
393
368
  Gem.instance_variable_set :@env_requirements_by_name, nil
394
369
  Gem.send :remove_instance_variable, :@ruby_version if
@@ -396,12 +371,12 @@ class Gem::TestCase < Test::Unit::TestCase
396
371
 
397
372
  FileUtils.mkdir_p @userhome
398
373
 
399
- ENV['GEM_PRIVATE_KEY_PASSPHRASE'] = PRIVATE_KEY_PASSPHRASE
374
+ ENV["GEM_PRIVATE_KEY_PASSPHRASE"] = PRIVATE_KEY_PASSPHRASE
400
375
 
401
376
  Gem.instance_variable_set(:@default_specifications_dir, nil)
402
377
  if Gem.java_platform?
403
- @orig_default_gem_home = RbConfig::CONFIG['default_gem_home']
404
- RbConfig::CONFIG['default_gem_home'] = @gemhome
378
+ @orig_default_gem_home = RbConfig::CONFIG["default_gem_home"]
379
+ RbConfig::CONFIG["default_gem_home"] = @gemhome
405
380
  else
406
381
  Gem.instance_variable_set(:@default_dir, @gemhome)
407
382
  end
@@ -409,13 +384,20 @@ class Gem::TestCase < Test::Unit::TestCase
409
384
  @orig_bindir = RbConfig::CONFIG["bindir"]
410
385
  RbConfig::CONFIG["bindir"] = File.join @gemhome, "bin"
411
386
 
387
+ @orig_sitelibdir = RbConfig::CONFIG["sitelibdir"]
388
+ new_sitelibdir = @orig_sitelibdir.sub(RbConfig::CONFIG["prefix"], @gemhome)
389
+ $LOAD_PATH.insert(Gem.load_path_insert_index, new_sitelibdir)
390
+ RbConfig::CONFIG["sitelibdir"] = new_sitelibdir
391
+
392
+ @orig_mandir = RbConfig::CONFIG["mandir"]
393
+ RbConfig::CONFIG["mandir"] = File.join @gemhome, "share", "man"
394
+
412
395
  Gem::Specification.unresolved_deps.clear
413
396
  Gem.use_paths(@gemhome)
414
397
 
415
398
  Gem.loaded_specs.clear
416
399
  Gem.instance_variable_set(:@activated_gem_paths, 0)
417
400
  Gem.clear_default_specs
418
- Bundler.reset!
419
401
 
420
402
  Gem.configuration.verbose = true
421
403
  Gem.configuration.update_sources = true
@@ -429,15 +411,14 @@ class Gem::TestCase < Test::Unit::TestCase
429
411
  Gem.searcher = nil
430
412
  Gem::SpecFetcher.fetcher = nil
431
413
 
432
- @orig_arch = RbConfig::CONFIG['arch']
414
+ @orig_arch = RbConfig::CONFIG["arch"]
433
415
 
434
416
  if win_platform?
435
- util_set_arch 'i386-mswin32'
417
+ util_set_arch "i386-mswin32"
436
418
  else
437
- util_set_arch 'i686-darwin8.10.1'
419
+ util_set_arch "i686-darwin8.10.1"
438
420
  end
439
421
 
440
- @orig_hooks = {}
441
422
  %w[post_install_hooks done_installing_hooks post_uninstall_hooks pre_uninstall_hooks pre_install_hooks pre_reset_hooks post_reset_hooks post_build_hooks].each do |name|
442
423
  @orig_hooks[name] = Gem.send(name).dup
443
424
  end
@@ -462,7 +443,7 @@ class Gem::TestCase < Test::Unit::TestCase
462
443
  end
463
444
  end
464
445
 
465
- RbConfig::CONFIG['arch'] = @orig_arch
446
+ RbConfig::CONFIG["arch"] = @orig_arch
466
447
 
467
448
  if defined? Gem::RemoteFetcher
468
449
  Gem::RemoteFetcher.fetcher = nil
@@ -472,7 +453,7 @@ class Gem::TestCase < Test::Unit::TestCase
472
453
 
473
454
  FileUtils.rm_rf @tempdir
474
455
 
475
- ENV.replace(@orig_env)
456
+ restore_env
476
457
 
477
458
  Gem::ConfigFile.send :remove_const, :SYSTEM_WIDE_CONFIG_FILE
478
459
  Gem::ConfigFile.send :const_set, :SYSTEM_WIDE_CONFIG_FILE,
@@ -480,16 +461,17 @@ class Gem::TestCase < Test::Unit::TestCase
480
461
 
481
462
  Gem.ruby = @orig_ruby if @orig_ruby
482
463
 
483
- RbConfig::CONFIG['bindir'] = @orig_bindir
464
+ RbConfig::CONFIG["mandir"] = @orig_mandir
465
+ RbConfig::CONFIG["sitelibdir"] = @orig_sitelibdir
466
+ RbConfig::CONFIG["bindir"] = @orig_bindir
484
467
 
485
468
  Gem.instance_variable_set :@default_specifications_dir, nil
486
469
  if Gem.java_platform?
487
- RbConfig::CONFIG['default_gem_home'] = @orig_default_gem_home
470
+ RbConfig::CONFIG["default_gem_home"] = @orig_default_gem_home
488
471
  else
489
472
  Gem.instance_variable_set :@default_dir, nil
490
473
  end
491
474
 
492
- Gem::Specification._clear_load_cache
493
475
  Gem::Specification.unresolved_deps.clear
494
476
  Gem::refresh
495
477
 
@@ -501,9 +483,9 @@ class Gem::TestCase < Test::Unit::TestCase
501
483
  end
502
484
 
503
485
  def credential_setup
504
- @temp_cred = File.join(@userhome, '.gem', 'credentials')
486
+ @temp_cred = File.join(@userhome, ".gem", "credentials")
505
487
  FileUtils.mkdir_p File.dirname(@temp_cred)
506
- File.write @temp_cred, ':rubygems_api_key: 701229f217cdf23b1344c7b4b54ca97'
488
+ File.write @temp_cred, ":rubygems_api_key: 701229f217cdf23b1344c7b4b54ca97"
507
489
  File.chmod 0600, @temp_cred
508
490
  end
509
491
 
@@ -558,10 +540,10 @@ class Gem::TestCase < Test::Unit::TestCase
558
540
  #
559
541
  # Yields the +specification+ to the block, if given
560
542
 
561
- def git_gem(name = 'a', version = 1)
543
+ def git_gem(name = "a", version = 1)
562
544
  have_git?
563
545
 
564
- directory = File.join 'git', name
546
+ directory = File.join "git", name
565
547
  directory = File.expand_path directory
566
548
 
567
549
  git_spec = Gem::Specification.new name, version do |specification|
@@ -572,22 +554,22 @@ class Gem::TestCase < Test::Unit::TestCase
572
554
 
573
555
  gemspec = "#{name}.gemspec"
574
556
 
575
- File.open File.join(directory, gemspec), 'w' do |io|
557
+ File.open File.join(directory, gemspec), "w" do |io|
576
558
  io.write git_spec.to_ruby
577
559
  end
578
560
 
579
561
  head = nil
580
562
 
581
563
  Dir.chdir directory do
582
- unless File.exist? '.git'
583
- system @git, 'init', '--quiet'
584
- system @git, 'config', 'user.name', 'RubyGems Tests'
585
- system @git, 'config', 'user.email', 'rubygems@example'
564
+ unless File.exist? ".git"
565
+ system @git, "init", "--quiet"
566
+ system @git, "config", "user.name", "RubyGems Tests"
567
+ system @git, "config", "user.email", "rubygems@example"
586
568
  end
587
569
 
588
- system @git, 'add', gemspec
589
- system @git, 'commit', '-a', '-m', 'a non-empty commit message', '--quiet'
590
- head = Gem::Util.popen(@git, 'rev-parse', 'master').strip
570
+ system @git, "add", gemspec
571
+ system @git, "commit", "-a", "-m", "a non-empty commit message", "--quiet"
572
+ head = Gem::Util.popen(@git, "rev-parse", "HEAD").strip
591
573
  end
592
574
 
593
575
  return name, git_spec.version, directory, head
@@ -599,13 +581,13 @@ class Gem::TestCase < Test::Unit::TestCase
599
581
  def have_git?
600
582
  return if in_path? @git
601
583
 
602
- skip 'cannot find git executable, use GIT environment variable to set'
584
+ pend "cannot find git executable, use GIT environment variable to set"
603
585
  end
604
586
 
605
587
  def in_path?(executable) # :nodoc:
606
- return true if %r{\A([A-Z]:|/)} =~ executable and File.exist? executable
588
+ return true if %r{\A([A-Z]:|/)} =~ executable && File.exist?(executable)
607
589
 
608
- ENV['PATH'].split(File::PATH_SEPARATOR).any? do |directory|
590
+ ENV["PATH"].split(File::PATH_SEPARATOR).any? do |directory|
609
591
  File.exist? File.join directory, executable
610
592
  end
611
593
  end
@@ -614,7 +596,7 @@ class Gem::TestCase < Test::Unit::TestCase
614
596
  # Builds and installs the Gem::Specification +spec+
615
597
 
616
598
  def install_gem(spec, options = {})
617
- require 'rubygems/installer'
599
+ require "rubygems/installer"
618
600
 
619
601
  gem = spec.cache_file
620
602
 
@@ -628,7 +610,7 @@ class Gem::TestCase < Test::Unit::TestCase
628
610
  gem = File.join(@tempdir, File.basename(gem)).tap(&Gem::UNTAINT)
629
611
  end
630
612
 
631
- Gem::Installer.at(gem, options.merge({:wrappers => true})).install
613
+ Gem::Installer.at(gem, options.merge({ :wrappers => true })).install
632
614
  end
633
615
 
634
616
  ##
@@ -641,7 +623,7 @@ class Gem::TestCase < Test::Unit::TestCase
641
623
  ##
642
624
  # Uninstalls the Gem::Specification +spec+
643
625
  def uninstall_gem(spec)
644
- require 'rubygems/uninstaller'
626
+ require "rubygems/uninstaller"
645
627
 
646
628
  Class.new(Gem::Uninstaller) do
647
629
  def ask_if_ok(spec)
@@ -664,7 +646,7 @@ class Gem::TestCase < Test::Unit::TestCase
664
646
  # Reads a Marshal file at +path+
665
647
 
666
648
  def read_cache(path)
667
- File.open path.dup.tap(&Gem::UNTAINT), 'rb' do |io|
649
+ File.open path.dup.tap(&Gem::UNTAINT), "rb" do |io|
668
650
  Marshal.load io.read
669
651
  end
670
652
  end
@@ -684,7 +666,7 @@ class Gem::TestCase < Test::Unit::TestCase
684
666
  dir = File.dirname path
685
667
  FileUtils.mkdir_p dir unless File.directory? dir
686
668
 
687
- File.open path, 'wb' do |io|
669
+ File.open path, "wb" do |io|
688
670
  yield io if block_given?
689
671
  end
690
672
 
@@ -695,10 +677,10 @@ class Gem::TestCase < Test::Unit::TestCase
695
677
  # Load a YAML string, the psych 3 way
696
678
 
697
679
  def load_yaml(yaml)
698
- if YAML.respond_to?(:unsafe_load)
699
- YAML.unsafe_load(yaml)
680
+ if Psych.respond_to?(:unsafe_load)
681
+ Psych.unsafe_load(yaml)
700
682
  else
701
- YAML.load(yaml)
683
+ Psych.load(yaml)
702
684
  end
703
685
  end
704
686
 
@@ -706,10 +688,10 @@ class Gem::TestCase < Test::Unit::TestCase
706
688
  # Load a YAML file, the psych 3 way
707
689
 
708
690
  def load_yaml_file(file)
709
- if YAML.respond_to?(:unsafe_load_file)
710
- YAML.unsafe_load_file(file)
691
+ if Psych.respond_to?(:unsafe_load_file)
692
+ Psych.unsafe_load_file(file)
711
693
  else
712
- YAML.load_file(file)
694
+ Psych.load_file(file)
713
695
  end
714
696
  end
715
697
 
@@ -727,16 +709,16 @@ class Gem::TestCase < Test::Unit::TestCase
727
709
  #
728
710
  # Use this with #write_file to build an installed gem.
729
711
 
730
- def quick_gem(name, version='2')
731
- require 'rubygems/specification'
712
+ def quick_gem(name, version="2")
713
+ require "rubygems/specification"
732
714
 
733
715
  spec = Gem::Specification.new do |s|
734
716
  s.platform = Gem::Platform::RUBY
735
717
  s.name = name
736
718
  s.version = version
737
- s.author = 'A User'
738
- s.email = 'example@example.com'
739
- s.homepage = 'http://example.com'
719
+ s.author = "A User"
720
+ s.email = "example@example.com"
721
+ s.homepage = "http://example.com"
740
722
  s.summary = "this is a summary"
741
723
  s.description = "This is a test description"
742
724
 
@@ -767,7 +749,7 @@ class Gem::TestCase < Test::Unit::TestCase
767
749
  next if File.exist? file
768
750
  FileUtils.mkdir_p File.dirname(file)
769
751
 
770
- File.open file, 'w' do |fp|
752
+ File.open file, "w" do |fp|
771
753
  fp.puts "# #{file}"
772
754
  end
773
755
  end
@@ -853,15 +835,15 @@ class Gem::TestCase < Test::Unit::TestCase
853
835
  # or a +block+ can be given for full customization of the specification.
854
836
 
855
837
  def util_spec(name, version = 2, deps = nil, *files) # :yields: specification
856
- raise "deps or block, not both" if deps and block_given?
838
+ raise "deps or block, not both" if deps && block_given?
857
839
 
858
840
  spec = Gem::Specification.new do |s|
859
841
  s.platform = Gem::Platform::RUBY
860
842
  s.name = name
861
843
  s.version = version
862
- s.author = 'A User'
863
- s.email = 'example@example.com'
864
- s.homepage = 'http://example.com'
844
+ s.author = "A User"
845
+ s.email = "example@example.com"
846
+ s.homepage = "http://example.com"
865
847
  s.summary = "this is a summary"
866
848
  s.description = "This is a test description"
867
849
 
@@ -872,7 +854,7 @@ class Gem::TestCase < Test::Unit::TestCase
872
854
 
873
855
  if deps
874
856
  deps.keys.each do |n|
875
- spec.add_dependency n, (deps[n] || '>= 0')
857
+ spec.add_dependency n, (deps[n] || ">= 0")
876
858
  end
877
859
  end
878
860
 
@@ -899,7 +881,7 @@ class Gem::TestCase < Test::Unit::TestCase
899
881
  if deps
900
882
  block = proc do |s|
901
883
  deps.keys.each do |n|
902
- s.add_dependency n, (deps[n] || '>= 0')
884
+ s.add_dependency n, (deps[n] || ">= 0")
903
885
  end
904
886
  end
905
887
  end
@@ -908,7 +890,7 @@ class Gem::TestCase < Test::Unit::TestCase
908
890
 
909
891
  util_build_gem spec
910
892
 
911
- cache_file = File.join @tempdir, 'gems', "#{spec.original_name}.gem"
893
+ cache_file = File.join @tempdir, "gems", "#{spec.original_name}.gem"
912
894
  FileUtils.mkdir_p File.dirname cache_file
913
895
  FileUtils.mv spec.cache_file, cache_file
914
896
  FileUtils.rm spec.spec_file
@@ -950,11 +932,11 @@ class Gem::TestCase < Test::Unit::TestCase
950
932
  # TODO: nuke this and fix tests. this should speed up a lot
951
933
 
952
934
  def util_make_gems(prerelease = false)
953
- @a1 = quick_gem 'a', '1' do |s|
935
+ @a1 = quick_gem "a", "1" do |s|
954
936
  s.files = %w[lib/code.rb]
955
937
  s.require_paths = %w[lib]
956
938
  s.date = Gem::Specification::TODAY - 86400
957
- s.homepage = 'http://a.example.com'
939
+ s.homepage = "http://a.example.com"
958
940
  s.email = %w[example@example.com example2@example.com]
959
941
  s.authors = %w[Example Example2]
960
942
  s.description = <<-DESC
@@ -971,27 +953,27 @@ Also, a list:
971
953
  s.require_paths = %w[lib]
972
954
  end
973
955
 
974
- @a2 = quick_gem('a', '2', &init)
975
- @a3a = quick_gem('a', '3.a', &init)
976
- @a_evil9 = quick_gem('a_evil', '9', &init)
977
- @b2 = quick_gem('b', '2', &init)
978
- @c1_2 = quick_gem('c', '1.2', &init)
979
- @x = quick_gem('x', '1', &init)
980
- @dep_x = quick_gem('dep_x', '1') do |s|
956
+ @a2 = quick_gem("a", "2", &init)
957
+ @a3a = quick_gem("a", "3.a", &init)
958
+ @a_evil9 = quick_gem("a_evil", "9", &init)
959
+ @b2 = quick_gem("b", "2", &init)
960
+ @c1_2 = quick_gem("c", "1.2", &init)
961
+ @x = quick_gem("x", "1", &init)
962
+ @dep_x = quick_gem("dep_x", "1") do |s|
981
963
  s.files = %w[lib/code.rb]
982
964
  s.require_paths = %w[lib]
983
- s.add_dependency 'x', '>= 1'
965
+ s.add_dependency "x", ">= 1"
984
966
  end
985
967
 
986
- @pl1 = quick_gem 'pl', '1' do |s| # l for legacy
968
+ @pl1 = quick_gem "pl", "1" do |s| # l for legacy
987
969
  s.files = %w[lib/code.rb]
988
970
  s.require_paths = %w[lib]
989
- s.platform = Gem::Platform.new 'i386-linux'
990
- s.instance_variable_set :@original_platform, 'i386-linux'
971
+ s.platform = Gem::Platform.new "i386-linux"
972
+ s.instance_variable_set :@original_platform, "i386-linux"
991
973
  end
992
974
 
993
975
  if prerelease
994
- @a2_pre = quick_gem('a', '2.a', &init)
976
+ @a2_pre = quick_gem("a", "2.a", &init)
995
977
  write_file File.join(*%W[gems #{@a2_pre.original_name} lib code.rb])
996
978
  util_build_gem @a2_pre
997
979
  end
@@ -1017,7 +999,7 @@ Also, a list:
1017
999
  # Set the platform to +arch+
1018
1000
 
1019
1001
  def util_set_arch(arch)
1020
- RbConfig::CONFIG['arch'] = arch
1002
+ RbConfig::CONFIG["arch"] = arch
1021
1003
  platform = Gem::Platform.new arch
1022
1004
 
1023
1005
  Gem.instance_variable_set :@platforms, nil
@@ -1084,19 +1066,23 @@ Also, a list:
1084
1066
  @fetcher.data["#{@gem_repo}latest_specs.#{v}.gz"] = l_zip
1085
1067
  @fetcher.data["#{@gem_repo}prerelease_specs.#{v}.gz"] = p_zip
1086
1068
 
1087
- v = Gem.marshal_version
1088
-
1089
- all_specs.each do |spec|
1090
- path = "#{@gem_repo}quick/Marshal.#{v}/#{spec.original_name}.gemspec.rz"
1091
- data = Marshal.dump spec
1092
- data_deflate = Zlib::Deflate.deflate data
1093
- @fetcher.data[path] = data_deflate
1094
- end
1069
+ write_marshalled_gemspecs(*all_specs)
1095
1070
  end
1096
1071
 
1097
1072
  nil # force errors
1098
1073
  end
1099
1074
 
1075
+ def write_marshalled_gemspecs(*all_specs)
1076
+ v = Gem.marshal_version
1077
+
1078
+ all_specs.each do |spec|
1079
+ path = "#{@gem_repo}quick/Marshal.#{v}/#{spec.original_name}.gemspec.rz"
1080
+ data = Marshal.dump spec
1081
+ data_deflate = Zlib::Deflate.deflate data
1082
+ @fetcher.data[path] = data_deflate
1083
+ end
1084
+ end
1085
+
1100
1086
  ##
1101
1087
  # Deflates +data+
1102
1088
 
@@ -1104,7 +1090,7 @@ Also, a list:
1104
1090
  Zlib::Deflate.deflate data
1105
1091
  end
1106
1092
 
1107
- def util_set_RUBY_VERSION(version, patchlevel = nil, revision = nil, description = nil, engine = "ruby", engine_version = nil)
1093
+ def util_set_RUBY_VERSION(version, patchlevel, revision, description, engine = "ruby", engine_version = nil)
1108
1094
  if Gem.instance_variables.include? :@ruby_version
1109
1095
  Gem.send :remove_instance_variable, :@ruby_version
1110
1096
  end
@@ -1112,16 +1098,16 @@ Also, a list:
1112
1098
  @RUBY_VERSION = RUBY_VERSION
1113
1099
  @RUBY_PATCHLEVEL = RUBY_PATCHLEVEL if defined?(RUBY_PATCHLEVEL)
1114
1100
  @RUBY_REVISION = RUBY_REVISION if defined?(RUBY_REVISION)
1115
- @RUBY_DESCRIPTION = RUBY_DESCRIPTION if defined?(RUBY_DESCRIPTION)
1101
+ @RUBY_DESCRIPTION = RUBY_DESCRIPTION
1116
1102
  @RUBY_ENGINE = RUBY_ENGINE
1117
1103
  @RUBY_ENGINE_VERSION = RUBY_ENGINE_VERSION if defined?(RUBY_ENGINE_VERSION)
1118
1104
 
1119
1105
  util_clear_RUBY_VERSION
1120
1106
 
1121
1107
  Object.const_set :RUBY_VERSION, version
1122
- Object.const_set :RUBY_PATCHLEVEL, patchlevel if patchlevel
1123
- Object.const_set :RUBY_REVISION, revision if revision
1124
- Object.const_set :RUBY_DESCRIPTION, description if description
1108
+ Object.const_set :RUBY_PATCHLEVEL, patchlevel
1109
+ Object.const_set :RUBY_REVISION, revision
1110
+ Object.const_set :RUBY_DESCRIPTION, description
1125
1111
  Object.const_set :RUBY_ENGINE, engine
1126
1112
  Object.const_set :RUBY_ENGINE_VERSION, engine_version if engine_version
1127
1113
  end
@@ -1134,8 +1120,7 @@ Also, a list:
1134
1120
  defined?(@RUBY_PATCHLEVEL)
1135
1121
  Object.const_set :RUBY_REVISION, @RUBY_REVISION if
1136
1122
  defined?(@RUBY_REVISION)
1137
- Object.const_set :RUBY_DESCRIPTION, @RUBY_DESCRIPTION if
1138
- defined?(@RUBY_DESCRIPTION)
1123
+ Object.const_set :RUBY_DESCRIPTION, @RUBY_DESCRIPTION
1139
1124
  Object.const_set :RUBY_ENGINE, @RUBY_ENGINE
1140
1125
  Object.const_set :RUBY_ENGINE_VERSION, @RUBY_ENGINE_VERSION if
1141
1126
  defined?(@RUBY_ENGINE_VERSION)
@@ -1183,7 +1168,7 @@ Also, a list:
1183
1168
  # Borland) versus Cygwin, Mingw, etc.
1184
1169
 
1185
1170
  def self.vc_windows?
1186
- RUBY_PLATFORM.match('mswin')
1171
+ RUBY_PLATFORM.match("mswin")
1187
1172
  end
1188
1173
 
1189
1174
  ##
@@ -1191,7 +1176,15 @@ Also, a list:
1191
1176
  # Borland) versus Cygwin, Mingw, etc.
1192
1177
 
1193
1178
  def vc_windows?
1194
- RUBY_PLATFORM.match('mswin')
1179
+ RUBY_PLATFORM.match("mswin")
1180
+ end
1181
+
1182
+ ##
1183
+ # Is this test being run on a ruby/ruby repository?
1184
+ #
1185
+
1186
+ def ruby_repo?
1187
+ !ENV["GEM_COMMAND"].nil?
1195
1188
  end
1196
1189
 
1197
1190
  ##
@@ -1200,7 +1193,7 @@ Also, a list:
1200
1193
  # other platforms, including Cygwin, it will return 'make'.
1201
1194
 
1202
1195
  def self.make_command
1203
- ENV["make"] || ENV["MAKE"] || (vc_windows? ? 'nmake' : 'make')
1196
+ ENV["make"] || ENV["MAKE"] || (vc_windows? ? "nmake" : "make")
1204
1197
  end
1205
1198
 
1206
1199
  ##
@@ -1209,14 +1202,14 @@ Also, a list:
1209
1202
  # other platforms, including Cygwin, it will return 'make'.
1210
1203
 
1211
1204
  def make_command
1212
- ENV["make"] || ENV["MAKE"] || (vc_windows? ? 'nmake' : 'make')
1205
+ ENV["make"] || ENV["MAKE"] || (vc_windows? ? "nmake" : "make")
1213
1206
  end
1214
1207
 
1215
1208
  ##
1216
1209
  # Returns whether or not the nmake command could be found.
1217
1210
 
1218
1211
  def nmake_found?
1219
- system('nmake /? 1>NUL 2>&1')
1212
+ system("nmake /? 1>NUL 2>&1")
1220
1213
  end
1221
1214
 
1222
1215
  # In case we're building docs in a background process, this method waits for
@@ -1269,13 +1262,13 @@ Also, a list:
1269
1262
  ruby = ENV["RUBY"]
1270
1263
  return ruby if ruby
1271
1264
  ruby = "ruby"
1272
- rubyexe = "#{ruby}.exe"
1265
+ rubyexe = "#{ruby}#{RbConfig::CONFIG['EXEEXT']}"
1273
1266
 
1274
1267
  3.times do
1275
- if File.exist? ruby and File.executable? ruby and !File.directory? ruby
1268
+ if File.exist?(ruby) && File.executable?(ruby) && !File.directory?(ruby)
1276
1269
  return File.expand_path(ruby)
1277
1270
  end
1278
- if File.exist? rubyexe and File.executable? rubyexe
1271
+ if File.exist?(rubyexe) && File.executable?(rubyexe)
1279
1272
  return File.expand_path(rubyexe)
1280
1273
  end
1281
1274
  ruby = File.join("..", ruby)
@@ -1293,7 +1286,11 @@ Also, a list:
1293
1286
  end
1294
1287
 
1295
1288
  def rubygems_path
1296
- $LOAD_PATH.find{|p| p == File.dirname($LOADED_FEATURES.find{|f| f.end_with?("/rubygems.rb") }) }
1289
+ $LOAD_PATH.find {|p| p == File.dirname($LOADED_FEATURES.find {|f| f.end_with?("/rubygems.rb") }) }
1290
+ end
1291
+
1292
+ def bundler_path
1293
+ $LOAD_PATH.find {|p| p == File.dirname($LOADED_FEATURES.find {|f| f.end_with?("/bundler.rb") }) }
1297
1294
  end
1298
1295
 
1299
1296
  def with_clean_path_to_ruby
@@ -1306,6 +1303,22 @@ Also, a list:
1306
1303
  Gem.instance_variable_set :@ruby, orig_ruby
1307
1304
  end
1308
1305
 
1306
+ def with_internal_encoding(encoding)
1307
+ int_enc = Encoding.default_internal
1308
+ silence_warnings { Encoding.default_internal = encoding }
1309
+
1310
+ yield
1311
+ ensure
1312
+ silence_warnings { Encoding.default_internal = int_enc }
1313
+ end
1314
+
1315
+ def silence_warnings
1316
+ old_verbose, $VERBOSE = $VERBOSE, false
1317
+ yield
1318
+ ensure
1319
+ $VERBOSE = old_verbose
1320
+ end
1321
+
1309
1322
  class << self
1310
1323
  # :nodoc:
1311
1324
  ##
@@ -1408,8 +1421,8 @@ Also, a list:
1408
1421
  #
1409
1422
  # Yields the +specification+ to the block, if given
1410
1423
 
1411
- def vendor_gem(name = 'a', version = 1)
1412
- directory = File.join 'vendor', name
1424
+ def vendor_gem(name = "a", version = 1)
1425
+ directory = File.join "vendor", name
1413
1426
 
1414
1427
  FileUtils.mkdir_p directory
1415
1428
 
@@ -1422,12 +1435,12 @@ Also, a list:
1422
1435
  #
1423
1436
  # Yields the +specification+ to the block, if given
1424
1437
 
1425
- def save_gemspec(name = 'a', version = 1, directory = '.')
1438
+ def save_gemspec(name = "a", version = 1, directory = ".")
1426
1439
  vendor_spec = Gem::Specification.new name, version do |specification|
1427
1440
  yield specification if block_given?
1428
1441
  end
1429
1442
 
1430
- File.open File.join(directory, "#{name}.gemspec"), 'w' do |io|
1443
+ File.open File.join(directory, "#{name}.gemspec"), "w" do |io|
1431
1444
  io.write vendor_spec.to_ruby
1432
1445
  end
1433
1446
 
@@ -1541,25 +1554,42 @@ Also, a list:
1541
1554
  # :stopdoc:
1542
1555
  # only available in RubyGems tests
1543
1556
 
1544
- PRIVATE_KEY_PASSPHRASE = 'Foo bar'.freeze
1557
+ PRIVATE_KEY_PASSPHRASE = "Foo bar"
1545
1558
 
1546
1559
  begin
1547
- PRIVATE_KEY = load_key 'private'
1548
- PRIVATE_KEY_PATH = key_path 'private'
1560
+ PRIVATE_KEY = load_key "private"
1561
+ PRIVATE_KEY_PATH = key_path "private"
1549
1562
 
1550
1563
  # ENCRYPTED_PRIVATE_KEY is PRIVATE_KEY encrypted with PRIVATE_KEY_PASSPHRASE
1551
- ENCRYPTED_PRIVATE_KEY = load_key 'encrypted_private', PRIVATE_KEY_PASSPHRASE
1552
- ENCRYPTED_PRIVATE_KEY_PATH = key_path 'encrypted_private'
1564
+ ENCRYPTED_PRIVATE_KEY = load_key "encrypted_private", PRIVATE_KEY_PASSPHRASE
1565
+ ENCRYPTED_PRIVATE_KEY_PATH = key_path "encrypted_private"
1553
1566
 
1554
1567
  PUBLIC_KEY = PRIVATE_KEY.public_key
1555
1568
 
1556
- PUBLIC_CERT = load_cert 'public'
1557
- PUBLIC_CERT_PATH = cert_path 'public'
1569
+ PUBLIC_CERT = load_cert "public"
1570
+ PUBLIC_CERT_PATH = cert_path "public"
1558
1571
  rescue Errno::ENOENT
1559
1572
  PRIVATE_KEY = nil
1560
1573
  PUBLIC_KEY = nil
1561
1574
  PUBLIC_CERT = nil
1562
1575
  end if Gem::HAVE_OPENSSL
1576
+
1577
+ private
1578
+
1579
+ def restore_env
1580
+ unless Gem.win_platform?
1581
+ ENV.replace(@orig_env)
1582
+ return
1583
+ end
1584
+
1585
+ # Fallback logic for Windows below to workaround
1586
+ # https://bugs.ruby-lang.org/issues/16798. Can be dropped once all
1587
+ # supported rubies include the fix for that.
1588
+
1589
+ ENV.clear
1590
+
1591
+ @orig_env.each {|k, v| ENV[k] = v }
1592
+ end
1563
1593
  end
1564
1594
 
1565
1595
  # https://github.com/seattlerb/minitest/blob/13c48a03d84a2a87855a4de0c959f96800100357/lib/minitest/mock.rb#L192
@@ -1569,7 +1599,7 @@ class Object
1569
1599
 
1570
1600
  metaclass = class << self; self; end
1571
1601
 
1572
- if respond_to? name and not methods.map(&:to_s).include? name.to_s
1602
+ if respond_to?(name) && !methods.map(&:to_s).include?(name.to_s)
1573
1603
  metaclass.send :define_method, name do |*args|
1574
1604
  super(*args)
1575
1605
  end
@@ -1593,7 +1623,7 @@ class Object
1593
1623
  metaclass.send :undef_method, name
1594
1624
  metaclass.send :alias_method, name, new_name
1595
1625
  metaclass.send :undef_method, new_name
1596
- end
1626
+ end unless method_defined?(:stub) # lib/resolv/test_dns.rb also has the same method definition
1597
1627
  end
1598
1628
 
1599
- require_relative 'utilities'
1629
+ require_relative "utilities"