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,16 +1,17 @@
1
1
  # coding: US-ASCII
2
- require_relative 'helper'
3
- require 'rubygems'
4
- require 'rubygems/command'
5
- require 'rubygems/installer'
6
- require 'pathname'
7
- require 'tmpdir'
8
- require 'rbconfig'
2
+
3
+ require_relative "helper"
4
+ require "rubygems"
5
+ require "rubygems/command"
6
+ require "rubygems/installer"
7
+ require "pathname"
8
+ require "tmpdir"
9
+ require "rbconfig"
9
10
 
10
11
  class TestGem < Gem::TestCase
11
12
  PLUGINS_LOADED = [] # rubocop:disable Style/MutableConstant
12
13
 
13
- PROJECT_DIR = File.expand_path('../..', __dir__).tap(&Gem::UNTAINT)
14
+ PROJECT_DIR = File.expand_path("../..", __dir__).tap(&Gem::UNTAINT)
14
15
 
15
16
  def setup
16
17
  super
@@ -89,32 +90,32 @@ class TestGem < Gem::TestCase
89
90
 
90
91
  def test_self_install
91
92
  spec_fetcher do |f|
92
- f.gem 'a', 1
93
- f.spec 'a', 2
93
+ f.gem "a", 1
94
+ f.spec "a", 2
94
95
  end
95
96
 
96
97
  gemhome2 = "#{@gemhome}2"
97
98
 
98
- installed = Gem.install 'a', '= 1', :install_dir => gemhome2
99
+ installed = Gem.install "a", "= 1", :install_dir => gemhome2
99
100
 
100
101
  assert_equal %w[a-1], installed.map {|spec| spec.full_name }
101
102
 
102
- assert_path_exist File.join(gemhome2, 'gems', 'a-1')
103
+ assert_path_exist File.join(gemhome2, "gems", "a-1")
103
104
  end
104
105
 
105
106
  def test_self_install_in_rescue
106
107
  spec_fetcher do |f|
107
- f.gem 'a', 1
108
- f.spec 'a', 2
108
+ f.gem "a", 1
109
+ f.spec "a", 2
109
110
  end
110
111
 
111
112
  gemhome2 = "#{@gemhome}2"
112
113
 
113
114
  installed =
114
115
  begin
115
- raise 'Error'
116
+ raise "Error"
116
117
  rescue StandardError
117
- Gem.install 'a', '= 1', :install_dir => gemhome2
118
+ Gem.install "a", "= 1", :install_dir => gemhome2
118
119
  end
119
120
  assert_equal %w[a-1], installed.map {|spec| spec.full_name }
120
121
  end
@@ -143,7 +144,7 @@ class TestGem < Gem::TestCase
143
144
 
144
145
  def test_self_install_permissions_with_format_executable_and_non_standard_ruby_install_name
145
146
  Gem::Installer.exec_format = nil
146
- ruby_install_name 'ruby27' do
147
+ ruby_install_name "ruby27" do
147
148
  assert_self_install_permissions(format_executable: true)
148
149
  end
149
150
  ensure
@@ -160,35 +161,35 @@ class TestGem < Gem::TestCase
160
161
  :format_executable => format_executable,
161
162
  }
162
163
  Dir.chdir @tempdir do
163
- Dir.mkdir 'bin'
164
- Dir.mkdir 'data'
164
+ Dir.mkdir "bin"
165
+ Dir.mkdir "data"
165
166
 
166
- File.write 'bin/foo', "#!/usr/bin/env ruby\n"
167
- File.chmod 0755, 'bin/foo'
167
+ File.write "bin/foo", "#!/usr/bin/env ruby\n"
168
+ File.chmod 0755, "bin/foo"
168
169
 
169
- File.write 'data/foo.txt', "blah\n"
170
+ File.write "data/foo.txt", "blah\n"
170
171
 
171
172
  spec_fetcher do |f|
172
- f.gem 'foo', 1 do |s|
173
- s.executables = ['foo']
173
+ f.gem "foo", 1 do |s|
174
+ s.executables = ["foo"]
174
175
  s.files = %w[bin/foo data/foo.txt]
175
176
  end
176
177
  end
177
- Gem.install 'foo', Gem::Requirement.default, options
178
+ Gem.install "foo", Gem::Requirement.default, options
178
179
  end
179
180
 
180
181
  prog_mode = (options[:prog_mode] & mask).to_s(8)
181
182
  dir_mode = (options[:dir_mode] & mask).to_s(8)
182
183
  data_mode = (options[:data_mode] & mask).to_s(8)
183
- prog_name = 'foo'
184
- prog_name = RbConfig::CONFIG['ruby_install_name'].sub('ruby', 'foo') if options[:format_executable]
184
+ prog_name = "foo"
185
+ prog_name = RbConfig::CONFIG["ruby_install_name"].sub("ruby", "foo") if options[:format_executable]
185
186
  expected = {
186
187
  "bin/#{prog_name}" => prog_mode,
187
- 'gems/foo-1' => dir_mode,
188
- 'gems/foo-1/bin' => dir_mode,
189
- 'gems/foo-1/data' => dir_mode,
190
- 'gems/foo-1/bin/foo' => prog_mode,
191
- 'gems/foo-1/data/foo.txt' => data_mode,
188
+ "gems/foo-1" => dir_mode,
189
+ "gems/foo-1/bin" => dir_mode,
190
+ "gems/foo-1/data" => dir_mode,
191
+ "gems/foo-1/bin/foo" => prog_mode,
192
+ "gems/foo-1/data/foo.txt" => data_mode,
192
193
  }
193
194
  # add Windows script
194
195
  expected["bin/#{prog_name}.bat"] = mask.to_s(8) if win_platform?
@@ -200,7 +201,7 @@ class TestGem < Gem::TestCase
200
201
  end
201
202
  assert_equal(expected, result)
202
203
  ensure
203
- File.chmod(0755, *Dir.glob(@gemhome + '/gems/**/').map {|path| path.tap(&Gem::UNTAINT) })
204
+ File.chmod(0755, *Dir.glob(@gemhome + "/gems/**/").map {|path| path.tap(&Gem::UNTAINT) })
204
205
  end
205
206
 
206
207
  def test_require_missing
@@ -222,57 +223,57 @@ class TestGem < Gem::TestCase
222
223
  end
223
224
 
224
225
  def test_self_bin_path_active
225
- a1 = util_spec 'a', '1' do |s|
226
- s.executables = ['exec']
226
+ a1 = util_spec "a", "1" do |s|
227
+ s.executables = ["exec"]
227
228
  end
228
229
 
229
- util_spec 'a', '2' do |s|
230
- s.executables = ['exec']
230
+ util_spec "a", "2" do |s|
231
+ s.executables = ["exec"]
231
232
  end
232
233
 
233
234
  a1.activate
234
235
 
235
- assert_match 'a-1/bin/exec', Gem.bin_path('a', 'exec', '>= 0')
236
+ assert_match "a-1/bin/exec", Gem.bin_path("a", "exec", ">= 0")
236
237
  end
237
238
 
238
239
  def test_self_bin_path_picking_newest
239
- a1 = util_spec 'a', '1' do |s|
240
- s.executables = ['exec']
240
+ a1 = util_spec "a", "1" do |s|
241
+ s.executables = ["exec"]
241
242
  end
242
243
 
243
- a2 = util_spec 'a', '2' do |s|
244
- s.executables = ['exec']
244
+ a2 = util_spec "a", "2" do |s|
245
+ s.executables = ["exec"]
245
246
  end
246
247
 
247
248
  install_specs a1, a2
248
249
 
249
- assert_match 'a-2/bin/exec', Gem.bin_path('a', 'exec', '>= 0')
250
+ assert_match "a-2/bin/exec", Gem.bin_path("a", "exec", ">= 0")
250
251
  end
251
252
 
252
253
  def test_self_activate_bin_path_no_exec_name
253
254
  e = assert_raise ArgumentError do
254
- Gem.activate_bin_path 'a'
255
+ Gem.activate_bin_path "a"
255
256
  end
256
257
 
257
- assert_equal 'you must supply exec_name', e.message
258
+ assert_equal "you must supply exec_name", e.message
258
259
  end
259
260
 
260
261
  def test_activate_bin_path_resolves_eagerly
261
- a1 = util_spec 'a', '1' do |s|
262
- s.executables = ['exec']
263
- s.add_dependency 'b'
262
+ a1 = util_spec "a", "1" do |s|
263
+ s.executables = ["exec"]
264
+ s.add_dependency "b"
264
265
  end
265
266
 
266
- b1 = util_spec 'b', '1' do |s|
267
- s.add_dependency 'c', '2'
267
+ b1 = util_spec "b", "1" do |s|
268
+ s.add_dependency "c", "2"
268
269
  end
269
270
 
270
- b2 = util_spec 'b', '2' do |s|
271
- s.add_dependency 'c', '1'
271
+ b2 = util_spec "b", "2" do |s|
272
+ s.add_dependency "c", "1"
272
273
  end
273
274
 
274
- c1 = util_spec 'c', '1'
275
- c2 = util_spec 'c', '2'
275
+ c1 = util_spec "c", "1"
276
+ c2 = util_spec "c", "2"
276
277
 
277
278
  install_specs c1, c2, b1, b2, a1
278
279
 
@@ -280,27 +281,27 @@ class TestGem < Gem::TestCase
280
281
 
281
282
  # If we didn't eagerly resolve, this would activate c-2 and then the
282
283
  # finish_resolve would cause a conflict
283
- gem 'c'
284
+ gem "c"
284
285
  Gem.finish_resolve
285
286
 
286
287
  assert_equal %w[a-1 b-2 c-1], loaded_spec_names
287
288
  end
288
289
 
289
290
  def test_activate_bin_path_does_not_error_if_a_gem_thats_not_finally_activated_has_orphaned_dependencies
290
- a1 = util_spec 'a', '1' do |s|
291
- s.executables = ['exec']
292
- s.add_dependency 'b'
291
+ a1 = util_spec "a", "1" do |s|
292
+ s.executables = ["exec"]
293
+ s.add_dependency "b"
293
294
  end
294
295
 
295
- b1 = util_spec 'b', '1' do |s|
296
- s.add_dependency 'c', '1'
296
+ b1 = util_spec "b", "1" do |s|
297
+ s.add_dependency "c", "1"
297
298
  end
298
299
 
299
- b2 = util_spec 'b', '2' do |s|
300
- s.add_dependency 'c', '2'
300
+ b2 = util_spec "b", "2" do |s|
301
+ s.add_dependency "c", "2"
301
302
  end
302
303
 
303
- c2 = util_spec 'c', '2'
304
+ c2 = util_spec "c", "2"
304
305
 
305
306
  install_specs c2, b1, b2, a1
306
307
 
@@ -312,20 +313,20 @@ class TestGem < Gem::TestCase
312
313
  end
313
314
 
314
315
  def test_activate_bin_path_raises_a_meaningful_error_if_a_gem_thats_finally_activated_has_orphaned_dependencies
315
- a1 = util_spec 'a', '1' do |s|
316
- s.executables = ['exec']
317
- s.add_dependency 'b'
316
+ a1 = util_spec "a", "1" do |s|
317
+ s.executables = ["exec"]
318
+ s.add_dependency "b"
318
319
  end
319
320
 
320
- b1 = util_spec 'b', '1' do |s|
321
- s.add_dependency 'c', '1'
321
+ b1 = util_spec "b", "1" do |s|
322
+ s.add_dependency "c", "1"
322
323
  end
323
324
 
324
- b2 = util_spec 'b', '2' do |s|
325
- s.add_dependency 'c', '2'
325
+ b2 = util_spec "b", "2" do |s|
326
+ s.add_dependency "c", "2"
326
327
  end
327
328
 
328
- c1 = util_spec 'c', '1'
329
+ c1 = util_spec "c", "1"
329
330
 
330
331
  install_specs c1, b1, b2, a1
331
332
 
@@ -339,8 +340,8 @@ class TestGem < Gem::TestCase
339
340
  end
340
341
 
341
342
  def test_activate_bin_path_in_debug_mode
342
- a1 = util_spec 'a', '1' do |s|
343
- s.executables = ['exec']
343
+ a1 = util_spec "a", "1" do |s|
344
+ s.executables = ["exec"]
344
345
  end
345
346
 
346
347
  install_specs a1
@@ -355,12 +356,12 @@ class TestGem < Gem::TestCase
355
356
  end
356
357
 
357
358
  def test_activate_bin_path_selects_exact_bundler_version_if_present
358
- bundler_latest = util_spec 'bundler', '2.0.1' do |s|
359
- s.executables = ['bundle']
359
+ bundler_latest = util_spec "bundler", "2.0.1" do |s|
360
+ s.executables = ["bundle"]
360
361
  end
361
362
 
362
- bundler_previous = util_spec 'bundler', '2.0.0' do |s|
363
- s.executables = ['bundle']
363
+ bundler_previous = util_spec "bundler", "2.0.0" do |s|
364
+ s.executables = ["bundle"]
364
365
  end
365
366
 
366
367
  install_specs bundler_latest, bundler_previous
@@ -389,12 +390,12 @@ class TestGem < Gem::TestCase
389
390
  end
390
391
 
391
392
  def test_activate_bin_path_respects_underscore_selection_if_given
392
- bundler_latest = util_spec 'bundler', '2.0.1' do |s|
393
- s.executables = ['bundle']
393
+ bundler_latest = util_spec "bundler", "2.0.1" do |s|
394
+ s.executables = ["bundle"]
394
395
  end
395
396
 
396
- bundler_previous = util_spec 'bundler', '1.17.3' do |s|
397
- s.executables = ['bundle']
397
+ bundler_previous = util_spec "bundler", "1.17.3" do |s|
398
+ s.executables = ["bundle"]
398
399
  end
399
400
 
400
401
  install_specs bundler_latest, bundler_previous
@@ -450,57 +451,57 @@ class TestGem < Gem::TestCase
450
451
 
451
452
  def test_self_bin_path_no_exec_name
452
453
  e = assert_raise ArgumentError do
453
- Gem.bin_path 'a'
454
+ Gem.bin_path "a"
454
455
  end
455
456
 
456
- assert_equal 'you must supply exec_name', e.message
457
+ assert_equal "you must supply exec_name", e.message
457
458
  end
458
459
 
459
460
  def test_self_bin_path_bin_name
460
461
  install_specs util_exec_gem
461
- assert_equal @abin_path, Gem.bin_path('a', 'abin')
462
+ assert_equal @abin_path, Gem.bin_path("a", "abin")
462
463
  end
463
464
 
464
465
  def test_self_bin_path_bin_name_version
465
466
  install_specs util_exec_gem
466
- assert_equal @abin_path, Gem.bin_path('a', 'abin', '4')
467
+ assert_equal @abin_path, Gem.bin_path("a", "abin", "4")
467
468
  end
468
469
 
469
470
  def test_self_bin_path_nonexistent_binfile
470
- util_spec 'a', '2' do |s|
471
- s.executables = ['exec']
471
+ util_spec "a", "2" do |s|
472
+ s.executables = ["exec"]
472
473
  end
473
474
  assert_raise(Gem::GemNotFoundException) do
474
- Gem.bin_path('a', 'other', '2')
475
+ Gem.bin_path("a", "other", "2")
475
476
  end
476
477
  end
477
478
 
478
479
  def test_self_bin_path_no_bin_file
479
- util_spec 'a', '1'
480
+ util_spec "a", "1"
480
481
  assert_raise(ArgumentError) do
481
- Gem.bin_path('a', nil, '1')
482
+ Gem.bin_path("a", nil, "1")
482
483
  end
483
484
  end
484
485
 
485
486
  def test_self_bin_path_not_found
486
487
  assert_raise(Gem::GemNotFoundException) do
487
- Gem.bin_path('non-existent', 'blah')
488
+ Gem.bin_path("non-existent", "blah")
488
489
  end
489
490
  end
490
491
 
491
492
  def test_self_bin_path_bin_file_gone_in_latest
492
493
  install_specs util_exec_gem
493
- spec = util_spec 'a', '10' do |s|
494
+ spec = util_spec "a", "10" do |s|
494
495
  s.executables = []
495
496
  end
496
497
  install_specs spec
497
- assert_equal @abin_path, Gem.bin_path('a', 'abin')
498
+ assert_equal @abin_path, Gem.bin_path("a", "abin")
498
499
  end
499
500
 
500
501
  def test_self_bindir
501
- assert_equal File.join(@gemhome, 'bin'), Gem.bindir
502
- assert_equal File.join(@gemhome, 'bin'), Gem.bindir(Gem.dir)
503
- assert_equal File.join(@gemhome, 'bin'), Gem.bindir(Pathname.new(Gem.dir))
502
+ assert_equal File.join(@gemhome, "bin"), Gem.bindir
503
+ assert_equal File.join(@gemhome, "bin"), Gem.bindir(Gem.dir)
504
+ assert_equal File.join(@gemhome, "bin"), Gem.bindir(Pathname.new(Gem.dir))
504
505
  end
505
506
 
506
507
  def test_self_bindir_default_dir
@@ -529,21 +530,21 @@ class TestGem < Gem::TestCase
529
530
  foo = nil
530
531
 
531
532
  Dir.chdir @tempdir do
532
- FileUtils.mkdir_p 'data'
533
- File.open File.join('data', 'foo.txt'), 'w' do |fp|
534
- fp.puts 'blah'
533
+ FileUtils.mkdir_p "data"
534
+ File.open File.join("data", "foo.txt"), "w" do |fp|
535
+ fp.puts "blah"
535
536
  end
536
537
 
537
- foo = util_spec 'foo' do |s|
538
+ foo = util_spec "foo" do |s|
538
539
  s.files = %w[data/foo.txt]
539
540
  end
540
541
 
541
542
  install_gem foo
542
543
  end
543
544
 
544
- gem 'foo'
545
+ gem "foo"
545
546
 
546
- expected = File.join @gemhome, 'gems', foo.full_name, 'data', 'foo'
547
+ expected = File.join @gemhome, "gems", foo.full_name, "data", "foo"
547
548
 
548
549
  assert_equal expected, Gem::Specification.find_by_name("foo").datadir
549
550
  end
@@ -555,25 +556,25 @@ class TestGem < Gem::TestCase
555
556
  end
556
557
 
557
558
  def test_self_default_exec_format
558
- ruby_install_name 'ruby' do
559
- assert_equal '%s', Gem.default_exec_format
559
+ ruby_install_name "ruby" do
560
+ assert_equal "%s", Gem.default_exec_format
560
561
  end
561
562
  end
562
563
 
563
564
  def test_self_default_exec_format_18
564
- ruby_install_name 'ruby18' do
565
- assert_equal '%s18', Gem.default_exec_format
565
+ ruby_install_name "ruby18" do
566
+ assert_equal "%s18", Gem.default_exec_format
566
567
  end
567
568
  end
568
569
 
569
570
  def test_self_default_exec_format_jruby
570
- ruby_install_name 'jruby' do
571
- assert_equal 'j%s', Gem.default_exec_format
571
+ ruby_install_name "jruby" do
572
+ assert_equal "j%s", Gem.default_exec_format
572
573
  end
573
574
  end
574
575
 
575
576
  def test_default_path
576
- vendordir(File.join(@tempdir, 'vendor')) do
577
+ vendordir(File.join(@tempdir, "vendor")) do
577
578
  FileUtils.rm_rf Gem.user_home
578
579
 
579
580
  expected = [Gem.default_dir]
@@ -593,7 +594,7 @@ class TestGem < Gem::TestCase
593
594
  end
594
595
 
595
596
  def test_default_path_user_home
596
- vendordir(File.join(@tempdir, 'vendor')) do
597
+ vendordir(File.join(@tempdir, "vendor")) do
597
598
  expected = [Gem.user_dir, Gem.default_dir]
598
599
 
599
600
  assert_equal expected, Gem.default_path
@@ -601,7 +602,7 @@ class TestGem < Gem::TestCase
601
602
  end
602
603
 
603
604
  def test_default_path_vendor_dir
604
- vendordir(File.join(@tempdir, 'vendor')) do
605
+ vendordir(File.join(@tempdir, "vendor")) do
605
606
  FileUtils.mkdir_p Gem.vendor_dir
606
607
 
607
608
  FileUtils.rm_rf Gem.user_home
@@ -616,25 +617,6 @@ class TestGem < Gem::TestCase
616
617
  assert_equal %w[https://rubygems.org/], Gem.default_sources
617
618
  end
618
619
 
619
- def test_self_use_gemdeps
620
- with_rubygems_gemdeps('-') do
621
- FileUtils.mkdir_p 'detect/a/b'
622
- FileUtils.mkdir_p 'detect/a/Isolate'
623
-
624
- FileUtils.touch 'detect/Isolate'
625
-
626
- begin
627
- Dir.chdir 'detect/a/b'
628
-
629
- Gem.use_gemdeps
630
-
631
- assert_equal add_bundler_full_name([]), loaded_spec_names
632
- ensure
633
- Dir.chdir @tempdir
634
- end
635
- end
636
- end
637
-
638
620
  def test_self_dir
639
621
  assert_equal @gemhome, Gem.dir
640
622
  end
@@ -645,12 +627,12 @@ class TestGem < Gem::TestCase
645
627
 
646
628
  Gem.ensure_gem_subdirectories @gemhome
647
629
 
648
- assert_path_exist File.join @gemhome, 'build_info'
649
- assert_path_exist File.join @gemhome, 'cache'
650
- assert_path_exist File.join @gemhome, 'doc'
651
- assert_path_exist File.join @gemhome, 'extensions'
652
- assert_path_exist File.join @gemhome, 'gems'
653
- assert_path_exist File.join @gemhome, 'specifications'
630
+ assert_path_exist File.join @gemhome, "build_info"
631
+ assert_path_exist File.join @gemhome, "cache"
632
+ assert_path_exist File.join @gemhome, "doc"
633
+ assert_path_exist File.join @gemhome, "extensions"
634
+ assert_path_exist File.join @gemhome, "gems"
635
+ assert_path_exist File.join @gemhome, "specifications"
654
636
  end
655
637
 
656
638
  def test_self_ensure_gem_directories_permissions
@@ -680,9 +662,9 @@ class TestGem < Gem::TestCase
680
662
  end unless win_platform?
681
663
 
682
664
  def test_self_ensure_gem_directories_missing_parents
683
- gemdir = File.join @tempdir, 'a/b/c/gemdir'
684
- FileUtils.rm_rf File.join(@tempdir, 'a') rescue nil
685
- refute File.exist?(File.join(@tempdir, 'a')),
665
+ gemdir = File.join @tempdir, "a/b/c/gemdir"
666
+ FileUtils.rm_rf File.join(@tempdir, "a") rescue nil
667
+ refute File.exist?(File.join(@tempdir, "a")),
686
668
  "manually remove #{File.join @tempdir, 'a'}, tests are broken"
687
669
  Gem.use_paths gemdir
688
670
 
@@ -725,19 +707,19 @@ class TestGem < Gem::TestCase
725
707
  end
726
708
 
727
709
  def test_self_ensure_gem_directories_non_existent_paths
728
- Gem.ensure_gem_subdirectories '/proc/0123456789/bogus' # should not raise
729
- Gem.ensure_gem_subdirectories 'classpath:/bogus/x' # JRuby embed scenario
710
+ Gem.ensure_gem_subdirectories "/proc/0123456789/bogus" # should not raise
711
+ Gem.ensure_gem_subdirectories "classpath:/bogus/x" # JRuby embed scenario
730
712
  end
731
713
  end
732
714
 
733
715
  def test_self_extension_dir_shared
734
- enable_shared 'yes' do
716
+ enable_shared "yes" do
735
717
  assert_equal Gem.ruby_api_version, Gem.extension_api_version
736
718
  end
737
719
  end
738
720
 
739
721
  def test_self_extension_dir_static
740
- enable_shared 'no' do
722
+ enable_shared "no" do
741
723
  assert_equal "#{Gem.ruby_api_version}-static", Gem.extension_api_version
742
724
  end
743
725
  end
@@ -746,14 +728,14 @@ class TestGem < Gem::TestCase
746
728
  cwd = File.expand_path("test/rubygems", PROJECT_DIR)
747
729
  $LOAD_PATH.unshift cwd
748
730
 
749
- discover_path = File.join 'lib', 'sff', 'discover.rb'
731
+ discover_path = File.join "lib", "sff", "discover.rb"
750
732
 
751
733
  foo1, foo2 = %w[1 2].map do |version|
752
- spec = quick_gem 'sff', version do |s|
734
+ spec = quick_gem "sff", version do |s|
753
735
  s.files << discover_path
754
736
  end
755
737
 
756
- write_file(File.join 'gems', spec.full_name, discover_path) do |fp|
738
+ write_file(File.join "gems", spec.full_name, discover_path) do |fp|
757
739
  fp.puts "# #{spec.full_name}"
758
740
  end
759
741
 
@@ -763,65 +745,29 @@ class TestGem < Gem::TestCase
763
745
  Gem.refresh
764
746
 
765
747
  expected = [
766
- File.expand_path('test/rubygems/sff/discover.rb', PROJECT_DIR),
748
+ File.expand_path("test/rubygems/sff/discover.rb", PROJECT_DIR),
767
749
  File.join(foo2.full_gem_path, discover_path),
768
750
  File.join(foo1.full_gem_path, discover_path),
769
751
  ]
770
752
 
771
- assert_equal expected, Gem.find_files('sff/discover')
772
- assert_equal expected, Gem.find_files('sff/**.rb'), '[ruby-core:31730]'
753
+ assert_equal expected, Gem.find_files("sff/discover")
754
+ assert_equal expected, Gem.find_files("sff/**.rb"), "[ruby-core:31730]"
773
755
  ensure
774
756
  assert_equal cwd, $LOAD_PATH.shift
775
757
  end
776
758
 
777
- def test_self_find_files_with_gemfile
778
- cwd = File.expand_path("test/rubygems", PROJECT_DIR)
779
- actual_load_path = $LOAD_PATH.unshift(cwd).dup
780
-
781
- discover_path = File.join 'lib', 'sff', 'discover.rb'
782
-
783
- foo1, _ = %w[1 2].map do |version|
784
- spec = quick_gem 'sff', version do |s|
785
- s.files << discover_path
786
- end
787
-
788
- write_file(File.join 'gems', spec.full_name, discover_path) do |fp|
789
- fp.puts "# #{spec.full_name}"
790
- end
791
-
792
- spec
793
- end
794
- Gem.refresh
795
-
796
- write_file(File.join Dir.pwd, 'Gemfile') do |fp|
797
- fp.puts "source 'https://rubygems.org'"
798
- fp.puts "gem '#{foo1.name}', '#{foo1.version}'"
799
- end
800
- Gem.use_gemdeps(File.join Dir.pwd, 'Gemfile')
801
-
802
- expected = [
803
- File.expand_path('test/rubygems/sff/discover.rb', PROJECT_DIR),
804
- File.join(foo1.full_gem_path, discover_path),
805
- ].sort
806
-
807
- assert_equal expected, Gem.find_files('sff/discover').sort
808
- assert_equal expected, Gem.find_files('sff/**.rb').sort, '[ruby-core:31730]'
809
- ensure
810
- assert_equal cwd, actual_load_path.shift unless Gem.java_platform?
811
- end
812
-
813
759
  def test_self_find_latest_files
814
760
  cwd = File.expand_path("test/rubygems", PROJECT_DIR)
815
761
  $LOAD_PATH.unshift cwd
816
762
 
817
- discover_path = File.join 'lib', 'sff', 'discover.rb'
763
+ discover_path = File.join "lib", "sff", "discover.rb"
818
764
 
819
765
  _, foo2 = %w[1 2].map do |version|
820
- spec = quick_gem 'sff', version do |s|
766
+ spec = quick_gem "sff", version do |s|
821
767
  s.files << discover_path
822
768
  end
823
769
 
824
- write_file(File.join 'gems', spec.full_name, discover_path) do |fp|
770
+ write_file(File.join "gems", spec.full_name, discover_path) do |fp|
825
771
  fp.puts "# #{spec.full_name}"
826
772
  end
827
773
 
@@ -831,30 +777,30 @@ class TestGem < Gem::TestCase
831
777
  Gem.refresh
832
778
 
833
779
  expected = [
834
- File.expand_path('test/rubygems/sff/discover.rb', PROJECT_DIR),
780
+ File.expand_path("test/rubygems/sff/discover.rb", PROJECT_DIR),
835
781
  File.join(foo2.full_gem_path, discover_path),
836
782
  ]
837
783
 
838
- assert_equal expected, Gem.find_latest_files('sff/discover')
839
- assert_equal expected, Gem.find_latest_files('sff/**.rb'), '[ruby-core:31730]'
784
+ assert_equal expected, Gem.find_latest_files("sff/discover")
785
+ assert_equal expected, Gem.find_latest_files("sff/**.rb"), "[ruby-core:31730]"
840
786
  ensure
841
787
  assert_equal cwd, $LOAD_PATH.shift
842
788
  end
843
789
 
844
790
  def test_self_latest_spec_for
845
791
  gems = spec_fetcher do |fetcher|
846
- fetcher.spec 'a', 1
847
- fetcher.spec 'a', '3.a'
848
- fetcher.spec 'a', 2
792
+ fetcher.spec "a", 1
793
+ fetcher.spec "a", "3.a"
794
+ fetcher.spec "a", 2
849
795
  end
850
796
 
851
- spec = Gem.latest_spec_for 'a'
797
+ spec = Gem.latest_spec_for "a"
852
798
 
853
- assert_equal gems['a-2'], spec
799
+ assert_equal gems["a-2"], spec
854
800
  end
855
801
 
856
802
  def test_self_latest_spec_for_multiple_sources
857
- uri = 'https://example.sample.com/'
803
+ uri = "https://example.sample.com/"
858
804
  source = Gem::Source.new(uri)
859
805
  source_list = Gem::SourceList.new
860
806
  source_list << Gem::Source.new(@uri)
@@ -862,44 +808,44 @@ class TestGem < Gem::TestCase
862
808
  Gem.sources.replace source_list
863
809
 
864
810
  spec_fetcher(uri) do |fetcher|
865
- fetcher.spec 'a', 1.1
811
+ fetcher.spec "a", 1.1
866
812
  end
867
813
 
868
814
  gems = spec_fetcher do |fetcher|
869
- fetcher.spec 'a', 1
870
- fetcher.spec 'a', '3.a'
871
- fetcher.spec 'a', 2
815
+ fetcher.spec "a", 1
816
+ fetcher.spec "a", "3.a"
817
+ fetcher.spec "a", 2
872
818
  end
873
- spec = Gem.latest_spec_for 'a'
874
- assert_equal gems['a-2'], spec
819
+ spec = Gem.latest_spec_for "a"
820
+ assert_equal gems["a-2"], spec
875
821
  end
876
822
 
877
823
  def test_self_latest_rubygems_version
878
824
  spec_fetcher do |fetcher|
879
- fetcher.spec 'rubygems-update', '1.8.23'
880
- fetcher.spec 'rubygems-update', '1.8.24'
881
- fetcher.spec 'rubygems-update', '2.0.0.preview3'
825
+ fetcher.spec "rubygems-update", "1.8.23"
826
+ fetcher.spec "rubygems-update", "1.8.24"
827
+ fetcher.spec "rubygems-update", "2.0.0.preview3"
882
828
  end
883
829
 
884
830
  version = Gem.latest_rubygems_version
885
831
 
886
- assert_equal Gem::Version.new('1.8.24'), version
832
+ assert_equal Gem::Version.new("1.8.24"), version
887
833
  end
888
834
 
889
835
  def test_self_latest_version_for
890
836
  spec_fetcher do |fetcher|
891
- fetcher.spec 'a', 1
892
- fetcher.spec 'a', 2
893
- fetcher.spec 'a', '3.a'
837
+ fetcher.spec "a", 1
838
+ fetcher.spec "a", 2
839
+ fetcher.spec "a", "3.a"
894
840
  end
895
841
 
896
- version = Gem.latest_version_for 'a'
842
+ version = Gem.latest_version_for "a"
897
843
 
898
844
  assert_equal Gem::Version.new(2), version
899
845
  end
900
846
 
901
847
  def test_self_latest_version_for_multiple_sources
902
- uri = 'https://example.sample.com/'
848
+ uri = "https://example.sample.com/"
903
849
  source = Gem::Source.new(uri)
904
850
  source_list = Gem::SourceList.new
905
851
  source_list << Gem::Source.new(@uri)
@@ -907,27 +853,27 @@ class TestGem < Gem::TestCase
907
853
  Gem.sources.replace source_list
908
854
 
909
855
  spec_fetcher(uri) do |fetcher|
910
- fetcher.spec 'a', 1.1
856
+ fetcher.spec "a", 1.1
911
857
  end
912
858
 
913
859
  spec_fetcher do |fetcher|
914
- fetcher.spec 'a', 1
915
- fetcher.spec 'a', 2
916
- fetcher.spec 'a', '3.a'
860
+ fetcher.spec "a", 1
861
+ fetcher.spec "a", 2
862
+ fetcher.spec "a", "3.a"
917
863
  end
918
864
 
919
- version = Gem.latest_version_for 'a'
865
+ version = Gem.latest_version_for "a"
920
866
 
921
867
  assert_equal Gem::Version.new(2), version
922
868
  end
923
869
 
924
870
  def test_self_loaded_specs
925
- foo = util_spec 'foo'
871
+ foo = util_spec "foo"
926
872
  install_gem foo
927
873
 
928
874
  foo.activate
929
875
 
930
- assert_equal true, Gem.loaded_specs.keys.include?('foo')
876
+ assert_equal true, Gem.loaded_specs.keys.include?("foo")
931
877
  end
932
878
 
933
879
  def test_self_path
@@ -947,7 +893,7 @@ class TestGem < Gem::TestCase
947
893
  path_count = Gem.path.size
948
894
  Gem.clear_paths
949
895
 
950
- ENV['GEM_PATH'] = @additional.join(File::PATH_SEPARATOR)
896
+ ENV["GEM_PATH"] = @additional.join(File::PATH_SEPARATOR)
951
897
 
952
898
  assert_equal @additional, Gem.path[0,2]
953
899
 
@@ -959,10 +905,10 @@ class TestGem < Gem::TestCase
959
905
  def test_self_path_duplicate
960
906
  Gem.clear_paths
961
907
  util_ensure_gem_dirs
962
- dirs = @additional + [@gemhome] + [File.join(@tempdir, 'a')]
908
+ dirs = @additional + [@gemhome] + [File.join(@tempdir, "a")]
963
909
 
964
- ENV['GEM_HOME'] = @gemhome
965
- ENV['GEM_PATH'] = dirs.join File::PATH_SEPARATOR
910
+ ENV["GEM_HOME"] = @gemhome
911
+ ENV["GEM_PATH"] = dirs.join File::PATH_SEPARATOR
966
912
 
967
913
  assert_equal @gemhome, Gem.dir
968
914
 
@@ -974,8 +920,8 @@ class TestGem < Gem::TestCase
974
920
  Gem.clear_paths
975
921
 
976
922
  util_ensure_gem_dirs
977
- ENV['GEM_HOME'] = @gemhome
978
- ENV['GEM_PATH'] = @additional.join(File::PATH_SEPARATOR)
923
+ ENV["GEM_HOME"] = @gemhome
924
+ ENV["GEM_PATH"] = @additional.join(File::PATH_SEPARATOR)
979
925
 
980
926
  assert_equal @gemhome, Gem.dir
981
927
 
@@ -992,38 +938,38 @@ class TestGem < Gem::TestCase
992
938
  end
993
939
 
994
940
  def test_self_prefix_libdir
995
- orig_libdir = RbConfig::CONFIG['libdir']
996
- RbConfig::CONFIG['libdir'] = PROJECT_DIR
941
+ orig_libdir = RbConfig::CONFIG["libdir"]
942
+ RbConfig::CONFIG["libdir"] = PROJECT_DIR
997
943
 
998
944
  assert_nil Gem.prefix
999
945
  ensure
1000
- RbConfig::CONFIG['libdir'] = orig_libdir
946
+ RbConfig::CONFIG["libdir"] = orig_libdir
1001
947
  end
1002
948
 
1003
949
  def test_self_prefix_sitelibdir
1004
- orig_sitelibdir = RbConfig::CONFIG['sitelibdir']
1005
- RbConfig::CONFIG['sitelibdir'] = PROJECT_DIR
950
+ orig_sitelibdir = RbConfig::CONFIG["sitelibdir"]
951
+ RbConfig::CONFIG["sitelibdir"] = PROJECT_DIR
1006
952
 
1007
953
  assert_nil Gem.prefix
1008
954
  ensure
1009
- RbConfig::CONFIG['sitelibdir'] = orig_sitelibdir
955
+ RbConfig::CONFIG["sitelibdir"] = orig_sitelibdir
1010
956
  end
1011
957
 
1012
958
  def test_self_read_binary
1013
- File.open 'test', 'w' do |io|
959
+ File.open "test", "w" do |io|
1014
960
  io.write "\xCF\x80"
1015
961
  end
1016
962
 
1017
- assert_equal ["\xCF", "\x80"], Gem.read_binary('test').chars.to_a
963
+ assert_equal ["\xCF", "\x80"], Gem.read_binary("test").chars.to_a
1018
964
 
1019
- pend 'chmod not supported' if Gem.win_platform?
965
+ pend "chmod not supported" if Gem.win_platform?
1020
966
 
1021
967
  begin
1022
- File.chmod 0444, 'test'
968
+ File.chmod 0444, "test"
1023
969
 
1024
- assert_equal ["\xCF", "\x80"], Gem.read_binary('test').chars.to_a
970
+ assert_equal ["\xCF", "\x80"], Gem.read_binary("test").chars.to_a
1025
971
  ensure
1026
- File.chmod 0644, 'test'
972
+ File.chmod 0644, "test"
1027
973
  end
1028
974
  end
1029
975
 
@@ -1084,72 +1030,72 @@ class TestGem < Gem::TestCase
1084
1030
  end
1085
1031
 
1086
1032
  def test_self_ruby_api_version
1087
- orig_ruby_version, RbConfig::CONFIG['ruby_version'] = RbConfig::CONFIG['ruby_version'], '1.2.3'
1033
+ orig_ruby_version, RbConfig::CONFIG["ruby_version"] = RbConfig::CONFIG["ruby_version"], "1.2.3"
1088
1034
 
1089
1035
  Gem.instance_variable_set :@ruby_api_version, nil
1090
1036
 
1091
- assert_equal '1.2.3', Gem.ruby_api_version
1037
+ assert_equal "1.2.3", Gem.ruby_api_version
1092
1038
  ensure
1093
1039
  Gem.instance_variable_set :@ruby_api_version, nil
1094
1040
 
1095
- RbConfig::CONFIG['ruby_version'] = orig_ruby_version
1041
+ RbConfig::CONFIG["ruby_version"] = orig_ruby_version
1096
1042
  end
1097
1043
 
1098
1044
  def test_self_env_requirement
1099
- ENV["GEM_REQUIREMENT_FOO"] = '>= 1.2.3'
1100
- ENV["GEM_REQUIREMENT_BAR"] = '1.2.3'
1101
- ENV["GEM_REQUIREMENT_BAZ"] = 'abcd'
1045
+ ENV["GEM_REQUIREMENT_FOO"] = ">= 1.2.3"
1046
+ ENV["GEM_REQUIREMENT_BAR"] = "1.2.3"
1047
+ ENV["GEM_REQUIREMENT_BAZ"] = "abcd"
1102
1048
 
1103
- assert_equal Gem::Requirement.create('>= 1.2.3'), Gem.env_requirement('foo')
1104
- assert_equal Gem::Requirement.create('1.2.3'), Gem.env_requirement('bAr')
1105
- assert_raise(Gem::Requirement::BadRequirementError) { Gem.env_requirement('baz') }
1106
- assert_equal Gem::Requirement.default, Gem.env_requirement('qux')
1049
+ assert_equal Gem::Requirement.create(">= 1.2.3"), Gem.env_requirement("foo")
1050
+ assert_equal Gem::Requirement.create("1.2.3"), Gem.env_requirement("bAr")
1051
+ assert_raise(Gem::Requirement::BadRequirementError) { Gem.env_requirement("baz") }
1052
+ assert_equal Gem::Requirement.default, Gem.env_requirement("qux")
1107
1053
  end
1108
1054
 
1109
1055
  def test_self_ruby_version_with_non_mri_implementations
1110
- util_set_RUBY_VERSION '2.5.0', 0, 60928, 'jruby 9.2.0.0 (2.5.0) 2018-05-24 81156a8 OpenJDK 64-Bit Server VM 25.171-b11 on 1.8.0_171-8u171-b11-0ubuntu0.16.04.1-b11 [linux-x86_64]'
1056
+ util_set_RUBY_VERSION "2.5.0", 0, 60928, "jruby 9.2.0.0 (2.5.0) 2018-05-24 81156a8 OpenJDK 64-Bit Server VM 25.171-b11 on 1.8.0_171-8u171-b11-0ubuntu0.16.04.1-b11 [linux-x86_64]"
1111
1057
 
1112
- assert_equal Gem::Version.new('2.5.0'), Gem.ruby_version
1058
+ assert_equal Gem::Version.new("2.5.0"), Gem.ruby_version
1113
1059
  ensure
1114
1060
  util_restore_RUBY_VERSION
1115
1061
  end
1116
1062
 
1117
1063
  def test_self_ruby_version_with_svn_prerelease
1118
- util_set_RUBY_VERSION '2.6.0', -1, 63539, 'ruby 2.6.0preview2 (2018-05-31 trunk 63539) [x86_64-linux]'
1064
+ util_set_RUBY_VERSION "2.6.0", -1, 63539, "ruby 2.6.0preview2 (2018-05-31 trunk 63539) [x86_64-linux]"
1119
1065
 
1120
- assert_equal Gem::Version.new('2.6.0.preview2'), Gem.ruby_version
1066
+ assert_equal Gem::Version.new("2.6.0.preview2"), Gem.ruby_version
1121
1067
  ensure
1122
1068
  util_restore_RUBY_VERSION
1123
1069
  end
1124
1070
 
1125
1071
  def test_self_ruby_version_with_git_prerelease
1126
- util_set_RUBY_VERSION '2.7.0', -1, 'b563439274a402e33541f5695b1bfd4ac1085638', 'ruby 2.7.0preview3 (2019-11-23 master b563439274) [x86_64-linux]'
1072
+ util_set_RUBY_VERSION "2.7.0", -1, "b563439274a402e33541f5695b1bfd4ac1085638", "ruby 2.7.0preview3 (2019-11-23 master b563439274) [x86_64-linux]"
1127
1073
 
1128
- assert_equal Gem::Version.new('2.7.0.preview3'), Gem.ruby_version
1074
+ assert_equal Gem::Version.new("2.7.0.preview3"), Gem.ruby_version
1129
1075
  ensure
1130
1076
  util_restore_RUBY_VERSION
1131
1077
  end
1132
1078
 
1133
1079
  def test_self_ruby_version_with_non_mri_implementations_with_mri_prerelase_compatibility
1134
- util_set_RUBY_VERSION '2.6.0', -1, 63539, 'weirdjruby 9.2.0.0 (2.6.0preview2) 2018-05-24 81156a8 OpenJDK 64-Bit Server VM 25.171-b11 on 1.8.0_171-8u171-b11-0ubuntu0.16.04.1-b11 [linux-x86_64]', 'weirdjruby', '9.2.0.0'
1080
+ util_set_RUBY_VERSION "2.6.0", -1, 63539, "weirdjruby 9.2.0.0 (2.6.0preview2) 2018-05-24 81156a8 OpenJDK 64-Bit Server VM 25.171-b11 on 1.8.0_171-8u171-b11-0ubuntu0.16.04.1-b11 [linux-x86_64]", "weirdjruby", "9.2.0.0"
1135
1081
 
1136
- assert_equal Gem::Version.new('2.6.0.preview2'), Gem.ruby_version
1082
+ assert_equal Gem::Version.new("2.6.0.preview2"), Gem.ruby_version
1137
1083
  ensure
1138
1084
  util_restore_RUBY_VERSION
1139
1085
  end
1140
1086
 
1141
1087
  def test_self_ruby_version_with_svn_trunk
1142
- util_set_RUBY_VERSION '1.9.2', -1, 23493, 'ruby 1.9.2dev (2009-05-20 trunk 23493) [x86_64-linux]'
1088
+ util_set_RUBY_VERSION "1.9.2", -1, 23493, "ruby 1.9.2dev (2009-05-20 trunk 23493) [x86_64-linux]"
1143
1089
 
1144
- assert_equal Gem::Version.new('1.9.2.dev'), Gem.ruby_version
1090
+ assert_equal Gem::Version.new("1.9.2.dev"), Gem.ruby_version
1145
1091
  ensure
1146
1092
  util_restore_RUBY_VERSION
1147
1093
  end
1148
1094
 
1149
1095
  def test_self_ruby_version_with_git_master
1150
- util_set_RUBY_VERSION '2.7.0', -1, '5de284ec78220e75643f89b454ce999da0c1c195', 'ruby 2.7.0dev (2019-12-23T01:37:30Z master 5de284ec78) [x86_64-linux]'
1096
+ util_set_RUBY_VERSION "2.7.0", -1, "5de284ec78220e75643f89b454ce999da0c1c195", "ruby 2.7.0dev (2019-12-23T01:37:30Z master 5de284ec78) [x86_64-linux]"
1151
1097
 
1152
- assert_equal Gem::Version.new('2.7.0.dev'), Gem.ruby_version
1098
+ assert_equal Gem::Version.new("2.7.0.dev"), Gem.ruby_version
1153
1099
  ensure
1154
1100
  util_restore_RUBY_VERSION
1155
1101
  end
@@ -1159,7 +1105,7 @@ class TestGem < Gem::TestCase
1159
1105
  end
1160
1106
 
1161
1107
  def test_self_paths_eq
1162
- other = File.join @tempdir, 'other'
1108
+ other = File.join @tempdir, "other"
1163
1109
  path = [@userhome, other].join File::PATH_SEPARATOR
1164
1110
 
1165
1111
  #
@@ -1172,12 +1118,12 @@ class TestGem < Gem::TestCase
1172
1118
  end
1173
1119
 
1174
1120
  def test_self_paths_eq_nonexistent_home
1175
- ENV['GEM_HOME'] = @gemhome
1121
+ ENV["GEM_HOME"] = @gemhome
1176
1122
  Gem.clear_paths
1177
1123
 
1178
- other = File.join @tempdir, 'other'
1124
+ other = File.join @tempdir, "other"
1179
1125
 
1180
- ENV['HOME'] = other
1126
+ ENV["HOME"] = other
1181
1127
 
1182
1128
  Gem.paths = { "GEM_PATH" => other }
1183
1129
 
@@ -1256,43 +1202,43 @@ class TestGem < Gem::TestCase
1256
1202
  end
1257
1203
 
1258
1204
  def test_try_activate_returns_true_for_activated_specs
1259
- b = util_spec 'b', '1.0' do |spec|
1260
- spec.files << 'lib/b.rb'
1205
+ b = util_spec "b", "1.0" do |spec|
1206
+ spec.files << "lib/b.rb"
1261
1207
  end
1262
1208
  install_specs b
1263
1209
 
1264
- assert Gem.try_activate('b'), 'try_activate should return true'
1265
- assert Gem.try_activate('b'), 'try_activate should still return true'
1210
+ assert Gem.try_activate("b"), "try_activate should return true"
1211
+ assert Gem.try_activate("b"), "try_activate should still return true"
1266
1212
  end
1267
1213
 
1268
1214
  def test_spec_order_is_consistent
1269
- b1 = util_spec 'b', '1.0'
1270
- b2 = util_spec 'b', '2.0'
1271
- b3 = util_spec 'b', '3.0'
1215
+ b1 = util_spec "b", "1.0"
1216
+ b2 = util_spec "b", "2.0"
1217
+ b3 = util_spec "b", "3.0"
1272
1218
 
1273
1219
  install_specs b1, b2, b3
1274
1220
 
1275
- specs1 = Gem::Specification.stubs.find_all {|s| s.name == 'b' }
1221
+ specs1 = Gem::Specification.stubs.find_all {|s| s.name == "b" }
1276
1222
  Gem::Specification.reset
1277
- specs2 = Gem::Specification.stubs_for('b')
1223
+ specs2 = Gem::Specification.stubs_for("b")
1278
1224
  assert_equal specs1.map(&:version), specs2.map(&:version)
1279
1225
  end
1280
1226
 
1281
1227
  def test_self_try_activate_missing_dep
1282
- b = util_spec 'b', '1.0'
1283
- a = util_spec 'a', '1.0', 'b' => '>= 1.0'
1228
+ b = util_spec "b", "1.0"
1229
+ a = util_spec "a", "1.0", "b" => ">= 1.0"
1284
1230
 
1285
1231
  install_specs b, a
1286
1232
  uninstall_gem b
1287
1233
 
1288
- a_file = File.join a.gem_dir, 'lib', 'a_file.rb'
1234
+ a_file = File.join a.gem_dir, "lib", "a_file.rb"
1289
1235
 
1290
1236
  write_file a_file do |io|
1291
- io.puts '# a_file.rb'
1237
+ io.puts "# a_file.rb"
1292
1238
  end
1293
1239
 
1294
1240
  e = assert_raise Gem::MissingSpecError do
1295
- Gem.try_activate 'a_file'
1241
+ Gem.try_activate "a_file"
1296
1242
  end
1297
1243
 
1298
1244
  assert_match %r{Could not find 'b' }, e.message
@@ -1300,30 +1246,30 @@ class TestGem < Gem::TestCase
1300
1246
  end
1301
1247
 
1302
1248
  def test_self_try_activate_missing_prerelease
1303
- b = util_spec 'b', '1.0rc1'
1304
- a = util_spec 'a', '1.0rc1', 'b' => '1.0rc1'
1249
+ b = util_spec "b", "1.0rc1"
1250
+ a = util_spec "a", "1.0rc1", "b" => "1.0rc1"
1305
1251
 
1306
1252
  install_specs b, a
1307
1253
  uninstall_gem b
1308
1254
 
1309
- a_file = File.join a.gem_dir, 'lib', 'a_file.rb'
1255
+ a_file = File.join a.gem_dir, "lib", "a_file.rb"
1310
1256
 
1311
1257
  write_file a_file do |io|
1312
- io.puts '# a_file.rb'
1258
+ io.puts "# a_file.rb"
1313
1259
  end
1314
1260
 
1315
1261
  e = assert_raise Gem::MissingSpecError do
1316
- Gem.try_activate 'a_file'
1262
+ Gem.try_activate "a_file"
1317
1263
  end
1318
1264
 
1319
1265
  assert_match %r{Could not find 'b' \(= 1.0rc1\)}, e.message
1320
1266
  end
1321
1267
 
1322
1268
  def test_self_try_activate_missing_extensions
1323
- spec = util_spec 'ext', '1' do |s|
1269
+ spec = util_spec "ext", "1" do |s|
1324
1270
  s.extensions = %w[ext/extconf.rb]
1325
1271
  s.mark_version
1326
- s.installed_by_version = v('2.2')
1272
+ s.installed_by_version = v("2.2")
1327
1273
  end
1328
1274
 
1329
1275
  # write the spec without install to simulate a failed install
@@ -1332,55 +1278,53 @@ class TestGem < Gem::TestCase
1332
1278
  end
1333
1279
 
1334
1280
  _, err = capture_output do
1335
- refute Gem.try_activate 'nonexistent'
1281
+ refute Gem.try_activate "nonexistent"
1336
1282
  end
1337
1283
 
1338
- unless Gem.java_platform?
1339
- expected = "Ignoring ext-1 because its extensions are not built. " +
1340
- "Try: gem pristine ext --version 1\n"
1284
+ expected = "Ignoring ext-1 because its extensions are not built. " +
1285
+ "Try: gem pristine ext --version 1\n"
1341
1286
 
1342
- assert_equal expected, err
1343
- end
1287
+ assert_equal expected, err
1344
1288
  end
1345
1289
 
1346
1290
  def test_self_use_paths_with_nils
1347
- orig_home = ENV.delete 'GEM_HOME'
1348
- orig_path = ENV.delete 'GEM_PATH'
1291
+ orig_home = ENV.delete "GEM_HOME"
1292
+ orig_path = ENV.delete "GEM_PATH"
1349
1293
  Gem.use_paths nil, nil
1350
1294
  assert_equal Gem.default_dir, Gem.paths.home
1351
1295
  path = (Gem.default_path + [Gem.paths.home]).uniq
1352
1296
  assert_equal path, Gem.paths.path
1353
1297
  ensure
1354
- ENV['GEM_HOME'] = orig_home
1355
- ENV['GEM_PATH'] = orig_path
1298
+ ENV["GEM_HOME"] = orig_home
1299
+ ENV["GEM_PATH"] = orig_path
1356
1300
  end
1357
1301
 
1358
1302
  def test_setting_paths_does_not_warn_about_unknown_keys
1359
1303
  stdout, stderr = capture_output do
1360
- Gem.paths = { 'foo' => [],
1361
- 'bar' => Object.new,
1362
- 'GEM_HOME' => Gem.paths.home,
1363
- 'GEM_PATH' => 'foo' }
1304
+ Gem.paths = { "foo" => [],
1305
+ "bar" => Object.new,
1306
+ "GEM_HOME" => Gem.paths.home,
1307
+ "GEM_PATH" => "foo" }
1364
1308
  end
1365
- assert_equal ['foo', Gem.paths.home], Gem.paths.path
1366
- assert_equal '', stderr
1367
- assert_equal '', stdout
1309
+ assert_equal ["foo", Gem.paths.home], Gem.paths.path
1310
+ assert_equal "", stderr
1311
+ assert_equal "", stdout
1368
1312
  end
1369
1313
 
1370
1314
  def test_setting_paths_does_not_mutate_parameter_object
1371
- Gem.paths = { 'GEM_HOME' => Gem.paths.home,
1372
- 'GEM_PATH' => 'foo' }.freeze
1373
- assert_equal ['foo', Gem.paths.home], Gem.paths.path
1315
+ Gem.paths = { "GEM_HOME" => Gem.paths.home,
1316
+ "GEM_PATH" => "foo" }.freeze
1317
+ assert_equal ["foo", Gem.paths.home], Gem.paths.path
1374
1318
  end
1375
1319
 
1376
1320
  def test_deprecated_paths=
1377
1321
  stdout, stderr = capture_output do
1378
- Gem.paths = { 'GEM_HOME' => Gem.paths.home,
1379
- 'GEM_PATH' => [Gem.paths.home, 'foo'] }
1322
+ Gem.paths = { "GEM_HOME" => Gem.paths.home,
1323
+ "GEM_PATH" => [Gem.paths.home, "foo"] }
1380
1324
  end
1381
- assert_equal [Gem.paths.home, 'foo'], Gem.paths.path
1325
+ assert_equal [Gem.paths.home, "foo"], Gem.paths.path
1382
1326
  assert_match(/Array values in the parameter to `Gem.paths=` are deprecated.\nPlease use a String or nil/m, stderr)
1383
- assert_equal '', stdout
1327
+ assert_equal "", stdout
1384
1328
  end
1385
1329
 
1386
1330
  def test_self_use_paths
@@ -1393,8 +1337,8 @@ class TestGem < Gem::TestCase
1393
1337
  end
1394
1338
 
1395
1339
  def test_self_user_dir
1396
- parts = [@userhome, '.gem', Gem.ruby_engine]
1397
- parts << RbConfig::CONFIG['ruby_version'] unless RbConfig::CONFIG['ruby_version'].empty?
1340
+ parts = [@userhome, ".gem", Gem.ruby_engine]
1341
+ parts << RbConfig::CONFIG["ruby_version"] unless RbConfig::CONFIG["ruby_version"].empty?
1398
1342
 
1399
1343
  FileUtils.mkdir_p File.join(parts)
1400
1344
 
@@ -1402,10 +1346,10 @@ class TestGem < Gem::TestCase
1402
1346
  end
1403
1347
 
1404
1348
  def test_self_user_home
1405
- if ENV['HOME']
1406
- assert_equal ENV['HOME'], Gem.user_home
1349
+ if ENV["HOME"]
1350
+ assert_equal ENV["HOME"], Gem.user_home
1407
1351
  else
1408
- assert true, 'count this test'
1352
+ assert true, "count this test"
1409
1353
  end
1410
1354
  end
1411
1355
 
@@ -1430,7 +1374,7 @@ class TestGem < Gem::TestCase
1430
1374
  a = util_spec "a", "1"
1431
1375
  b = util_spec "b", "1", "c" => nil
1432
1376
  c = util_spec "c", "2"
1433
- d = util_spec "d", "1", { 'e' => '= 1' }, "lib/d#{$$}.rb"
1377
+ d = util_spec "d", "1", { "e" => "= 1" }, "lib/d#{$$}.rb"
1434
1378
  e = util_spec "e", "1"
1435
1379
 
1436
1380
  install_specs a, c, b, e, d
@@ -1451,35 +1395,35 @@ class TestGem < Gem::TestCase
1451
1395
 
1452
1396
  output = Gem::Util.gunzip input
1453
1397
 
1454
- assert_equal 'hello', output
1398
+ assert_equal "hello", output
1455
1399
  assert_equal Encoding::BINARY, output.encoding
1456
1400
  end
1457
1401
 
1458
1402
  def test_self_gzip
1459
- input = 'hello'
1403
+ input = "hello"
1460
1404
 
1461
1405
  output = Gem::Util.gzip input
1462
1406
 
1463
1407
  zipped = StringIO.new output
1464
1408
 
1465
- assert_equal 'hello', Zlib::GzipReader.new(zipped).read
1409
+ assert_equal "hello", Zlib::GzipReader.new(zipped).read
1466
1410
  assert_equal Encoding::BINARY, output.encoding
1467
1411
  end
1468
1412
 
1469
1413
  def test_self_vendor_dir
1470
- vendordir(File.join(@tempdir, 'vendor')) do
1414
+ vendordir(File.join(@tempdir, "vendor")) do
1471
1415
  expected =
1472
- File.join RbConfig::CONFIG['vendordir'], 'gems',
1473
- RbConfig::CONFIG['ruby_version']
1416
+ File.join RbConfig::CONFIG["vendordir"], "gems",
1417
+ RbConfig::CONFIG["ruby_version"]
1474
1418
 
1475
1419
  assert_equal expected, Gem.vendor_dir
1476
1420
  end
1477
1421
  end
1478
1422
 
1479
1423
  def test_self_vendor_dir_ENV_GEM_VENDOR
1480
- ENV['GEM_VENDOR'] = File.join @tempdir, 'vendor', 'gems'
1424
+ ENV["GEM_VENDOR"] = File.join @tempdir, "vendor", "gems"
1481
1425
 
1482
- assert_equal ENV['GEM_VENDOR'], Gem.vendor_dir
1426
+ assert_equal ENV["GEM_VENDOR"], Gem.vendor_dir
1483
1427
  refute Gem.vendor_dir.frozen?
1484
1428
  end
1485
1429
 
@@ -1492,28 +1436,35 @@ class TestGem < Gem::TestCase
1492
1436
  def test_load_plugins
1493
1437
  plugin_path = File.join "lib", "rubygems_plugin.rb"
1494
1438
 
1439
+ foo1_plugin_path = nil
1440
+ foo2_plugin_path = nil
1495
1441
  Dir.chdir @tempdir do
1496
- FileUtils.mkdir_p 'lib'
1442
+ FileUtils.mkdir_p "lib"
1497
1443
  File.open plugin_path, "w" do |fp|
1498
1444
  fp.puts "class TestGem; PLUGINS_LOADED << 'plugin'; end"
1499
1445
  end
1500
1446
 
1501
- foo1 = util_spec 'foo', '1' do |s|
1447
+ foo1 = util_spec "foo", "1" do |s|
1502
1448
  s.files << plugin_path
1503
1449
  end
1450
+ foo1_plugin_path = File.join(foo1.gem_dir, plugin_path)
1504
1451
 
1505
1452
  install_gem foo1
1506
1453
 
1507
- foo2 = util_spec 'foo', '2' do |s|
1454
+ foo2 = util_spec "foo", "2" do |s|
1508
1455
  s.files << plugin_path
1509
1456
  end
1457
+ foo2_plugin_path = File.join(foo2.gem_dir, plugin_path)
1510
1458
 
1511
1459
  install_gem foo2
1512
1460
  end
1513
1461
 
1514
1462
  Gem::Specification.reset
1463
+ PLUGINS_LOADED.clear
1464
+ $LOADED_FEATURES.delete(foo1_plugin_path)
1465
+ $LOADED_FEATURES.delete(foo2_plugin_path)
1515
1466
 
1516
- gem 'foo'
1467
+ gem "foo"
1517
1468
 
1518
1469
  Gem.load_plugins
1519
1470
 
@@ -1521,15 +1472,18 @@ class TestGem < Gem::TestCase
1521
1472
  end
1522
1473
 
1523
1474
  def test_load_user_installed_plugins
1475
+ @orig_gem_home = ENV["GEM_HOME"]
1476
+ ENV["GEM_HOME"] = @gemhome
1477
+
1524
1478
  plugin_path = File.join "lib", "rubygems_plugin.rb"
1525
1479
 
1526
1480
  Dir.chdir @tempdir do
1527
- FileUtils.mkdir_p 'lib'
1481
+ FileUtils.mkdir_p "lib"
1528
1482
  File.open plugin_path, "w" do |fp|
1529
1483
  fp.puts "class TestGem; PLUGINS_LOADED << 'plugin'; end"
1530
1484
  end
1531
1485
 
1532
- foo = util_spec 'foo', '1' do |s|
1486
+ foo = util_spec "foo", "1" do |s|
1533
1487
  s.files << plugin_path
1534
1488
  end
1535
1489
 
@@ -1538,38 +1492,40 @@ class TestGem < Gem::TestCase
1538
1492
 
1539
1493
  Gem.paths = { "GEM_PATH" => [Gem.dir, Gem.user_dir].join(File::PATH_SEPARATOR) }
1540
1494
 
1541
- gem 'foo'
1495
+ gem "foo"
1542
1496
 
1543
1497
  Gem.load_plugins
1544
1498
 
1545
1499
  assert_equal %w[plugin], PLUGINS_LOADED
1500
+ ensure
1501
+ ENV["GEM_HOME"] = @orig_gem_home
1546
1502
  end
1547
1503
 
1548
1504
  def test_load_env_plugins
1549
- with_plugin('load') { Gem.load_env_plugins }
1505
+ with_plugin("load") { Gem.load_env_plugins }
1550
1506
  assert_equal :loaded, TEST_PLUGIN_LOAD rescue nil
1551
1507
 
1552
1508
  util_remove_interrupt_command
1553
1509
 
1554
1510
  # Should attempt to cause a StandardError
1555
- with_plugin('standarderror') { Gem.load_env_plugins }
1511
+ with_plugin("standarderror") { Gem.load_env_plugins }
1556
1512
  assert_equal :loaded, TEST_PLUGIN_STANDARDERROR rescue nil
1557
1513
 
1558
1514
  util_remove_interrupt_command
1559
1515
 
1560
1516
  # Should attempt to cause an Exception
1561
- with_plugin('exception') { Gem.load_env_plugins }
1517
+ with_plugin("exception") { Gem.load_env_plugins }
1562
1518
  assert_equal :loaded, TEST_PLUGIN_EXCEPTION rescue nil
1563
1519
  end
1564
1520
 
1565
1521
  def test_gem_path_ordering
1566
1522
  refute_equal Gem.dir, Gem.user_dir
1567
1523
 
1568
- write_file File.join(@tempdir, 'lib', "g.rb") {|fp| fp.puts "" }
1569
- write_file File.join(@tempdir, 'lib', 'm.rb') {|fp| fp.puts "" }
1524
+ write_file File.join(@tempdir, "lib", "g.rb") {|fp| fp.puts "" }
1525
+ write_file File.join(@tempdir, "lib", "m.rb") {|fp| fp.puts "" }
1570
1526
 
1571
- g = util_spec 'g', '1', nil, "lib/g.rb"
1572
- m = util_spec 'm', '1', nil, "lib/m.rb"
1527
+ g = util_spec "g", "1", nil, "lib/g.rb"
1528
+ m = util_spec "m", "1", nil, "lib/m.rb"
1573
1529
 
1574
1530
  install_gem g, :install_dir => Gem.dir
1575
1531
  m0 = install_gem m, :install_dir => Gem.dir
@@ -1588,15 +1544,15 @@ class TestGem < Gem::TestCase
1588
1544
  Gem::Specification.reset
1589
1545
  Gem.searcher = nil
1590
1546
 
1591
- assert_equal Gem::Dependency.new('m','1').to_specs,
1592
- Gem::Dependency.new('m','1').to_specs.sort
1547
+ assert_equal Gem::Dependency.new("m","1").to_specs,
1548
+ Gem::Dependency.new("m","1").to_specs.sort
1593
1549
 
1594
1550
  assert_equal \
1595
1551
  [expected.gem_dir],
1596
- Gem::Dependency.new('m','1').to_specs.map(&:gem_dir).sort,
1552
+ Gem::Dependency.new("m","1").to_specs.map(&:gem_dir).sort,
1597
1553
  "Wrong specs for #{_name}"
1598
1554
 
1599
- spec = Gem::Dependency.new('m','1').to_spec
1555
+ spec = Gem::Dependency.new("m","1").to_spec
1600
1556
 
1601
1557
  assert_equal \
1602
1558
  File.join(_paths.first, "gems", "m-1"),
@@ -1606,7 +1562,7 @@ class TestGem < Gem::TestCase
1606
1562
 
1607
1563
  gem "m"
1608
1564
 
1609
- spec = Gem::Dependency.new('m','1').to_spec
1565
+ spec = Gem::Dependency.new("m","1").to_spec
1610
1566
  assert spec.activated?, "dependency not activated for #{_name}"
1611
1567
 
1612
1568
  assert_equal \
@@ -1621,11 +1577,11 @@ class TestGem < Gem::TestCase
1621
1577
  end
1622
1578
 
1623
1579
  def test_gem_path_ordering_short
1624
- write_file File.join(@tempdir, 'lib', "g.rb") {|fp| fp.puts "" }
1625
- write_file File.join(@tempdir, 'lib', 'm.rb') {|fp| fp.puts "" }
1580
+ write_file File.join(@tempdir, "lib", "g.rb") {|fp| fp.puts "" }
1581
+ write_file File.join(@tempdir, "lib", "m.rb") {|fp| fp.puts "" }
1626
1582
 
1627
- g = util_spec 'g', '1', nil, "lib/g.rb"
1628
- m = util_spec 'm', '1', nil, "lib/m.rb"
1583
+ g = util_spec "g", "1", nil, "lib/g.rb"
1584
+ m = util_spec "m", "1", nil, "lib/m.rb"
1629
1585
 
1630
1586
  install_gem g, :install_dir => Gem.dir
1631
1587
  install_gem m, :install_dir => Gem.dir
@@ -1635,167 +1591,10 @@ class TestGem < Gem::TestCase
1635
1591
 
1636
1592
  assert_equal \
1637
1593
  File.join(Gem.dir, "gems", "m-1"),
1638
- Gem::Dependency.new('m','1').to_spec.gem_dir,
1594
+ Gem::Dependency.new("m","1").to_spec.gem_dir,
1639
1595
  "Wrong spec selected"
1640
1596
  end
1641
1597
 
1642
- def test_auto_activation_of_specific_gemdeps_file
1643
- a = util_spec "a", "1", nil, "lib/a.rb"
1644
- b = util_spec "b", "1", nil, "lib/b.rb"
1645
- c = util_spec "c", "1", nil, "lib/c.rb"
1646
-
1647
- install_specs a, b, c
1648
-
1649
- path = File.join @tempdir, "gem.deps.rb"
1650
-
1651
- File.open path, "w" do |f|
1652
- f.puts "gem 'a'"
1653
- f.puts "gem 'b'"
1654
- f.puts "gem 'c'"
1655
- end
1656
-
1657
- with_rubygems_gemdeps(path) do
1658
- Gem.use_gemdeps
1659
-
1660
- assert_equal add_bundler_full_name(%W[a-1 b-1 c-1]), loaded_spec_names
1661
- end
1662
- end
1663
-
1664
- def test_auto_activation_of_used_gemdeps_file
1665
- a = util_spec "a", "1", nil, "lib/a.rb"
1666
- b = util_spec "b", "1", nil, "lib/b.rb"
1667
- c = util_spec "c", "1", nil, "lib/c.rb"
1668
-
1669
- install_specs a, b, c
1670
-
1671
- path = File.join @tempdir, "gem.deps.rb"
1672
-
1673
- File.open path, "w" do |f|
1674
- f.puts "gem 'a'"
1675
- f.puts "gem 'b'"
1676
- f.puts "gem 'c'"
1677
- end
1678
-
1679
- with_rubygems_gemdeps("-") do
1680
- expected_specs = [a, b, util_spec("bundler", Bundler::VERSION), c].compact.map(&:full_name)
1681
-
1682
- Gem.use_gemdeps
1683
-
1684
- assert_equal expected_specs, loaded_spec_names
1685
- end
1686
- end
1687
-
1688
- BUNDLER_LIB_PATH = File.expand_path $LOAD_PATH.find {|lp| File.file?(File.join(lp, "bundler.rb")) }
1689
- BUNDLER_FULL_NAME = "bundler-#{Bundler::VERSION}".freeze
1690
-
1691
- def add_bundler_full_name(names)
1692
- names << BUNDLER_FULL_NAME
1693
- names.sort!
1694
- names
1695
- end
1696
-
1697
- def test_looks_for_gemdeps_files_automatically_from_binstubs
1698
- pend "Requiring bundler messes things up" if Gem.java_platform?
1699
-
1700
- a = util_spec "a", "1" do |s|
1701
- s.executables = %w[foo]
1702
- s.bindir = "exe"
1703
- end
1704
-
1705
- write_file File.join(@tempdir, 'exe', 'foo') do |fp|
1706
- fp.puts "puts Gem.loaded_specs.values.map(&:full_name).sort"
1707
- end
1708
-
1709
- b = util_spec "b", "1", nil, "lib/b.rb"
1710
- c = util_spec "c", "1", nil, "lib/c.rb"
1711
-
1712
- install_specs a, b, c
1713
-
1714
- path = File.join(@tempdir, "gd-tmp")
1715
- install_gem a, :install_dir => path
1716
- install_gem b, :install_dir => path
1717
- install_gem c, :install_dir => path
1718
-
1719
- ENV['GEM_PATH'] = path
1720
-
1721
- with_rubygems_gemdeps("-") do
1722
- new_PATH = [File.join(path, "bin"), ENV["PATH"]].join(File::PATH_SEPARATOR)
1723
- new_RUBYOPT = "-I#{rubygems_path} -I#{BUNDLER_LIB_PATH}"
1724
-
1725
- path = File.join @tempdir, "gem.deps.rb"
1726
-
1727
- File.open path, "w" do |f|
1728
- f.puts "gem 'a'"
1729
- end
1730
- out0 = with_path_and_rubyopt(new_PATH, new_RUBYOPT) do
1731
- IO.popen("foo", &:read).split(/\n/)
1732
- end
1733
-
1734
- File.open path, "a" do |f|
1735
- f.puts "gem 'b'"
1736
- f.puts "gem 'c'"
1737
- end
1738
- out = with_path_and_rubyopt(new_PATH, new_RUBYOPT) do
1739
- IO.popen("foo", &:read).split(/\n/)
1740
- end
1741
-
1742
- assert_equal ["b-1", "c-1"], out - out0
1743
- end
1744
- end
1745
-
1746
- def test_looks_for_gemdeps_files_automatically_from_binstubs_in_parent_dir
1747
- pend "Requiring bundler messes things up" if Gem.java_platform?
1748
-
1749
- a = util_spec "a", "1" do |s|
1750
- s.executables = %w[foo]
1751
- s.bindir = "exe"
1752
- end
1753
-
1754
- write_file File.join(@tempdir, 'exe', 'foo') do |fp|
1755
- fp.puts "puts Gem.loaded_specs.values.map(&:full_name).sort"
1756
- end
1757
-
1758
- b = util_spec "b", "1", nil, "lib/b.rb"
1759
- c = util_spec "c", "1", nil, "lib/c.rb"
1760
-
1761
- install_specs a, b, c
1762
-
1763
- path = File.join(@tempdir, "gd-tmp")
1764
- install_gem a, :install_dir => path
1765
- install_gem b, :install_dir => path
1766
- install_gem c, :install_dir => path
1767
-
1768
- ENV['GEM_PATH'] = path
1769
-
1770
- with_rubygems_gemdeps("-") do
1771
- Dir.mkdir "sub1"
1772
-
1773
- new_PATH = [File.join(path, "bin"), ENV["PATH"]].join(File::PATH_SEPARATOR)
1774
- new_RUBYOPT = "-I#{rubygems_path} -I#{BUNDLER_LIB_PATH}"
1775
-
1776
- path = File.join @tempdir, "gem.deps.rb"
1777
-
1778
- File.open path, "w" do |f|
1779
- f.puts "gem 'a'"
1780
- end
1781
- out0 = with_path_and_rubyopt(new_PATH, new_RUBYOPT) do
1782
- IO.popen("foo", :chdir => "sub1", &:read).split(/\n/)
1783
- end
1784
-
1785
- File.open path, "a" do |f|
1786
- f.puts "gem 'b'"
1787
- f.puts "gem 'c'"
1788
- end
1789
- out = with_path_and_rubyopt(new_PATH, new_RUBYOPT) do
1790
- IO.popen("foo", :chdir => "sub1", &:read).split(/\n/)
1791
- end
1792
-
1793
- Dir.rmdir "sub1"
1794
-
1795
- assert_equal ["b-1", "c-1"], out - out0
1796
- end
1797
- end
1798
-
1799
1598
  def test_register_default_spec
1800
1599
  Gem.clear_default_specs
1801
1600
 
@@ -1836,144 +1635,6 @@ class TestGem < Gem::TestCase
1836
1635
  assert_equal old_style, Gem.find_unresolved_default_spec("foo.rb")
1837
1636
  end
1838
1637
 
1839
- def test_use_gemdeps
1840
- gem_deps_file = 'gem.deps.rb'.tap(&Gem::UNTAINT)
1841
- spec = util_spec 'a', 1
1842
- install_specs spec
1843
-
1844
- spec = Gem::Specification.find {|s| s == spec }
1845
- refute spec.activated?
1846
-
1847
- File.open gem_deps_file, 'w' do |io|
1848
- io.write 'gem "a"'
1849
- end
1850
-
1851
- assert_nil Gem.gemdeps
1852
-
1853
- Gem.use_gemdeps gem_deps_file
1854
-
1855
- assert_equal add_bundler_full_name(%W[a-1]), loaded_spec_names
1856
- refute_nil Gem.gemdeps
1857
- end
1858
-
1859
- def test_use_gemdeps_ENV
1860
- with_rubygems_gemdeps(nil) do
1861
- spec = util_spec 'a', 1
1862
-
1863
- refute spec.activated?
1864
-
1865
- File.open 'gem.deps.rb', 'w' do |io|
1866
- io.write 'gem "a"'
1867
- end
1868
-
1869
- Gem.use_gemdeps
1870
-
1871
- refute spec.activated?
1872
- end
1873
- end
1874
-
1875
- def test_use_gemdeps_argument_missing
1876
- e = assert_raise ArgumentError do
1877
- Gem.use_gemdeps 'gem.deps.rb'
1878
- end
1879
-
1880
- assert_equal 'Unable to find gem dependencies file at gem.deps.rb',
1881
- e.message
1882
- end
1883
-
1884
- def test_use_gemdeps_argument_missing_match_ENV
1885
- with_rubygems_gemdeps('gem.deps.rb') do
1886
- e = assert_raise ArgumentError do
1887
- Gem.use_gemdeps 'gem.deps.rb'
1888
- end
1889
-
1890
- assert_equal 'Unable to find gem dependencies file at gem.deps.rb',
1891
- e.message
1892
- end
1893
- end
1894
-
1895
- def test_use_gemdeps_automatic
1896
- with_rubygems_gemdeps('-') do
1897
- spec = util_spec 'a', 1
1898
- install_specs spec
1899
- spec = Gem::Specification.find {|s| s == spec }
1900
-
1901
- refute spec.activated?
1902
-
1903
- File.open 'Gemfile', 'w' do |io|
1904
- io.write 'gem "a"'
1905
- end
1906
-
1907
- Gem.use_gemdeps
1908
-
1909
- assert_equal add_bundler_full_name(%W[a-1]), loaded_spec_names
1910
- end
1911
- end
1912
-
1913
- def test_use_gemdeps_automatic_missing
1914
- with_rubygems_gemdeps('-') do
1915
- Gem.use_gemdeps
1916
-
1917
- assert true # count
1918
- end
1919
- end
1920
-
1921
- def test_use_gemdeps_disabled
1922
- with_rubygems_gemdeps('') do
1923
- spec = util_spec 'a', 1
1924
-
1925
- refute spec.activated?
1926
-
1927
- File.open 'gem.deps.rb', 'w' do |io|
1928
- io.write 'gem "a"'
1929
- end
1930
-
1931
- Gem.use_gemdeps
1932
-
1933
- refute spec.activated?
1934
- end
1935
- end
1936
-
1937
- def test_use_gemdeps_missing_gem
1938
- with_rubygems_gemdeps('x') do
1939
- File.open 'x', 'w' do |io|
1940
- io.write 'gem "a"'
1941
- end
1942
-
1943
- expected = <<-EXPECTED
1944
- Could not find gem 'a' in locally installed gems.
1945
- You may need to `bundle install` to install missing gems
1946
-
1947
- EXPECTED
1948
-
1949
- Gem::Deprecate.skip_during do
1950
- actual_stdout, actual_stderr = capture_output do
1951
- Gem.use_gemdeps
1952
- end
1953
- assert_empty actual_stdout
1954
- assert_equal(expected, actual_stderr)
1955
- end
1956
- end
1957
- end
1958
-
1959
- def test_use_gemdeps_specific
1960
- with_rubygems_gemdeps('x') do
1961
- spec = util_spec 'a', 1
1962
- install_specs spec
1963
-
1964
- spec = Gem::Specification.find {|s| s == spec }
1965
- refute spec.activated?
1966
-
1967
- File.open 'x', 'w' do |io|
1968
- io.write 'gem "a"'
1969
- end
1970
-
1971
- Gem.use_gemdeps
1972
-
1973
- assert_equal add_bundler_full_name(%W[a-1]), loaded_spec_names
1974
- end
1975
- end
1976
-
1977
1638
  def test_operating_system_defaults
1978
1639
  operating_system_defaults = Gem.operating_system_defaults
1979
1640
 
@@ -1991,8 +1652,8 @@ You may need to `bundle install` to install missing gems
1991
1652
  # Ensure that `Gem.source_date_epoch` is consistent even if
1992
1653
  # $SOURCE_DATE_EPOCH has not been set.
1993
1654
  def test_default_source_date_epoch_doesnt_change
1994
- old_epoch = ENV['SOURCE_DATE_EPOCH']
1995
- ENV['SOURCE_DATE_EPOCH'] = nil
1655
+ old_epoch = ENV["SOURCE_DATE_EPOCH"]
1656
+ ENV["SOURCE_DATE_EPOCH"] = nil
1996
1657
 
1997
1658
  # Unfortunately, there is no real way to test this aside from waiting
1998
1659
  # enough for `Time.now.to_i` to change -- which is a whole second.
@@ -2003,23 +1664,47 @@ You may need to `bundle install` to install missing gems
2003
1664
  b = Gem.source_date_epoch
2004
1665
  assert_equal a, b
2005
1666
  ensure
2006
- ENV['SOURCE_DATE_EPOCH'] = old_epoch
1667
+ ENV["SOURCE_DATE_EPOCH"] = old_epoch
1668
+ end
1669
+
1670
+ def test_data_home_default
1671
+ expected = File.join(@userhome, ".local", "share")
1672
+ assert_equal expected, Gem.data_home
1673
+ end
1674
+
1675
+ def test_data_home_from_env
1676
+ ENV["XDG_DATA_HOME"] = expected = "/test/data/home"
1677
+ assert_equal expected, Gem.data_home
1678
+ end
1679
+
1680
+ def test_state_home_default
1681
+ Gem.instance_variable_set :@state_home, nil
1682
+ Gem.data_home # memoize @data_home, to demonstrate GH-6418
1683
+ expected = File.join(@userhome, ".local", "state")
1684
+ assert_equal expected, Gem.state_home
1685
+ end
1686
+
1687
+ def test_state_home_from_env
1688
+ Gem.instance_variable_set :@state_home, nil
1689
+ Gem.data_home # memoize @data_home, to demonstrate GH-6418
1690
+ ENV["XDG_STATE_HOME"] = expected = "/test/state/home"
1691
+ assert_equal expected, Gem.state_home
2007
1692
  end
2008
1693
 
2009
1694
  private
2010
1695
 
2011
1696
  def ruby_install_name(name)
2012
1697
  with_clean_path_to_ruby do
2013
- orig_RUBY_INSTALL_NAME = RbConfig::CONFIG['ruby_install_name']
2014
- RbConfig::CONFIG['ruby_install_name'] = name
1698
+ orig_RUBY_INSTALL_NAME = RbConfig::CONFIG["ruby_install_name"]
1699
+ RbConfig::CONFIG["ruby_install_name"] = name
2015
1700
 
2016
1701
  begin
2017
1702
  yield
2018
1703
  ensure
2019
1704
  if orig_RUBY_INSTALL_NAME
2020
- RbConfig::CONFIG['ruby_install_name'] = orig_RUBY_INSTALL_NAME
1705
+ RbConfig::CONFIG["ruby_install_name"] = orig_RUBY_INSTALL_NAME
2021
1706
  else
2022
- RbConfig::CONFIG.delete 'ruby_install_name'
1707
+ RbConfig::CONFIG.delete "ruby_install_name"
2023
1708
  end
2024
1709
  end
2025
1710
  end
@@ -2037,13 +1722,8 @@ You may need to `bundle install` to install missing gems
2037
1722
  end
2038
1723
 
2039
1724
  def redefine_method(base, method, new_result)
2040
- if RUBY_VERSION >= "2.5"
2041
- base.alias_method(method, method)
2042
- base.define_method(method) { new_result }
2043
- else
2044
- base.send(:alias_method, method, method)
2045
- base.send(:define_method, method) { new_result }
2046
- end
1725
+ base.alias_method(method, method)
1726
+ base.define_method(method) { new_result }
2047
1727
  end
2048
1728
 
2049
1729
  def with_plugin(path)
@@ -2074,12 +1754,12 @@ You may need to `bundle install` to install missing gems
2074
1754
  end
2075
1755
 
2076
1756
  def util_exec_gem
2077
- spec, _ = util_spec 'a', '4' do |s|
2078
- s.executables = ['exec', 'abin']
1757
+ spec, _ = util_spec "a", "4" do |s|
1758
+ s.executables = ["exec", "abin"]
2079
1759
  end
2080
1760
 
2081
- @exec_path = File.join spec.full_gem_path, spec.bindir, 'exec'
2082
- @abin_path = File.join spec.full_gem_path, spec.bindir, 'abin'
1761
+ @exec_path = File.join spec.full_gem_path, spec.bindir, "exec"
1762
+ @abin_path = File.join spec.full_gem_path, spec.bindir, "abin"
2083
1763
  spec
2084
1764
  end
2085
1765
 
@@ -2091,22 +1771,4 @@ You may need to `bundle install` to install missing gems
2091
1771
  def util_cache_dir
2092
1772
  File.join Gem.dir, "cache"
2093
1773
  end
2094
-
2095
- def with_path_and_rubyopt(path_value, rubyopt_value)
2096
- path, ENV['PATH'] = ENV['PATH'], path_value
2097
- rubyopt, ENV['RUBYOPT'] = ENV['RUBYOPT'], rubyopt_value
2098
-
2099
- yield
2100
- ensure
2101
- ENV['PATH'] = path
2102
- ENV['RUBYOPT'] = rubyopt
2103
- end
2104
-
2105
- def with_rubygems_gemdeps(value)
2106
- rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], value
2107
-
2108
- yield
2109
- ensure
2110
- ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
2111
- end
2112
1774
  end