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
  # frozen_string_literal: true
2
- require 'benchmark'
3
- require_relative 'helper'
4
- require 'date'
5
- require 'pathname'
6
- require 'stringio'
7
- require 'rubygems/ext'
8
- require 'rubygems/specification'
9
- require 'rubygems/installer'
10
- require 'rubygems/platform'
2
+
3
+ require "benchmark"
4
+ require_relative "helper"
5
+ require "date"
6
+ require "pathname"
7
+ require "stringio"
8
+ require "rubygems/ext"
9
+ require "rubygems/specification"
10
+ require "rubygems/installer"
11
+ require "rubygems/platform"
11
12
 
12
13
  class TestGemSpecification < Gem::TestCase
13
- LEGACY_YAML_SPEC = <<-EOF.freeze
14
+ LEGACY_YAML_SPEC = <<-EOF
14
15
  --- !ruby/object:Gem::Specification
15
16
  rubygems_version: "1.0"
16
17
  name: keyedlist
@@ -29,7 +30,7 @@ email: flgr@ccan.de
29
30
  has_rdoc: true
30
31
  EOF
31
32
 
32
- LEGACY_RUBY_SPEC = <<-EOF.freeze
33
+ LEGACY_RUBY_SPEC = <<-EOF
33
34
  Gem::Specification.new do |s|
34
35
  s.name = %q{keyedlist}
35
36
  s.version = %q{0.4.0}
@@ -44,16 +45,16 @@ end
44
45
  EOF
45
46
 
46
47
  def make_spec_c1
47
- @c1 = util_spec 'a', '1' do |s|
48
- s.executable = 'exec'
49
- s.extensions << 'ext/a/extconf.rb'
50
- s.test_file = 'test/suite.rb'
51
- s.requirements << 'A working computer'
52
- s.license = 'MIT'
48
+ @c1 = util_spec "a", "1" do |s|
49
+ s.executable = "exec"
50
+ s.extensions << "ext/a/extconf.rb"
51
+ s.test_file = "test/suite.rb"
52
+ s.requirements << "A working computer"
53
+ s.license = "MIT"
53
54
 
54
- s.add_dependency 'rake', '> 0.4'
55
- s.add_dependency 'jabber4r', '> 0.0.0'
56
- s.add_dependency 'pqa', ['> 0.4', '<= 0.6']
55
+ s.add_dependency "rake", "> 0.4"
56
+ s.add_dependency "jabber4r", "> 0.0.0"
57
+ s.add_dependency "pqa", ["> 0.4", "<= 0.6"]
57
58
 
58
59
  s.mark_version
59
60
  s.files = %w[lib/code.rb]
@@ -61,16 +62,16 @@ end
61
62
  end
62
63
 
63
64
  def ext_spec(platform: Gem::Platform::RUBY)
64
- @ext = util_spec 'ext', '1' do |s|
65
- s.executable = 'exec'
66
- s.test_file = 'test/suite.rb'
65
+ @ext = util_spec "ext", "1" do |s|
66
+ s.executable = "exec"
67
+ s.test_file = "test/suite.rb"
67
68
  s.extensions = %w[ext/extconf.rb]
68
- s.license = 'MIT'
69
+ s.license = "MIT"
69
70
  s.platform = platform
70
71
 
71
72
  s.mark_version
72
73
  s.files = %w[lib/code.rb]
73
- s.installed_by_version = v('2.2')
74
+ s.installed_by_version = v("2.2")
74
75
  end
75
76
  end
76
77
 
@@ -88,40 +89,40 @@ end
88
89
  # is not set.
89
90
  Gem.instance_variable_set(:'@default_source_date_epoch', nil)
90
91
 
91
- @a1 = util_spec 'a', '1' do |s|
92
- s.executable = 'exec'
93
- s.test_file = 'test/suite.rb'
94
- s.requirements << 'A working computer'
95
- s.license = 'MIT'
92
+ @a1 = util_spec "a", "1" do |s|
93
+ s.executable = "exec"
94
+ s.test_file = "test/suite.rb"
95
+ s.requirements << "A working computer"
96
+ s.license = "MIT"
96
97
 
97
98
  s.mark_version
98
99
  s.files = %w[lib/code.rb]
99
100
  end
100
101
 
101
- @a2 = util_spec 'a', '2' do |s|
102
+ @a2 = util_spec "a", "2" do |s|
102
103
  s.files = %w[lib/code.rb]
103
104
  end
104
105
 
105
- @a3 = util_spec 'a', '3' do |s|
106
- s.metadata['allowed_push_host'] = "https://privategemserver.com"
106
+ @a3 = util_spec "a", "3" do |s|
107
+ s.metadata["allowed_push_host"] = "https://privategemserver.com"
107
108
  end
108
109
 
109
110
  @current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
110
111
  end
111
112
 
112
113
  def test_self_find_active_stub_by_path
113
- spec = util_spec('a', '1', nil, 'lib/foo.rb')
114
+ spec = util_spec("a", "1", nil, "lib/foo.rb")
114
115
  spec.activated = true
115
116
 
116
117
  # There used to be a bug (introduced in a9c1aaf) when Gem::Specification
117
118
  # objects are present in the @stubs collection. This test verifies that
118
119
  # this scenario works correctly.
119
120
  Gem::Specification.all = [spec]
120
- assert_equal spec, Gem::Specification.find_active_stub_by_path('foo')
121
+ assert_equal spec, Gem::Specification.find_active_stub_by_path("foo")
121
122
  end
122
123
 
123
124
  def test_self_activate
124
- foo = util_spec 'foo', '1'
125
+ foo = util_spec "foo", "1"
125
126
 
126
127
  assert_activate %w[foo-1], foo
127
128
  end
@@ -147,7 +148,7 @@ end
147
148
  end
148
149
 
149
150
  def test_find_in_unresolved_tree_is_not_exponentiental
150
- pend "currently slower in CI on TruffleRuby" if RUBY_ENGINE == 'truffleruby'
151
+ pend "currently slower in CI on TruffleRuby" if RUBY_ENGINE == "truffleruby"
151
152
  num_of_pkg = 7
152
153
  num_of_version_per_pkg = 3
153
154
  packages = (0..num_of_pkg).map do |pkgi|
@@ -166,7 +167,7 @@ end
166
167
  base.activate
167
168
 
168
169
  tms = Benchmark.measure do
169
- assert_raise(LoadError) { require 'no_such_file_foo' }
170
+ assert_raise(LoadError) { require "no_such_file_foo" }
170
171
  end
171
172
  assert_operator tms.total, :<=, 10
172
173
  end
@@ -372,13 +373,13 @@ end
372
373
  # [B] ~> 1.0 (satisfied by 1.0)
373
374
 
374
375
  def test_self_activate_checks_dependencies
375
- a = util_spec 'a', '1.0'
376
- a.add_dependency 'c', '= 1.0'
377
- a.add_dependency 'b', '~> 1.0'
376
+ a = util_spec "a", "1.0"
377
+ a.add_dependency "c", "= 1.0"
378
+ a.add_dependency "b", "~> 1.0"
378
379
 
379
- b1 = util_spec 'b', '1.0'
380
- b2 = util_spec 'b', '2.0'
381
- c = util_spec 'c', '1.0', 'b' => '= 2.0'
380
+ b1 = util_spec "b", "1.0"
381
+ b2 = util_spec "b", "2.0"
382
+ c = util_spec "c", "1.0", "b" => "= 2.0"
382
383
  install_specs b1, b2, c, a
383
384
 
384
385
  e = assert_raise Gem::LoadError do
@@ -396,10 +397,10 @@ end
396
397
  # [B] = 2.0
397
398
 
398
399
  def test_self_activate_divergent
399
- a = util_spec 'a', '1.0', 'b' => '~> 1.0', 'c' => '= 1.0'
400
- b1 = util_spec 'b', '1.0'
401
- b2 = util_spec 'b', '2.0'
402
- c = util_spec 'c', '1.0', 'b' => '= 2.0'
400
+ a = util_spec "a", "1.0", "b" => "~> 1.0", "c" => "= 1.0"
401
+ b1 = util_spec "b", "1.0"
402
+ b2 = util_spec "b", "2.0"
403
+ c = util_spec "c", "1.0", "b" => "= 2.0"
403
404
 
404
405
  install_specs b1, b2, c, a
405
406
 
@@ -415,9 +416,9 @@ end
415
416
  # DOC
416
417
 
417
418
  def test_self_activate_old_required
418
- e1, = util_spec 'e', '1', 'd' => '= 1'
419
- @d1 = util_spec 'd', '1'
420
- @d2 = util_spec 'd', '2'
419
+ e1, = util_spec "e", "1", "d" => "= 1"
420
+ @d1 = util_spec "d", "1"
421
+ @d2 = util_spec "d", "2"
421
422
 
422
423
  install_specs @d1, @d2, e1
423
424
 
@@ -428,17 +429,17 @@ end
428
429
  # DOC
429
430
 
430
431
  def test_self_activate_platform_alternate
431
- @x1_m = util_spec 'x', '1' do |s|
432
+ @x1_m = util_spec "x", "1" do |s|
432
433
  s.platform = Gem::Platform.new %w[cpu my_platform 1]
433
434
  end
434
435
 
435
- @x1_o = util_spec 'x', '1' do |s|
436
+ @x1_o = util_spec "x", "1" do |s|
436
437
  s.platform = Gem::Platform.new %w[cpu other_platform 1]
437
438
  end
438
439
 
439
- @w1 = util_spec 'w', '1', 'x' => nil
440
+ @w1 = util_spec "w", "1", "x" => nil
440
441
 
441
- util_set_arch 'cpu-my_platform1'
442
+ util_set_arch "cpu-my_platform1"
442
443
  install_specs @x1_m, @x1_o, @w1
443
444
 
444
445
  assert_activate %w[x-1-cpu-my_platform-1 w-1], @w1, @x1_m
@@ -448,13 +449,13 @@ end
448
449
  # DOC
449
450
 
450
451
  def test_self_activate_platform_bump
451
- @y1 = util_spec 'y', '1'
452
+ @y1 = util_spec "y", "1"
452
453
 
453
- @y1_1_p = util_spec 'y', '1.1' do |s|
454
+ @y1_1_p = util_spec "y", "1.1" do |s|
454
455
  s.platform = Gem::Platform.new %w[cpu my_platform 1]
455
456
  end
456
457
 
457
- @z1 = util_spec 'z', '1', 'y' => nil
458
+ @z1 = util_spec "z", "1", "y" => nil
458
459
  install_specs @y1, @y1_1_p, @z1
459
460
 
460
461
  assert_activate %w[y-1 z-1], @z1, @y1
@@ -467,11 +468,11 @@ end
467
468
  # [A] >= 0 (satisfied by 1.a)
468
469
 
469
470
  def test_self_activate_prerelease
470
- @c1_pre = util_spec 'c', '1.a', "a" => "1.a", "b" => "1"
471
- @a1_pre = util_spec 'a', '1.a'
472
- @b1 = util_spec 'b', '1' do |s|
473
- s.add_dependency 'a'
474
- s.add_development_dependency 'aa'
471
+ @c1_pre = util_spec "c", "1.a", "a" => "1.a", "b" => "1"
472
+ @a1_pre = util_spec "a", "1.a"
473
+ @b1 = util_spec "b", "1" do |s|
474
+ s.add_dependency "a"
475
+ s.add_development_dependency "aa"
475
476
  end
476
477
  install_specs @a1_pre, @b1, @c1_pre
477
478
 
@@ -533,7 +534,7 @@ end
533
534
  end
534
535
 
535
536
  def test_self_activate_loaded
536
- foo = util_spec 'foo', '1'
537
+ foo = util_spec "foo", "1"
537
538
 
538
539
  assert foo.activate
539
540
  refute foo.activate
@@ -545,9 +546,9 @@ end
545
546
  # [C] depends on nothing
546
547
 
547
548
  def test_self_activate_unrelated
548
- a = util_spec 'a', '1.0', 'b' => '>= 1.0'
549
- b = util_spec 'b', '1.0'
550
- c = util_spec 'c', '1.0'
549
+ a = util_spec "a", "1.0", "b" => ">= 1.0"
550
+ b = util_spec "b", "1.0"
551
+ c = util_spec "c", "1.0"
551
552
  install_specs b, c, a
552
553
 
553
554
  assert_activate %w[b-1.0 c-1.0 a-1.0], a, c, "b"
@@ -563,11 +564,11 @@ end
563
564
  # TODO: move these to specification
564
565
 
565
566
  def test_self_activate_over
566
- a = util_spec 'a', '1.0', 'b' => '>= 1.0', 'c' => '= 1.0'
567
- install_specs util_spec 'b', '1.0'
568
- install_specs util_spec 'b', '1.1'
569
- install_specs util_spec 'b', '2.0'
570
- install_specs util_spec 'c', '1.0', 'b' => '~> 1.0'
567
+ a = util_spec "a", "1.0", "b" => ">= 1.0", "c" => "= 1.0"
568
+ install_specs util_spec "b", "1.0"
569
+ install_specs util_spec "b", "1.1"
570
+ install_specs util_spec "b", "2.0"
571
+ install_specs util_spec "c", "1.0", "b" => "~> 1.0"
571
572
  install_specs a
572
573
 
573
574
  a.activate
@@ -588,10 +589,10 @@ end
588
589
  # first resolve through a dependency that is later pruned.
589
590
 
590
591
  def test_self_activate_under
591
- a = util_spec 'a', '1.0', 'b' => '~> 1.0', 'c' => '= 1.0'
592
- b1 = util_spec 'b', '1.0'
593
- b1_1 = util_spec 'b', '1.1'
594
- c = util_spec 'c', '1.0', 'b' => '= 1.0'
592
+ a = util_spec "a", "1.0", "b" => "~> 1.0", "c" => "= 1.0"
593
+ b1 = util_spec "b", "1.0"
594
+ b1_1 = util_spec "b", "1.1"
595
+ c = util_spec "c", "1.0", "b" => "= 1.0"
595
596
 
596
597
  install_specs b1, b1_1, c, a
597
598
 
@@ -607,10 +608,10 @@ end
607
608
  # [C1] depends on nothing
608
609
 
609
610
  def test_self_activate_dropped
610
- a1 = util_spec 'a', '1', 'b' => nil
611
- b1 = util_spec 'b', '1', 'c' => nil
612
- b2 = util_spec 'b', '2'
613
- c1 = util_spec 'c', '1'
611
+ a1 = util_spec "a", "1", "b" => nil
612
+ b1 = util_spec "b", "1", "c" => nil
613
+ b2 = util_spec "b", "2"
614
+ c1 = util_spec "c", "1"
614
615
  install_specs c1, b1, b2, a1
615
616
 
616
617
  assert_activate %w[b-2 a-1], a1, "b"
@@ -627,11 +628,11 @@ end
627
628
  # resolve.
628
629
 
629
630
  def test_self_activate_raggi_the_edgecase_generator
630
- a = util_spec 'a', '1.0', 'b' => '>= 1.0', 'c' => '>= 1.0'
631
- b1 = util_spec 'b', '1.0'
632
- b1_0 = util_spec 'b', '1.1', 'z' => '>= 1.0'
633
- c = util_spec 'c', '1.0', 'b' => '= 1.0'
634
- z = util_spec 'z', '1'
631
+ a = util_spec "a", "1.0", "b" => ">= 1.0", "c" => ">= 1.0"
632
+ b1 = util_spec "b", "1.0"
633
+ b1_0 = util_spec "b", "1.1", "z" => ">= 1.0"
634
+ c = util_spec "c", "1.0", "b" => "= 1.0"
635
+ z = util_spec "z", "1"
635
636
 
636
637
  install_specs z, b1, b1_0, c, z
637
638
 
@@ -639,8 +640,8 @@ end
639
640
  end
640
641
 
641
642
  def test_self_activate_conflict
642
- install_specs util_spec 'b', '1.0'
643
- install_specs util_spec 'b', '2.0'
643
+ install_specs util_spec "b", "1.0"
644
+ install_specs util_spec "b", "2.0"
644
645
 
645
646
  gem "b", "= 1.0"
646
647
 
@@ -655,7 +656,7 @@ end
655
656
  install_specs a
656
657
  Gem::Specification.all = [a]
657
658
 
658
- assert_equal a, Gem::Specification.find_inactive_by_path('foo')
659
+ assert_equal a, Gem::Specification.find_inactive_by_path("foo")
659
660
  end
660
661
 
661
662
  def test_self_attribute_names
@@ -698,13 +699,13 @@ end
698
699
 
699
700
  def test_self__load_future
700
701
  spec = Gem::Specification.new
701
- spec.name = 'a'
702
- spec.version = '1'
702
+ spec.name = "a"
703
+ spec.version = "1"
703
704
  spec.specification_version = @current_version + 1
704
705
 
705
706
  load_spec = Marshal.load Marshal.dump(spec)
706
707
 
707
- assert_equal 'a', load_spec.name
708
+ assert_equal "a", load_spec.name
708
709
  assert_equal Gem::Version.new(1), load_spec.version
709
710
  assert_equal @current_version, load_spec.specification_version
710
711
  end
@@ -783,20 +784,20 @@ dependencies: []
783
784
  end
784
785
 
785
786
  def test_self_load_relative
786
- File.open 'a-2.gemspec', 'w' do |io|
787
+ File.open "a-2.gemspec", "w" do |io|
787
788
  io.write @a2.to_ruby_for_cache
788
789
  end
789
790
 
790
- spec = Gem::Specification.load 'a-2.gemspec'
791
+ spec = Gem::Specification.load "a-2.gemspec"
791
792
 
792
793
  @a2.files.clear
793
794
 
794
795
  assert_equal @a2, spec
795
796
 
796
- assert_equal File.join(@tempdir, 'a-2.gemspec'), spec.loaded_from
797
+ assert_equal File.join(@tempdir, "a-2.gemspec"), spec.loaded_from
797
798
  end
798
799
 
799
- if RUBY_ENGINE == 'ruby' and RUBY_VERSION < '2.7'
800
+ if RUBY_ENGINE == "ruby" && RUBY_VERSION < "2.7"
800
801
  def test_self_load_tainted
801
802
  full_path = @a2.spec_file
802
803
  write_file full_path do |io|
@@ -874,13 +875,13 @@ dependencies: []
874
875
  end
875
876
 
876
877
  def test_self_load_utf8_with_ascii_encoding
877
- with_internal_encoding('US-ASCII') do
878
+ with_internal_encoding("US-ASCII") do
878
879
  spec2 = @a2.dup
879
880
  bin = "\u5678".dup
880
881
  spec2.authors = [bin]
881
882
  full_path = spec2.spec_file
882
883
  write_file full_path do |io|
883
- io.write spec2.to_ruby_for_cache.force_encoding('BINARY').sub("\\u{5678}", bin.force_encoding('BINARY'))
884
+ io.write spec2.to_ruby_for_cache.force_encoding("BINARY").sub("\\u{5678}", bin.force_encoding("BINARY"))
884
885
  end
885
886
 
886
887
  spec = Gem::Specification.load full_path
@@ -895,10 +896,10 @@ dependencies: []
895
896
  spec = Gem::Deprecate.skip_during do
896
897
  eval LEGACY_RUBY_SPEC
897
898
  end
898
- assert_equal 'keyedlist', spec.name
899
- assert_equal '0.4.0', spec.version.to_s
899
+ assert_equal "keyedlist", spec.name
900
+ assert_equal "0.4.0", spec.version.to_s
900
901
  assert_kind_of Time, spec.date
901
- assert spec.required_ruby_version.satisfied_by?(Gem::Version.new('1'))
902
+ assert spec.required_ruby_version.satisfied_by?(Gem::Version.new("1"))
902
903
  assert_equal false, spec.has_unit_tests?
903
904
  end
904
905
 
@@ -933,9 +934,9 @@ dependencies: []
933
934
 
934
935
  def test_self_outdated
935
936
  spec_fetcher do |fetcher|
936
- fetcher.download 'a', 4
937
+ fetcher.download "a", 4
937
938
 
938
- fetcher.spec 'a', 3
939
+ fetcher.spec "a", 3
939
940
  end
940
941
 
941
942
  assert_equal %w[a], Gem::Specification.outdated
@@ -943,16 +944,16 @@ dependencies: []
943
944
 
944
945
  def test_self_outdated_and_latest_remotes
945
946
  spec_fetcher do |fetcher|
946
- fetcher.download 'a', 4
947
- fetcher.download 'b', 3
947
+ fetcher.download "a", 4
948
+ fetcher.download "b", 3
948
949
 
949
- fetcher.spec 'a', '3.a'
950
- fetcher.spec 'b', 2
950
+ fetcher.spec "a", "3.a"
951
+ fetcher.spec "b", 2
951
952
  end
952
953
 
953
954
  expected = [
954
- [Gem::Specification.stubs.find {|s| s.full_name == 'a-3.a' }, v(4)],
955
- [Gem::Specification.stubs.find {|s| s.full_name == 'b-2' }, v(3)],
955
+ [Gem::Specification.stubs.find {|s| s.full_name == "a-3.a" }, v(4)],
956
+ [Gem::Specification.stubs.find {|s| s.full_name == "b-2" }, v(3)],
956
957
  ]
957
958
 
958
959
  assert_equal expected, Gem::Specification.outdated_and_latest_version.to_a
@@ -961,18 +962,18 @@ dependencies: []
961
962
  def test_self_remove_spec
962
963
  install_specs @a1
963
964
 
964
- assert_includes Gem::Specification.all_names, 'a-1'
965
- assert_includes Gem::Specification.stubs.map {|s| s.full_name }, 'a-1'
965
+ assert_includes Gem::Specification.all_names, "a-1"
966
+ assert_includes Gem::Specification.stubs.map {|s| s.full_name }, "a-1"
966
967
 
967
968
  uninstall_gem @a1
968
969
  Gem::Specification.reset
969
970
 
970
- refute_includes Gem::Specification.all_names, 'a-1'
971
- refute_includes Gem::Specification.stubs.map {|s| s.full_name }, 'a-1'
971
+ refute_includes Gem::Specification.all_names, "a-1"
972
+ refute_includes Gem::Specification.stubs.map {|s| s.full_name }, "a-1"
972
973
  end
973
974
 
974
975
  def test_self_remove_spec_removed
975
- File.open @a1.spec_file, 'w' do |io|
976
+ File.open @a1.spec_file, "w" do |io|
976
977
  io.write @a1.to_ruby
977
978
  end
978
979
 
@@ -982,40 +983,40 @@ dependencies: []
982
983
 
983
984
  Gem::Specification.reset
984
985
 
985
- refute_includes Gem::Specification.all_names, 'a-1'
986
- refute_includes Gem::Specification.stubs.map {|s| s.full_name }, 'a-1'
986
+ refute_includes Gem::Specification.all_names, "a-1"
987
+ refute_includes Gem::Specification.stubs.map {|s| s.full_name }, "a-1"
987
988
  end
988
989
 
989
990
  def test_self_stubs_for_lazy_loading
990
991
  Gem.loaded_specs.clear
991
992
  Gem::Specification.class_variable_set(:@@stubs, nil)
992
993
 
993
- dir_standard_specs = File.join Gem.dir, 'specifications'
994
+ dir_standard_specs = File.join Gem.dir, "specifications"
994
995
 
995
- save_gemspec('a-1', '1', dir_standard_specs) {|s| s.name = 'a' }
996
- save_gemspec('b-1', '1', dir_standard_specs) {|s| s.name = 'b' }
996
+ save_gemspec("a-1", "1", dir_standard_specs) {|s| s.name = "a" }
997
+ save_gemspec("b-1", "1", dir_standard_specs) {|s| s.name = "b" }
997
998
 
998
- assert_equal ['a-1'], Gem::Specification.stubs_for('a').map {|s| s.full_name }
999
+ assert_equal ["a-1"], Gem::Specification.stubs_for("a").map {|s| s.full_name }
999
1000
  assert_equal 1, Gem::Specification.class_variable_get(:@@stubs_by_name).length
1000
- assert_equal ['b-1'], Gem::Specification.stubs_for('b').map {|s| s.full_name }
1001
+ assert_equal ["b-1"], Gem::Specification.stubs_for("b").map {|s| s.full_name }
1001
1002
  assert_equal 2, Gem::Specification.class_variable_get(:@@stubs_by_name).length
1002
1003
 
1003
1004
  assert_equal(
1004
- Gem::Specification.stubs_for('a').map {|s| s.object_id },
1005
- Gem::Specification.stubs_for('a').map {|s| s.object_id }
1005
+ Gem::Specification.stubs_for("a").map {|s| s.object_id },
1006
+ Gem::Specification.stubs_for("a").map {|s| s.object_id }
1006
1007
  )
1007
1008
 
1008
- Gem.loaded_specs.delete 'a'
1009
- Gem.loaded_specs.delete 'b'
1009
+ Gem.loaded_specs.delete "a"
1010
+ Gem.loaded_specs.delete "b"
1010
1011
  Gem::Specification.class_variable_set(:@@stubs, nil)
1011
1012
  end
1012
1013
 
1013
1014
  def test_self_stubs_for_no_lazy_loading_after_all_specs_setup
1014
- Gem::Specification.all = [util_spec('a', '1')]
1015
+ Gem::Specification.all = [util_spec("a", "1")]
1015
1016
 
1016
- save_gemspec('b-1', '1', File.join(Gem.dir, 'specifications')) {|s| s.name = 'b' }
1017
+ save_gemspec("b-1", "1", File.join(Gem.dir, "specifications")) {|s| s.name = "b" }
1017
1018
 
1018
- assert_equal [], Gem::Specification.stubs_for('b').map {|s| s.full_name }
1019
+ assert_equal [], Gem::Specification.stubs_for("b").map {|s| s.full_name }
1019
1020
  end
1020
1021
 
1021
1022
  def test_self_stubs_for_mult_platforms
@@ -1025,30 +1026,30 @@ dependencies: []
1025
1026
  orig_platform = Gem.platforms.dup
1026
1027
 
1027
1028
  # create user spec
1028
- user_spec_dir = File.join Gem.user_dir, 'specifications'
1029
+ user_spec_dir = File.join Gem.user_dir, "specifications"
1029
1030
  FileUtils.mkdir_p(user_spec_dir) unless Dir.exist? user_spec_dir
1030
1031
  # dirs doesn't include user ?
1031
1032
  Gem::Specification.dirs << user_spec_dir
1032
1033
 
1033
- gem = 'mingw'
1034
- v = '1.1.1'
1035
- platforms = ['x86-mingw32', 'x64-mingw32']
1034
+ gem = "mingw"
1035
+ v = "1.1.1"
1036
+ platforms = ["x86-mingw32", "x64-mingw32"]
1036
1037
 
1037
1038
  #create specs
1038
1039
  platforms.each do |plat|
1039
1040
  spec = Gem::Specification.new(gem, v) {|s| s.platform = plat }
1040
- File.open File.join(user_spec_dir, "#{gem}-#{v}-#{plat}.gemspec"), 'w' do |io|
1041
+ File.open File.join(user_spec_dir, "#{gem}-#{v}-#{plat}.gemspec"), "w" do |io|
1041
1042
  io.write spec.to_ruby
1042
1043
  end
1043
1044
  end
1044
1045
 
1045
1046
  platforms.each do |plat|
1046
1047
  cur_plat = Gem::Platform.new plat
1047
- Gem.platforms = ['ruby', cur_plat]
1048
+ Gem.platforms = ["ruby", cur_plat]
1048
1049
 
1049
1050
  Gem::Specification.class_variable_set :@@stubs, nil
1050
1051
  Gem::Specification.stubs if plat == platforms.last # test loading via stubs
1051
- t = Gem::Specification.stubs_for 'mingw'
1052
+ t = Gem::Specification.stubs_for "mingw"
1052
1053
 
1053
1054
  assert_equal 1, t.length
1054
1055
  assert_equal cur_plat, t.first.platform
@@ -1058,29 +1059,37 @@ dependencies: []
1058
1059
  end
1059
1060
 
1060
1061
  def test_self_stubs_returns_only_specified_named_specs
1061
- dir_standard_specs = File.join Gem.dir, 'specifications'
1062
+ dir_standard_specs = File.join Gem.dir, "specifications"
1062
1063
 
1063
- save_gemspec('a-1', '1', dir_standard_specs) {|s| s.name = 'a' }
1064
- save_gemspec('a-2', '2', dir_standard_specs) {|s| s.name = 'a' }
1065
- save_gemspec('a-a', '3', dir_standard_specs) {|s| s.name = 'a-a' }
1064
+ save_gemspec("a-1", "1", dir_standard_specs) {|s| s.name = "a" }
1065
+ save_gemspec("a-2", "2", dir_standard_specs) {|s| s.name = "a" }
1066
+ save_gemspec("a-a", "3", dir_standard_specs) {|s| s.name = "a-a" }
1066
1067
 
1067
- assert_equal ['a-1', 'a-2'], Gem::Specification.stubs_for('a').map(&:full_name).sort
1068
+ assert_equal ["a-1", "a-2"], Gem::Specification.stubs_for("a").map(&:full_name).sort
1068
1069
  end
1069
1070
 
1070
1071
  def test_handles_private_null_type
1071
- path = File.expand_path 'data/pry-0.4.7.gemspec.rz', __dir__
1072
+ yaml_defined = Object.const_defined?("YAML")
1073
+
1074
+ path = File.expand_path "data/pry-0.4.7.gemspec.rz", __dir__
1072
1075
 
1073
1076
  data = Marshal.load Gem::Util.inflate(Gem.read_binary(path))
1074
1077
 
1075
1078
  assert_instance_of Gem::Specification, data
1079
+
1080
+ assert_equal(yaml_defined, Object.const_defined?("YAML"))
1076
1081
  end
1077
1082
 
1078
1083
  def test_handles_dependencies_with_syck_requirements_bug
1079
- path = File.expand_path 'data/excon-0.7.7.gemspec.rz', __dir__
1084
+ yaml_defined = Object.const_defined?("YAML")
1085
+
1086
+ path = File.expand_path "data/excon-0.7.7.gemspec.rz", __dir__
1080
1087
 
1081
1088
  data = Marshal.load Gem::Util.inflate(Gem.read_binary(path))
1082
1089
 
1083
1090
  assert_instance_of Gem::Specification, data
1091
+
1092
+ assert_equal(yaml_defined, Object.const_defined?("YAML"))
1084
1093
  end
1085
1094
 
1086
1095
  def test_initialize
@@ -1102,9 +1111,9 @@ dependencies: []
1102
1111
  assert_equal [], spec.extensions
1103
1112
  assert_equal [], spec.requirements
1104
1113
  assert_equal [], spec.dependencies
1105
- assert_equal 'bin', spec.bindir
1106
- assert_equal '>= 0', spec.required_ruby_version.to_s
1107
- assert_equal '>= 0', spec.required_rubygems_version.to_s
1114
+ assert_equal "bin", spec.bindir
1115
+ assert_equal ">= 0", spec.required_ruby_version.to_s
1116
+ assert_equal ">= 0", spec.required_rubygems_version.to_s
1108
1117
  end
1109
1118
 
1110
1119
  def test_initialize_future
@@ -1126,18 +1135,18 @@ dependencies: []
1126
1135
  spec = Gem::Specification.new do |s|
1127
1136
  s.name = "blah"
1128
1137
  s.version = "1.3.5"
1129
- s.summary = 'summary'
1130
- s.description = 'description'
1131
- s.authors = 'author a', 'author b'
1132
- s.licenses = 'BSD-2-Clause'
1133
- s.files = 'lib/file.rb'
1134
- s.test_files = 'test/file.rb'
1135
- s.rdoc_options = '--foo'
1136
- s.extra_rdoc_files = 'README.txt'
1137
- s.executables = 'exec'
1138
- s.extensions = 'ext/extconf.rb'
1139
- s.requirements = 'requirement'
1140
- s.add_dependency 'some_gem'
1138
+ s.summary = "summary"
1139
+ s.description = "description"
1140
+ s.authors = "author a", "author b"
1141
+ s.licenses = "BSD-2-Clause"
1142
+ s.files = "lib/file.rb"
1143
+ s.test_files = "test/file.rb"
1144
+ s.rdoc_options = "--foo"
1145
+ s.extra_rdoc_files = "README.txt"
1146
+ s.executables = "exec"
1147
+ s.extensions = "ext/extconf.rb"
1148
+ s.requirements = "requirement"
1149
+ s.add_dependency "some_gem"
1141
1150
  end
1142
1151
 
1143
1152
  dup_spec = spec.dup
@@ -1151,84 +1160,93 @@ dependencies: []
1151
1160
  assert_equal Gem::Platform::RUBY, spec.platform
1152
1161
  assert_same spec.platform, dup_spec.platform
1153
1162
 
1154
- assert_equal 'summary', spec.summary
1163
+ assert_equal "summary", spec.summary
1155
1164
  assert_same spec.summary, dup_spec.summary
1156
1165
 
1157
1166
  assert_equal %w[README.txt bin/exec ext/extconf.rb lib/file.rb
1158
1167
  test/file.rb].sort,
1159
1168
  spec.files
1160
- refute_same spec.files, dup_spec.files, 'files'
1169
+ refute_same spec.files, dup_spec.files, "files"
1161
1170
 
1162
1171
  assert_equal %w[test/file.rb], spec.test_files
1163
- refute_same spec.test_files, dup_spec.test_files, 'test_files'
1172
+ refute_same spec.test_files, dup_spec.test_files, "test_files"
1164
1173
 
1165
1174
  assert_equal %w[--foo], spec.rdoc_options
1166
- refute_same spec.rdoc_options, dup_spec.rdoc_options, 'rdoc_options'
1175
+ refute_same spec.rdoc_options, dup_spec.rdoc_options, "rdoc_options"
1167
1176
 
1168
1177
  assert_equal %w[README.txt], spec.extra_rdoc_files
1169
1178
  refute_same spec.extra_rdoc_files, dup_spec.extra_rdoc_files,
1170
- 'extra_rdoc_files'
1179
+ "extra_rdoc_files"
1171
1180
 
1172
1181
  assert_equal %w[exec], spec.executables
1173
- refute_same spec.executables, dup_spec.executables, 'executables'
1182
+ refute_same spec.executables, dup_spec.executables, "executables"
1174
1183
 
1175
1184
  assert_equal %w[ext/extconf.rb], spec.extensions
1176
- refute_same spec.extensions, dup_spec.extensions, 'extensions'
1185
+ refute_same spec.extensions, dup_spec.extensions, "extensions"
1177
1186
 
1178
1187
  assert_equal %w[requirement], spec.requirements
1179
- refute_same spec.requirements, dup_spec.requirements, 'requirements'
1188
+ refute_same spec.requirements, dup_spec.requirements, "requirements"
1180
1189
 
1181
- assert_equal [Gem::Dependency.new('some_gem', Gem::Requirement.default)],
1190
+ assert_equal [Gem::Dependency.new("some_gem", Gem::Requirement.default)],
1182
1191
  spec.dependencies
1183
- refute_same spec.dependencies, dup_spec.dependencies, 'dependencies'
1192
+ refute_same spec.dependencies, dup_spec.dependencies, "dependencies"
1184
1193
 
1185
- assert_equal 'bin', spec.bindir
1194
+ assert_equal "bin", spec.bindir
1186
1195
  assert_same spec.bindir, dup_spec.bindir
1187
1196
 
1188
- assert_equal '>= 0', spec.required_ruby_version.to_s
1197
+ assert_equal ">= 0", spec.required_ruby_version.to_s
1189
1198
  assert_same spec.required_ruby_version, dup_spec.required_ruby_version
1190
1199
 
1191
- assert_equal '>= 0', spec.required_rubygems_version.to_s
1200
+ assert_equal ">= 0", spec.required_rubygems_version.to_s
1192
1201
  assert_same spec.required_rubygems_version,
1193
1202
  dup_spec.required_rubygems_version
1194
1203
  end
1195
1204
 
1196
1205
  def test_initialize_copy_broken
1197
1206
  spec = Gem::Specification.new do |s|
1198
- s.name = 'a'
1199
- s.version = '1'
1207
+ s.name = "a"
1208
+ s.version = "1"
1200
1209
  end
1201
1210
 
1202
1211
  spec.instance_variable_set :@licenses, (class << (Object.new);self;end)
1203
- spec.loaded_from = '/path/to/file'
1212
+ spec.loaded_from = "/path/to/file"
1204
1213
 
1205
1214
  e = assert_raise Gem::FormatException do
1206
1215
  spec.dup
1207
1216
  end
1208
1217
 
1209
- assert_equal 'a-1 has an invalid value for @licenses', e.message
1210
- assert_equal '/path/to/file', e.file_path
1218
+ assert_equal "a-1 has an invalid value for @licenses", e.message
1219
+ assert_equal "/path/to/file", e.file_path
1211
1220
  end
1212
1221
 
1213
1222
  def test_initialize_prerelease_version_before_name
1214
1223
  spec = Gem::Specification.new do |s|
1215
- s.version = '1.0.0.dev'
1216
- s.name = 'a'
1224
+ s.version = "1.0.0.dev"
1225
+ s.name = "a"
1217
1226
  end
1218
1227
 
1219
1228
  assert_equal "a", spec.name
1220
1229
  assert_equal "1.0.0.dev", spec.version.to_s
1221
1230
  end
1222
1231
 
1232
+ def test_initialize_nil_version
1233
+ expected = "nil versions are discouraged and will be deprecated in Rubygems 4\n"
1234
+ actual_stdout, actual_stderr = capture_output do
1235
+ Gem::Specification.new.version = nil
1236
+ end
1237
+ assert_empty actual_stdout
1238
+ assert_equal(expected, actual_stderr)
1239
+ end
1240
+
1223
1241
  def test__dump
1224
1242
  @a2.platform = Gem::Platform.local
1225
- @a2.instance_variable_set :@original_platform, 'old_platform'
1243
+ @a2.instance_variable_set :@original_platform, "old_platform"
1226
1244
 
1227
1245
  data = Marshal.dump @a2
1228
1246
 
1229
1247
  same_spec = Marshal.load data
1230
1248
 
1231
- assert_equal 'old_platform', same_spec.original_platform
1249
+ assert_equal "old_platform", same_spec.original_platform
1232
1250
  end
1233
1251
 
1234
1252
  def test_activate
@@ -1247,7 +1265,7 @@ dependencies: []
1247
1265
  end
1248
1266
 
1249
1267
  def test_add_dependency_from_existing_dependency
1250
- dep = Gem::Dependency.new("existing_dep", Gem::Requirement.new('> 1'), :runtime)
1268
+ dep = Gem::Dependency.new("existing_dep", Gem::Requirement.new("> 1"), :runtime)
1251
1269
  spec = Gem::Specification.new {|s| s.add_dependency dep }
1252
1270
  assert_equal dep, spec.dependencies.first
1253
1271
  end
@@ -1262,22 +1280,22 @@ dependencies: []
1262
1280
  end
1263
1281
 
1264
1282
  def test_author
1265
- assert_equal 'A User', @a1.author
1283
+ assert_equal "A User", @a1.author
1266
1284
  end
1267
1285
 
1268
1286
  def test_authors
1269
- assert_equal ['A User'], @a1.authors
1287
+ assert_equal ["A User"], @a1.authors
1270
1288
  end
1271
1289
 
1272
1290
  def test_bindir_equals
1273
- @a1.bindir = 'apps'
1291
+ @a1.bindir = "apps"
1274
1292
 
1275
- assert_equal 'apps', @a1.bindir
1293
+ assert_equal "apps", @a1.bindir
1276
1294
  end
1277
1295
 
1278
1296
  def test_bindir_equals_nil
1279
1297
  @a2.bindir = nil
1280
- @a2.executable = 'app'
1298
+ @a2.executable = "app"
1281
1299
 
1282
1300
  assert_nil @a2.bindir
1283
1301
  assert_equal %w[app lib/code.rb].sort, @a2.files
@@ -1313,14 +1331,14 @@ dependencies: []
1313
1331
 
1314
1332
  assert_empty @ext.build_args
1315
1333
 
1316
- File.open @ext.build_info_file, 'w' do |io|
1334
+ File.open @ext.build_info_file, "w" do |io|
1317
1335
  io.puts
1318
1336
  end
1319
1337
 
1320
1338
  assert_empty @ext.build_args
1321
1339
 
1322
- File.open @ext.build_info_file, 'w' do |io|
1323
- io.puts '--with-foo-dir=wherever'
1340
+ File.open @ext.build_info_file, "w" do |io|
1341
+ io.puts "--with-foo-dir=wherever"
1324
1342
  end
1325
1343
 
1326
1344
  assert_equal %w[--with-foo-dir=wherever], @ext.build_args
@@ -1330,13 +1348,13 @@ dependencies: []
1330
1348
  pend "extensions don't quite work on jruby" if Gem.java_platform?
1331
1349
  ext_spec
1332
1350
 
1333
- assert_path_not_exist @ext.extension_dir, 'sanity check'
1334
- refute_empty @ext.extensions, 'sanity check'
1351
+ assert_path_not_exist @ext.extension_dir, "sanity check"
1352
+ refute_empty @ext.extensions, "sanity check"
1335
1353
 
1336
1354
  extconf_rb = File.join @ext.gem_dir, @ext.extensions.first
1337
1355
  FileUtils.mkdir_p File.dirname extconf_rb
1338
1356
 
1339
- File.open extconf_rb, 'w' do |f|
1357
+ File.open extconf_rb, "w" do |f|
1340
1358
  f.write <<-'RUBY'
1341
1359
  File.open 'Makefile', 'w' do |f|
1342
1360
  f.puts "clean:\n\techo clean"
@@ -1352,13 +1370,13 @@ dependencies: []
1352
1370
  end
1353
1371
 
1354
1372
  def test_default_spec_stub_is_marked_default
1355
- default = new_default_spec 'default', 2
1373
+ default = new_default_spec "default", 2
1356
1374
  install_default_gems default
1357
1375
 
1358
- stub = Gem::Specification.stubs.find {|s| s.name == 'default' }
1376
+ stub = Gem::Specification.stubs.find {|s| s.name == "default" }
1359
1377
  assert_predicate stub, :default_gem?
1360
1378
 
1361
- stub = Gem::Specification.find_all_by_name('default').first
1379
+ stub = Gem::Specification.find_all_by_name("default").first
1362
1380
  assert_predicate stub, :default_gem?
1363
1381
  end
1364
1382
 
@@ -1366,28 +1384,28 @@ dependencies: []
1366
1384
  pend "extensions don't quite work on jruby" if Gem.java_platform?
1367
1385
  ext_spec
1368
1386
 
1369
- refute_empty @ext.extensions, 'sanity check'
1387
+ refute_empty @ext.extensions, "sanity check"
1370
1388
 
1371
1389
  gem_build_complete =
1372
- File.join @ext.extension_dir, 'gem.build_complete'
1390
+ File.join @ext.extension_dir, "gem.build_complete"
1373
1391
 
1374
1392
  FileUtils.mkdir_p @ext.extension_dir
1375
1393
  FileUtils.touch gem_build_complete
1376
1394
 
1377
1395
  @ext.build_extensions
1378
1396
 
1379
- gem_make_out = File.join @ext.extension_dir, 'gem_make.out'
1397
+ gem_make_out = File.join @ext.extension_dir, "gem_make.out"
1380
1398
  assert_path_not_exist gem_make_out
1381
1399
  end
1382
1400
 
1383
1401
  def test_build_extensions_default_gem
1384
- spec = new_default_spec 'default', 1
1385
- spec.extensions << 'extconf.rb'
1402
+ spec = new_default_spec "default", 1
1403
+ spec.extensions << "extconf.rb"
1386
1404
 
1387
1405
  extconf_rb = File.join spec.gem_dir, spec.extensions.first
1388
1406
  FileUtils.mkdir_p File.dirname extconf_rb
1389
1407
 
1390
- File.open extconf_rb, 'w' do |f|
1408
+ File.open extconf_rb, "w" do |f|
1391
1409
  f.write <<-'RUBY'
1392
1410
  File.open 'Makefile', 'w' do |f|
1393
1411
  f.puts "default:\n\techo built"
@@ -1405,7 +1423,7 @@ dependencies: []
1405
1423
  pend "extensions don't quite work on jruby" if Gem.java_platform?
1406
1424
  ext_spec
1407
1425
 
1408
- refute_empty @ext.extensions, 'sanity check'
1426
+ refute_empty @ext.extensions, "sanity check"
1409
1427
 
1410
1428
  assert_raise Gem::Ext::BuildError do
1411
1429
  @ext.build_extensions
@@ -1413,18 +1431,18 @@ dependencies: []
1413
1431
  end
1414
1432
 
1415
1433
  def test_build_extensions_extensions_dir_unwritable
1416
- pend 'chmod not supported' if Gem.win_platform?
1417
- pend 'skipped in root privilege' if Process.uid.zero?
1434
+ pend "chmod not supported" if Gem.win_platform?
1435
+ pend "skipped in root privilege" if Process.uid.zero?
1418
1436
 
1419
1437
  pend "extensions don't quite work on jruby" if Gem.java_platform?
1420
1438
  ext_spec
1421
1439
 
1422
- refute_empty @ext.extensions, 'sanity check'
1440
+ refute_empty @ext.extensions, "sanity check"
1423
1441
 
1424
1442
  extconf_rb = File.join @ext.gem_dir, @ext.extensions.first
1425
1443
  FileUtils.mkdir_p File.dirname extconf_rb
1426
1444
 
1427
- File.open extconf_rb, 'w' do |f|
1445
+ File.open extconf_rb, "w" do |f|
1428
1446
  f.write <<-'RUBY'
1429
1447
  File.open 'Makefile', 'w' do |f|
1430
1448
  f.puts "clean:\n\techo clean"
@@ -1434,30 +1452,30 @@ dependencies: []
1434
1452
  RUBY
1435
1453
  end
1436
1454
 
1437
- FileUtils.mkdir_p File.join @ext.base_dir, 'extensions'
1455
+ FileUtils.mkdir_p File.join @ext.base_dir, "extensions"
1438
1456
  FileUtils.chmod 0555, @ext.base_dir
1439
- FileUtils.chmod 0555, File.join(@ext.base_dir, 'extensions')
1457
+ FileUtils.chmod 0555, File.join(@ext.base_dir, "extensions")
1440
1458
 
1441
1459
  @ext.build_extensions
1442
1460
  assert_path_not_exist @ext.extension_dir
1443
1461
  ensure
1444
- unless ($DEBUG or win_platform? or Process.uid.zero? or Gem.java_platform?)
1445
- FileUtils.chmod 0755, File.join(@ext.base_dir, 'extensions')
1462
+ unless ($DEBUG || win_platform? || Process.uid.zero? || Gem.java_platform?)
1463
+ FileUtils.chmod 0755, File.join(@ext.base_dir, "extensions")
1446
1464
  FileUtils.chmod 0755, @ext.base_dir
1447
1465
  end
1448
1466
  end
1449
1467
 
1450
1468
  def test_build_extensions_no_extensions_dir_unwritable
1451
- pend 'chmod not supported' if Gem.win_platform?
1469
+ pend "chmod not supported" if Gem.win_platform?
1452
1470
  pend "extensions don't quite work on jruby" if Gem.java_platform?
1453
1471
  ext_spec
1454
1472
 
1455
- refute_empty @ext.extensions, 'sanity check'
1473
+ refute_empty @ext.extensions, "sanity check"
1456
1474
 
1457
1475
  extconf_rb = File.join @ext.gem_dir, @ext.extensions.first
1458
1476
  FileUtils.mkdir_p File.dirname extconf_rb
1459
1477
 
1460
- File.open extconf_rb, 'w' do |f|
1478
+ File.open extconf_rb, "w" do |f|
1461
1479
  f.write <<-'RUBY'
1462
1480
  File.open 'Makefile', 'w' do |f|
1463
1481
  f.puts "clean:\n\techo clean"
@@ -1467,20 +1485,20 @@ dependencies: []
1467
1485
  RUBY
1468
1486
  end
1469
1487
 
1470
- FileUtils.rm_r File.join @gemhome, 'extensions'
1488
+ FileUtils.rm_r File.join @gemhome, "extensions"
1471
1489
  FileUtils.chmod 0555, @gemhome
1472
1490
 
1473
1491
  @ext.build_extensions
1474
1492
 
1475
- gem_make_out = File.join @ext.extension_dir, 'gem_make.out'
1493
+ gem_make_out = File.join @ext.extension_dir, "gem_make.out"
1476
1494
  assert_path_not_exist gem_make_out
1477
1495
  ensure
1478
1496
  FileUtils.chmod 0755, @gemhome
1479
1497
  end
1480
1498
 
1481
1499
  def test_build_extensions_none
1482
- assert_path_not_exist @a1.extension_dir, 'sanity check'
1483
- assert_empty @a1.extensions, 'sanity check'
1500
+ assert_path_not_exist @a1.extension_dir, "sanity check"
1501
+ assert_empty @a1.extensions, "sanity check"
1484
1502
 
1485
1503
  @a1.build_extensions
1486
1504
 
@@ -1494,7 +1512,7 @@ dependencies: []
1494
1512
  extconf_rb = File.join @ext.gem_dir, @ext.extensions.first
1495
1513
  FileUtils.mkdir_p File.dirname extconf_rb
1496
1514
 
1497
- File.open extconf_rb, 'w' do |f|
1515
+ File.open extconf_rb, "w" do |f|
1498
1516
  f.write <<-'RUBY'
1499
1517
  File.open 'Makefile', 'w' do |f|
1500
1518
  f.puts "clean:\n\techo clean"
@@ -1504,22 +1522,22 @@ dependencies: []
1504
1522
  RUBY
1505
1523
  end
1506
1524
 
1507
- refute_empty @ext.extensions, 'sanity check'
1525
+ refute_empty @ext.extensions, "sanity check"
1508
1526
 
1509
- @ext.installed_by_version = v('2.2.0.preview.2')
1527
+ @ext.installed_by_version = v("2.2.0.preview.2")
1510
1528
 
1511
1529
  @ext.build_extensions
1512
1530
 
1513
- gem_make_out = File.join @ext.extension_dir, 'gem_make.out'
1531
+ gem_make_out = File.join @ext.extension_dir, "gem_make.out"
1514
1532
  assert_path_exist gem_make_out
1515
1533
  end
1516
1534
 
1517
1535
  def test_contains_requirable_file_eh
1518
- code_rb = File.join @a1.gem_dir, 'lib', 'code.rb'
1536
+ code_rb = File.join @a1.gem_dir, "lib", "code.rb"
1519
1537
  FileUtils.mkdir_p File.dirname code_rb
1520
1538
  FileUtils.touch code_rb
1521
1539
 
1522
- assert @a1.contains_requirable_file? 'code'
1540
+ assert @a1.contains_requirable_file? "code"
1523
1541
  end
1524
1542
 
1525
1543
  def test_contains_requirable_file_eh_extension
@@ -1527,7 +1545,7 @@ dependencies: []
1527
1545
  ext_spec
1528
1546
 
1529
1547
  _, err = capture_output do
1530
- refute @ext.contains_requirable_file? 'nonexistent'
1548
+ refute @ext.contains_requirable_file? "nonexistent"
1531
1549
  end
1532
1550
 
1533
1551
  expected = "Ignoring ext-1 because its extensions are not built. " +
@@ -1540,7 +1558,7 @@ dependencies: []
1540
1558
  ext_spec(platform: Gem::Platform.new("java"))
1541
1559
 
1542
1560
  _, err = capture_output do
1543
- refute @ext.contains_requirable_file? 'nonexistent'
1561
+ refute @ext.contains_requirable_file? "nonexistent"
1544
1562
  end
1545
1563
 
1546
1564
  assert_empty err
@@ -1556,13 +1574,13 @@ dependencies: []
1556
1574
  end
1557
1575
 
1558
1576
  def test_date_equals_string
1559
- @a1.date = '2003-09-17'
1577
+ @a1.date = "2003-09-17"
1560
1578
  assert_equal Time.utc(2003, 9, 17, 0,0,0), @a1.date
1561
1579
  end
1562
1580
 
1563
1581
  def test_date_equals_string_bad
1564
1582
  assert_raise Gem::InvalidSpecificationException do
1565
- @a1.date = '9/11/2003'
1583
+ @a1.date = "9/11/2003"
1566
1584
  end
1567
1585
  end
1568
1586
 
@@ -1609,7 +1627,7 @@ dependencies: []
1609
1627
 
1610
1628
  assert_empty @gem.dependent_gems
1611
1629
 
1612
- bonobo = util_spec 'bonobo', 1
1630
+ bonobo = util_spec "bonobo", 1
1613
1631
  install_gem bonobo
1614
1632
  install_gem @gem
1615
1633
 
@@ -1621,11 +1639,11 @@ dependencies: []
1621
1639
  end
1622
1640
 
1623
1641
  def test_doc_dir
1624
- assert_equal File.join(@gemhome, 'doc', 'a-1'), @a1.doc_dir
1642
+ assert_equal File.join(@gemhome, "doc", "a-1"), @a1.doc_dir
1625
1643
  end
1626
1644
 
1627
1645
  def test_doc_dir_type
1628
- assert_equal File.join(@gemhome, 'doc', 'a-1', 'ri'), @a1.doc_dir('ri')
1646
+ assert_equal File.join(@gemhome, "doc", "a-1", "ri"), @a1.doc_dir("ri")
1629
1647
  end
1630
1648
 
1631
1649
  def test_runtime_dependencies
@@ -1639,12 +1657,12 @@ dependencies: []
1639
1657
  end
1640
1658
 
1641
1659
  def test_description
1642
- assert_equal 'This is a test description', @a1.description
1660
+ assert_equal "This is a test description", @a1.description
1643
1661
  end
1644
1662
 
1645
1663
  def test_eql_eh
1646
- g1 = util_spec 'gem', 1
1647
- g2 = util_spec 'gem', 1
1664
+ g1 = util_spec "gem", 1
1665
+ g2 = util_spec "gem", 1
1648
1666
 
1649
1667
  assert_equal g1, g2
1650
1668
  assert_equal g1.hash, g2.hash
@@ -1653,47 +1671,47 @@ dependencies: []
1653
1671
 
1654
1672
  def test_eql_eh_extensions
1655
1673
  spec = @a1.dup
1656
- spec.extensions = 'xx'
1674
+ spec.extensions = "xx"
1657
1675
 
1658
1676
  refute_operator @a1, :eql?, spec
1659
1677
  refute_operator spec, :eql?, @a1
1660
1678
  end
1661
1679
 
1662
1680
  def test_executables
1663
- @a1.executable = 'app'
1681
+ @a1.executable = "app"
1664
1682
  assert_equal %w[app], @a1.executables
1665
1683
  end
1666
1684
 
1667
1685
  def test_executable_equals
1668
- @a2.executable = 'app'
1669
- assert_equal 'app', @a2.executable
1686
+ @a2.executable = "app"
1687
+ assert_equal "app", @a2.executable
1670
1688
  assert_equal %w[bin/app lib/code.rb].sort, @a2.files
1671
1689
  end
1672
1690
 
1673
1691
  def test_extensions
1674
- assert_equal ['ext/extconf.rb'], ext_spec.extensions
1692
+ assert_equal ["ext/extconf.rb"], ext_spec.extensions
1675
1693
  end
1676
1694
 
1677
1695
  def test_extension_dir
1678
- enable_shared, RbConfig::CONFIG['ENABLE_SHARED'] =
1679
- RbConfig::CONFIG['ENABLE_SHARED'], 'no'
1696
+ enable_shared, RbConfig::CONFIG["ENABLE_SHARED"] =
1697
+ RbConfig::CONFIG["ENABLE_SHARED"], "no"
1680
1698
 
1681
1699
  ext_spec
1682
1700
 
1683
1701
  refute_empty @ext.extensions
1684
1702
 
1685
1703
  expected =
1686
- File.join(@ext.base_dir, 'extensions', Gem::Platform.local.to_s,
1704
+ File.join(@ext.base_dir, "extensions", Gem::Platform.local.to_s,
1687
1705
  "#{Gem.ruby_api_version}-static", @ext.full_name)
1688
1706
 
1689
1707
  assert_equal expected, @ext.extension_dir
1690
1708
  ensure
1691
- RbConfig::CONFIG['ENABLE_SHARED'] = enable_shared
1709
+ RbConfig::CONFIG["ENABLE_SHARED"] = enable_shared
1692
1710
  end
1693
1711
 
1694
1712
  def test_extension_dir_override
1695
- enable_shared, RbConfig::CONFIG['ENABLE_SHARED'] =
1696
- RbConfig::CONFIG['ENABLE_SHARED'], 'no'
1713
+ enable_shared, RbConfig::CONFIG["ENABLE_SHARED"] =
1714
+ RbConfig::CONFIG["ENABLE_SHARED"], "no"
1697
1715
 
1698
1716
  class << Gem
1699
1717
  alias orig_default_ext_dir_for default_ext_dir_for
@@ -1701,7 +1719,7 @@ dependencies: []
1701
1719
  remove_method :default_ext_dir_for
1702
1720
 
1703
1721
  def Gem.default_ext_dir_for(base_dir)
1704
- 'elsewhere'
1722
+ "elsewhere"
1705
1723
  end
1706
1724
  end
1707
1725
 
@@ -1709,11 +1727,11 @@ dependencies: []
1709
1727
 
1710
1728
  refute_empty @ext.extensions
1711
1729
 
1712
- expected = File.join @tempdir, 'elsewhere', @ext.full_name
1730
+ expected = File.join @tempdir, "elsewhere", @ext.full_name
1713
1731
 
1714
1732
  assert_equal expected, @ext.extension_dir
1715
1733
  ensure
1716
- RbConfig::CONFIG['ENABLE_SHARED'] = enable_shared
1734
+ RbConfig::CONFIG["ENABLE_SHARED"] = enable_shared
1717
1735
 
1718
1736
  class << Gem
1719
1737
  remove_method :default_ext_dir_for
@@ -1803,9 +1821,9 @@ dependencies: []
1803
1821
  end
1804
1822
 
1805
1823
  def test_for_cache
1806
- @a2.add_runtime_dependency 'b', '1'
1824
+ @a2.add_runtime_dependency "b", "1"
1807
1825
  @a2.dependencies.first.instance_variable_set :@type, nil
1808
- @a2.required_rubygems_version = Gem::Requirement.new '> 0'
1826
+ @a2.required_rubygems_version = Gem::Requirement.new "> 0"
1809
1827
  @a2.test_files = %w[test/test_b.rb]
1810
1828
 
1811
1829
  refute_empty @a2.files
@@ -1821,11 +1839,11 @@ dependencies: []
1821
1839
  end
1822
1840
 
1823
1841
  def test_full_gem_path
1824
- assert_equal File.join(@gemhome, 'gems', @a1.full_name), @a1.full_gem_path
1842
+ assert_equal File.join(@gemhome, "gems", @a1.full_name), @a1.full_gem_path
1825
1843
 
1826
- @a1.original_platform = 'mswin32'
1844
+ @a1.original_platform = "mswin32"
1827
1845
 
1828
- assert_equal File.join(@gemhome, 'gems', @a1.original_name),
1846
+ assert_equal File.join(@gemhome, "gems", @a1.original_name),
1829
1847
  @a1.full_gem_path
1830
1848
  end
1831
1849
 
@@ -1838,40 +1856,40 @@ dependencies: []
1838
1856
  end
1839
1857
 
1840
1858
  def test_full_name
1841
- assert_equal 'a-1', @a1.full_name
1859
+ assert_equal "a-1", @a1.full_name
1842
1860
 
1843
1861
  @a1 = Gem::Specification.new "a", 1
1844
- @a1.platform = Gem::Platform.new ['universal', 'darwin', nil]
1845
- assert_equal 'a-1-universal-darwin', @a1.full_name
1862
+ @a1.platform = Gem::Platform.new ["universal", "darwin", nil]
1863
+ assert_equal "a-1-universal-darwin", @a1.full_name
1846
1864
 
1847
1865
  @a1 = Gem::Specification.new "a", 1
1848
- @a1.instance_variable_set :@new_platform, 'mswin32'
1849
- assert_equal 'a-1-mswin32', @a1.full_name, 'legacy'
1866
+ @a1.instance_variable_set :@new_platform, "mswin32"
1867
+ assert_equal "a-1-mswin32", @a1.full_name, "legacy"
1850
1868
 
1851
1869
  return if win_platform?
1852
1870
 
1853
1871
  @a1 = Gem::Specification.new "a", 1
1854
- @a1.platform = 'current'
1855
- assert_equal 'a-1-x86-darwin-8', @a1.full_name
1872
+ @a1.platform = "current"
1873
+ assert_equal "a-1-x86-darwin-8", @a1.full_name
1856
1874
  end
1857
1875
 
1858
1876
  def test_full_name_windows
1859
1877
  test_cases = {
1860
- 'i386-mswin32' => 'a-1-x86-mswin32-60',
1861
- 'i386-mswin32_80' => 'a-1-x86-mswin32-80',
1862
- 'i386-mingw32' => 'a-1-x86-mingw32',
1878
+ "i386-mswin32" => "a-1-x86-mswin32-60",
1879
+ "i386-mswin32_80" => "a-1-x86-mswin32-80",
1880
+ "i386-mingw32" => "a-1-x86-mingw32",
1863
1881
  }
1864
1882
 
1865
1883
  test_cases.each do |arch, expected|
1866
1884
  @a1 = Gem::Specification.new "a", 1
1867
1885
  util_set_arch arch
1868
- @a1.platform = 'current'
1886
+ @a1.platform = "current"
1869
1887
  assert_equal expected, @a1.full_name
1870
1888
  end
1871
1889
  end
1872
1890
 
1873
1891
  def test_gem_build_complete_path
1874
- expected = File.join @a1.extension_dir, 'gem.build_complete'
1892
+ expected = File.join @a1.extension_dir, "gem.build_complete"
1875
1893
  assert_equal expected, @a1.gem_build_complete_path
1876
1894
  end
1877
1895
 
@@ -1915,23 +1933,23 @@ dependencies: []
1915
1933
  end
1916
1934
 
1917
1935
  def test_license
1918
- assert_equal 'MIT', @a1.license
1936
+ assert_equal "MIT", @a1.license
1919
1937
  end
1920
1938
 
1921
1939
  def test_licenses
1922
- assert_equal ['MIT'], @a1.licenses
1940
+ assert_equal ["MIT"], @a1.licenses
1923
1941
  end
1924
1942
 
1925
1943
  def test_name
1926
- assert_equal 'a', @a1.name
1944
+ assert_equal "a", @a1.name
1927
1945
  end
1928
1946
 
1929
1947
  def test_original_name
1930
- assert_equal 'a-1', @a1.full_name
1948
+ assert_equal "a-1", @a1.full_name
1931
1949
 
1932
- @a1.platform = 'i386-linux'
1933
- @a1.instance_variable_set :@original_platform, 'i386-linux'
1934
- assert_equal 'a-1-i386-linux', @a1.original_name
1950
+ @a1.platform = "i386-linux"
1951
+ @a1.instance_variable_set :@original_platform, "i386-linux"
1952
+ assert_equal "a-1-i386-linux", @a1.original_name
1935
1953
  end
1936
1954
 
1937
1955
  def test_platform
@@ -1960,10 +1978,10 @@ dependencies: []
1960
1978
  assert_equal Gem::Platform::RUBY, @a1.platform
1961
1979
 
1962
1980
  test_cases = {
1963
- 'i386-mswin32' => ['x86', 'mswin32', '60'],
1964
- 'i386-mswin32_80' => ['x86', 'mswin32', '80'],
1965
- 'i386-mingw32' => ['x86', 'mingw32', nil ],
1966
- 'x86-darwin8' => ['x86', 'darwin', '8' ],
1981
+ "i386-mswin32" => ["x86", "mswin32", "60"],
1982
+ "i386-mswin32_80" => ["x86", "mswin32", "80"],
1983
+ "i386-mingw32" => ["x86", "mingw32", nil ],
1984
+ "x86-darwin8" => ["x86", "darwin", "8" ],
1967
1985
  }
1968
1986
 
1969
1987
  test_cases.each do |arch, expected|
@@ -1980,29 +1998,29 @@ dependencies: []
1980
1998
  end
1981
1999
 
1982
2000
  def test_platform_equals_legacy
1983
- @a1.platform = 'mswin32'
1984
- assert_equal Gem::Platform.new('x86-mswin32'), @a1.platform
2001
+ @a1.platform = "mswin32"
2002
+ assert_equal Gem::Platform.new("x86-mswin32"), @a1.platform
1985
2003
 
1986
- @a1.platform = 'i586-linux'
1987
- assert_equal Gem::Platform.new('x86-linux'), @a1.platform
2004
+ @a1.platform = "i586-linux"
2005
+ assert_equal Gem::Platform.new("x86-linux"), @a1.platform
1988
2006
 
1989
- @a1.platform = 'powerpc-darwin'
1990
- assert_equal Gem::Platform.new('ppc-darwin'), @a1.platform
2007
+ @a1.platform = "powerpc-darwin"
2008
+ assert_equal Gem::Platform.new("ppc-darwin"), @a1.platform
1991
2009
  end
1992
2010
 
1993
2011
  def test_prerelease_spec_adds_required_rubygems_version
1994
- @prerelease = util_spec('tardis', '2.2.0.a')
1995
- refute @prerelease.required_rubygems_version.satisfied_by?(Gem::Version.new('1.3.1'))
1996
- assert @prerelease.required_rubygems_version.satisfied_by?(Gem::Version.new('1.4.0'))
2012
+ @prerelease = util_spec("tardis", "2.2.0.a")
2013
+ refute @prerelease.required_rubygems_version.satisfied_by?(Gem::Version.new("1.3.1"))
2014
+ assert @prerelease.required_rubygems_version.satisfied_by?(Gem::Version.new("1.4.0"))
1997
2015
  end
1998
2016
 
1999
2017
  def test_require_paths
2000
- enable_shared 'no' do
2018
+ enable_shared "no" do
2001
2019
  ext_spec
2002
2020
 
2003
- @ext.require_paths = 'lib'
2021
+ @ext.require_paths = "lib"
2004
2022
 
2005
- assert_equal [@ext.extension_dir, 'lib'], @ext.require_paths
2023
+ assert_equal [@ext.extension_dir, "lib"], @ext.require_paths
2006
2024
  end
2007
2025
  end
2008
2026
 
@@ -2014,15 +2032,15 @@ dependencies: []
2014
2032
  end
2015
2033
 
2016
2034
  def Gem.default_ext_dir_for(base_dir)
2017
- '/foo'
2035
+ "/foo"
2018
2036
  end
2019
2037
 
2020
- enable_shared 'no' do
2038
+ enable_shared "no" do
2021
2039
  ext_spec
2022
2040
 
2023
- @ext.require_paths = 'lib'
2041
+ @ext.require_paths = "lib"
2024
2042
 
2025
- assert_equal [File.expand_path('/foo/ext-1'), 'lib'], @ext.require_paths
2043
+ assert_equal [File.expand_path("/foo/ext-1"), "lib"], @ext.require_paths
2026
2044
  end
2027
2045
  ensure
2028
2046
  class << Gem
@@ -2040,7 +2058,7 @@ dependencies: []
2040
2058
  ext_spec
2041
2059
 
2042
2060
  @ext.require_paths = %w[lib ext foo]
2043
- @ext.extensions << 'bar/baz'
2061
+ @ext.extensions << "bar/baz"
2044
2062
 
2045
2063
  expected = %w[
2046
2064
  lib
@@ -2055,10 +2073,10 @@ dependencies: []
2055
2073
  def test_full_require_paths
2056
2074
  ext_spec
2057
2075
 
2058
- @ext.require_paths = 'lib'
2076
+ @ext.require_paths = "lib"
2059
2077
 
2060
2078
  expected = [
2061
- File.join(@gemhome, 'gems', @ext.original_name, 'lib'),
2079
+ File.join(@gemhome, "gems", @ext.original_name, "lib"),
2062
2080
  @ext.extension_dir,
2063
2081
  ]
2064
2082
 
@@ -2068,10 +2086,10 @@ dependencies: []
2068
2086
  def test_to_fullpath
2069
2087
  ext_spec
2070
2088
 
2071
- @ext.require_paths = 'lib'
2089
+ @ext.require_paths = "lib"
2072
2090
 
2073
- dir = File.join(@gemhome, 'gems', @ext.original_name, 'lib')
2074
- expected_rb = File.join(dir, 'code.rb')
2091
+ dir = File.join(@gemhome, "gems", @ext.original_name, "lib")
2092
+ expected_rb = File.join(dir, "code.rb")
2075
2093
  FileUtils.mkdir_p dir
2076
2094
  FileUtils.touch expected_rb
2077
2095
 
@@ -2105,10 +2123,10 @@ dependencies: []
2105
2123
  def test_fullpath_return_rb_extension_file_when_exist_the_same_name_file
2106
2124
  ext_spec
2107
2125
 
2108
- @ext.require_paths = 'lib'
2126
+ @ext.require_paths = "lib"
2109
2127
 
2110
- dir = File.join(@gemhome, 'gems', @ext.original_name, 'lib')
2111
- expected_rb = File.join(dir, 'code.rb')
2128
+ dir = File.join(@gemhome, "gems", @ext.original_name, "lib")
2129
+ expected_rb = File.join(dir, "code.rb")
2112
2130
  FileUtils.mkdir_p dir
2113
2131
  FileUtils.touch expected_rb
2114
2132
 
@@ -2160,12 +2178,12 @@ dependencies: []
2160
2178
  end
2161
2179
 
2162
2180
  def test_requirements
2163
- assert_equal ['A working computer'], @a1.requirements
2181
+ assert_equal ["A working computer"], @a1.requirements
2164
2182
  end
2165
2183
 
2166
2184
  def test_allowed_push_host
2167
- assert_nil @a1.metadata['allowed_push_host']
2168
- assert_equal 'https://privategemserver.com', @a3.metadata['allowed_push_host']
2185
+ assert_nil @a1.metadata["allowed_push_host"]
2186
+ assert_equal "https://privategemserver.com", @a3.metadata["allowed_push_host"]
2169
2187
  end
2170
2188
 
2171
2189
  def test_runtime_dependencies_legacy
@@ -2181,8 +2199,8 @@ dependencies: []
2181
2199
  end
2182
2200
 
2183
2201
  def test_spaceship_name
2184
- s1 = util_spec 'a', '1'
2185
- s2 = util_spec 'b', '1'
2202
+ s1 = util_spec "a", "1"
2203
+ s2 = util_spec "b", "1"
2186
2204
 
2187
2205
  assert_equal(-1, (s1 <=> s2))
2188
2206
  assert_equal(0, (s1 <=> s1))
@@ -2190,9 +2208,9 @@ dependencies: []
2190
2208
  end
2191
2209
 
2192
2210
  def test_spaceship_platform
2193
- s1 = util_spec 'a', '1'
2194
- s2 = util_spec 'a', '1' do |s|
2195
- s.platform = Gem::Platform.new 'x86-my_platform1'
2211
+ s1 = util_spec "a", "1"
2212
+ s2 = util_spec "a", "1" do |s|
2213
+ s.platform = Gem::Platform.new "x86-my_platform1"
2196
2214
  end
2197
2215
 
2198
2216
  assert_equal(-1, (s1 <=> s2))
@@ -2201,8 +2219,8 @@ dependencies: []
2201
2219
  end
2202
2220
 
2203
2221
  def test_spaceship_version
2204
- s1 = util_spec 'a', '1'
2205
- s2 = util_spec 'a', '2'
2222
+ s1 = util_spec "a", "1"
2223
+ s2 = util_spec "a", "2"
2206
2224
 
2207
2225
  assert_equal(-1, (s1 <=> s2))
2208
2226
  assert_equal(0, (s1 <=> s1))
@@ -2210,25 +2228,25 @@ dependencies: []
2210
2228
  end
2211
2229
 
2212
2230
  def test_spec_file
2213
- assert_equal File.join(@gemhome, 'specifications', 'a-1.gemspec'),
2231
+ assert_equal File.join(@gemhome, "specifications", "a-1.gemspec"),
2214
2232
  @a1.spec_file
2215
2233
  end
2216
2234
 
2217
2235
  def test_spec_name
2218
- assert_equal 'a-1.gemspec', @a1.spec_name
2236
+ assert_equal "a-1.gemspec", @a1.spec_name
2219
2237
  end
2220
2238
 
2221
2239
  def test_summary
2222
- assert_equal 'this is a summary', @a1.summary
2240
+ assert_equal "this is a summary", @a1.summary
2223
2241
  end
2224
2242
 
2225
2243
  def test_test_files
2226
- @a1.test_file = 'test/suite.rb'
2227
- assert_equal ['test/suite.rb'], @a1.test_files
2244
+ @a1.test_file = "test/suite.rb"
2245
+ assert_equal ["test/suite.rb"], @a1.test_files
2228
2246
  end
2229
2247
 
2230
2248
  def test_runtime_predicate_true
2231
- @a2.add_runtime_dependency 'b', '1'
2249
+ @a2.add_runtime_dependency "b", "1"
2232
2250
  assert_predicate @a2.dependencies.first, :runtime?
2233
2251
 
2234
2252
  @a2.dependencies.first.instance_variable_set :@type, nil
@@ -2236,15 +2254,15 @@ dependencies: []
2236
2254
  end
2237
2255
 
2238
2256
  def test_runtime_predicate_false
2239
- @a2.add_development_dependency 'b', '1'
2257
+ @a2.add_development_dependency "b", "1"
2240
2258
  refute_predicate @a2.dependencies.first, :runtime?
2241
2259
  end
2242
2260
 
2243
2261
  def test_to_ruby
2244
- @a2.add_runtime_dependency 'b', '1'
2262
+ @a2.add_runtime_dependency "b", "1"
2245
2263
  @a2.dependencies.first.instance_variable_set :@type, nil
2246
- @a2.required_rubygems_version = Gem::Requirement.new '> 0'
2247
- @a2.require_paths << 'other'
2264
+ @a2.required_rubygems_version = Gem::Requirement.new "> 0"
2265
+ @a2.require_paths << "other"
2248
2266
 
2249
2267
  ruby_code = @a2.to_ruby
2250
2268
 
@@ -2267,15 +2285,9 @@ Gem::Specification.new do |s|
2267
2285
  s.rubygems_version = "#{Gem::VERSION}".freeze
2268
2286
  s.summary = "this is a summary".freeze
2269
2287
 
2270
- if s.respond_to? :specification_version then
2271
- s.specification_version = #{Gem::Specification::CURRENT_SPECIFICATION_VERSION}
2272
- end
2288
+ s.specification_version = #{Gem::Specification::CURRENT_SPECIFICATION_VERSION}
2273
2289
 
2274
- if s.respond_to? :add_runtime_dependency then
2275
- s.add_runtime_dependency(%q<b>.freeze, [\"= 1\"])
2276
- else
2277
- s.add_dependency(%q<b>.freeze, [\"= 1\"])
2278
- end
2290
+ s.add_runtime_dependency(%q<b>.freeze, [\"= 1\"])
2279
2291
  end
2280
2292
  SPEC
2281
2293
 
@@ -2287,8 +2299,8 @@ end
2287
2299
  end
2288
2300
 
2289
2301
  def test_to_ruby_with_rsa_key
2290
- require 'rubygems/openssl'
2291
- pend 'openssl is missing' unless defined?(OpenSSL::PKey::RSA)
2302
+ require "rubygems/openssl"
2303
+ pend "openssl is missing" unless defined?(OpenSSL::PKey::RSA)
2292
2304
 
2293
2305
  rsa_key = OpenSSL::PKey::RSA.new(2048)
2294
2306
  @a2.signing_key = rsa_key
@@ -2319,9 +2331,9 @@ end
2319
2331
  end
2320
2332
 
2321
2333
  def test_to_ruby_for_cache
2322
- @a2.add_runtime_dependency 'b', '1'
2334
+ @a2.add_runtime_dependency "b", "1"
2323
2335
  @a2.dependencies.first.instance_variable_set :@type, nil
2324
- @a2.required_rubygems_version = Gem::Requirement.new '> 0'
2336
+ @a2.required_rubygems_version = Gem::Requirement.new "> 0"
2325
2337
  @a2.installed_by_version = Gem.rubygems_version
2326
2338
 
2327
2339
  # cached specs do not have spec.files populated:
@@ -2347,15 +2359,9 @@ Gem::Specification.new do |s|
2347
2359
 
2348
2360
  s.installed_by_version = "#{Gem::VERSION}" if s.respond_to? :installed_by_version
2349
2361
 
2350
- if s.respond_to? :specification_version then
2351
- s.specification_version = #{Gem::Specification::CURRENT_SPECIFICATION_VERSION}
2352
- end
2362
+ s.specification_version = #{Gem::Specification::CURRENT_SPECIFICATION_VERSION}
2353
2363
 
2354
- if s.respond_to? :add_runtime_dependency then
2355
- s.add_runtime_dependency(%q<b>.freeze, [\"= 1\"])
2356
- else
2357
- s.add_dependency(%q<b>.freeze, [\"= 1\"])
2358
- end
2364
+ s.add_runtime_dependency(%q<b>.freeze, [\"= 1\"])
2359
2365
  end
2360
2366
  SPEC
2361
2367
 
@@ -2406,19 +2412,11 @@ Gem::Specification.new do |s|
2406
2412
  s.summary = "this is a summary".freeze
2407
2413
  s.test_files = ["test/suite.rb".freeze]
2408
2414
 
2409
- if s.respond_to? :specification_version then
2410
- s.specification_version = 4
2411
- end
2415
+ s.specification_version = 4
2412
2416
 
2413
- if s.respond_to? :add_runtime_dependency then
2414
- s.add_runtime_dependency(%q<rake>.freeze, [\"> 0.4\"])
2415
- s.add_runtime_dependency(%q<jabber4r>.freeze, [\"> 0.0.0\"])
2416
- s.add_runtime_dependency(%q<pqa>.freeze, [\"> 0.4\", \"<= 0.6\"])
2417
- else
2418
- s.add_dependency(%q<rake>.freeze, [\"> 0.4\"])
2419
- s.add_dependency(%q<jabber4r>.freeze, [\"> 0.0.0\"])
2420
- s.add_dependency(%q<pqa>.freeze, [\"> 0.4\", \"<= 0.6\"])
2421
- end
2417
+ s.add_runtime_dependency(%q<rake>.freeze, [\"> 0.4\"])
2418
+ s.add_runtime_dependency(%q<jabber4r>.freeze, [\"> 0.0.0\"])
2419
+ s.add_runtime_dependency(%q<pqa>.freeze, [\"> 0.4\", \"<= 0.6\"])
2422
2420
  end
2423
2421
  SPEC
2424
2422
 
@@ -2430,8 +2428,8 @@ end
2430
2428
  end
2431
2429
 
2432
2430
  def test_to_ruby_keeps_requirements_as_originally_specified
2433
- spec = util_spec 'a', '1' do |s|
2434
- s.add_dependency 'b', ['~> 1.0', '>= 1.0.0']
2431
+ spec = util_spec "a", "1" do |s|
2432
+ s.add_dependency "b", ["~> 1.0", ">= 1.0.0"]
2435
2433
  end
2436
2434
 
2437
2435
  assert_includes spec.to_ruby, '"~> 1.0", ">= 1.0.0"'
@@ -2460,13 +2458,13 @@ end
2460
2458
 
2461
2459
  def test_to_ruby_platform
2462
2460
  @a2.platform = Gem::Platform.local
2463
- @a2.instance_variable_set :@original_platform, 'old_platform'
2461
+ @a2.instance_variable_set :@original_platform, "old_platform"
2464
2462
 
2465
2463
  ruby_code = @a2.to_ruby
2466
2464
 
2467
2465
  same_spec = eval ruby_code
2468
2466
 
2469
- assert_equal 'old_platform', same_spec.original_platform
2467
+ assert_equal "old_platform", same_spec.original_platform
2470
2468
  end
2471
2469
 
2472
2470
  def test_to_yaml
@@ -2491,21 +2489,21 @@ end
2491
2489
  end
2492
2490
 
2493
2491
  def test_to_yaml_platform_empty_string
2494
- @a1.instance_variable_set :@original_platform, ''
2492
+ @a1.instance_variable_set :@original_platform, ""
2495
2493
 
2496
2494
  assert_match %r{^platform: ruby$}, @a1.to_yaml
2497
2495
  end
2498
2496
 
2499
2497
  def test_to_yaml_platform_legacy
2500
- @a1.platform = 'powerpc-darwin7.9.0'
2501
- @a1.instance_variable_set :@original_platform, 'powerpc-darwin7.9.0'
2498
+ @a1.platform = "powerpc-darwin7.9.0"
2499
+ @a1.instance_variable_set :@original_platform, "powerpc-darwin7.9.0"
2502
2500
 
2503
2501
  yaml_str = @a1.to_yaml
2504
2502
 
2505
2503
  same_spec = load_yaml yaml_str
2506
2504
 
2507
- assert_equal Gem::Platform.new('powerpc-darwin7'), same_spec.platform
2508
- assert_equal 'powerpc-darwin7.9.0', same_spec.original_platform
2505
+ assert_equal Gem::Platform.new("powerpc-darwin7"), same_spec.platform
2506
+ assert_equal "powerpc-darwin7.9.0", same_spec.original_platform
2509
2507
  end
2510
2508
 
2511
2509
  def test_to_yaml_platform_nil
@@ -2522,7 +2520,7 @@ end
2522
2520
  end
2523
2521
  end
2524
2522
 
2525
- def x(s); s.gsub(/xxx/, ''); end
2523
+ def x(s); s.gsub(/xxx/, ""); end
2526
2524
  def w; x "WARxxxNING"; end
2527
2525
  def t; x "TOxxxDO"; end
2528
2526
  def f; x "FxxxIXME"; end
@@ -2537,7 +2535,7 @@ end
2537
2535
  @a1.validate
2538
2536
  end
2539
2537
 
2540
- assert_match "#{w}: no author specified\n", @ui.error, 'error'
2538
+ assert_match "#{w}: no author specified\n", @ui.error, "error"
2541
2539
 
2542
2540
  @a1.authors = [Object.new]
2543
2541
 
@@ -2571,14 +2569,14 @@ end
2571
2569
  util_setup_validate
2572
2570
 
2573
2571
  Dir.chdir @tempdir do
2574
- @a1.autorequire = 'code'
2572
+ @a1.autorequire = "code"
2575
2573
 
2576
2574
  use_ui @ui do
2577
2575
  @a1.validate
2578
2576
  end
2579
2577
 
2580
2578
  assert_match "#{w}: deprecated autorequire specified\n",
2581
- @ui.error, 'error'
2579
+ @ui.error, "error"
2582
2580
  end
2583
2581
  end
2584
2582
 
@@ -2586,19 +2584,19 @@ end
2586
2584
  util_setup_validate
2587
2585
 
2588
2586
  Dir.chdir @tempdir do
2589
- @a1.add_runtime_dependency 'b', '>= 1.0.rc1'
2590
- @a1.add_development_dependency 'c', '>= 2.0.rc2'
2591
- @a1.add_runtime_dependency 'd', '~> 1.2.3'
2592
- @a1.add_runtime_dependency 'e', '~> 1.2.3.4'
2593
- @a1.add_runtime_dependency 'g', '~> 1.2.3', '>= 1.2.3.4'
2594
- @a1.add_runtime_dependency 'h', '>= 1.2.3', '<= 2'
2595
- @a1.add_runtime_dependency 'i', '>= 1.2'
2596
- @a1.add_runtime_dependency 'j', '>= 1.2.3'
2597
- @a1.add_runtime_dependency 'k', '> 1.2'
2598
- @a1.add_runtime_dependency 'l', '> 1.2.3'
2599
- @a1.add_runtime_dependency 'm', '~> 2.1.0'
2600
- @a1.add_runtime_dependency 'n', '~> 0.1.0'
2601
- @a1.add_runtime_dependency 'o'
2587
+ @a1.add_runtime_dependency "b", ">= 1.0.rc1"
2588
+ @a1.add_development_dependency "c", ">= 2.0.rc2"
2589
+ @a1.add_runtime_dependency "d", "~> 1.2.3"
2590
+ @a1.add_runtime_dependency "e", "~> 1.2.3.4"
2591
+ @a1.add_runtime_dependency "g", "~> 1.2.3", ">= 1.2.3.4"
2592
+ @a1.add_runtime_dependency "h", ">= 1.2.3", "<= 2"
2593
+ @a1.add_runtime_dependency "i", ">= 1.2"
2594
+ @a1.add_runtime_dependency "j", ">= 1.2.3"
2595
+ @a1.add_runtime_dependency "k", "> 1.2"
2596
+ @a1.add_runtime_dependency "l", "> 1.2.3"
2597
+ @a1.add_runtime_dependency "m", "~> 2.1.0"
2598
+ @a1.add_runtime_dependency "n", "~> 0.1.0"
2599
+ @a1.add_runtime_dependency "o"
2602
2600
 
2603
2601
  use_ui @ui do
2604
2602
  @a1.validate
@@ -2624,7 +2622,7 @@ end
2624
2622
  #{w}: See https://guides.rubygems.org/specification-reference/ for help
2625
2623
  EXPECTED
2626
2624
 
2627
- assert_equal expected, @ui.error, 'warning'
2625
+ assert_equal expected, @ui.error, "warning"
2628
2626
  end
2629
2627
  end
2630
2628
 
@@ -2632,10 +2630,10 @@ end
2632
2630
  util_setup_validate
2633
2631
 
2634
2632
  Dir.chdir @tempdir do
2635
- @a1.add_runtime_dependency 'b', '~> 1.2'
2636
- @a1.add_runtime_dependency 'b', '>= 1.2.3'
2637
- @a1.add_development_dependency 'c', '~> 1.2'
2638
- @a1.add_development_dependency 'c', '>= 1.2.3'
2633
+ @a1.add_runtime_dependency "b", "~> 1.2"
2634
+ @a1.add_runtime_dependency "b", ">= 1.2.3"
2635
+ @a1.add_development_dependency "c", "~> 1.2"
2636
+ @a1.add_development_dependency "c", ">= 1.2.3"
2639
2637
 
2640
2638
  use_ui @ui do
2641
2639
  e = assert_raise Gem::InvalidSpecificationException do
@@ -2662,14 +2660,14 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2662
2660
  util_setup_validate
2663
2661
 
2664
2662
  Dir.chdir @tempdir do
2665
- @a1.add_runtime_dependency 'b', '~> 1.2'
2666
- @a1.add_development_dependency 'b', '= 1.2.3'
2663
+ @a1.add_runtime_dependency "b", "~> 1.2"
2664
+ @a1.add_development_dependency "b", "= 1.2.3"
2667
2665
 
2668
2666
  use_ui @ui do
2669
2667
  @a1.validate
2670
2668
  end
2671
2669
 
2672
- assert_equal '', @ui.error, 'warning'
2670
+ assert_equal "", @ui.error, "warning"
2673
2671
  end
2674
2672
  end
2675
2673
 
@@ -2677,14 +2675,31 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2677
2675
  util_setup_validate
2678
2676
 
2679
2677
  Dir.chdir @tempdir do
2680
- @a1.version = '1.0.0.beta.1'
2681
- @a1.add_runtime_dependency 'b', '~> 1.2.0.beta.1'
2678
+ @a1.version = "1.0.0.beta.1"
2679
+ @a1.add_runtime_dependency "b", "~> 1.2.0.beta.1"
2680
+
2681
+ use_ui @ui do
2682
+ @a1.validate
2683
+ end
2684
+
2685
+ assert_equal "", @ui.error, "warning"
2686
+ end
2687
+ end
2688
+
2689
+ def test_validate_self_referencing_dependencies
2690
+ util_setup_validate
2691
+
2692
+ Dir.chdir @tempdir do
2693
+ @a1.add_runtime_dependency @a1.name, "1"
2682
2694
 
2683
2695
  use_ui @ui do
2684
2696
  @a1.validate
2685
2697
  end
2686
2698
 
2687
- assert_equal '', @ui.error, 'warning'
2699
+ assert_equal <<-EXPECTED, @ui.error
2700
+ #{w}: Self referencing dependency is unnecessary and strongly discouraged.
2701
+ #{w}: See https://guides.rubygems.org/specification-reference/ for help
2702
+ EXPECTED
2688
2703
  end
2689
2704
  end
2690
2705
 
@@ -2692,8 +2707,8 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2692
2707
  util_setup_validate
2693
2708
 
2694
2709
  Dir.chdir @tempdir do
2695
- @a1.extensions = ['Rakefile']
2696
- File.write File.join(@tempdir, 'Rakefile'), ''
2710
+ @a1.extensions = ["Rakefile"]
2711
+ File.write File.join(@tempdir, "Rakefile"), ""
2697
2712
 
2698
2713
  use_ui @ui do
2699
2714
  @a1.validate
@@ -2707,9 +2722,9 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2707
2722
  util_setup_validate
2708
2723
 
2709
2724
  Dir.chdir @tempdir do
2710
- @a1.extensions = ['Rakefile']
2711
- @a1.add_runtime_dependency 'rake'
2712
- File.write File.join(@tempdir, 'Rakefile'), ''
2725
+ @a1.extensions = ["Rakefile"]
2726
+ @a1.add_runtime_dependency "rake"
2727
+ File.write File.join(@tempdir, "Rakefile"), ""
2713
2728
 
2714
2729
  use_ui @ui do
2715
2730
  @a1.validate
@@ -2719,11 +2734,44 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2719
2734
  end
2720
2735
  end
2721
2736
 
2737
+ def test_validate_rust_extension_have_missing_cargo_toml_error
2738
+ util_setup_validate
2739
+
2740
+ Dir.chdir @tempdir do
2741
+ @a1.extensions = ["Cargo.toml"]
2742
+ File.write File.join(@tempdir, "Cargo.toml"), ""
2743
+
2744
+ e = assert_raise Gem::InvalidSpecificationException do
2745
+ use_ui @ui do
2746
+ @a1.validate
2747
+ end
2748
+ end
2749
+
2750
+ assert_match(/but Cargo.lock is not part of the gem files/, e.message)
2751
+ end
2752
+ end
2753
+
2754
+ def test_validate_rust_extension_have_no_missing_cargo_toml_error
2755
+ util_setup_validate
2756
+
2757
+ Dir.chdir @tempdir do
2758
+ @a1.extensions = ["Cargo.toml"]
2759
+ @a1.files << "Cargo.toml"
2760
+ @a1.files << "Cargo.lock"
2761
+ File.write File.join(@tempdir, "Cargo.toml"), ""
2762
+ File.write File.join(@tempdir, "Cargo.lock"), ""
2763
+
2764
+ use_ui @ui do
2765
+ @a1.validate
2766
+ end
2767
+ end
2768
+ end
2769
+
2722
2770
  def test_validate_description
2723
2771
  util_setup_validate
2724
2772
 
2725
2773
  Dir.chdir @tempdir do
2726
- @a1.description = ''
2774
+ @a1.description = ""
2727
2775
 
2728
2776
  use_ui @ui do
2729
2777
  @a1.validate
@@ -2813,7 +2861,7 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2813
2861
  Gem::Specification.new.validate
2814
2862
  end
2815
2863
 
2816
- assert_equal 'missing value for attribute name', e.message
2864
+ assert_equal "missing value for attribute name", e.message
2817
2865
  end
2818
2866
 
2819
2867
  def test_validate_error
@@ -2823,15 +2871,15 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2823
2871
  end
2824
2872
  end
2825
2873
 
2826
- assert_match 'See https://guides.rubygems.org/specification-reference/ for help', @ui.error
2874
+ assert_match "See https://guides.rubygems.org/specification-reference/ for help", @ui.error
2827
2875
  end
2828
2876
 
2829
2877
  def test_validate_executables
2830
2878
  util_setup_validate
2831
2879
 
2832
- FileUtils.mkdir_p File.join(@tempdir, 'bin')
2833
- File.write File.join(@tempdir, 'bin', 'exec'), ''
2834
- FileUtils.mkdir_p File.join(@tempdir, 'exec')
2880
+ FileUtils.mkdir_p File.join(@tempdir, "bin")
2881
+ File.write File.join(@tempdir, "bin", "exec"), ""
2882
+ FileUtils.mkdir_p File.join(@tempdir, "exec")
2835
2883
 
2836
2884
  use_ui @ui do
2837
2885
  Dir.chdir @tempdir do
@@ -2841,13 +2889,13 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2841
2889
 
2842
2890
  assert_equal %w[exec], @a1.executables
2843
2891
 
2844
- assert_equal '', @ui.output, 'output'
2845
- assert_match "#{w}: bin/exec is missing #! line\n", @ui.error, 'error'
2892
+ assert_equal "", @ui.output, "output"
2893
+ assert_match "#{w}: bin/exec is missing #! line\n", @ui.error, "error"
2846
2894
  end
2847
2895
 
2848
2896
  def test_validate_empty_require_paths
2849
2897
  if win_platform?
2850
- pend 'test_validate_empty_require_paths skipped on MS Windows (symlink)'
2898
+ pend "test_validate_empty_require_paths skipped on MS Windows (symlink)"
2851
2899
  else
2852
2900
  util_setup_validate
2853
2901
 
@@ -2856,26 +2904,26 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2856
2904
  @a1.validate
2857
2905
  end
2858
2906
 
2859
- assert_equal 'specification must have at least one require_path',
2907
+ assert_equal "specification must have at least one require_path",
2860
2908
  e.message
2861
2909
  end
2862
2910
  end
2863
2911
 
2864
2912
  def test_validate_files
2865
- pend 'test_validate_files skipped on MS Windows (symlink)' if win_platform?
2913
+ pend "test_validate_files skipped on MS Windows (symlink)" if win_platform?
2866
2914
  util_setup_validate
2867
2915
 
2868
- @a1.files += ['lib', 'lib2']
2869
- @a1.extensions << 'ext/a/extconf.rb'
2916
+ @a1.files += ["lib", "lib2"]
2917
+ @a1.extensions << "ext/a/extconf.rb"
2870
2918
 
2871
2919
  Dir.chdir @tempdir do
2872
- FileUtils.ln_s 'lib/code.rb', 'lib2' unless vc_windows?
2920
+ FileUtils.ln_s "lib/code.rb", "lib2" unless vc_windows?
2873
2921
 
2874
2922
  use_ui @ui do
2875
2923
  @a1.validate
2876
2924
  end
2877
2925
 
2878
- assert_match 'WARNING: lib2 is a symlink, which is not supported on all platforms', @ui.error
2926
+ assert_match "WARNING: lib2 is a symlink, which is not supported on all platforms", @ui.error
2879
2927
  end
2880
2928
 
2881
2929
  assert_equal %w[bin/exec ext/a/extconf.rb lib/code.rb lib2 test/suite.rb].sort,
@@ -2981,19 +3029,19 @@ Please report a bug if this causes problems.
2981
3029
  @a1.validate
2982
3030
  end
2983
3031
 
2984
- assert_match "#{w}: no homepage specified\n", @ui.error, 'error'
3032
+ assert_match "#{w}: no homepage specified\n", @ui.error, "error"
2985
3033
 
2986
3034
  @ui = Gem::MockGemUi.new
2987
3035
 
2988
- @a1.homepage = ''
3036
+ @a1.homepage = ""
2989
3037
 
2990
3038
  use_ui @ui do
2991
3039
  @a1.validate
2992
3040
  end
2993
3041
 
2994
- assert_match "#{w}: no homepage specified\n", @ui.error, 'error'
3042
+ assert_match "#{w}: no homepage specified\n", @ui.error, "error"
2995
3043
 
2996
- @a1.homepage = 'over at my cool site'
3044
+ @a1.homepage = "over at my cool site"
2997
3045
 
2998
3046
  e = assert_raise Gem::InvalidSpecificationException do
2999
3047
  @a1.validate
@@ -3001,7 +3049,7 @@ Please report a bug if this causes problems.
3001
3049
 
3002
3050
  assert_equal '"over at my cool site" is not a valid HTTP URI', e.message
3003
3051
 
3004
- @a1.homepage = 'ftp://rubygems.org'
3052
+ @a1.homepage = "ftp://rubygems.org"
3005
3053
 
3006
3054
  e = assert_raise Gem::InvalidSpecificationException do
3007
3055
  @a1.validate
@@ -3009,12 +3057,11 @@ Please report a bug if this causes problems.
3009
3057
 
3010
3058
  assert_equal '"ftp://rubygems.org" is not a valid HTTP URI', e.message
3011
3059
 
3012
- @a1.homepage = 'https://rubygems.org/'
3060
+ @a1.homepage = "https://rubygems.org/"
3013
3061
  assert_equal true, @a1.validate
3014
3062
 
3015
- @a1.homepage = 'https://rubygems.org'
3063
+ @a1.homepage = "https://rubygems.org"
3016
3064
  assert_equal true, @a1.validate
3017
-
3018
3065
  end
3019
3066
  end
3020
3067
 
@@ -3051,7 +3098,7 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3051
3098
  util_setup_validate
3052
3099
 
3053
3100
  use_ui @ui do
3054
- @a1.rubyforge_project = 'invalid-attribute'
3101
+ @a1.rubyforge_project = "invalid-attribute"
3055
3102
  @a1.validate
3056
3103
  end
3057
3104
 
@@ -3062,7 +3109,7 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3062
3109
  util_setup_validate
3063
3110
 
3064
3111
  use_ui @ui do
3065
- @a1.licenses = ['BSD']
3112
+ @a1.licenses = ["BSD"]
3066
3113
  @a1.validate
3067
3114
  end
3068
3115
 
@@ -3076,7 +3123,7 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3076
3123
  util_setup_validate
3077
3124
 
3078
3125
  use_ui @ui do
3079
- @a1.licenses = ['LicenseRef-LICENSE.md']
3126
+ @a1.licenses = ["LicenseRef-LICENSE.md"]
3080
3127
  @a1.validate
3081
3128
  end
3082
3129
 
@@ -3087,7 +3134,7 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3087
3134
  util_setup_validate
3088
3135
 
3089
3136
  use_ui @ui do
3090
- @a1.licenses = ['GPL-2.0+']
3137
+ @a1.licenses = ["GPL-2.0+"]
3091
3138
  @a1.validate
3092
3139
  end
3093
3140
 
@@ -3098,7 +3145,7 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3098
3145
  util_setup_validate
3099
3146
 
3100
3147
  use_ui @ui do
3101
- @a1.licenses = ['GPL-2.0-or-later']
3148
+ @a1.licenses = ["GPL-2.0-or-later"]
3102
3149
  @a1.validate
3103
3150
  end
3104
3151
 
@@ -3109,7 +3156,7 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3109
3156
  util_setup_validate
3110
3157
 
3111
3158
  use_ui @ui do
3112
- @a1.licenses = ['GPL-2.0+ WITH Autoconf-exception-2.0']
3159
+ @a1.licenses = ["GPL-2.0+ WITH Autoconf-exception-2.0"]
3113
3160
  @a1.validate
3114
3161
  end
3115
3162
 
@@ -3120,7 +3167,7 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3120
3167
  util_setup_validate
3121
3168
 
3122
3169
  use_ui @ui do
3123
- @a1.licenses = ['GPL-2.0+ FOO', 'GPL-2.0 FOO']
3170
+ @a1.licenses = ["GPL-2.0+ FOO", "GPL-2.0 FOO"]
3124
3171
  @a1.validate
3125
3172
  end
3126
3173
 
@@ -3138,7 +3185,7 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3138
3185
  util_setup_validate
3139
3186
 
3140
3187
  use_ui @ui do
3141
- @a1.licenses = ['GPL-2.0+ WITH Autocofn-exception-2.0']
3188
+ @a1.licenses = ["GPL-2.0+ WITH Autocofn-exception-2.0"]
3142
3189
  @a1.validate
3143
3190
  end
3144
3191
 
@@ -3152,7 +3199,7 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3152
3199
  util_setup_validate
3153
3200
 
3154
3201
  use_ui @ui do
3155
- @a1.licenses = ['ruby']
3202
+ @a1.licenses = ["ruby"]
3156
3203
  @a1.validate
3157
3204
  end
3158
3205
 
@@ -3262,13 +3309,13 @@ Did you mean 'Ruby'?
3262
3309
  end
3263
3310
 
3264
3311
  def test_validate_permissions
3265
- pend 'chmod not supported' if Gem.win_platform?
3312
+ pend "chmod not supported" if Gem.win_platform?
3266
3313
 
3267
3314
  util_setup_validate
3268
3315
 
3269
3316
  Dir.chdir @tempdir do
3270
- File.chmod 0640, File.join('lib', 'code.rb')
3271
- File.chmod 0640, File.join('bin', 'exec')
3317
+ File.chmod 0640, File.join("lib", "code.rb")
3318
+ File.chmod 0640, File.join("bin", "exec")
3272
3319
 
3273
3320
  use_ui @ui do
3274
3321
  @a1.validate
@@ -3281,12 +3328,12 @@ Did you mean 'Ruby'?
3281
3328
  end
3282
3329
 
3283
3330
  def test_validate_permissions_of_missing_file_non_packaging
3284
- pend 'chmod not supported' if Gem.win_platform?
3331
+ pend "chmod not supported" if Gem.win_platform?
3285
3332
 
3286
3333
  util_setup_validate
3287
3334
 
3288
3335
  Dir.chdir @tempdir do
3289
- File.delete File.join('lib', 'code.rb')
3336
+ File.delete File.join("lib", "code.rb")
3290
3337
 
3291
3338
  use_ui @ui do
3292
3339
  assert @a1.validate(false)
@@ -3298,13 +3345,13 @@ Did you mean 'Ruby'?
3298
3345
  util_setup_validate
3299
3346
 
3300
3347
  Dir.chdir @tempdir do
3301
- @a1.platform = 'mswin32'
3348
+ @a1.platform = "mswin32"
3302
3349
  assert @a1.validate
3303
3350
 
3304
- @a1.platform = 'i586-linux'
3351
+ @a1.platform = "i586-linux"
3305
3352
  assert @a1.validate
3306
3353
 
3307
- @a1.platform = 'powerpc-darwin'
3354
+ @a1.platform = "powerpc-darwin"
3308
3355
  assert @a1.validate
3309
3356
  end
3310
3357
  end
@@ -3325,7 +3372,7 @@ Did you mean 'Ruby'?
3325
3372
  util_setup_validate
3326
3373
 
3327
3374
  Dir.chdir @tempdir do
3328
- @a1.specification_version = '1.0'
3375
+ @a1.specification_version = "1.0"
3329
3376
 
3330
3377
  e = assert_raise Gem::InvalidSpecificationException do
3331
3378
  use_ui @ui do
@@ -3333,7 +3380,7 @@ Did you mean 'Ruby'?
3333
3380
  end
3334
3381
  end
3335
3382
 
3336
- err = 'specification_version must be an Integer (did you mean version?)'
3383
+ err = "specification_version must be an Integer (did you mean version?)"
3337
3384
  assert_equal err, e.message
3338
3385
  end
3339
3386
  end
@@ -3342,13 +3389,13 @@ Did you mean 'Ruby'?
3342
3389
  util_setup_validate
3343
3390
 
3344
3391
  Dir.chdir @tempdir do
3345
- @a1.summary = ''
3392
+ @a1.summary = ""
3346
3393
 
3347
3394
  use_ui @ui do
3348
3395
  @a1.validate
3349
3396
  end
3350
3397
 
3351
- assert_match "#{w}: no summary specified\n", @ui.error, 'error'
3398
+ assert_match "#{w}: no summary specified\n", @ui.error, "error"
3352
3399
 
3353
3400
  @a1.summary = "#{f} (describe your package)"
3354
3401
 
@@ -3376,11 +3423,11 @@ Did you mean 'Ruby'?
3376
3423
  @a1.validate
3377
3424
  end
3378
3425
 
3379
- assert_match 'See https://guides.rubygems.org/specification-reference/ for help', @ui.error
3426
+ assert_match "See https://guides.rubygems.org/specification-reference/ for help", @ui.error
3380
3427
  end
3381
3428
 
3382
3429
  def test_version
3383
- assert_equal Gem::Version.new('1'), @a1.version
3430
+ assert_equal Gem::Version.new("1"), @a1.version
3384
3431
  end
3385
3432
 
3386
3433
  def test_version_change_reset_full_name
@@ -3426,22 +3473,22 @@ Did you mean 'Ruby'?
3426
3473
 
3427
3474
  def test_latest_specs
3428
3475
  spec_fetcher do |fetcher|
3429
- fetcher.spec 'a', 1 do |s|
3430
- s.platform = Gem::Platform.new 'x86-my_platform1'
3476
+ fetcher.spec "a", 1 do |s|
3477
+ s.platform = Gem::Platform.new "x86-my_platform1"
3431
3478
  end
3432
3479
 
3433
- fetcher.spec 'a', 2
3480
+ fetcher.spec "a", 2
3434
3481
 
3435
- fetcher.spec 'a', 2 do |s|
3436
- s.platform = Gem::Platform.new 'x86-my_platform1'
3482
+ fetcher.spec "a", 2 do |s|
3483
+ s.platform = Gem::Platform.new "x86-my_platform1"
3437
3484
  end
3438
3485
 
3439
- fetcher.spec 'a', 2 do |s|
3440
- s.platform = Gem::Platform.new 'x86-other_platform1'
3486
+ fetcher.spec "a", 2 do |s|
3487
+ s.platform = Gem::Platform.new "x86-other_platform1"
3441
3488
  end
3442
3489
 
3443
- fetcher.spec 'a', 3 do |s|
3444
- s.platform = Gem::Platform.new 'x86-other_platform1'
3490
+ fetcher.spec "a", 3 do |s|
3491
+ s.platform = Gem::Platform.new "x86-other_platform1"
3445
3492
  end
3446
3493
  end
3447
3494
 
@@ -3458,13 +3505,13 @@ Did you mean 'Ruby'?
3458
3505
  util_setup_validate
3459
3506
 
3460
3507
  Dir.chdir @tempdir do
3461
- @m1 = quick_gem 'm', '1' do |s|
3508
+ @m1 = quick_gem "m", "1" do |s|
3462
3509
  s.files = %w[lib/code.rb]
3463
3510
  s.metadata = {
3464
- "one" => "two",
3465
- "home" => "three",
3511
+ "one" => "two",
3512
+ "home" => "three",
3466
3513
  "homepage_uri" => "https://example.com/user/repo",
3467
- "funding_uri" => "https://example.com/donate",
3514
+ "funding_uri" => "https://example.com/donate",
3468
3515
  }
3469
3516
  end
3470
3517
 
@@ -3478,7 +3525,7 @@ Did you mean 'Ruby'?
3478
3525
  util_setup_validate
3479
3526
 
3480
3527
  Dir.chdir @tempdir do
3481
- @m2 = quick_gem 'm', '2' do |s|
3528
+ @m2 = quick_gem "m", "2" do |s|
3482
3529
  s.files = %w[lib/code.rb]
3483
3530
  s.metadata = { 1 => "fail" }
3484
3531
  end
@@ -3495,7 +3542,7 @@ Did you mean 'Ruby'?
3495
3542
  util_setup_validate
3496
3543
 
3497
3544
  Dir.chdir @tempdir do
3498
- @m2 = quick_gem 'm', '2' do |s|
3545
+ @m2 = quick_gem "m", "2" do |s|
3499
3546
  s.files = %w[lib/code.rb]
3500
3547
  s.metadata = { ("x" * 129) => "fail" }
3501
3548
  end
@@ -3512,9 +3559,9 @@ Did you mean 'Ruby'?
3512
3559
  util_setup_validate
3513
3560
 
3514
3561
  Dir.chdir @tempdir do
3515
- @m2 = quick_gem 'm', '2' do |s|
3562
+ @m2 = quick_gem "m", "2" do |s|
3516
3563
  s.files = %w[lib/code.rb]
3517
- s.metadata = { 'fail' => [] }
3564
+ s.metadata = { "fail" => [] }
3518
3565
  end
3519
3566
 
3520
3567
  e = assert_raise Gem::InvalidSpecificationException do
@@ -3529,9 +3576,9 @@ Did you mean 'Ruby'?
3529
3576
  util_setup_validate
3530
3577
 
3531
3578
  Dir.chdir @tempdir do
3532
- @m2 = quick_gem 'm', '2' do |s|
3579
+ @m2 = quick_gem "m", "2" do |s|
3533
3580
  s.files = %w[lib/code.rb]
3534
- s.metadata = { 'fail' => ("x" * 1025) }
3581
+ s.metadata = { "fail" => ("x" * 1025) }
3535
3582
  end
3536
3583
 
3537
3584
  e = assert_raise Gem::InvalidSpecificationException do
@@ -3546,9 +3593,9 @@ Did you mean 'Ruby'?
3546
3593
  util_setup_validate
3547
3594
 
3548
3595
  Dir.chdir @tempdir do
3549
- @m2 = quick_gem 'm', '2' do |s|
3596
+ @m2 = quick_gem "m", "2" do |s|
3550
3597
  s.files = %w[lib/code.rb]
3551
- s.metadata = { 'homepage_uri' => 'http:/example.com' }
3598
+ s.metadata = { "homepage_uri" => "http:/example.com" }
3552
3599
  end
3553
3600
 
3554
3601
  e = assert_raise Gem::InvalidSpecificationException do
@@ -3560,9 +3607,9 @@ Did you mean 'Ruby'?
3560
3607
  end
3561
3608
 
3562
3609
  def test_metadata_specs
3563
- @m1 = quick_gem 'm', '1' do |s|
3610
+ @m1 = quick_gem "m", "1" do |s|
3564
3611
  s.files = %w[lib/code.rb]
3565
- s.metadata = { 'one' => "two", 'two' => "three" }
3612
+ s.metadata = { "one" => "two", "two" => "three" }
3566
3613
  end
3567
3614
 
3568
3615
  valid_ruby_spec = <<-EOF
@@ -3599,7 +3646,7 @@ end
3599
3646
  extconf_rb = File.join @ext.gem_dir, @ext.extensions.first
3600
3647
  FileUtils.mkdir_p File.dirname extconf_rb
3601
3648
 
3602
- File.open extconf_rb, 'w' do |f|
3649
+ File.open extconf_rb, "w" do |f|
3603
3650
  f.write <<-'RUBY'
3604
3651
  File.open 'Makefile', 'w' do |f|
3605
3652
  f.puts "clean:\n\techo clean"
@@ -3615,8 +3662,8 @@ end
3615
3662
  end
3616
3663
 
3617
3664
  def test_missing_extensions_eh_default_gem
3618
- spec = new_default_spec 'default', 1
3619
- spec.extensions << 'extconf.rb'
3665
+ spec = new_default_spec "default", 1
3666
+ spec.extensions << "extconf.rb"
3620
3667
 
3621
3668
  refute spec.missing_extensions?
3622
3669
  end
@@ -3626,7 +3673,7 @@ end
3626
3673
  end
3627
3674
 
3628
3675
  def test_find_all_by_full_name
3629
- pl = Gem::Platform.new 'i386-linux'
3676
+ pl = Gem::Platform.new "i386-linux"
3630
3677
 
3631
3678
  a1 = util_spec "a", "1"
3632
3679
  a1_pre = util_spec "a", "1.0.0.pre.1"
@@ -3688,14 +3735,31 @@ end
3688
3735
  assert Gem::Specification.find_by_name "b", ">1"
3689
3736
  end
3690
3737
 
3738
+ def test_find_by_full_name
3739
+ pl = Gem::Platform.new "x86_64-linux"
3740
+
3741
+ a = util_spec "a", "1"
3742
+ install_specs a
3743
+
3744
+ a_pl = util_spec("a", "1") {|s| s.platform = pl }
3745
+ install_specs a_pl
3746
+
3747
+ assert_equal a, Gem::Specification.find_by_full_name("a-1")
3748
+ assert_equal a_pl, Gem::Specification.find_by_full_name("a-1-x86_64-linux")
3749
+
3750
+ assert_nil Gem::Specification.find_by_full_name("a-2")
3751
+ assert_nil Gem::Specification.find_by_full_name("b-1")
3752
+ assert_nil Gem::Specification.find_by_full_name("a-1-arm64-linux")
3753
+ end
3754
+
3691
3755
  def test_find_by_path
3692
3756
  a = util_spec "foo", "1", nil, "lib/foo.rb"
3693
3757
 
3694
3758
  install_specs a
3695
3759
 
3696
- assert_equal a, Gem::Specification.find_by_path('foo')
3760
+ assert_equal a, Gem::Specification.find_by_path("foo")
3697
3761
  a.activate
3698
- assert_equal a, Gem::Specification.find_by_path('foo')
3762
+ assert_equal a, Gem::Specification.find_by_path("foo")
3699
3763
  end
3700
3764
 
3701
3765
  def test_find_inactive_by_path
@@ -3703,9 +3767,9 @@ end
3703
3767
 
3704
3768
  install_specs a
3705
3769
 
3706
- assert_equal a, Gem::Specification.find_inactive_by_path('foo')
3770
+ assert_equal a, Gem::Specification.find_inactive_by_path("foo")
3707
3771
  a.activate
3708
- assert_nil Gem::Specification.find_inactive_by_path('foo')
3772
+ assert_nil Gem::Specification.find_inactive_by_path("foo")
3709
3773
  end
3710
3774
 
3711
3775
  def test_load_default_gem