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,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'package/tar_test_case'
3
- require 'rubygems/package/tar_writer'
2
+
3
+ require_relative "package/tar_test_case"
4
+ require "rubygems/package/tar_writer"
4
5
 
5
6
  class TestGemPackageTarWriter < Gem::Package::TarTestCase
6
7
  def setup
@@ -11,7 +12,7 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
11
12
  # is not set.
12
13
  Gem.instance_variable_set(:'@default_source_date_epoch', nil)
13
14
 
14
- @data = 'abcde12345'
15
+ @data = "abcde12345"
15
16
  @io = TempIO.new
16
17
  @tar_writer = Gem::Package::TarWriter.new @io
17
18
  @epoch = ENV["SOURCE_DATE_EPOCH"]
@@ -28,11 +29,11 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
28
29
 
29
30
  def test_add_file
30
31
  Time.stub :now, Time.at(1458518157) do
31
- @tar_writer.add_file 'x', 0644 do |f|
32
- f.write 'a' * 10
32
+ @tar_writer.add_file "x", 0644 do |f|
33
+ f.write "a" * 10
33
34
  end
34
35
 
35
- assert_headers_equal(tar_file_header('x', '', 0644, 10, Time.now),
36
+ assert_headers_equal(tar_file_header("x", "", 0644, 10, Time.now),
36
37
  @io.string[0, 512])
37
38
  end
38
39
  assert_equal "aaaaaaaaaa#{"\0" * 502}", @io.string[512, 512]
@@ -42,18 +43,18 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
42
43
  def test_add_file_source_date_epoch
43
44
  ENV["SOURCE_DATE_EPOCH"] = "123456789"
44
45
  Time.stub :now, Time.at(1458518157) do
45
- @tar_writer.mkdir 'foo', 0644
46
+ @tar_writer.mkdir "foo", 0644
46
47
 
47
- assert_headers_equal tar_dir_header('foo', '', 0644, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc),
48
+ assert_headers_equal tar_dir_header("foo", "", 0644, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc),
48
49
  @io.string[0, 512]
49
50
  end
50
51
  end
51
52
 
52
53
  def test_add_symlink
53
54
  Time.stub :now, Time.at(1458518157) do
54
- @tar_writer.add_symlink 'x', 'y', 0644
55
+ @tar_writer.add_symlink "x", "y", 0644
55
56
 
56
- assert_headers_equal(tar_symlink_header('x', '', 0644, Time.now, 'y'),
57
+ assert_headers_equal(tar_symlink_header("x", "", 0644, Time.now, "y"),
57
58
  @io.string[0, 512])
58
59
  end
59
60
  assert_equal 512, @io.pos
@@ -62,9 +63,9 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
62
63
  def test_add_symlink_source_date_epoch
63
64
  ENV["SOURCE_DATE_EPOCH"] = "123456789"
64
65
  Time.stub :now, Time.at(1458518157) do
65
- @tar_writer.add_symlink 'x', 'y', 0644
66
+ @tar_writer.add_symlink "x", "y", 0644
66
67
 
67
- assert_headers_equal(tar_symlink_header('x', '', 0644, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc, 'y'),
68
+ assert_headers_equal(tar_symlink_header("x", "", 0644, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc, "y"),
68
69
  @io.string[0, 512])
69
70
  end
70
71
  end
@@ -73,19 +74,19 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
73
74
  digest_algorithms = Digest::SHA1.new, Digest::SHA512.new
74
75
 
75
76
  Time.stub :now, Time.at(1458518157) do
76
- digests = @tar_writer.add_file_digest 'x', 0644, digest_algorithms do |io|
77
- io.write 'a' * 10
77
+ digests = @tar_writer.add_file_digest "x", 0644, digest_algorithms do |io|
78
+ io.write "a" * 10
78
79
  end
79
80
 
80
- assert_equal '3495ff69d34671d1e15b33a63c1379fdedd3a32a',
81
- digests['SHA1'].hexdigest
82
- assert_equal '4714870aff6c97ca09d135834fdb58a6389a50c1' \
83
- '1fef8ec4afef466fb60a23ac6b7a9c92658f14df' \
84
- '4993d6b40a4e4d8424196afc347e97640d68de61' \
85
- 'e1cf14b0',
86
- digests['SHA512'].hexdigest
81
+ assert_equal "3495ff69d34671d1e15b33a63c1379fdedd3a32a",
82
+ digests["SHA1"].hexdigest
83
+ assert_equal "4714870aff6c97ca09d135834fdb58a6389a50c1" \
84
+ "1fef8ec4afef466fb60a23ac6b7a9c92658f14df" \
85
+ "4993d6b40a4e4d8424196afc347e97640d68de61" \
86
+ "e1cf14b0",
87
+ digests["SHA512"].hexdigest
87
88
 
88
- assert_headers_equal(tar_file_header('x', '', 0644, 10, Time.now),
89
+ assert_headers_equal(tar_file_header("x", "", 0644, 10, Time.now),
89
90
  @io.string[0, 512])
90
91
  end
91
92
  assert_equal "aaaaaaaaaa#{"\0" * 502}", @io.string[512, 512]
@@ -96,19 +97,19 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
96
97
  digest_algorithms = [Digest::SHA1.new, Digest::SHA512.new]
97
98
 
98
99
  Time.stub :now, Time.at(1458518157) do
99
- digests = @tar_writer.add_file_digest 'x', 0644, digest_algorithms do |io|
100
- io.write 'a' * 10
100
+ digests = @tar_writer.add_file_digest "x", 0644, digest_algorithms do |io|
101
+ io.write "a" * 10
101
102
  end
102
103
 
103
- assert_equal '3495ff69d34671d1e15b33a63c1379fdedd3a32a',
104
- digests['SHA1'].hexdigest
105
- assert_equal '4714870aff6c97ca09d135834fdb58a6389a50c1' \
106
- '1fef8ec4afef466fb60a23ac6b7a9c92658f14df' \
107
- '4993d6b40a4e4d8424196afc347e97640d68de61' \
108
- 'e1cf14b0',
109
- digests['SHA512'].hexdigest
104
+ assert_equal "3495ff69d34671d1e15b33a63c1379fdedd3a32a",
105
+ digests["SHA1"].hexdigest
106
+ assert_equal "4714870aff6c97ca09d135834fdb58a6389a50c1" \
107
+ "1fef8ec4afef466fb60a23ac6b7a9c92658f14df" \
108
+ "4993d6b40a4e4d8424196afc347e97640d68de61" \
109
+ "e1cf14b0",
110
+ digests["SHA512"].hexdigest
110
111
 
111
- assert_headers_equal(tar_file_header('x', '', 0644, 10, Time.now),
112
+ assert_headers_equal(tar_file_header("x", "", 0644, 10, Time.now),
112
113
  @io.string[0, 512])
113
114
  end
114
115
  assert_equal "aaaaaaaaaa#{"\0" * 502}", @io.string[512, 512]
@@ -116,26 +117,26 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
116
117
  end
117
118
 
118
119
  def test_add_file_signer
119
- pend 'openssl is missing' unless Gem::HAVE_OPENSSL
120
+ pend "openssl is missing" unless Gem::HAVE_OPENSSL
120
121
 
121
122
  signer = Gem::Security::Signer.new PRIVATE_KEY, [PUBLIC_CERT]
122
123
 
123
124
  Time.stub :now, Time.at(1458518157) do
124
- @tar_writer.add_file_signed 'x', 0644, signer do |io|
125
- io.write 'a' * 10
125
+ @tar_writer.add_file_signed "x", 0644, signer do |io|
126
+ io.write "a" * 10
126
127
  end
127
128
 
128
- assert_headers_equal(tar_file_header('x', '', 0644, 10, Time.now),
129
+ assert_headers_equal(tar_file_header("x", "", 0644, 10, Time.now),
129
130
  @io.string[0, 512])
130
131
 
131
132
  assert_equal "aaaaaaaaaa#{"\0" * 502}", @io.string[512, 512]
132
133
 
133
134
  digest = signer.digest_algorithm.new
134
- digest.update 'a' * 10
135
+ digest.update "a" * 10
135
136
 
136
137
  signature = signer.sign digest.digest
137
138
 
138
- assert_headers_equal(tar_file_header('x.sig', '', 0444, signature.length,
139
+ assert_headers_equal(tar_file_header("x.sig", "", 0444, signature.length,
139
140
  Time.now),
140
141
  @io.string[1024, 512])
141
142
  assert_equal "#{signature}#{"\0" * (512 - signature.length)}",
@@ -149,11 +150,11 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
149
150
  signer = Gem::Security::Signer.new nil, nil
150
151
 
151
152
  Time.stub :now, Time.at(1458518157) do
152
- @tar_writer.add_file_signed 'x', 0644, signer do |io|
153
- io.write 'a' * 10
153
+ @tar_writer.add_file_signed "x", 0644, signer do |io|
154
+ io.write "a" * 10
154
155
  end
155
156
 
156
- assert_headers_equal(tar_file_header('x', '', 0644, 10, Time.now),
157
+ assert_headers_equal(tar_file_header("x", "", 0644, 10, Time.now),
157
158
  @io.string[0, 512])
158
159
  end
159
160
  assert_equal "aaaaaaaaaa#{"\0" * 502}", @io.string[512, 512]
@@ -163,11 +164,11 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
163
164
 
164
165
  def test_add_file_simple
165
166
  Time.stub :now, Time.at(1458518157) do
166
- @tar_writer.add_file_simple 'x', 0644, 10 do |io|
167
+ @tar_writer.add_file_simple "x", 0644, 10 do |io|
167
168
  io.write "a" * 10
168
169
  end
169
170
 
170
- assert_headers_equal(tar_file_header('x', '', 0644, 10, Time.now),
171
+ assert_headers_equal(tar_file_header("x", "", 0644, 10, Time.now),
171
172
  @io.string[0, 512])
172
173
 
173
174
  assert_equal "aaaaaaaaaa#{"\0" * 502}", @io.string[512, 512]
@@ -178,20 +179,20 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
178
179
  def test_add_file_simple_source_date_epoch
179
180
  ENV["SOURCE_DATE_EPOCH"] = "123456789"
180
181
  Time.stub :now, Time.at(1458518157) do
181
- @tar_writer.add_file_simple 'x', 0644, 10 do |io|
182
+ @tar_writer.add_file_simple "x", 0644, 10 do |io|
182
183
  io.write "a" * 10
183
184
  end
184
185
 
185
- assert_headers_equal(tar_file_header('x', '', 0644, 10, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc),
186
+ assert_headers_equal(tar_file_header("x", "", 0644, 10, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc),
186
187
  @io.string[0, 512])
187
188
  end
188
189
  end
189
190
 
190
191
  def test_add_file_simple_padding
191
192
  Time.stub :now, Time.at(1458518157) do
192
- @tar_writer.add_file_simple 'x', 0, 100
193
+ @tar_writer.add_file_simple "x", 0, 100
193
194
 
194
- assert_headers_equal tar_file_header('x', '', 0, 100, Time.now),
195
+ assert_headers_equal tar_file_header("x", "", 0, 100, Time.now),
195
196
  @io.string[0, 512]
196
197
  end
197
198
 
@@ -222,34 +223,34 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
222
223
  e = assert_raise IOError do
223
224
  @tar_writer.close
224
225
  end
225
- assert_equal 'closed Gem::Package::TarWriter', e.message
226
+ assert_equal "closed Gem::Package::TarWriter", e.message
226
227
 
227
228
  e = assert_raise IOError do
228
229
  @tar_writer.flush
229
230
  end
230
- assert_equal 'closed Gem::Package::TarWriter', e.message
231
+ assert_equal "closed Gem::Package::TarWriter", e.message
231
232
 
232
233
  e = assert_raise IOError do
233
- @tar_writer.add_file 'x', 0
234
+ @tar_writer.add_file "x", 0
234
235
  end
235
- assert_equal 'closed Gem::Package::TarWriter', e.message
236
+ assert_equal "closed Gem::Package::TarWriter", e.message
236
237
 
237
238
  e = assert_raise IOError do
238
- @tar_writer.add_file_simple 'x', 0, 0
239
+ @tar_writer.add_file_simple "x", 0, 0
239
240
  end
240
- assert_equal 'closed Gem::Package::TarWriter', e.message
241
+ assert_equal "closed Gem::Package::TarWriter", e.message
241
242
 
242
243
  e = assert_raise IOError do
243
- @tar_writer.mkdir 'x', 0
244
+ @tar_writer.mkdir "x", 0
244
245
  end
245
- assert_equal 'closed Gem::Package::TarWriter', e.message
246
+ assert_equal "closed Gem::Package::TarWriter", e.message
246
247
  end
247
248
 
248
249
  def test_mkdir
249
250
  Time.stub :now, Time.at(1458518157) do
250
- @tar_writer.mkdir 'foo', 0644
251
+ @tar_writer.mkdir "foo", 0644
251
252
 
252
- assert_headers_equal tar_dir_header('foo', '', 0644, Time.now),
253
+ assert_headers_equal tar_dir_header("foo", "", 0644, Time.now),
253
254
  @io.string[0, 512]
254
255
 
255
256
  assert_equal 512, @io.pos
@@ -259,42 +260,42 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
259
260
  def test_mkdir_source_date_epoch
260
261
  ENV["SOURCE_DATE_EPOCH"] = "123456789"
261
262
  Time.stub :now, Time.at(1458518157) do
262
- @tar_writer.mkdir 'foo', 0644
263
+ @tar_writer.mkdir "foo", 0644
263
264
 
264
- assert_headers_equal tar_dir_header('foo', '', 0644, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc),
265
+ assert_headers_equal tar_dir_header("foo", "", 0644, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc),
265
266
  @io.string[0, 512]
266
267
  end
267
268
  end
268
269
 
269
270
  def test_split_name
270
- assert_equal ['b' * 100, 'a' * 155],
271
+ assert_equal ["b" * 100, "a" * 155],
271
272
  @tar_writer.split_name("#{'a' * 155}/#{'b' * 100}")
272
273
 
273
- assert_equal ["#{'qwer/' * 19}bla", 'a' * 151],
274
+ assert_equal ["#{'qwer/' * 19}bla", "a" * 151],
274
275
  @tar_writer.split_name("#{'a' * 151}/#{'qwer/' * 19}bla")
275
276
  names = [
276
- ([''] + ['123456789'] * 9 + ['1234567890']).join('/'), # 101 bytes (several pieces)
277
- (['123456789'] * 9 + ['1234567890'] + ['']).join('/'), # 101 bytes (several pieces)
278
- '/' * 99,
279
- '/' * 100,
280
- '/' * 101,
281
- '/' * 102,
277
+ ([""] + ["123456789"] * 9 + ["1234567890"]).join("/"), # 101 bytes (several pieces)
278
+ (["123456789"] * 9 + ["1234567890"] + [""]).join("/"), # 101 bytes (several pieces)
279
+ "/" * 99,
280
+ "/" * 100,
281
+ "/" * 101,
282
+ "/" * 102,
282
283
  ]
283
284
  names.each do |name|
284
285
  newname, prefix = @tar_writer.split_name(name)
285
286
  assert(!(newname.empty?), "split_name() returned empty name")
286
287
  assert(newname.bytesize <= 100, "split_name() returned name longer than 100 bytes: '#{newname}' for '#{name}'")
287
288
  assert(prefix.bytesize <= 155, "split_name() returned prefix longer than 155 bytes: '#{prefix}' for '#{name}'")
288
- newname = [prefix, newname].join('/') unless prefix.empty?
289
+ newname = [prefix, newname].join("/") unless prefix.empty?
289
290
  assert_equal name, newname
290
291
  end
291
292
  end
292
293
 
293
294
  def test_split_name_too_long_name
294
- name = File.join 'a', 'b' * 100
295
- assert_equal ['b' * 100, 'a'], @tar_writer.split_name(name)
295
+ name = File.join "a", "b" * 100
296
+ assert_equal ["b" * 100, "a"], @tar_writer.split_name(name)
296
297
 
297
- name = File.join 'a', 'b' * 101
298
+ name = File.join "a", "b" * 101
298
299
  exception = assert_raise Gem::Package::TooLongFileName do
299
300
  @tar_writer.split_name name
300
301
  end
@@ -302,7 +303,7 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
302
303
 
303
304
  # note, GNU tar 1.28 is unable to handle this case too,
304
305
  # tested with "tar --format=ustar -cPf /tmp/foo.tartar -- /aaaaaa....a"
305
- name = '/' + 'a' * 100
306
+ name = "/" + "a" * 100
306
307
  exception = assert_raise Gem::Package::TooLongFileName do
307
308
  @tar_writer.split_name name
308
309
  end
@@ -310,10 +311,10 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
310
311
  end
311
312
 
312
313
  def test_split_name_too_long_prefix
313
- name = File.join 'a' * 155, 'b'
314
- assert_equal ['b', 'a' * 155], @tar_writer.split_name(name)
314
+ name = File.join "a" * 155, "b"
315
+ assert_equal ["b", "a" * 155], @tar_writer.split_name(name)
315
316
 
316
- name = File.join 'a' * 156, 'b'
317
+ name = File.join "a" * 156, "b"
317
318
  exception = assert_raise Gem::Package::TooLongFileName do
318
319
  @tar_writer.split_name name
319
320
  end
@@ -321,7 +322,7 @@ class TestGemPackageTarWriter < Gem::Package::TarTestCase
321
322
  end
322
323
 
323
324
  def test_split_name_too_long_total
324
- name = 'a' * 257
325
+ name = "a" * 257
325
326
  exception = assert_raise Gem::Package::TooLongFileName do
326
327
  @tar_writer.split_name name
327
328
  end
@@ -1,15 +1,16 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'helper'
3
- require 'rubygems'
2
+
3
+ require_relative "helper"
4
+ require "rubygems"
4
5
 
5
6
  begin
6
- require 'rubygems/package_task'
7
+ require "rubygems/package_task"
7
8
  rescue LoadError => e
8
- raise unless e.path == 'rake/packagetask'
9
+ raise unless e.path == "rake/packagetask"
9
10
  end
10
11
 
11
12
  unless defined?(Rake::PackageTask)
12
- warn 'Skipping Gem::PackageTask tests. rake not found.'
13
+ warn "Skipping Gem::PackageTask tests. rake not found."
13
14
  end
14
15
 
15
16
  class TestGemPackageTask < Gem::TestCase
@@ -23,7 +24,7 @@ class TestGemPackageTask < Gem::TestCase
23
24
 
24
25
  g.authors = %w[author]
25
26
  g.files = %w[x]
26
- g.summary = 'summary'
27
+ g.summary = "summary"
27
28
  end
28
29
 
29
30
  Rake.application = Rake::Application.new
@@ -35,12 +36,12 @@ class TestGemPackageTask < Gem::TestCase
35
36
  assert_equal %w[x y], pkg.package_files
36
37
 
37
38
  Dir.chdir @tempdir do
38
- FileUtils.touch 'x'
39
- FileUtils.touch 'y'
39
+ FileUtils.touch "x"
40
+ FileUtils.touch "y"
40
41
 
41
- Rake.application['package'].invoke
42
+ Rake.application["package"].invoke
42
43
 
43
- assert_path_exist 'pkg/pkgr-1.2.3.gem'
44
+ assert_path_exist "pkg/pkgr-1.2.3.gem"
44
45
  end
45
46
  ensure
46
47
  RakeFileUtils.verbose_flag = original_rake_fileutils_verbosity
@@ -53,7 +54,7 @@ class TestGemPackageTask < Gem::TestCase
53
54
 
54
55
  g.authors = %w[author]
55
56
  g.files = %w[x]
56
- g.summary = 'summary'
57
+ g.summary = "summary"
57
58
  end
58
59
 
59
60
  _, err = capture_output do
@@ -66,10 +67,10 @@ class TestGemPackageTask < Gem::TestCase
66
67
  assert_equal %w[x y], pkg.package_files
67
68
 
68
69
  Dir.chdir @tempdir do
69
- FileUtils.touch 'x'
70
- FileUtils.touch 'y'
70
+ FileUtils.touch "x"
71
+ FileUtils.touch "y"
71
72
 
72
- Rake.application['package'].invoke
73
+ Rake.application["package"].invoke
73
74
  end
74
75
  end
75
76
 
@@ -104,14 +105,14 @@ class TestGemPackageTask < Gem::TestCase
104
105
 
105
106
  def test_package_dir_path
106
107
  gem = Gem::Specification.new do |g|
107
- g.name = 'nokogiri'
108
- g.version = '1.5.0'
109
- g.platform = 'java'
108
+ g.name = "nokogiri"
109
+ g.version = "1.5.0"
110
+ g.platform = "java"
110
111
  end
111
112
 
112
113
  pkg = Gem::PackageTask.new gem
113
114
  pkg.define
114
115
 
115
- assert_equal 'pkg/nokogiri-1.5.0-java', pkg.package_dir_path
116
+ assert_equal "pkg/nokogiri-1.5.0-java", pkg.package_dir_path
116
117
  end
117
118
  end if defined?(Rake::PackageTask)
@@ -1,7 +1,8 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'helper'
3
- require 'rubygems'
4
- require 'fileutils'
2
+
3
+ require_relative "helper"
4
+ require "rubygems"
5
+ require "fileutils"
5
6
 
6
7
  class TestGemPathSupport < Gem::TestCase
7
8
  def setup
@@ -25,7 +26,7 @@ class TestGemPathSupport < Gem::TestCase
25
26
 
26
27
  assert_equal File.join(@tempdir, "foo"), ps.home
27
28
 
28
- expected = ENV["GEM_PATH"].split(File::PATH_SEPARATOR) + [File.join(@tempdir, 'foo')]
29
+ expected = ENV["GEM_PATH"].split(File::PATH_SEPARATOR) + [File.join(@tempdir, "foo")]
29
30
  assert_equal expected, ps.path
30
31
  end
31
32
 
@@ -45,8 +46,8 @@ class TestGemPathSupport < Gem::TestCase
45
46
  assert_equal ENV["GEM_HOME"], ps.home
46
47
 
47
48
  expected = [
48
- File.join(@tempdir, 'foo'),
49
- File.join(@tempdir, 'bar'),
49
+ File.join(@tempdir, "foo"),
50
+ File.join(@tempdir, "bar"),
50
51
  ENV["GEM_HOME"],
51
52
  ]
52
53
 
@@ -65,8 +66,8 @@ class TestGemPathSupport < Gem::TestCase
65
66
  assert_equal ENV["GEM_HOME"], ps.home
66
67
 
67
68
  expected = [
68
- File.join(@tempdir, 'foo'),
69
- File.join(@tempdir, 'bar'),
69
+ File.join(@tempdir, "foo"),
70
+ File.join(@tempdir, "bar"),
70
71
  ] + Gem.default_path << ENV["GEM_HOME"]
71
72
 
72
73
  assert_equal expected, ps.path
@@ -83,8 +84,8 @@ class TestGemPathSupport < Gem::TestCase
83
84
  assert_equal ENV["GEM_HOME"], ps.home
84
85
 
85
86
  expected = [
86
- File.join(@tempdir, 'foo'),
87
- File.join(@tempdir, 'bar'),
87
+ File.join(@tempdir, "foo"),
88
+ File.join(@tempdir, "bar"),
88
89
  ] + Gem.default_path << ENV["GEM_HOME"]
89
90
 
90
91
  assert_equal expected, ps.path
@@ -97,7 +98,7 @@ class TestGemPathSupport < Gem::TestCase
97
98
 
98
99
  assert_equal File.join(@tempdir, "foo"), ps.home
99
100
 
100
- expected = [File.join(@tempdir, 'foo'), File.join(@tempdir, 'bar')]
101
+ expected = [File.join(@tempdir, "foo"), File.join(@tempdir, "bar")]
101
102
  assert_equal expected, ps.path
102
103
  end
103
104
  end
@@ -108,12 +109,12 @@ class TestGemPathSupport < Gem::TestCase
108
109
  ps = Gem::PathSupport.new ENV
109
110
  assert_equal Gem.default_spec_cache_dir, ps.spec_cache_dir
110
111
 
111
- ENV["GEM_SPEC_CACHE"] = 'bar'
112
+ ENV["GEM_SPEC_CACHE"] = "bar"
112
113
 
113
114
  ps = Gem::PathSupport.new ENV
114
115
  assert_equal ENV["GEM_SPEC_CACHE"], ps.spec_cache_dir
115
116
 
116
- ENV["GEM_SPEC_CACHE"] = File.join @tempdir, 'spec_cache'
117
+ ENV["GEM_SPEC_CACHE"] = File.join @tempdir, "spec_cache"
117
118
 
118
119
  ps = Gem::PathSupport.new "GEM_SPEC_CACHE" => "foo"
119
120
  assert_equal "foo", ps.spec_cache_dir
@@ -126,7 +127,7 @@ class TestGemPathSupport < Gem::TestCase
126
127
  begin
127
128
  File.symlink(dir, symlink)
128
129
  rescue NotImplementedError, SystemCallError
129
- pend 'symlinks not supported'
130
+ pend "symlinks not supported"
130
131
  end
131
132
  not_existing = "#{@tempdir}/does_not_exist"
132
133
  path = "#{symlink}#{File::PATH_SEPARATOR}#{not_existing}"