rubygems-update 3.3.18 → 3.4.19

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 (615) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1429 -1064
  3. data/CONTRIBUTING.md +31 -8
  4. data/Manifest.txt +61 -36
  5. data/POLICIES.md +55 -20
  6. data/README.md +19 -6
  7. data/bundler/CHANGELOG.md +457 -1
  8. data/bundler/README.md +3 -6
  9. data/bundler/UPGRADING.md +11 -4
  10. data/bundler/bundler.gemspec +8 -10
  11. data/bundler/exe/bundle +5 -16
  12. data/bundler/lib/bundler/build_metadata.rb +2 -2
  13. data/bundler/lib/bundler/cli/add.rb +1 -1
  14. data/bundler/lib/bundler/cli/binstubs.rb +6 -2
  15. data/bundler/lib/bundler/cli/check.rb +1 -1
  16. data/bundler/lib/bundler/cli/common.rb +2 -0
  17. data/bundler/lib/bundler/cli/console.rb +2 -2
  18. data/bundler/lib/bundler/cli/doctor.rb +4 -6
  19. data/bundler/lib/bundler/cli/gem.rb +62 -40
  20. data/bundler/lib/bundler/cli/info.rb +1 -1
  21. data/bundler/lib/bundler/cli/init.rb +6 -2
  22. data/bundler/lib/bundler/cli/install.rb +8 -6
  23. data/bundler/lib/bundler/cli/lock.rb +8 -5
  24. data/bundler/lib/bundler/cli/open.rb +6 -4
  25. data/bundler/lib/bundler/cli/outdated.rb +14 -7
  26. data/bundler/lib/bundler/cli/platform.rb +7 -5
  27. data/bundler/lib/bundler/cli/viz.rb +1 -1
  28. data/bundler/lib/bundler/cli.rb +53 -7
  29. data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
  30. data/bundler/lib/bundler/compact_index_client/updater.rb +40 -39
  31. data/bundler/lib/bundler/constants.rb +1 -1
  32. data/bundler/lib/bundler/current_ruby.rb +16 -5
  33. data/bundler/lib/bundler/definition.rb +262 -133
  34. data/bundler/lib/bundler/dependency.rb +20 -86
  35. data/bundler/lib/bundler/digest.rb +1 -1
  36. data/bundler/lib/bundler/dsl.rb +6 -7
  37. data/bundler/lib/bundler/endpoint_specification.rb +2 -13
  38. data/bundler/lib/bundler/env.rb +2 -2
  39. data/bundler/lib/bundler/environment_preserver.rb +3 -2
  40. data/bundler/lib/bundler/errors.rb +1 -11
  41. data/bundler/lib/bundler/feature_flag.rb +0 -2
  42. data/bundler/lib/bundler/fetcher/compact_index.rb +11 -13
  43. data/bundler/lib/bundler/fetcher/dependency.rb +2 -6
  44. data/bundler/lib/bundler/fetcher/downloader.rb +4 -5
  45. data/bundler/lib/bundler/fetcher/index.rb +1 -2
  46. data/bundler/lib/bundler/fetcher.rb +21 -15
  47. data/bundler/lib/bundler/force_platform.rb +18 -0
  48. data/bundler/lib/bundler/friendly_errors.rb +1 -4
  49. data/bundler/lib/bundler/gem_helper.rb +3 -4
  50. data/bundler/lib/bundler/gem_helpers.rb +7 -2
  51. data/bundler/lib/bundler/gem_version_promoter.rb +53 -98
  52. data/bundler/lib/bundler/graph.rb +3 -3
  53. data/bundler/lib/bundler/index.rb +13 -47
  54. data/bundler/lib/bundler/injector.rb +5 -4
  55. data/bundler/lib/bundler/inline.rb +9 -11
  56. data/bundler/lib/bundler/installer/parallel_installer.rb +4 -34
  57. data/bundler/lib/bundler/installer/standalone.rb +13 -9
  58. data/bundler/lib/bundler/installer.rb +17 -29
  59. data/bundler/lib/bundler/lazy_specification.rb +54 -53
  60. data/bundler/lib/bundler/lockfile_generator.rb +3 -3
  61. data/bundler/lib/bundler/lockfile_parser.rb +17 -16
  62. data/bundler/lib/bundler/man/bundle-add.1 +6 -2
  63. data/bundler/lib/bundler/man/bundle-add.1.ronn +4 -1
  64. data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
  65. data/bundler/lib/bundler/man/bundle-cache.1 +9 -3
  66. data/bundler/lib/bundler/man/bundle-cache.1.ronn +9 -2
  67. data/bundler/lib/bundler/man/bundle-check.1 +1 -1
  68. data/bundler/lib/bundler/man/bundle-clean.1 +2 -2
  69. data/bundler/lib/bundler/man/bundle-clean.1.ronn +1 -1
  70. data/bundler/lib/bundler/man/bundle-config.1 +26 -10
  71. data/bundler/lib/bundler/man/bundle-config.1.ronn +17 -10
  72. data/bundler/lib/bundler/man/bundle-console.1 +53 -0
  73. data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
  74. data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
  75. data/bundler/lib/bundler/man/bundle-exec.1 +6 -6
  76. data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -6
  77. data/bundler/lib/bundler/man/bundle-gem.1 +27 -37
  78. data/bundler/lib/bundler/man/bundle-gem.1.ronn +5 -5
  79. data/bundler/lib/bundler/man/bundle-help.1 +13 -0
  80. data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
  81. data/bundler/lib/bundler/man/bundle-info.1 +3 -3
  82. data/bundler/lib/bundler/man/bundle-info.1.ronn +3 -3
  83. data/bundler/lib/bundler/man/bundle-init.1 +5 -1
  84. data/bundler/lib/bundler/man/bundle-init.1.ronn +2 -0
  85. data/bundler/lib/bundler/man/bundle-inject.1 +5 -2
  86. data/bundler/lib/bundler/man/bundle-inject.1.ronn +3 -1
  87. data/bundler/lib/bundler/man/bundle-install.1 +5 -30
  88. data/bundler/lib/bundler/man/bundle-install.1.ronn +6 -29
  89. data/bundler/lib/bundler/man/bundle-list.1 +1 -1
  90. data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
  91. data/bundler/lib/bundler/man/bundle-open.1 +22 -2
  92. data/bundler/lib/bundler/man/bundle-open.1.ronn +9 -1
  93. data/bundler/lib/bundler/man/bundle-outdated.1 +13 -9
  94. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +12 -9
  95. data/bundler/lib/bundler/man/bundle-platform.1 +16 -6
  96. data/bundler/lib/bundler/man/bundle-platform.1.ronn +14 -7
  97. data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
  98. data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
  99. data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
  100. data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
  101. data/bundler/lib/bundler/man/bundle-show.1 +1 -1
  102. data/bundler/lib/bundler/man/bundle-update.1 +1 -1
  103. data/bundler/lib/bundler/man/bundle-version.1 +35 -0
  104. data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
  105. data/bundler/lib/bundler/man/bundle-viz.1 +4 -1
  106. data/bundler/lib/bundler/man/bundle-viz.1.ronn +2 -0
  107. data/bundler/lib/bundler/man/bundle.1 +15 -10
  108. data/bundler/lib/bundler/man/bundle.1.ronn +12 -7
  109. data/bundler/lib/bundler/man/gemfile.5 +55 -55
  110. data/bundler/lib/bundler/man/gemfile.5.ronn +57 -53
  111. data/bundler/lib/bundler/man/index.txt +4 -0
  112. data/bundler/lib/bundler/match_metadata.rb +13 -0
  113. data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
  114. data/bundler/lib/bundler/mirror.rb +5 -7
  115. data/bundler/lib/bundler/plugin/index.rb +5 -5
  116. data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -4
  117. data/bundler/lib/bundler/plugin/installer.rb +5 -2
  118. data/bundler/lib/bundler/plugin.rb +3 -1
  119. data/bundler/lib/bundler/remote_specification.rb +7 -12
  120. data/bundler/lib/bundler/resolver/base.rb +107 -0
  121. data/bundler/lib/bundler/resolver/candidate.rb +94 -0
  122. data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
  123. data/bundler/lib/bundler/resolver/package.rb +72 -0
  124. data/bundler/lib/bundler/resolver/root.rb +25 -0
  125. data/bundler/lib/bundler/resolver/spec_group.rb +42 -71
  126. data/bundler/lib/bundler/resolver.rb +335 -328
  127. data/bundler/lib/bundler/ruby_dsl.rb +7 -1
  128. data/bundler/lib/bundler/ruby_version.rb +8 -8
  129. data/bundler/lib/bundler/rubygems_ext.rb +100 -9
  130. data/bundler/lib/bundler/rubygems_gem_installer.rb +23 -14
  131. data/bundler/lib/bundler/rubygems_integration.rb +11 -15
  132. data/bundler/lib/bundler/runtime.rb +2 -6
  133. data/bundler/lib/bundler/safe_marshal.rb +31 -0
  134. data/bundler/lib/bundler/settings.rb +5 -11
  135. data/bundler/lib/bundler/setup.rb +4 -1
  136. data/bundler/lib/bundler/shared_helpers.rb +3 -3
  137. data/bundler/lib/bundler/source/git/git_proxy.rb +237 -74
  138. data/bundler/lib/bundler/source/git.rb +55 -30
  139. data/bundler/lib/bundler/source/metadata.rb +1 -2
  140. data/bundler/lib/bundler/source/path/installer.rb +1 -22
  141. data/bundler/lib/bundler/source/path.rb +6 -6
  142. data/bundler/lib/bundler/source/rubygems.rb +26 -81
  143. data/bundler/lib/bundler/source.rb +1 -1
  144. data/bundler/lib/bundler/source_list.rb +8 -2
  145. data/bundler/lib/bundler/spec_set.rb +60 -37
  146. data/bundler/lib/bundler/templates/Executable +1 -1
  147. data/bundler/lib/bundler/templates/Executable.bundler +5 -10
  148. data/bundler/lib/bundler/templates/Executable.standalone +2 -0
  149. data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
  150. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +3 -0
  151. data/bundler/lib/bundler/templates/newgem/README.md.tt +6 -4
  152. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +12 -1
  153. data/bundler/lib/bundler/templates/newgem/bin/console.tt +0 -4
  154. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
  155. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
  156. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt +10 -0
  157. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
  158. data/bundler/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +1 -1
  159. data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
  160. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +10 -0
  161. data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
  162. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +13 -4
  163. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +9 -2
  164. data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
  165. data/bundler/lib/bundler/ui/shell.rb +35 -12
  166. data/bundler/lib/bundler/ui/silent.rb +21 -5
  167. data/bundler/lib/bundler/uri_normalizer.rb +23 -0
  168. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
  169. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
  170. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
  171. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1351 -409
  172. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
  173. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
  174. data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
  175. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
  176. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
  177. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
  178. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
  179. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
  180. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
  181. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
  182. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
  183. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
  184. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
  185. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
  186. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
  187. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
  188. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +248 -0
  189. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
  190. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
  191. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +1 -1
  192. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +64 -16
  193. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
  194. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -1
  195. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +27 -7
  196. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -2
  197. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -1
  198. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
  199. data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
  200. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -2
  201. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +15 -9
  202. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +11 -6
  203. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  204. data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +1 -2
  205. data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +2 -1
  206. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -2
  207. data/bundler/lib/bundler/vendored_persistent.rb +1 -33
  208. data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_pub_grub.rb} +1 -1
  209. data/bundler/lib/bundler/version.rb +5 -1
  210. data/bundler/lib/bundler/worker.rb +5 -7
  211. data/bundler/lib/bundler.rb +25 -77
  212. data/{bin → exe}/gem +4 -5
  213. data/{bin → exe}/update_rubygems +12 -10
  214. data/lib/rubygems/available_set.rb +4 -3
  215. data/lib/rubygems/basic_specification.rb +5 -4
  216. data/lib/rubygems/bundler_version_finder.rb +2 -2
  217. data/lib/rubygems/command.rb +41 -32
  218. data/lib/rubygems/command_manager.rb +30 -15
  219. data/lib/rubygems/commands/build_command.rb +12 -8
  220. data/lib/rubygems/commands/cert_command.rb +34 -33
  221. data/lib/rubygems/commands/check_command.rb +21 -20
  222. data/lib/rubygems/commands/cleanup_command.rb +18 -17
  223. data/lib/rubygems/commands/contents_command.rb +14 -13
  224. data/lib/rubygems/commands/dependency_command.rb +17 -16
  225. data/lib/rubygems/commands/environment_command.rb +6 -5
  226. data/lib/rubygems/commands/exec_command.rb +249 -0
  227. data/lib/rubygems/commands/fetch_command.rb +10 -9
  228. data/lib/rubygems/commands/generate_index_command.rb +18 -17
  229. data/lib/rubygems/commands/help_command.rb +7 -6
  230. data/lib/rubygems/commands/info_command.rb +3 -3
  231. data/lib/rubygems/commands/install_command.rb +28 -23
  232. data/lib/rubygems/commands/list_command.rb +4 -3
  233. data/lib/rubygems/commands/lock_command.rb +5 -4
  234. data/lib/rubygems/commands/mirror_command.rb +4 -3
  235. data/lib/rubygems/commands/open_command.rb +10 -9
  236. data/lib/rubygems/commands/outdated_command.rb +6 -5
  237. data/lib/rubygems/commands/owner_command.rb +17 -14
  238. data/lib/rubygems/commands/pristine_command.rb +46 -36
  239. data/lib/rubygems/commands/push_command.rb +9 -8
  240. data/lib/rubygems/commands/query_command.rb +9 -8
  241. data/lib/rubygems/commands/rdoc_command.rb +21 -19
  242. data/lib/rubygems/commands/search_command.rb +4 -3
  243. data/lib/rubygems/commands/server_command.rb +4 -3
  244. data/lib/rubygems/commands/setup_command.rb +97 -106
  245. data/lib/rubygems/commands/signin_command.rb +10 -9
  246. data/lib/rubygems/commands/signout_command.rb +8 -7
  247. data/lib/rubygems/commands/sources_command.rb +22 -21
  248. data/lib/rubygems/commands/specification_command.rb +14 -13
  249. data/lib/rubygems/commands/stale_command.rb +3 -2
  250. data/lib/rubygems/commands/uninstall_command.rb +44 -40
  251. data/lib/rubygems/commands/unpack_command.rb +14 -13
  252. data/lib/rubygems/commands/update_command.rb +42 -63
  253. data/lib/rubygems/commands/which_command.rb +8 -7
  254. data/lib/rubygems/commands/yank_command.rb +12 -11
  255. data/lib/rubygems/config_file.rb +55 -21
  256. data/lib/rubygems/core_ext/kernel_gem.rb +1 -6
  257. data/lib/rubygems/core_ext/kernel_require.rb +109 -115
  258. data/lib/rubygems/core_ext/kernel_warn.rb +33 -37
  259. data/lib/rubygems/core_ext/tcpsocket_init.rb +3 -1
  260. data/lib/rubygems/defaults.rb +33 -18
  261. data/lib/rubygems/dependency.rb +15 -11
  262. data/lib/rubygems/dependency_installer.rb +38 -37
  263. data/lib/rubygems/dependency_list.rb +7 -6
  264. data/lib/rubygems/deprecate.rb +3 -2
  265. data/lib/rubygems/doctor.rb +19 -18
  266. data/lib/rubygems/errors.rb +3 -2
  267. data/lib/rubygems/exceptions.rb +16 -8
  268. data/lib/rubygems/ext/build_error.rb +2 -1
  269. data/lib/rubygems/ext/builder.rb +37 -21
  270. data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +9 -5
  271. data/lib/rubygems/ext/cargo_builder.rb +150 -111
  272. data/lib/rubygems/ext/cmake_builder.rb +2 -2
  273. data/lib/rubygems/ext/configure_builder.rb +2 -1
  274. data/lib/rubygems/ext/ext_conf_builder.rb +11 -9
  275. data/lib/rubygems/ext/rake_builder.rb +7 -5
  276. data/lib/rubygems/ext.rb +8 -7
  277. data/lib/rubygems/gem_runner.rb +6 -5
  278. data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +163 -0
  279. data/lib/rubygems/gemcutter_utilities/webauthn_listener.rb +105 -0
  280. data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +78 -0
  281. data/lib/rubygems/gemcutter_utilities.rb +90 -34
  282. data/lib/rubygems/indexer.rb +29 -28
  283. data/lib/rubygems/install_default_message.rb +3 -2
  284. data/lib/rubygems/install_message.rb +3 -2
  285. data/lib/rubygems/install_update_options.rb +56 -55
  286. data/lib/rubygems/installer.rb +54 -46
  287. data/lib/rubygems/installer_uninstaller_utils.rb +2 -2
  288. data/lib/rubygems/local_remote_options.rb +19 -20
  289. data/lib/rubygems/mock_gem_ui.rb +3 -2
  290. data/lib/rubygems/name_tuple.rb +5 -4
  291. data/lib/rubygems/optparse/lib/optparse.rb +20 -15
  292. data/lib/rubygems/optparse.rb +1 -1
  293. data/lib/rubygems/package/digest_io.rb +1 -0
  294. data/lib/rubygems/package/file_source.rb +3 -2
  295. data/lib/rubygems/package/io_source.rb +1 -0
  296. data/lib/rubygems/package/old.rb +9 -8
  297. data/lib/rubygems/package/source.rb +1 -0
  298. data/lib/rubygems/package/tar_header.rb +63 -62
  299. data/lib/rubygems/package/tar_reader/entry.rb +91 -9
  300. data/lib/rubygems/package/tar_reader.rb +2 -29
  301. data/lib/rubygems/package/tar_writer.rb +8 -7
  302. data/lib/rubygems/package.rb +64 -48
  303. data/lib/rubygems/package_task.rb +5 -4
  304. data/lib/rubygems/path_support.rb +1 -0
  305. data/lib/rubygems/platform.rb +79 -53
  306. data/lib/rubygems/psych_tree.rb +2 -1
  307. data/lib/rubygems/query_utils.rb +35 -35
  308. data/lib/rubygems/rdoc.rb +3 -2
  309. data/lib/rubygems/remote_fetcher.rb +23 -22
  310. data/lib/rubygems/request/connection_pools.rb +4 -4
  311. data/lib/rubygems/request/http_pool.rb +2 -1
  312. data/lib/rubygems/request/https_pool.rb +1 -0
  313. data/lib/rubygems/request.rb +23 -22
  314. data/lib/rubygems/request_set/gem_dependency_api.rb +123 -123
  315. data/lib/rubygems/request_set/lockfile/parser.rb +28 -27
  316. data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -3
  317. data/lib/rubygems/request_set/lockfile.rb +6 -5
  318. data/lib/rubygems/request_set.rb +20 -19
  319. data/lib/rubygems/requirement.rb +15 -14
  320. data/lib/rubygems/resolver/activation_request.rb +4 -3
  321. data/lib/rubygems/resolver/api_set.rb +5 -4
  322. data/lib/rubygems/resolver/api_specification.rb +7 -6
  323. data/lib/rubygems/resolver/best_set.rb +6 -5
  324. data/lib/rubygems/resolver/composed_set.rb +1 -0
  325. data/lib/rubygems/resolver/conflict.rb +11 -10
  326. data/lib/rubygems/resolver/current_set.rb +1 -0
  327. data/lib/rubygems/resolver/dependency_request.rb +3 -2
  328. data/lib/rubygems/resolver/git_set.rb +3 -2
  329. data/lib/rubygems/resolver/git_specification.rb +7 -6
  330. data/lib/rubygems/resolver/index_set.rb +4 -3
  331. data/lib/rubygems/resolver/index_specification.rb +7 -5
  332. data/lib/rubygems/resolver/installed_specification.rb +5 -4
  333. data/lib/rubygems/resolver/installer_set.rb +15 -17
  334. data/lib/rubygems/resolver/local_specification.rb +3 -2
  335. data/lib/rubygems/resolver/lock_set.rb +5 -4
  336. data/lib/rubygems/resolver/lock_specification.rb +5 -4
  337. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +1 -1
  338. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
  339. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  340. data/lib/rubygems/resolver/molinillo.rb +2 -1
  341. data/lib/rubygems/resolver/requirement_list.rb +1 -0
  342. data/lib/rubygems/resolver/set.rb +1 -0
  343. data/lib/rubygems/resolver/source_set.rb +2 -0
  344. data/lib/rubygems/resolver/spec_specification.rb +1 -0
  345. data/lib/rubygems/resolver/specification.rb +2 -1
  346. data/lib/rubygems/resolver/stats.rb +2 -1
  347. data/lib/rubygems/resolver/vendor_set.rb +2 -1
  348. data/lib/rubygems/resolver/vendor_specification.rb +4 -3
  349. data/lib/rubygems/resolver.rb +41 -40
  350. data/lib/rubygems/s3_uri_signer.rb +10 -8
  351. data/lib/rubygems/safe_yaml.rb +4 -2
  352. data/lib/rubygems/security/policies.rb +48 -47
  353. data/lib/rubygems/security/policy.rb +19 -18
  354. data/lib/rubygems/security/signer.rb +6 -5
  355. data/lib/rubygems/security/trust_dir.rb +5 -4
  356. data/lib/rubygems/security.rb +30 -42
  357. data/lib/rubygems/security_option.rb +6 -5
  358. data/lib/rubygems/shellwords.rb +3 -0
  359. data/lib/rubygems/source/git.rb +22 -22
  360. data/lib/rubygems/source/installed.rb +2 -1
  361. data/lib/rubygems/source/local.rb +3 -2
  362. data/lib/rubygems/source/lock.rb +1 -0
  363. data/lib/rubygems/source/specific_file.rb +2 -1
  364. data/lib/rubygems/source/vendor.rb +1 -0
  365. data/lib/rubygems/source.rb +16 -16
  366. data/lib/rubygems/spec_fetcher.rb +10 -9
  367. data/lib/rubygems/specification.rb +121 -114
  368. data/lib/rubygems/specification_policy.rb +36 -15
  369. data/lib/rubygems/stub_specification.rb +11 -9
  370. data/lib/rubygems/text.rb +2 -2
  371. data/lib/rubygems/tsort/lib/tsort.rb +308 -310
  372. data/lib/rubygems/tsort.rb +1 -1
  373. data/lib/rubygems/uninstaller.rb +19 -18
  374. data/lib/rubygems/update_suggestion.rb +69 -0
  375. data/lib/rubygems/uri.rb +4 -4
  376. data/lib/rubygems/uri_formatter.rb +1 -1
  377. data/lib/rubygems/user_interaction.rb +37 -21
  378. data/lib/rubygems/util/licenses.rb +4 -3
  379. data/lib/rubygems/util/list.rb +1 -0
  380. data/lib/rubygems/util.rb +12 -15
  381. data/lib/rubygems/validator.rb +7 -6
  382. data/lib/rubygems/version.rb +17 -11
  383. data/lib/rubygems/version_option.rb +4 -3
  384. data/lib/rubygems.rb +89 -68
  385. data/rubygems-update.gemspec +10 -8
  386. data/setup.rb +10 -9
  387. data/test/rubygems/alternate_cert.pem +14 -14
  388. data/test/rubygems/alternate_cert_32.pem +15 -15
  389. data/test/rubygems/alternate_key.pem +25 -25
  390. data/test/rubygems/bad_rake.rb +1 -0
  391. data/test/rubygems/bundler_test_gem.rb +421 -0
  392. data/test/rubygems/child_cert.pem +15 -16
  393. data/test/rubygems/child_cert_32.pem +15 -16
  394. data/test/rubygems/child_key.pem +25 -25
  395. data/test/rubygems/encrypted_private_key.pem +26 -26
  396. data/test/rubygems/expired_cert.pem +15 -15
  397. data/test/rubygems/fake_certlib/openssl.rb +1 -0
  398. data/test/rubygems/future_cert.pem +15 -15
  399. data/test/rubygems/future_cert_32.pem +15 -15
  400. data/test/rubygems/good_rake.rb +1 -0
  401. data/test/rubygems/grandchild_cert.pem +15 -16
  402. data/test/rubygems/grandchild_cert_32.pem +15 -16
  403. data/test/rubygems/grandchild_key.pem +25 -25
  404. data/test/rubygems/helper.rb +172 -151
  405. data/test/rubygems/installer_test_case.rb +14 -13
  406. data/test/rubygems/invalid_issuer_cert.pem +16 -16
  407. data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
  408. data/test/rubygems/invalid_key.pem +25 -25
  409. data/test/rubygems/invalid_signer_cert.pem +15 -15
  410. data/test/rubygems/invalid_signer_cert_32.pem +15 -15
  411. data/test/rubygems/invalidchild_cert.pem +15 -16
  412. data/test/rubygems/invalidchild_cert_32.pem +15 -16
  413. data/test/rubygems/invalidchild_key.pem +25 -25
  414. data/test/rubygems/multifactor_auth_utilities.rb +111 -0
  415. data/test/rubygems/package/tar_test_case.rb +53 -17
  416. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  417. data/test/rubygems/plugin/exception/rubygems_plugin.rb +2 -1
  418. data/test/rubygems/plugin/load/rubygems_plugin.rb +1 -0
  419. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +2 -1
  420. data/test/rubygems/private_key.pem +25 -25
  421. data/test/rubygems/public_cert.pem +16 -16
  422. data/test/rubygems/public_cert_32.pem +15 -15
  423. data/test/rubygems/public_key.pem +7 -7
  424. data/test/rubygems/rubygems/commands/crash_command.rb +1 -0
  425. data/test/rubygems/rubygems_plugin.rb +3 -2
  426. data/test/rubygems/simple_gem.rb +2 -1
  427. data/test/rubygems/specifications/bar-0.0.2.gemspec +2 -0
  428. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +6 -4
  429. data/test/rubygems/test_bundled_ca.rb +13 -12
  430. data/test/rubygems/test_config.rb +5 -4
  431. data/test/rubygems/test_deprecate.rb +5 -4
  432. data/test/rubygems/test_exit.rb +9 -3
  433. data/test/rubygems/test_gem.rb +339 -677
  434. data/test/rubygems/test_gem_available_set.rb +22 -21
  435. data/test/rubygems/test_gem_bundler_version_finder.rb +6 -4
  436. data/test/rubygems/test_gem_command.rb +45 -44
  437. data/test/rubygems/test_gem_command_manager.rb +96 -30
  438. data/test/rubygems/test_gem_commands_build_command.rb +74 -63
  439. data/test/rubygems/test_gem_commands_cert_command.rb +98 -99
  440. data/test/rubygems/test_gem_commands_check_command.rb +5 -4
  441. data/test/rubygems/test_gem_commands_cleanup_command.rb +41 -40
  442. data/test/rubygems/test_gem_commands_contents_command.rb +28 -27
  443. data/test/rubygems/test_gem_commands_dependency_command.rb +37 -36
  444. data/test/rubygems/test_gem_commands_environment_command.rb +17 -16
  445. data/test/rubygems/test_gem_commands_exec_command.rb +853 -0
  446. data/test/rubygems/test_gem_commands_fetch_command.rb +38 -37
  447. data/test/rubygems/test_gem_commands_generate_index_command.rb +8 -7
  448. data/test/rubygems/test_gem_commands_help_command.rb +14 -13
  449. data/test/rubygems/test_gem_commands_info_command.rb +29 -2
  450. data/test/rubygems/test_gem_commands_install_command.rb +152 -132
  451. data/test/rubygems/test_gem_commands_list_command.rb +5 -4
  452. data/test/rubygems/test_gem_commands_lock_command.rb +11 -10
  453. data/test/rubygems/test_gem_commands_mirror.rb +3 -2
  454. data/test/rubygems/test_gem_commands_open_command.rb +5 -4
  455. data/test/rubygems/test_gem_commands_outdated_command.rb +10 -9
  456. data/test/rubygems/test_gem_commands_owner_command.rb +227 -50
  457. data/test/rubygems/test_gem_commands_pristine_command.rb +142 -93
  458. data/test/rubygems/test_gem_commands_push_command.rb +189 -64
  459. data/test/rubygems/test_gem_commands_query_command.rb +74 -73
  460. data/test/rubygems/test_gem_commands_search_command.rb +3 -2
  461. data/test/rubygems/test_gem_commands_server_command.rb +3 -2
  462. data/test/rubygems/test_gem_commands_setup_command.rb +123 -96
  463. data/test/rubygems/test_gem_commands_signin_command.rb +71 -31
  464. data/test/rubygems/test_gem_commands_signout_command.rb +3 -3
  465. data/test/rubygems/test_gem_commands_sources_command.rb +29 -29
  466. data/test/rubygems/test_gem_commands_specification_command.rb +33 -32
  467. data/test/rubygems/test_gem_commands_stale_command.rb +5 -4
  468. data/test/rubygems/test_gem_commands_uninstall_command.rb +99 -81
  469. data/test/rubygems/test_gem_commands_unpack_command.rb +32 -31
  470. data/test/rubygems/test_gem_commands_update_command.rb +96 -95
  471. data/test/rubygems/test_gem_commands_which_command.rb +7 -6
  472. data/test/rubygems/test_gem_commands_yank_command.rb +162 -43
  473. data/test/rubygems/test_gem_config_file.rb +94 -81
  474. data/test/rubygems/test_gem_dependency.rb +76 -73
  475. data/test/rubygems/test_gem_dependency_installer.rb +200 -165
  476. data/test/rubygems/test_gem_dependency_list.rb +48 -47
  477. data/test/rubygems/test_gem_dependency_resolution_error.rb +5 -4
  478. data/test/rubygems/test_gem_doctor.rb +27 -26
  479. data/test/rubygems/test_gem_ext_builder.rb +60 -61
  480. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +4 -4
  481. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{Cargo.lock → ext/custom_name_lib/Cargo.lock} +23 -33
  482. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{Cargo.toml → ext/custom_name_lib/Cargo.toml} +1 -1
  483. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{src → ext/custom_name_lib/src}/lib.rs +1 -1
  484. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +3 -0
  485. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +37 -33
  486. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +1 -1
  487. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +2 -0
  488. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +12 -0
  489. data/test/rubygems/test_gem_ext_cargo_builder.rb +48 -59
  490. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +20 -19
  491. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +21 -36
  492. data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -15
  493. data/test/rubygems/test_gem_ext_configure_builder.rb +14 -13
  494. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +51 -52
  495. data/test/rubygems/test_gem_ext_rake_builder.rb +16 -15
  496. data/test/rubygems/test_gem_gem_runner.rb +15 -9
  497. data/test/rubygems/test_gem_gemcutter_utilities.rb +170 -84
  498. data/test/rubygems/test_gem_impossible_dependencies_error.rb +5 -4
  499. data/test/rubygems/test_gem_indexer.rb +87 -67
  500. data/test/rubygems/test_gem_install_update_options.rb +17 -16
  501. data/test/rubygems/test_gem_installer.rb +422 -304
  502. data/test/rubygems/test_gem_local_remote_options.rb +11 -10
  503. data/test/rubygems/test_gem_name_tuple.rb +5 -4
  504. data/test/rubygems/test_gem_package.rb +243 -231
  505. data/test/rubygems/test_gem_package_old.rb +14 -13
  506. data/test/rubygems/test_gem_package_tar_header.rb +48 -47
  507. data/test/rubygems/test_gem_package_tar_reader.rb +56 -8
  508. data/test/rubygems/test_gem_package_tar_reader_entry.rb +162 -16
  509. data/test/rubygems/test_gem_package_tar_writer.rb +77 -76
  510. data/test/rubygems/test_gem_package_task.rb +19 -18
  511. data/test/rubygems/test_gem_path_support.rb +15 -14
  512. data/test/rubygems/test_gem_platform.rb +333 -227
  513. data/test/rubygems/test_gem_rdoc.rb +15 -14
  514. data/test/rubygems/test_gem_remote_fetcher.rb +155 -154
  515. data/test/rubygems/test_gem_request.rb +64 -58
  516. data/test/rubygems/test_gem_request_connection_pools.rb +30 -29
  517. data/test/rubygems/test_gem_request_set.rb +101 -100
  518. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +210 -211
  519. data/test/rubygems/test_gem_request_set_lockfile.rb +87 -86
  520. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +58 -57
  521. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +63 -62
  522. data/test/rubygems/test_gem_requirement.rb +48 -41
  523. data/test/rubygems/test_gem_resolver.rb +167 -99
  524. data/test/rubygems/test_gem_resolver_activation_request.rb +7 -6
  525. data/test/rubygems/test_gem_resolver_api_set.rb +34 -33
  526. data/test/rubygems/test_gem_resolver_api_specification.rb +48 -47
  527. data/test/rubygems/test_gem_resolver_best_set.rb +23 -22
  528. data/test/rubygems/test_gem_resolver_composed_set.rb +2 -1
  529. data/test/rubygems/test_gem_resolver_conflict.rb +13 -12
  530. data/test/rubygems/test_gem_resolver_dependency_request.rb +16 -15
  531. data/test/rubygems/test_gem_resolver_git_set.rb +22 -21
  532. data/test/rubygems/test_gem_resolver_git_specification.rb +22 -21
  533. data/test/rubygems/test_gem_resolver_index_set.rb +13 -12
  534. data/test/rubygems/test_gem_resolver_index_specification.rb +17 -16
  535. data/test/rubygems/test_gem_resolver_installed_specification.rb +6 -5
  536. data/test/rubygems/test_gem_resolver_installer_set.rb +79 -34
  537. data/test/rubygems/test_gem_resolver_local_specification.rb +8 -7
  538. data/test/rubygems/test_gem_resolver_lock_set.rb +13 -12
  539. data/test/rubygems/test_gem_resolver_lock_specification.rb +18 -17
  540. data/test/rubygems/test_gem_resolver_requirement_list.rb +2 -1
  541. data/test/rubygems/test_gem_resolver_specification.rb +9 -8
  542. data/test/rubygems/test_gem_resolver_vendor_set.rb +7 -6
  543. data/test/rubygems/test_gem_resolver_vendor_specification.rb +11 -10
  544. data/test/rubygems/test_gem_security.rb +69 -68
  545. data/test/rubygems/test_gem_security_policy.rb +72 -72
  546. data/test/rubygems/test_gem_security_signer.rb +35 -34
  547. data/test/rubygems/test_gem_security_trust_dir.rb +7 -6
  548. data/test/rubygems/test_gem_silent_ui.rb +39 -32
  549. data/test/rubygems/test_gem_source.rb +45 -44
  550. data/test/rubygems/test_gem_source_fetch_problem.rb +10 -9
  551. data/test/rubygems/test_gem_source_git.rb +69 -62
  552. data/test/rubygems/test_gem_source_installed.rb +17 -16
  553. data/test/rubygems/test_gem_source_list.rb +6 -5
  554. data/test/rubygems/test_gem_source_local.rb +15 -14
  555. data/test/rubygems/test_gem_source_lock.rb +32 -31
  556. data/test/rubygems/test_gem_source_specific_file.rb +18 -17
  557. data/test/rubygems/test_gem_source_subpath_problem.rb +8 -7
  558. data/test/rubygems/test_gem_source_vendor.rb +14 -13
  559. data/test/rubygems/test_gem_spec_fetcher.rb +73 -72
  560. data/test/rubygems/test_gem_specification.rb +533 -469
  561. data/test/rubygems/test_gem_stream_ui.rb +53 -22
  562. data/test/rubygems/test_gem_stub_specification.rb +33 -32
  563. data/test/rubygems/test_gem_text.rb +2 -1
  564. data/test/rubygems/test_gem_uninstaller.rb +118 -117
  565. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +4 -3
  566. data/test/rubygems/test_gem_update_suggestion.rb +209 -0
  567. data/test/rubygems/test_gem_uri.rb +6 -4
  568. data/test/rubygems/test_gem_uri_formatter.rb +15 -14
  569. data/test/rubygems/test_gem_util.rb +24 -23
  570. data/test/rubygems/test_gem_validator.rb +8 -8
  571. data/test/rubygems/test_gem_version.rb +24 -16
  572. data/test/rubygems/test_gem_version_option.rb +16 -15
  573. data/test/rubygems/test_kernel.rb +43 -48
  574. data/test/rubygems/test_project_sanity.rb +32 -3
  575. data/test/rubygems/test_remote_fetch_error.rb +8 -7
  576. data/test/rubygems/test_require.rb +118 -103
  577. data/test/rubygems/test_rubygems.rb +10 -8
  578. data/test/rubygems/test_webauthn_listener.rb +143 -0
  579. data/test/rubygems/test_webauthn_listener_response.rb +93 -0
  580. data/test/rubygems/test_webauthn_poller.rb +124 -0
  581. data/test/rubygems/utilities.rb +98 -34
  582. data/test/rubygems/wrong_key_cert.pem +15 -15
  583. data/test/rubygems/wrong_key_cert_32.pem +15 -15
  584. data/test/test_changelog_generator.rb +1 -1
  585. metadata +99 -46
  586. data/bundler/lib/bundler/dep_proxy.rb +0 -55
  587. data/bundler/lib/bundler/templates/gems.rb +0 -5
  588. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +0 -5
  589. data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
  590. data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
  591. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
  592. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
  593. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
  594. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
  595. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
  596. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
  597. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
  598. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
  599. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
  600. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
  601. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
  602. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
  603. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -149
  604. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
  605. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
  606. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
  607. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
  608. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
  609. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
  610. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
  611. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
  612. data/bundler/lib/bundler/vendored_molinillo.rb +0 -4
  613. data/bundler/lib/bundler/version_ranges.rb +0 -122
  614. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb +0 -21
  615. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/build.rb +0 -21
@@ -1,15 +1,16 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'helper'
3
- require 'rubygems/dependency_installer'
4
- require 'rubygems/security'
2
+
3
+ require_relative "helper"
4
+ require "rubygems/dependency_installer"
5
+ require "rubygems/security"
5
6
 
6
7
  class TestGemDependencyInstaller < Gem::TestCase
7
8
  def setup
8
9
  super
9
10
  common_installer_setup
10
11
 
11
- @gems_dir = File.join @tempdir, 'gems'
12
- @cache_dir = File.join @gemhome, 'cache'
12
+ @gems_dir = File.join @tempdir, "gems"
13
+ @cache_dir = File.join @gemhome, "cache"
13
14
 
14
15
  FileUtils.mkdir @gems_dir
15
16
 
@@ -25,23 +26,23 @@ class TestGemDependencyInstaller < Gem::TestCase
25
26
  end
26
27
 
27
28
  def util_setup_gems
28
- @a1, @a1_gem = util_gem 'a', '1' do |s|
29
- s.executables << 'a_bin'
29
+ @a1, @a1_gem = util_gem "a", "1" do |s|
30
+ s.executables << "a_bin"
30
31
  end
31
32
 
32
- @a1_pre, @a1_pre_gem = util_gem 'a', '1.a'
33
+ @a1_pre, @a1_pre_gem = util_gem "a", "1.a"
33
34
 
34
- @b1, @b1_gem = util_gem 'b', '1' do |s|
35
- s.add_dependency 'a'
36
- s.add_development_dependency 'aa'
35
+ @b1, @b1_gem = util_gem "b", "1" do |s|
36
+ s.add_dependency "a"
37
+ s.add_development_dependency "aa"
37
38
  end
38
39
 
39
- @c1, @c1_gem = util_gem 'c', '1' do |s|
40
- s.add_development_dependency 'b'
40
+ @c1, @c1_gem = util_gem "c", "1" do |s|
41
+ s.add_development_dependency "b"
41
42
  end
42
43
 
43
- @d1, @d1_gem = util_gem 'd', '1' do |s|
44
- s.add_development_dependency 'c'
44
+ @d1, @d1_gem = util_gem "d", "1" do |s|
45
+ s.add_development_dependency "c"
45
46
  end
46
47
 
47
48
  util_setup_spec_fetcher(@a1, @a1_pre, @b1, @d1)
@@ -55,7 +56,7 @@ class TestGemDependencyInstaller < Gem::TestCase
55
56
 
56
57
  Dir.chdir @tempdir do
57
58
  inst = Gem::DependencyInstaller.new
58
- inst.install 'a'
59
+ inst.install "a"
59
60
  end
60
61
 
61
62
  assert_equal %w[a-1], Gem::Specification.map(&:full_name)
@@ -65,13 +66,13 @@ class TestGemDependencyInstaller < Gem::TestCase
65
66
  def test_install_prerelease
66
67
  util_setup_gems
67
68
 
68
- p1a, gem = util_gem 'a', '10.a'
69
+ p1a, gem = util_gem "a", "10.a"
69
70
 
70
71
  util_setup_spec_fetcher(p1a, @a1, @a1_pre)
71
72
 
72
73
  p1a_data = Gem.read_binary(gem)
73
74
 
74
- @fetcher.data['http://gems.example.com/gems/a-10.a.gem'] = p1a_data
75
+ @fetcher.data["http://gems.example.com/gems/a-10.a.gem"] = p1a_data
75
76
 
76
77
  dep = Gem::Dependency.new "a"
77
78
  inst = Gem::DependencyInstaller.new :prerelease => true
@@ -83,18 +84,18 @@ class TestGemDependencyInstaller < Gem::TestCase
83
84
 
84
85
  def test_install_prerelease_bug_990
85
86
  spec_fetcher do |fetcher|
86
- fetcher.gem 'a', '1.b' do |s|
87
- s.add_dependency 'b', '~> 1.a'
87
+ fetcher.gem "a", "1.b" do |s|
88
+ s.add_dependency "b", "~> 1.a"
88
89
  end
89
90
 
90
- fetcher.gem 'b', '1.b' do |s|
91
- s.add_dependency 'c', '>= 1'
91
+ fetcher.gem "b", "1.b" do |s|
92
+ s.add_dependency "c", ">= 1"
92
93
  end
93
94
 
94
- fetcher.gem 'c', '1.1.b'
95
+ fetcher.gem "c", "1.1.b"
95
96
  end
96
97
 
97
- dep = Gem::Dependency.new 'a'
98
+ dep = Gem::Dependency.new "a"
98
99
 
99
100
  inst = Gem::DependencyInstaller.new :prerelease => true
100
101
  inst.install dep
@@ -103,13 +104,13 @@ class TestGemDependencyInstaller < Gem::TestCase
103
104
  end
104
105
 
105
106
  def test_install_when_only_prerelease
106
- p1a, gem = util_gem 'p', '1.a'
107
+ p1a, gem = util_gem "p", "1.a"
107
108
 
108
109
  util_setup_spec_fetcher(p1a)
109
110
 
110
111
  p1a_data = Gem.read_binary(gem)
111
112
 
112
- @fetcher.data['http://gems.example.com/gems/p-1.a.gem'] = p1a_data
113
+ @fetcher.data["http://gems.example.com/gems/p-1.a.gem"] = p1a_data
113
114
 
114
115
  dep = Gem::Dependency.new "p"
115
116
  inst = Gem::DependencyInstaller.new
@@ -128,7 +129,7 @@ class TestGemDependencyInstaller < Gem::TestCase
128
129
 
129
130
  p1a_data = Gem.read_binary(@a1_gem)
130
131
 
131
- @fetcher.data['http://gems.example.com/gems/a-1.gem'] = p1a_data
132
+ @fetcher.data["http://gems.example.com/gems/a-1.gem"] = p1a_data
132
133
 
133
134
  dep = Gem::Dependency.new "a"
134
135
  inst = Gem::DependencyInstaller.new :prerelease => true
@@ -141,8 +142,8 @@ class TestGemDependencyInstaller < Gem::TestCase
141
142
  def test_install_all_dependencies
142
143
  util_setup_gems
143
144
 
144
- _, e1_gem = util_gem 'e', '1' do |s|
145
- s.add_dependency 'b'
145
+ _, e1_gem = util_gem "e", "1" do |s|
146
+ s.add_dependency "b"
146
147
  end
147
148
 
148
149
  FileUtils.mv @a1_gem, @tempdir
@@ -153,15 +154,15 @@ class TestGemDependencyInstaller < Gem::TestCase
153
154
 
154
155
  Dir.chdir @tempdir do
155
156
  inst = Gem::DependencyInstaller.new :ignore_dependencies => true
156
- inst.install 'b'
157
+ inst.install "b"
157
158
  end
158
159
 
159
160
  assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name },
160
- 'sanity check'
161
+ "sanity check"
161
162
 
162
163
  Dir.chdir @tempdir do
163
164
  inst = Gem::DependencyInstaller.new
164
- inst.install 'e'
165
+ inst.install "e"
165
166
  end
166
167
 
167
168
  assert_equal %w[a-1 e-1], inst.installed_gems.map {|s| s.full_name }
@@ -178,7 +179,7 @@ class TestGemDependencyInstaller < Gem::TestCase
178
179
 
179
180
  Dir.chdir dir do
180
181
  inst = Gem::DependencyInstaller.new :cache_dir => @tempdir
181
- inst.install 'b'
182
+ inst.install "b"
182
183
  end
183
184
 
184
185
  assert_equal %w[a-1 b-1], inst.installed_gems.map {|s| s.full_name }
@@ -190,9 +191,9 @@ class TestGemDependencyInstaller < Gem::TestCase
190
191
  def test_install_dependencies_satisfied
191
192
  util_setup_gems
192
193
 
193
- a2, a2_gem = util_gem 'a', '2'
194
+ a2, a2_gem = util_gem "a", "2"
194
195
 
195
- FileUtils.rm_rf File.join(@gemhome, 'gems')
196
+ FileUtils.rm_rf File.join(@gemhome, "gems")
196
197
 
197
198
  Gem::Specification.reset
198
199
 
@@ -203,17 +204,17 @@ class TestGemDependencyInstaller < Gem::TestCase
203
204
 
204
205
  Dir.chdir @tempdir do
205
206
  inst = Gem::DependencyInstaller.new
206
- inst.install 'a', req("= 2")
207
+ inst.install "a", req("= 2")
207
208
  end
208
209
 
209
210
  assert_equal %w[a-2], inst.installed_gems.map {|s| s.full_name },
210
- 'sanity check'
211
+ "sanity check"
211
212
 
212
213
  FileUtils.rm File.join(@tempdir, a2.file_name)
213
214
 
214
215
  Dir.chdir @tempdir do
215
216
  inst = Gem::DependencyInstaller.new
216
- inst.install 'b'
217
+ inst.install "b"
217
218
  end
218
219
 
219
220
  assert_equal %w[a-2 b-1], Gem::Specification.map(&:full_name)
@@ -226,12 +227,12 @@ class TestGemDependencyInstaller < Gem::TestCase
226
227
  def test_install_doesnt_upgrade_installed_dependencies
227
228
  util_setup_gems
228
229
 
229
- a2, a2_gem = util_gem 'a', '2'
230
- a3, a3_gem = util_gem 'a', '3'
230
+ a2, a2_gem = util_gem "a", "2"
231
+ a3, a3_gem = util_gem "a", "3"
231
232
 
232
233
  util_setup_spec_fetcher @a1, a3, @b1
233
234
 
234
- FileUtils.rm_rf File.join(@gemhome, 'gems')
235
+ FileUtils.rm_rf File.join(@gemhome, "gems")
235
236
 
236
237
  Gem::Specification.reset
237
238
 
@@ -241,7 +242,7 @@ class TestGemDependencyInstaller < Gem::TestCase
241
242
  FileUtils.mv a3_gem, @tempdir
242
243
 
243
244
  Dir.chdir @tempdir do
244
- Gem::DependencyInstaller.new.install 'a', req("= 2")
245
+ Gem::DependencyInstaller.new.install "a", req("= 2")
245
246
  end
246
247
 
247
248
  FileUtils.rm File.join(@tempdir, a2.file_name)
@@ -250,7 +251,7 @@ class TestGemDependencyInstaller < Gem::TestCase
250
251
 
251
252
  Dir.chdir @tempdir do
252
253
  inst = Gem::DependencyInstaller.new
253
- inst.install 'b'
254
+ inst.install "b"
254
255
  end
255
256
 
256
257
  assert_equal %w[a-2 b-1], Gem::Specification.map(&:full_name)
@@ -274,18 +275,18 @@ class TestGemDependencyInstaller < Gem::TestCase
274
275
 
275
276
  Dir.chdir @tempdir do
276
277
  inst = Gem::DependencyInstaller.new(:build_docs_in_background => false)
277
- inst.install 'b'
278
+ inst.install "b"
278
279
  end
279
280
 
280
281
  assert_equal %w[a-1 b-1], inst.installed_gems.map {|s| s.full_name }
281
282
 
282
- assert done_installing_ran, 'post installs hook was not run'
283
+ assert done_installing_ran, "post installs hook was not run"
283
284
  end
284
285
 
285
286
  def test_install_dependency_development
286
287
  util_setup_gems
287
288
 
288
- @aa1, @aa1_gem = util_gem 'aa', '1'
289
+ @aa1, @aa1_gem = util_gem "aa", "1"
289
290
 
290
291
  FileUtils.mv @a1_gem, @tempdir
291
292
  FileUtils.mv @aa1_gem, @tempdir
@@ -294,7 +295,7 @@ class TestGemDependencyInstaller < Gem::TestCase
294
295
 
295
296
  Dir.chdir @tempdir do
296
297
  inst = Gem::DependencyInstaller.new(:development => true)
297
- inst.install 'b'
298
+ inst.install "b"
298
299
  end
299
300
 
300
301
  assert_equal %w[a-1 aa-1 b-1], inst.installed_gems.map {|s| s.full_name }
@@ -303,7 +304,7 @@ class TestGemDependencyInstaller < Gem::TestCase
303
304
  def test_install_dependency_development_deep
304
305
  util_setup_gems
305
306
 
306
- @aa1, @aa1_gem = util_gem 'aa', '1'
307
+ @aa1, @aa1_gem = util_gem "aa", "1"
307
308
 
308
309
  FileUtils.mv @a1_gem, @tempdir
309
310
  FileUtils.mv @aa1_gem, @tempdir
@@ -314,7 +315,7 @@ class TestGemDependencyInstaller < Gem::TestCase
314
315
 
315
316
  Dir.chdir @tempdir do
316
317
  inst = Gem::DependencyInstaller.new(:development => true)
317
- inst.install 'd'
318
+ inst.install "d"
318
319
  end
319
320
 
320
321
  assert_equal %w[a-1 aa-1 b-1 c-1 d-1], inst.installed_gems.map {|s| s.full_name }
@@ -323,7 +324,7 @@ class TestGemDependencyInstaller < Gem::TestCase
323
324
  def test_install_dependency_development_shallow
324
325
  util_setup_gems
325
326
 
326
- @aa1, @aa1_gem = util_gem 'aa', '1'
327
+ @aa1, @aa1_gem = util_gem "aa", "1"
327
328
 
328
329
  FileUtils.mv @a1_gem, @tempdir
329
330
  FileUtils.mv @aa1_gem, @tempdir
@@ -334,7 +335,7 @@ class TestGemDependencyInstaller < Gem::TestCase
334
335
 
335
336
  Dir.chdir @tempdir do
336
337
  inst = Gem::DependencyInstaller.new(:development => true, :dev_shallow => true)
337
- inst.install 'd'
338
+ inst.install "d"
338
339
  end
339
340
 
340
341
  assert_equal %w[c-1 d-1], inst.installed_gems.map {|s| s.full_name }
@@ -350,29 +351,29 @@ class TestGemDependencyInstaller < Gem::TestCase
350
351
 
351
352
  Dir.chdir @tempdir do
352
353
  inst = Gem::DependencyInstaller.new
353
- inst.install 'b'
354
+ inst.install "b"
354
355
  end
355
356
 
356
357
  assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name }
357
358
  end
358
359
 
359
360
  def test_install_dependency_existing_extension
360
- extconf_rb = File.join @gemhome, 'gems', 'e-1', 'extconf.rb'
361
+ extconf_rb = File.join @gemhome, "gems", "e-1", "extconf.rb"
361
362
  FileUtils.mkdir_p File.dirname extconf_rb
362
363
 
363
- File.open extconf_rb, 'w' do |io|
364
+ File.open extconf_rb, "w" do |io|
364
365
  io.write <<-EXTCONF_RB
365
366
  require 'mkmf'
366
367
  create_makefile 'e'
367
368
  EXTCONF_RB
368
369
  end
369
370
 
370
- e1 = util_spec 'e', '1', nil, 'extconf.rb' do |s|
371
- s.extensions << 'extconf.rb'
371
+ e1 = util_spec "e", "1", nil, "extconf.rb" do |s|
372
+ s.extensions << "extconf.rb"
372
373
  end
373
374
  e1_gem = e1.cache_file
374
375
 
375
- _, f1_gem = util_gem 'f', '1', 'e' => nil
376
+ _, f1_gem = util_gem "f", "1", "e" => nil
376
377
 
377
378
  Gem::Installer.at(e1_gem).install
378
379
  FileUtils.rm_r e1.extension_dir
@@ -385,7 +386,7 @@ class TestGemDependencyInstaller < Gem::TestCase
385
386
  Dir.chdir @tempdir
386
387
  begin
387
388
  inst = Gem::DependencyInstaller.new
388
- inst.install 'f'
389
+ inst.install "f"
389
390
  ensure
390
391
  Dir.chdir pwd
391
392
  end
@@ -396,9 +397,9 @@ class TestGemDependencyInstaller < Gem::TestCase
396
397
  end
397
398
 
398
399
  def test_install_dependency_old
399
- _, e1_gem = util_gem 'e', '1'
400
- _, f1_gem = util_gem 'f', '1', 'e' => nil
401
- _, f2_gem = util_gem 'f', '2'
400
+ _, e1_gem = util_gem "e", "1"
401
+ _, f1_gem = util_gem "f", "1", "e" => nil
402
+ _, f2_gem = util_gem "f", "2"
402
403
 
403
404
  FileUtils.mv e1_gem, @tempdir
404
405
  FileUtils.mv f1_gem, @tempdir
@@ -407,7 +408,7 @@ class TestGemDependencyInstaller < Gem::TestCase
407
408
 
408
409
  Dir.chdir @tempdir do
409
410
  inst = Gem::DependencyInstaller.new
410
- inst.install 'f'
411
+ inst.install "f"
411
412
  end
412
413
 
413
414
  assert_equal %w[f-2], inst.installed_gems.map {|s| s.full_name }
@@ -421,7 +422,7 @@ class TestGemDependencyInstaller < Gem::TestCase
421
422
 
422
423
  Dir.chdir @tempdir do
423
424
  inst = Gem::DependencyInstaller.new :domain => :local
424
- inst.install 'a-1.gem'
425
+ inst.install "a-1.gem"
425
426
  end
426
427
 
427
428
  assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name }
@@ -435,7 +436,7 @@ class TestGemDependencyInstaller < Gem::TestCase
435
436
 
436
437
  Dir.chdir @tempdir do
437
438
  inst = Gem::DependencyInstaller.new :domain => :local
438
- inst.install 'a-1.a.gem'
439
+ inst.install "a-1.a.gem"
439
440
  end
440
441
 
441
442
  assert_equal %w[a-1.a], inst.installed_gems.map {|s| s.full_name }
@@ -451,7 +452,7 @@ class TestGemDependencyInstaller < Gem::TestCase
451
452
 
452
453
  Dir.chdir @tempdir do
453
454
  inst = Gem::DependencyInstaller.new :domain => :local
454
- inst.install 'b-1.gem'
455
+ inst.install "b-1.gem"
455
456
  end
456
457
 
457
458
  assert_equal %w[a-1 b-1], inst.installed_gems.map {|s| s.full_name }
@@ -466,15 +467,49 @@ class TestGemDependencyInstaller < Gem::TestCase
466
467
  inst = nil
467
468
 
468
469
  Dir.chdir @tempdir do
469
- Gem::Installer.at('a-1.gem').install
470
+ Gem::Installer.at("a-1.gem").install
470
471
 
471
472
  inst = Gem::DependencyInstaller.new :domain => :local
472
- inst.install 'b-1.gem'
473
+ inst.install "b-1.gem"
473
474
  end
474
475
 
475
476
  assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name }
476
477
  end
477
478
 
479
+ def test_install_local_dependency_no_network_for_target_gem
480
+ a1, a1_gem = util_gem "a", "1"
481
+ _, b1_gem = util_gem "b", "1" do |s|
482
+ s.add_dependency "a"
483
+ end
484
+
485
+ util_setup_spec_fetcher(a1)
486
+
487
+ a1_data = Gem.read_binary(a1_gem)
488
+ @fetcher.data["http://gems.example.com/gems/a-1.gem"] = a1_data
489
+
490
+ # compact index is available
491
+ compact_index_response = Net::HTTPResponse.new "1.1", 200, "OK"
492
+ compact_index_response.uri = URI("http://gems.example.com")
493
+ @fetcher.data["http://gems.example.com/"] = compact_index_response
494
+
495
+ # but private local gem not present there
496
+ @fetcher.data["http://gems.example.com/info/b"] =
497
+ proc do
498
+ raise "should not happen"
499
+ end
500
+
501
+ FileUtils.mv b1_gem, @tempdir
502
+
503
+ inst = nil
504
+
505
+ Dir.chdir @tempdir do
506
+ inst = Gem::DependencyInstaller.new
507
+ inst.install "b-1.gem"
508
+ end
509
+
510
+ assert_equal %w[a-1 b-1], inst.installed_gems.map(&:full_name)
511
+ end
512
+
478
513
  def test_install_local_subdir
479
514
  util_setup_gems
480
515
 
@@ -482,7 +517,7 @@ class TestGemDependencyInstaller < Gem::TestCase
482
517
 
483
518
  Dir.chdir @tempdir do
484
519
  inst = Gem::DependencyInstaller.new :domain => :local
485
- inst.install 'gems/a-1.gem'
520
+ inst.install "gems/a-1.gem"
486
521
  end
487
522
 
488
523
  assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name }
@@ -491,12 +526,12 @@ class TestGemDependencyInstaller < Gem::TestCase
491
526
  def test_install_minimal_deps
492
527
  util_setup_gems
493
528
 
494
- _, e1_gem = util_gem 'e', '1' do |s|
495
- s.add_dependency 'b'
529
+ _, e1_gem = util_gem "e", "1" do |s|
530
+ s.add_dependency "b"
496
531
  end
497
532
 
498
- _, b2_gem = util_gem 'b', '2' do |s|
499
- s.add_dependency 'a'
533
+ _, b2_gem = util_gem "b", "2" do |s|
534
+ s.add_dependency "a"
500
535
  end
501
536
 
502
537
  FileUtils.mv @a1_gem, @tempdir
@@ -508,15 +543,15 @@ class TestGemDependencyInstaller < Gem::TestCase
508
543
 
509
544
  Dir.chdir @tempdir do
510
545
  inst = Gem::DependencyInstaller.new :ignore_dependencies => true
511
- inst.install 'b', req('= 1')
546
+ inst.install "b", req("= 1")
512
547
  end
513
548
 
514
549
  assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name },
515
- 'sanity check'
550
+ "sanity check"
516
551
 
517
552
  Dir.chdir @tempdir do
518
553
  inst = Gem::DependencyInstaller.new :minimal_deps => true
519
- inst.install 'e'
554
+ inst.install "e"
520
555
  end
521
556
 
522
557
  assert_equal %w[a-1 e-1], inst.installed_gems.map {|s| s.full_name }
@@ -525,12 +560,12 @@ class TestGemDependencyInstaller < Gem::TestCase
525
560
  def test_install_no_minimal_deps
526
561
  util_setup_gems
527
562
 
528
- _, e1_gem = util_gem 'e', '1' do |s|
529
- s.add_dependency 'b'
563
+ _, e1_gem = util_gem "e", "1" do |s|
564
+ s.add_dependency "b"
530
565
  end
531
566
 
532
- _, b2_gem = util_gem 'b', '2' do |s|
533
- s.add_dependency 'a'
567
+ _, b2_gem = util_gem "b", "2" do |s|
568
+ s.add_dependency "a"
534
569
  end
535
570
 
536
571
  FileUtils.mv @a1_gem, @tempdir
@@ -542,15 +577,15 @@ class TestGemDependencyInstaller < Gem::TestCase
542
577
 
543
578
  Dir.chdir @tempdir do
544
579
  inst = Gem::DependencyInstaller.new :ignore_dependencies => true
545
- inst.install 'b', req('= 1')
580
+ inst.install "b", req("= 1")
546
581
  end
547
582
 
548
583
  assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name },
549
- 'sanity check'
584
+ "sanity check"
550
585
 
551
586
  Dir.chdir @tempdir do
552
587
  inst = Gem::DependencyInstaller.new :minimal_deps => false
553
- inst.install 'e'
588
+ inst.install "e"
554
589
  end
555
590
 
556
591
  assert_equal %w[a-1 b-2 e-1], inst.installed_gems.map {|s| s.full_name }
@@ -581,13 +616,13 @@ class TestGemDependencyInstaller < Gem::TestCase
581
616
 
582
617
  Dir.chdir @tempdir do
583
618
  inst = Gem::DependencyInstaller.new :env_shebang => true, :wrappers => true, :format_executable => false
584
- inst.install 'a'
619
+ inst.install "a"
585
620
  end
586
621
 
587
622
  env = "/\\S+/env" unless Gem.win_platform?
588
623
 
589
624
  assert_match %r{\A#!#{env} #{RbConfig::CONFIG['ruby_install_name']}\n},
590
- File.read(File.join(@gemhome, 'bin', 'a_bin'))
625
+ File.read(File.join(@gemhome, "bin", "a_bin"))
591
626
  end
592
627
 
593
628
  def test_install_force
@@ -595,12 +630,12 @@ class TestGemDependencyInstaller < Gem::TestCase
595
630
 
596
631
  FileUtils.mv @b1_gem, @tempdir
597
632
  si = util_setup_spec_fetcher @b1
598
- @fetcher.data['http://gems.example.com/gems/yaml'] = si.to_yaml
633
+ @fetcher.data["http://gems.example.com/gems/yaml"] = si.to_yaml
599
634
  inst = nil
600
635
 
601
636
  Dir.chdir @tempdir do
602
637
  inst = Gem::DependencyInstaller.new :force => true
603
- inst.install 'b'
638
+ inst.install "b"
604
639
  end
605
640
 
606
641
  assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name }
@@ -616,7 +651,7 @@ class TestGemDependencyInstaller < Gem::TestCase
616
651
  Dir.chdir @tempdir do
617
652
  inst = Gem::DependencyInstaller.new(
618
653
  :build_args => build_args)
619
- inst.install 'a'
654
+ inst.install "a"
620
655
  end
621
656
 
622
657
  assert_equal build_args.join("\n"), File.read(inst.installed_gems.first.build_info_file).strip
@@ -630,7 +665,7 @@ class TestGemDependencyInstaller < Gem::TestCase
630
665
 
631
666
  Dir.chdir @tempdir do
632
667
  inst = Gem::DependencyInstaller.new :ignore_dependencies => true
633
- inst.install 'b'
668
+ inst.install "b"
634
669
  end
635
670
 
636
671
  assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name }
@@ -645,37 +680,37 @@ class TestGemDependencyInstaller < Gem::TestCase
645
680
  inst = Gem::Installer.at @a1.file_name
646
681
  inst.install
647
682
 
648
- gemhome2 = File.join @tempdir, 'gemhome2'
683
+ gemhome2 = File.join @tempdir, "gemhome2"
649
684
  Dir.mkdir gemhome2
650
685
  inst = nil
651
686
 
652
687
  Dir.chdir @tempdir do
653
688
  inst = Gem::DependencyInstaller.new :install_dir => gemhome2
654
- inst.install 'b'
689
+ inst.install "b"
655
690
  end
656
691
 
657
692
  assert_equal %w[a-1 b-1], inst.installed_gems.map {|s| s.full_name }
658
693
 
659
- assert File.exist?(File.join(gemhome2, 'specifications', @a1.spec_name))
660
- assert File.exist?(File.join(gemhome2, 'cache', @a1.file_name))
694
+ assert File.exist?(File.join(gemhome2, "specifications", @a1.spec_name))
695
+ assert File.exist?(File.join(gemhome2, "cache", @a1.file_name))
661
696
  end
662
697
 
663
698
  def test_install_domain_both
664
699
  util_setup_gems
665
700
 
666
701
  a1_data = nil
667
- File.open @a1_gem, 'rb' do |fp|
702
+ File.open @a1_gem, "rb" do |fp|
668
703
  a1_data = fp.read
669
704
  end
670
705
 
671
- @fetcher.data['http://gems.example.com/gems/a-1.gem'] = a1_data
706
+ @fetcher.data["http://gems.example.com/gems/a-1.gem"] = a1_data
672
707
 
673
708
  FileUtils.mv @b1_gem, @tempdir
674
709
  inst = nil
675
710
 
676
711
  Dir.chdir @tempdir do
677
712
  inst = Gem::DependencyInstaller.new :domain => :both
678
- inst.install 'b'
713
+ inst.install "b"
679
714
  end
680
715
 
681
716
  assert_equal %w[a-1 b-1], inst.installed_gems.map {|s| s.full_name }
@@ -699,7 +734,7 @@ class TestGemDependencyInstaller < Gem::TestCase
699
734
 
700
735
  Dir.chdir @tempdir do
701
736
  inst = Gem::DependencyInstaller.new :domain => :both
702
- inst.install 'b'
737
+ inst.install "b"
703
738
  end
704
739
 
705
740
  assert_equal %w[a-1 b-1], inst.installed_gems.map {|s| s.full_name }
@@ -714,7 +749,7 @@ class TestGemDependencyInstaller < Gem::TestCase
714
749
  Dir.chdir @tempdir do
715
750
  e = assert_raise Gem::UnsatisfiableDependencyError do
716
751
  inst = Gem::DependencyInstaller.new :domain => :local
717
- inst.install 'b'
752
+ inst.install "b"
718
753
  end
719
754
 
720
755
  expected = "Unable to resolve dependency: 'b (>= 0)' requires 'a (>= 0)'"
@@ -728,14 +763,14 @@ class TestGemDependencyInstaller < Gem::TestCase
728
763
  util_setup_gems
729
764
 
730
765
  a1_data = nil
731
- File.open @a1_gem, 'rb' do |fp|
766
+ File.open @a1_gem, "rb" do |fp|
732
767
  a1_data = fp.read
733
768
  end
734
769
 
735
- @fetcher.data['http://gems.example.com/gems/a-1.gem'] = a1_data
770
+ @fetcher.data["http://gems.example.com/gems/a-1.gem"] = a1_data
736
771
 
737
772
  inst = Gem::DependencyInstaller.new :domain => :remote
738
- inst.install 'a'
773
+ inst.install "a"
739
774
 
740
775
  assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name }
741
776
  end
@@ -751,19 +786,19 @@ class TestGemDependencyInstaller < Gem::TestCase
751
786
 
752
787
  Dir.chdir @tempdir do
753
788
  inst = Gem::DependencyInstaller.new :install_dir => gemhome2
754
- inst.install 'a'
789
+ inst.install "a"
755
790
  end
756
791
 
757
792
  assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name },
758
- 'sanity check'
793
+ "sanity check"
759
794
 
760
- ENV['GEM_HOME'] = @gemhome
761
- ENV['GEM_PATH'] = [@gemhome, gemhome2].join File::PATH_SEPARATOR
795
+ ENV["GEM_HOME"] = @gemhome
796
+ ENV["GEM_PATH"] = [@gemhome, gemhome2].join File::PATH_SEPARATOR
762
797
  Gem.clear_paths
763
798
 
764
799
  Dir.chdir @tempdir do
765
800
  inst = Gem::DependencyInstaller.new
766
- inst.install 'b'
801
+ inst.install "b"
767
802
  end
768
803
 
769
804
  assert_equal %w[b-1], inst.installed_gems.map {|s| s.full_name }
@@ -778,7 +813,7 @@ class TestGemDependencyInstaller < Gem::TestCase
778
813
 
779
814
  Dir.chdir @tempdir do
780
815
  inst = Gem::DependencyInstaller.new :force => true
781
- inst.install 'a'
816
+ inst.install "a"
782
817
  end
783
818
 
784
819
  assert_equal %w[a-1], Gem::Specification.map(&:full_name)
@@ -789,16 +824,16 @@ class TestGemDependencyInstaller < Gem::TestCase
789
824
  util_setup_gems
790
825
 
791
826
  a1_data = nil
792
- File.open @a1_gem, 'rb' do |fp|
827
+ File.open @a1_gem, "rb" do |fp|
793
828
  a1_data = fp.read
794
829
  end
795
830
 
796
- @fetcher.data['http://gems.example.com/gems/a-1.gem'] = a1_data
831
+ @fetcher.data["http://gems.example.com/gems/a-1.gem"] = a1_data
797
832
 
798
833
  inst = Gem::DependencyInstaller.new
799
834
 
800
835
  Dir.chdir @tempdir do
801
- inst.install 'a'
836
+ inst.install "a"
802
837
  end
803
838
 
804
839
  assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name }
@@ -808,11 +843,11 @@ class TestGemDependencyInstaller < Gem::TestCase
808
843
  util_setup_gems
809
844
 
810
845
  a1_data = nil
811
- File.open @a1_gem, 'rb' do |fp|
846
+ File.open @a1_gem, "rb" do |fp|
812
847
  a1_data = fp.read
813
848
  end
814
849
 
815
- @fetcher.data['http://gems.example.com/gems/a-1.gem'] = a1_data
850
+ @fetcher.data["http://gems.example.com/gems/a-1.gem"] = a1_data
816
851
 
817
852
  inst = Gem::DependencyInstaller.new
818
853
 
@@ -827,22 +862,22 @@ class TestGemDependencyInstaller < Gem::TestCase
827
862
  def test_install_remote_platform_newer
828
863
  util_setup_gems
829
864
 
830
- a2_o, a2_o_gem = util_gem 'a', '2' do |s|
865
+ a2_o, a2_o_gem = util_gem "a", "2" do |s|
831
866
  s.platform = Gem::Platform.new %w[cpu other_platform 1]
832
867
  end
833
868
 
834
869
  si = util_setup_spec_fetcher @a1, a2_o
835
870
 
836
- @fetcher.data['http://gems.example.com/gems/yaml'] = si.to_yaml
871
+ @fetcher.data["http://gems.example.com/gems/yaml"] = si.to_yaml
837
872
 
838
873
  a1_data = nil
839
874
  a2_o_data = nil
840
875
 
841
- File.open @a1_gem, 'rb' do |fp|
876
+ File.open @a1_gem, "rb" do |fp|
842
877
  a1_data = fp.read
843
878
  end
844
879
 
845
- File.open a2_o_gem, 'rb' do |fp|
880
+ File.open a2_o_gem, "rb" do |fp|
846
881
  a2_o_data = fp.read
847
882
  end
848
883
 
@@ -852,13 +887,13 @@ class TestGemDependencyInstaller < Gem::TestCase
852
887
  a2_o_data
853
888
 
854
889
  inst = Gem::DependencyInstaller.new :domain => :remote
855
- inst.install 'a'
890
+ inst.install "a"
856
891
 
857
892
  assert_equal %w[a-1], inst.installed_gems.map {|s| s.full_name }
858
893
  end
859
894
 
860
895
  def test_install_platform_is_ignored_when_a_file_is_specified
861
- _, a_gem = util_gem 'a', '1' do |s|
896
+ _, a_gem = util_gem "a", "1" do |s|
862
897
  s.platform = Gem::Platform.new %w[cpu other_platform 1]
863
898
  end
864
899
 
@@ -868,26 +903,26 @@ class TestGemDependencyInstaller < Gem::TestCase
868
903
  assert_equal %w[a-1-cpu-other_platform-1], inst.installed_gems.map {|s| s.full_name }
869
904
  end
870
905
 
871
- require 'rubygems/openssl'
906
+ require "rubygems/openssl"
872
907
 
873
908
  if Gem::HAVE_OPENSSL
874
909
  def test_install_security_policy
875
910
  util_setup_gems
876
911
 
877
- data = File.open(@a1_gem, 'rb') {|f| f.read }
878
- @fetcher.data['http://gems.example.com/gems/a-1.gem'] = data
912
+ data = File.open(@a1_gem, "rb") {|f| f.read }
913
+ @fetcher.data["http://gems.example.com/gems/a-1.gem"] = data
879
914
 
880
- data = File.open(@b1_gem, 'rb') {|f| f.read }
881
- @fetcher.data['http://gems.example.com/gems/b-1.gem'] = data
915
+ data = File.open(@b1_gem, "rb") {|f| f.read }
916
+ @fetcher.data["http://gems.example.com/gems/b-1.gem"] = data
882
917
 
883
918
  policy = Gem::Security::HighSecurity
884
919
  inst = Gem::DependencyInstaller.new :security_policy => policy
885
920
 
886
921
  e = assert_raise Gem::Security::Exception do
887
- inst.install 'b'
922
+ inst.install "b"
888
923
  end
889
924
 
890
- assert_equal 'unsigned gems are not allowed by the High Security policy',
925
+ assert_equal "unsigned gems are not allowed by the High Security policy",
891
926
  e.message
892
927
 
893
928
  assert_equal %w[], inst.installed_gems.map {|s| s.full_name }
@@ -899,28 +934,28 @@ class TestGemDependencyInstaller < Gem::TestCase
899
934
  def test_install_no_wrappers
900
935
  util_setup_gems
901
936
 
902
- @fetcher.data['http://gems.example.com/gems/a-1.gem'] = read_binary(@a1_gem)
937
+ @fetcher.data["http://gems.example.com/gems/a-1.gem"] = read_binary(@a1_gem)
903
938
 
904
939
  inst = Gem::DependencyInstaller.new :wrappers => false, :format_executable => false
905
- inst.install 'a'
940
+ inst.install "a"
906
941
 
907
942
  refute_match(%r{This file was generated by RubyGems.},
908
- File.read(File.join(@gemhome, 'bin', 'a_bin')))
943
+ File.read(File.join(@gemhome, "bin", "a_bin")))
909
944
  end
910
945
  end
911
946
 
912
947
  def test_install_version
913
948
  util_setup_d
914
949
 
915
- data = File.open(@d2_gem, 'rb') {|f| f.read }
916
- @fetcher.data['http://gems.example.com/gems/d-2.gem'] = data
950
+ data = File.open(@d2_gem, "rb") {|f| f.read }
951
+ @fetcher.data["http://gems.example.com/gems/d-2.gem"] = data
917
952
 
918
- data = File.open(@d1_gem, 'rb') {|f| f.read }
919
- @fetcher.data['http://gems.example.com/gems/d-1.gem'] = data
953
+ data = File.open(@d1_gem, "rb") {|f| f.read }
954
+ @fetcher.data["http://gems.example.com/gems/d-1.gem"] = data
920
955
 
921
956
  inst = Gem::DependencyInstaller.new
922
957
 
923
- inst.install 'd', '= 1'
958
+ inst.install "d", "= 1"
924
959
 
925
960
  assert_equal %w[d-1], inst.installed_gems.map {|s| s.full_name }
926
961
  end
@@ -928,26 +963,26 @@ class TestGemDependencyInstaller < Gem::TestCase
928
963
  def test_install_version_default
929
964
  util_setup_d
930
965
 
931
- data = File.open(@d2_gem, 'rb') {|f| f.read }
932
- @fetcher.data['http://gems.example.com/gems/d-2.gem'] = data
966
+ data = File.open(@d2_gem, "rb") {|f| f.read }
967
+ @fetcher.data["http://gems.example.com/gems/d-2.gem"] = data
933
968
 
934
- data = File.open(@d1_gem, 'rb') {|f| f.read }
935
- @fetcher.data['http://gems.example.com/gems/d-1.gem'] = data
969
+ data = File.open(@d1_gem, "rb") {|f| f.read }
970
+ @fetcher.data["http://gems.example.com/gems/d-1.gem"] = data
936
971
 
937
972
  inst = Gem::DependencyInstaller.new
938
- inst.install 'd'
973
+ inst.install "d"
939
974
 
940
975
  assert_equal %w[d-2], inst.installed_gems.map {|s| s.full_name }
941
976
  end
942
977
 
943
978
  def test_install_legacy_spec_with_nil_required_ruby_version
944
- path = File.expand_path 'data/null-required-ruby-version.gemspec.rz', __dir__
979
+ path = File.expand_path "data/null-required-ruby-version.gemspec.rz", __dir__
945
980
  spec = Marshal.load Gem.read_binary(path)
946
981
  def spec.validate(*args); end
947
982
 
948
983
  util_build_gem spec
949
984
 
950
- cache_file = File.join @tempdir, 'gems', "#{spec.original_name}.gem"
985
+ cache_file = File.join @tempdir, "gems", "#{spec.original_name}.gem"
951
986
  FileUtils.mkdir_p File.dirname cache_file
952
987
  FileUtils.mv spec.cache_file, cache_file
953
988
 
@@ -955,9 +990,9 @@ class TestGemDependencyInstaller < Gem::TestCase
955
990
 
956
991
  data = Gem.read_binary(cache_file)
957
992
 
958
- @fetcher.data['http://gems.example.com/gems/activesupport-1.0.0.gem'] = data
993
+ @fetcher.data["http://gems.example.com/gems/activesupport-1.0.0.gem"] = data
959
994
 
960
- dep = Gem::Dependency.new 'activesupport'
995
+ dep = Gem::Dependency.new "activesupport"
961
996
 
962
997
  inst = Gem::DependencyInstaller.new
963
998
  inst.install dep
@@ -966,13 +1001,13 @@ class TestGemDependencyInstaller < Gem::TestCase
966
1001
  end
967
1002
 
968
1003
  def test_install_legacy_spec_with_nil_required_rubygems_version
969
- path = File.expand_path 'data/null-required-rubygems-version.gemspec.rz', __dir__
1004
+ path = File.expand_path "data/null-required-rubygems-version.gemspec.rz", __dir__
970
1005
  spec = Marshal.load Gem.read_binary(path)
971
1006
  def spec.validate(*args); end
972
1007
 
973
1008
  util_build_gem spec
974
1009
 
975
- cache_file = File.join @tempdir, 'gems', "#{spec.original_name}.gem"
1010
+ cache_file = File.join @tempdir, "gems", "#{spec.original_name}.gem"
976
1011
  FileUtils.mkdir_p File.dirname cache_file
977
1012
  FileUtils.mv spec.cache_file, cache_file
978
1013
 
@@ -980,9 +1015,9 @@ class TestGemDependencyInstaller < Gem::TestCase
980
1015
 
981
1016
  data = Gem.read_binary(cache_file)
982
1017
 
983
- @fetcher.data['http://gems.example.com/gems/activesupport-1.0.0.gem'] = data
1018
+ @fetcher.data["http://gems.example.com/gems/activesupport-1.0.0.gem"] = data
984
1019
 
985
- dep = Gem::Dependency.new 'activesupport'
1020
+ dep = Gem::Dependency.new "activesupport"
986
1021
 
987
1022
  inst = Gem::DependencyInstaller.new
988
1023
  inst.install dep
@@ -994,7 +1029,7 @@ class TestGemDependencyInstaller < Gem::TestCase
994
1029
  util_setup_gems
995
1030
 
996
1031
  inst = Gem::DependencyInstaller.new
997
- dep = Gem::Dependency.new 'b', '>= 0'
1032
+ dep = Gem::Dependency.new "b", ">= 0"
998
1033
 
999
1034
  Gem::Specification.reset
1000
1035
 
@@ -1015,7 +1050,7 @@ class TestGemDependencyInstaller < Gem::TestCase
1015
1050
 
1016
1051
  FileUtils.mv @a1_gem, @tempdir
1017
1052
  inst = Gem::DependencyInstaller.new
1018
- dep = Gem::Dependency.new 'a', '>= 0'
1053
+ dep = Gem::Dependency.new "a", ">= 0"
1019
1054
  set = nil
1020
1055
 
1021
1056
  Dir.chdir @tempdir do
@@ -1030,12 +1065,12 @@ class TestGemDependencyInstaller < Gem::TestCase
1030
1065
 
1031
1066
  remote, local = gems
1032
1067
 
1033
- assert_equal 'a-1', local.spec.full_name, 'local spec'
1068
+ assert_equal "a-1", local.spec.full_name, "local spec"
1034
1069
  assert_equal File.join(@tempdir, @a1.file_name),
1035
- local.source.download(local.spec), 'local path'
1070
+ local.source.download(local.spec), "local path"
1036
1071
 
1037
- assert_equal 'a-1', remote.spec.full_name, 'remote spec'
1038
- assert_equal Gem::Source.new(@gem_repo), remote.source, 'remote path'
1072
+ assert_equal "a-1", remote.spec.full_name, "remote spec"
1073
+ assert_equal Gem::Source.new(@gem_repo), remote.source, "remote path"
1039
1074
  end
1040
1075
 
1041
1076
  def test_find_gems_with_sources_prerelease
@@ -1043,7 +1078,7 @@ class TestGemDependencyInstaller < Gem::TestCase
1043
1078
 
1044
1079
  installer = Gem::DependencyInstaller.new
1045
1080
 
1046
- dependency = Gem::Dependency.new('a', Gem::Requirement.default)
1081
+ dependency = Gem::Dependency.new("a", Gem::Requirement.default)
1047
1082
 
1048
1083
  set = Gem::Deprecate.skip_during do
1049
1084
  installer.find_gems_with_sources(dependency)
@@ -1051,8 +1086,8 @@ class TestGemDependencyInstaller < Gem::TestCase
1051
1086
 
1052
1087
  releases = set.all_specs
1053
1088
 
1054
- assert releases.any? {|s| s.name == 'a' and s.version.to_s == '1' }
1055
- refute releases.any? {|s| s.name == 'a' and s.version.to_s == '1.a' }
1089
+ assert releases.any? {|s| s.name == "a" && s.version.to_s == "1" }
1090
+ refute releases.any? {|s| s.name == "a" && s.version.to_s == "1.a" }
1056
1091
 
1057
1092
  dependency.prerelease = true
1058
1093
 
@@ -1067,15 +1102,15 @@ class TestGemDependencyInstaller < Gem::TestCase
1067
1102
 
1068
1103
  def test_find_gems_with_sources_with_best_only_and_platform
1069
1104
  util_setup_gems
1070
- a1_x86_mingw32, = util_gem 'a', '1' do |s|
1071
- s.platform = 'x86-mingw32'
1105
+ a1_x86_mingw32, = util_gem "a", "1" do |s|
1106
+ s.platform = "x86-mingw32"
1072
1107
  end
1073
1108
  util_setup_spec_fetcher @a1, a1_x86_mingw32
1074
- Gem.platforms << Gem::Platform.new('x86-mingw32')
1109
+ Gem.platforms << Gem::Platform.new("x86-mingw32")
1075
1110
 
1076
1111
  installer = Gem::DependencyInstaller.new
1077
1112
 
1078
- dependency = Gem::Dependency.new('a', Gem::Requirement.default)
1113
+ dependency = Gem::Dependency.new("a", Gem::Requirement.default)
1079
1114
 
1080
1115
  set = Gem::Deprecate.skip_during do
1081
1116
  installer.find_gems_with_sources(dependency, true)
@@ -1091,7 +1126,7 @@ class TestGemDependencyInstaller < Gem::TestCase
1091
1126
 
1092
1127
  installer = Gem::DependencyInstaller.new
1093
1128
 
1094
- dep = Gem::Dependency.new('a')
1129
+ dep = Gem::Dependency.new("a")
1095
1130
 
1096
1131
  out = Gem::Deprecate.skip_during do
1097
1132
  installer.find_gems_with_sources(dep)
@@ -1108,7 +1143,7 @@ class TestGemDependencyInstaller < Gem::TestCase
1108
1143
  FileUtils.mv @b1_gem, @tempdir
1109
1144
 
1110
1145
  inst = Gem::DependencyInstaller.new
1111
- request_set = inst.resolve_dependencies 'b', req('>= 0')
1146
+ request_set = inst.resolve_dependencies "b", req(">= 0")
1112
1147
 
1113
1148
  requests = request_set.sorted_requests.map {|req| req.full_name }
1114
1149
 
@@ -1122,7 +1157,7 @@ class TestGemDependencyInstaller < Gem::TestCase
1122
1157
  FileUtils.mv @b1_gem, @tempdir
1123
1158
 
1124
1159
  inst = Gem::DependencyInstaller.new :ignore_dependencies => true
1125
- request_set = inst.resolve_dependencies 'b', req('>= 0')
1160
+ request_set = inst.resolve_dependencies "b", req(">= 0")
1126
1161
 
1127
1162
  requests = request_set.sorted_requests.map {|req| req.full_name }
1128
1163
 
@@ -1134,12 +1169,12 @@ class TestGemDependencyInstaller < Gem::TestCase
1134
1169
  def test_resolve_dependencies_local
1135
1170
  util_setup_gems
1136
1171
 
1137
- @a2, @a2_gem = util_gem 'a', '2'
1172
+ @a2, @a2_gem = util_gem "a", "2"
1138
1173
  FileUtils.mv @a1_gem, @tempdir
1139
1174
  FileUtils.mv @a2_gem, @tempdir
1140
1175
 
1141
1176
  inst = Gem::DependencyInstaller.new
1142
- request_set = inst.resolve_dependencies 'a-1.gem', req('>= 0')
1177
+ request_set = inst.resolve_dependencies "a-1.gem", req(">= 0")
1143
1178
 
1144
1179
  requests = request_set.sorted_requests.map {|req| req.full_name }
1145
1180
 
@@ -1147,8 +1182,8 @@ class TestGemDependencyInstaller < Gem::TestCase
1147
1182
  end
1148
1183
 
1149
1184
  def util_setup_d
1150
- @d1, @d1_gem = util_gem 'd', '1'
1151
- @d2, @d2_gem = util_gem 'd', '2'
1185
+ @d1, @d1_gem = util_gem "d", "1"
1186
+ @d2, @d2_gem = util_gem "d", "2"
1152
1187
 
1153
1188
  util_setup_spec_fetcher(@d1, @d2)
1154
1189
  end