rubygems-update 3.2.30 → 3.4.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (641) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1666 -994
  3. data/CONTRIBUTING.md +71 -15
  4. data/Manifest.txt +93 -37
  5. data/POLICIES.md +65 -16
  6. data/README.md +28 -13
  7. data/UPGRADING.md +5 -81
  8. data/bin/gem +2 -10
  9. data/bin/update_rubygems +5 -5
  10. data/bundler/CHANGELOG.md +647 -1
  11. data/bundler/README.md +3 -6
  12. data/bundler/UPGRADING.md +11 -4
  13. data/bundler/bundler.gemspec +8 -10
  14. data/bundler/exe/bundle +7 -11
  15. data/bundler/exe/bundler +1 -1
  16. data/bundler/lib/bundler/.document +1 -0
  17. data/bundler/lib/bundler/build_metadata.rb +3 -3
  18. data/bundler/lib/bundler/cli/add.rb +1 -1
  19. data/bundler/lib/bundler/cli/binstubs.rb +5 -1
  20. data/bundler/lib/bundler/cli/check.rb +1 -1
  21. data/bundler/lib/bundler/cli/common.rb +4 -2
  22. data/bundler/lib/bundler/cli/config.rb +10 -1
  23. data/bundler/lib/bundler/cli/console.rb +2 -2
  24. data/bundler/lib/bundler/cli/doctor.rb +10 -3
  25. data/bundler/lib/bundler/cli/gem.rb +136 -42
  26. data/bundler/lib/bundler/cli/info.rb +17 -3
  27. data/bundler/lib/bundler/cli/init.rb +6 -2
  28. data/bundler/lib/bundler/cli/install.rb +15 -33
  29. data/bundler/lib/bundler/cli/lock.rb +8 -5
  30. data/bundler/lib/bundler/cli/open.rb +6 -4
  31. data/bundler/lib/bundler/cli/outdated.rb +13 -6
  32. data/bundler/lib/bundler/cli/platform.rb +2 -2
  33. data/bundler/lib/bundler/cli/show.rb +1 -1
  34. data/bundler/lib/bundler/cli/update.rb +8 -4
  35. data/bundler/lib/bundler/cli/viz.rb +1 -1
  36. data/bundler/lib/bundler/cli.rb +67 -21
  37. data/bundler/lib/bundler/compact_index_client/cache.rb +1 -10
  38. data/bundler/lib/bundler/compact_index_client/updater.rb +53 -44
  39. data/bundler/lib/bundler/compact_index_client.rb +0 -6
  40. data/bundler/lib/bundler/constants.rb +1 -1
  41. data/bundler/lib/bundler/current_ruby.rb +18 -6
  42. data/bundler/lib/bundler/definition.rb +259 -242
  43. data/bundler/lib/bundler/dependency.rb +24 -71
  44. data/bundler/lib/bundler/digest.rb +1 -1
  45. data/bundler/lib/bundler/dsl.rb +29 -46
  46. data/bundler/lib/bundler/endpoint_specification.rb +15 -13
  47. data/bundler/lib/bundler/env.rb +2 -2
  48. data/bundler/lib/bundler/environment_preserver.rb +7 -3
  49. data/bundler/lib/bundler/errors.rb +15 -15
  50. data/bundler/lib/bundler/feature_flag.rb +0 -1
  51. data/bundler/lib/bundler/fetcher/base.rb +6 -8
  52. data/bundler/lib/bundler/fetcher/compact_index.rb +18 -25
  53. data/bundler/lib/bundler/fetcher/dependency.rb +2 -6
  54. data/bundler/lib/bundler/fetcher/downloader.rb +2 -5
  55. data/bundler/lib/bundler/fetcher/index.rb +0 -26
  56. data/bundler/lib/bundler/fetcher.rb +22 -29
  57. data/bundler/lib/bundler/force_platform.rb +18 -0
  58. data/bundler/lib/bundler/friendly_errors.rb +21 -7
  59. data/bundler/lib/bundler/gem_helper.rb +4 -4
  60. data/bundler/lib/bundler/gem_helpers.rb +9 -2
  61. data/bundler/lib/bundler/gem_version_promoter.rb +53 -98
  62. data/bundler/lib/bundler/graph.rb +3 -3
  63. data/bundler/lib/bundler/index.rb +13 -51
  64. data/bundler/lib/bundler/injector.rb +18 -4
  65. data/bundler/lib/bundler/inline.rb +9 -21
  66. data/bundler/lib/bundler/installer/gem_installer.rb +13 -5
  67. data/bundler/lib/bundler/installer/parallel_installer.rb +3 -33
  68. data/bundler/lib/bundler/installer/standalone.rb +42 -11
  69. data/bundler/lib/bundler/installer.rb +20 -44
  70. data/bundler/lib/bundler/lazy_specification.rb +72 -55
  71. data/bundler/lib/bundler/lockfile_generator.rb +3 -3
  72. data/bundler/lib/bundler/lockfile_parser.rb +28 -26
  73. data/bundler/lib/bundler/man/bundle-add.1 +21 -5
  74. data/bundler/lib/bundler/man/bundle-add.1.ronn +16 -4
  75. data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
  76. data/bundler/lib/bundler/man/bundle-cache.1 +7 -1
  77. data/bundler/lib/bundler/man/bundle-cache.1.ronn +7 -0
  78. data/bundler/lib/bundler/man/bundle-check.1 +1 -1
  79. data/bundler/lib/bundler/man/bundle-clean.1 +2 -2
  80. data/bundler/lib/bundler/man/bundle-clean.1.ronn +1 -1
  81. data/bundler/lib/bundler/man/bundle-config.1 +34 -15
  82. data/bundler/lib/bundler/man/bundle-config.1.ronn +31 -19
  83. data/bundler/lib/bundler/man/bundle-console.1 +53 -0
  84. data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
  85. data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
  86. data/bundler/lib/bundler/man/bundle-exec.1 +6 -6
  87. data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -6
  88. data/bundler/lib/bundler/man/bundle-gem.1 +37 -34
  89. data/bundler/lib/bundler/man/bundle-gem.1.ronn +21 -5
  90. data/bundler/lib/bundler/man/bundle-help.1 +13 -0
  91. data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
  92. data/bundler/lib/bundler/man/bundle-info.1 +1 -1
  93. data/bundler/lib/bundler/man/bundle-init.1 +5 -1
  94. data/bundler/lib/bundler/man/bundle-init.1.ronn +2 -0
  95. data/bundler/lib/bundler/man/bundle-inject.1 +5 -2
  96. data/bundler/lib/bundler/man/bundle-inject.1.ronn +3 -1
  97. data/bundler/lib/bundler/man/bundle-install.1 +6 -31
  98. data/bundler/lib/bundler/man/bundle-install.1.ronn +8 -31
  99. data/bundler/lib/bundler/man/bundle-list.1 +1 -1
  100. data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
  101. data/bundler/lib/bundler/man/bundle-open.1 +22 -2
  102. data/bundler/lib/bundler/man/bundle-open.1.ronn +9 -1
  103. data/bundler/lib/bundler/man/bundle-outdated.1 +3 -10
  104. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +1 -10
  105. data/bundler/lib/bundler/man/bundle-platform.1 +16 -6
  106. data/bundler/lib/bundler/man/bundle-platform.1.ronn +14 -7
  107. data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
  108. data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
  109. data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
  110. data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
  111. data/bundler/lib/bundler/man/bundle-show.1 +1 -1
  112. data/bundler/lib/bundler/man/bundle-update.1 +2 -2
  113. data/bundler/lib/bundler/man/bundle-update.1.ronn +2 -1
  114. data/bundler/lib/bundler/man/bundle-version.1 +35 -0
  115. data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
  116. data/bundler/lib/bundler/man/bundle-viz.1 +4 -1
  117. data/bundler/lib/bundler/man/bundle-viz.1.ronn +2 -0
  118. data/bundler/lib/bundler/man/bundle.1 +15 -10
  119. data/bundler/lib/bundler/man/bundle.1.ronn +12 -7
  120. data/bundler/lib/bundler/man/gemfile.5 +117 -80
  121. data/bundler/lib/bundler/man/gemfile.5.ronn +105 -84
  122. data/bundler/lib/bundler/man/index.txt +4 -0
  123. data/bundler/lib/bundler/match_metadata.rb +13 -0
  124. data/bundler/lib/bundler/match_platform.rb +0 -1
  125. data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
  126. data/bundler/lib/bundler/mirror.rb +5 -7
  127. data/bundler/lib/bundler/plugin/api/source.rb +4 -9
  128. data/bundler/lib/bundler/plugin/index.rb +4 -4
  129. data/bundler/lib/bundler/plugin/installer/git.rb +0 -4
  130. data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -8
  131. data/bundler/lib/bundler/plugin/installer.rb +6 -3
  132. data/bundler/lib/bundler/plugin.rb +3 -1
  133. data/bundler/lib/bundler/process_lock.rb +1 -1
  134. data/bundler/lib/bundler/remote_specification.rb +7 -5
  135. data/bundler/lib/bundler/resolver/base.rb +109 -0
  136. data/bundler/lib/bundler/resolver/candidate.rb +94 -0
  137. data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
  138. data/bundler/lib/bundler/resolver/package.rb +72 -0
  139. data/bundler/lib/bundler/resolver/root.rb +25 -0
  140. data/bundler/lib/bundler/resolver/spec_group.rb +43 -71
  141. data/bundler/lib/bundler/resolver.rb +332 -308
  142. data/bundler/lib/bundler/ruby_dsl.rb +1 -1
  143. data/bundler/lib/bundler/ruby_version.rb +5 -18
  144. data/bundler/lib/bundler/rubygems_ext.rb +144 -25
  145. data/bundler/lib/bundler/rubygems_gem_installer.rb +32 -20
  146. data/bundler/lib/bundler/rubygems_integration.rb +24 -95
  147. data/bundler/lib/bundler/runtime.rb +2 -7
  148. data/bundler/lib/bundler/self_manager.rb +168 -0
  149. data/bundler/lib/bundler/settings.rb +5 -10
  150. data/bundler/lib/bundler/setup.rb +4 -1
  151. data/bundler/lib/bundler/shared_helpers.rb +17 -25
  152. data/bundler/lib/bundler/source/git/git_proxy.rb +219 -71
  153. data/bundler/lib/bundler/source/git.rb +23 -26
  154. data/bundler/lib/bundler/source/metadata.rb +3 -4
  155. data/bundler/lib/bundler/source/path/installer.rb +1 -22
  156. data/bundler/lib/bundler/source/path.rb +7 -7
  157. data/bundler/lib/bundler/source/rubygems.rb +91 -130
  158. data/bundler/lib/bundler/source/rubygems_aggregate.rb +1 -1
  159. data/bundler/lib/bundler/source.rb +4 -5
  160. data/bundler/lib/bundler/source_list.rb +19 -31
  161. data/bundler/lib/bundler/source_map.rb +15 -2
  162. data/bundler/lib/bundler/spec_set.rb +63 -35
  163. data/bundler/lib/bundler/stub_specification.rb +5 -3
  164. data/bundler/lib/bundler/templates/Executable +3 -5
  165. data/bundler/lib/bundler/templates/Executable.bundler +6 -11
  166. data/bundler/lib/bundler/templates/Executable.standalone +4 -4
  167. data/bundler/lib/bundler/templates/Gemfile +0 -2
  168. data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
  169. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +8 -2
  170. data/bundler/lib/bundler/templates/newgem/README.md.tt +7 -11
  171. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +27 -3
  172. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
  173. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
  174. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
  175. data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
  176. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +13 -3
  177. data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
  178. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +13 -4
  179. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +22 -16
  180. data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
  181. data/bundler/lib/bundler/templates/newgem/standard.yml.tt +3 -0
  182. data/bundler/lib/bundler/templates/newgem/test/minitest/{newgem_test.rb.tt → test_newgem.rb.tt} +1 -1
  183. data/bundler/lib/bundler/ui/shell.rb +36 -13
  184. data/bundler/lib/bundler/ui/silent.rb +21 -5
  185. data/bundler/lib/bundler/uri_normalizer.rb +23 -0
  186. data/bundler/lib/bundler/vendor/.document +1 -0
  187. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
  188. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
  189. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
  190. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1350 -408
  191. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
  192. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
  193. data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
  194. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
  195. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
  196. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
  197. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
  198. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
  199. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
  200. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
  201. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
  202. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
  203. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
  204. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
  205. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
  206. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
  207. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +243 -0
  208. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
  209. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
  210. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +6 -6
  211. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -2
  212. data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +6 -2
  213. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +6 -0
  214. data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +9 -4
  215. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +19 -1
  216. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +23 -5
  217. data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
  218. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
  219. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  220. data/bundler/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
  221. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +452 -0
  222. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +76 -91
  223. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
  224. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -2
  225. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +32 -13
  226. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -3
  227. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -2
  228. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +2 -2
  229. data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
  230. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -3
  231. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +14 -21
  232. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +11 -17
  233. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  234. data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +83 -0
  235. data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +23 -0
  236. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -3
  237. data/bundler/lib/bundler/vendored_persistent.rb +1 -33
  238. data/bundler/lib/bundler/{vendored_molinillo.rb → vendored_pub_grub.rb} +1 -1
  239. data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_tsort.rb} +1 -1
  240. data/bundler/lib/bundler/version.rb +5 -1
  241. data/bundler/lib/bundler/worker.rb +5 -7
  242. data/bundler/lib/bundler.rb +50 -77
  243. data/hide_lib_for_update/note.txt +0 -4
  244. data/lib/rubygems/available_set.rb +3 -3
  245. data/lib/rubygems/basic_specification.rb +12 -12
  246. data/lib/rubygems/bundler_version_finder.rb +14 -46
  247. data/lib/rubygems/command.rb +47 -39
  248. data/lib/rubygems/command_manager.rb +34 -13
  249. data/lib/rubygems/commands/build_command.rb +11 -8
  250. data/lib/rubygems/commands/cert_command.rb +39 -39
  251. data/lib/rubygems/commands/check_command.rb +20 -20
  252. data/lib/rubygems/commands/cleanup_command.rb +23 -23
  253. data/lib/rubygems/commands/contents_command.rb +13 -13
  254. data/lib/rubygems/commands/dependency_command.rb +35 -45
  255. data/lib/rubygems/commands/environment_command.rb +10 -7
  256. data/lib/rubygems/commands/exec_command.rb +248 -0
  257. data/lib/rubygems/commands/fetch_command.rb +32 -13
  258. data/lib/rubygems/commands/generate_index_command.rb +17 -17
  259. data/lib/rubygems/commands/help_command.rb +6 -6
  260. data/lib/rubygems/commands/info_command.rb +3 -3
  261. data/lib/rubygems/commands/install_command.rb +31 -24
  262. data/lib/rubygems/commands/list_command.rb +4 -4
  263. data/lib/rubygems/commands/lock_command.rb +4 -4
  264. data/lib/rubygems/commands/mirror_command.rb +3 -3
  265. data/lib/rubygems/commands/open_command.rb +9 -9
  266. data/lib/rubygems/commands/outdated_command.rb +5 -5
  267. data/lib/rubygems/commands/owner_command.rb +17 -12
  268. data/lib/rubygems/commands/pristine_command.rb +64 -49
  269. data/lib/rubygems/commands/push_command.rb +16 -16
  270. data/lib/rubygems/commands/query_command.rb +9 -9
  271. data/lib/rubygems/commands/rdoc_command.rb +26 -25
  272. data/lib/rubygems/commands/search_command.rb +4 -4
  273. data/lib/rubygems/commands/server_command.rb +16 -79
  274. data/lib/rubygems/commands/setup_command.rb +172 -173
  275. data/lib/rubygems/commands/signin_command.rb +9 -9
  276. data/lib/rubygems/commands/signout_command.rb +7 -7
  277. data/lib/rubygems/commands/sources_command.rb +22 -22
  278. data/lib/rubygems/commands/specification_command.rb +18 -18
  279. data/lib/rubygems/commands/stale_command.rb +2 -2
  280. data/lib/rubygems/commands/uninstall_command.rb +43 -40
  281. data/lib/rubygems/commands/unpack_command.rb +13 -13
  282. data/lib/rubygems/commands/update_command.rb +61 -72
  283. data/lib/rubygems/commands/which_command.rb +7 -7
  284. data/lib/rubygems/commands/yank_command.rb +11 -11
  285. data/lib/rubygems/compatibility.rb +4 -2
  286. data/lib/rubygems/config_file.rb +58 -25
  287. data/lib/rubygems/core_ext/kernel_gem.rb +1 -6
  288. data/lib/rubygems/core_ext/kernel_require.rb +108 -115
  289. data/lib/rubygems/core_ext/kernel_warn.rb +33 -37
  290. data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
  291. data/lib/rubygems/defaults.rb +32 -36
  292. data/lib/rubygems/dependency.rb +20 -17
  293. data/lib/rubygems/dependency_installer.rb +37 -37
  294. data/lib/rubygems/dependency_list.rb +7 -7
  295. data/lib/rubygems/deprecate.rb +55 -8
  296. data/lib/rubygems/doctor.rb +21 -21
  297. data/lib/rubygems/errors.rb +3 -6
  298. data/lib/rubygems/exceptions.rb +35 -7
  299. data/lib/rubygems/ext/build_error.rb +1 -1
  300. data/lib/rubygems/ext/builder.rb +51 -22
  301. data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +27 -0
  302. data/lib/rubygems/ext/cargo_builder.rb +360 -0
  303. data/lib/rubygems/ext/cmake_builder.rb +2 -2
  304. data/lib/rubygems/ext/configure_builder.rb +1 -1
  305. data/lib/rubygems/ext/ext_conf_builder.rb +35 -59
  306. data/lib/rubygems/ext/rake_builder.rb +3 -3
  307. data/lib/rubygems/ext.rb +7 -6
  308. data/lib/rubygems/gem_runner.rb +12 -16
  309. data/lib/rubygems/gemcutter_utilities.rb +60 -21
  310. data/lib/rubygems/indexer.rb +30 -28
  311. data/lib/rubygems/install_default_message.rb +2 -2
  312. data/lib/rubygems/install_message.rb +2 -2
  313. data/lib/rubygems/install_update_options.rb +70 -61
  314. data/lib/rubygems/installer.rb +135 -87
  315. data/lib/rubygems/installer_uninstaller_utils.rb +2 -2
  316. data/lib/rubygems/local_remote_options.rb +22 -24
  317. data/lib/rubygems/mock_gem_ui.rb +2 -2
  318. data/lib/rubygems/name_tuple.rb +6 -7
  319. data/lib/rubygems/optparse/.document +1 -0
  320. data/lib/rubygems/optparse/COPYING +56 -0
  321. data/lib/rubygems/optparse/lib/optionparser.rb +2 -0
  322. data/lib/rubygems/optparse/lib/optparse/ac.rb +54 -0
  323. data/lib/rubygems/optparse/lib/optparse/date.rb +18 -0
  324. data/lib/rubygems/optparse/lib/optparse/kwargs.rb +22 -0
  325. data/lib/rubygems/optparse/lib/optparse/shellwords.rb +7 -0
  326. data/lib/rubygems/optparse/lib/optparse/time.rb +11 -0
  327. data/lib/rubygems/optparse/lib/optparse/uri.rb +7 -0
  328. data/lib/rubygems/optparse/lib/optparse/version.rb +71 -0
  329. data/lib/rubygems/optparse/lib/optparse.rb +2308 -0
  330. data/lib/rubygems/optparse.rb +3 -0
  331. data/lib/rubygems/package/file_source.rb +2 -2
  332. data/lib/rubygems/package/old.rb +9 -9
  333. data/lib/rubygems/package/tar_header.rb +62 -62
  334. data/lib/rubygems/package/tar_reader/entry.rb +90 -9
  335. data/lib/rubygems/package/tar_reader.rb +1 -29
  336. data/lib/rubygems/package/tar_writer.rb +7 -7
  337. data/lib/rubygems/package.rb +77 -60
  338. data/lib/rubygems/package_task.rb +4 -4
  339. data/lib/rubygems/path_support.rb +1 -6
  340. data/lib/rubygems/platform.rb +94 -61
  341. data/lib/rubygems/psych_tree.rb +1 -1
  342. data/lib/rubygems/query_utils.rb +49 -51
  343. data/lib/rubygems/rdoc.rb +2 -2
  344. data/lib/rubygems/remote_fetcher.rb +27 -27
  345. data/lib/rubygems/request/connection_pools.rb +4 -4
  346. data/lib/rubygems/request/http_pool.rb +1 -1
  347. data/lib/rubygems/request.rb +24 -24
  348. data/lib/rubygems/request_set/gem_dependency_api.rb +122 -123
  349. data/lib/rubygems/request_set/lockfile/parser.rb +26 -26
  350. data/lib/rubygems/request_set/lockfile/tokenizer.rb +4 -4
  351. data/lib/rubygems/request_set/lockfile.rb +9 -9
  352. data/lib/rubygems/request_set.rb +18 -18
  353. data/lib/rubygems/requirement.rb +15 -15
  354. data/lib/rubygems/resolver/activation_request.rb +3 -3
  355. data/lib/rubygems/resolver/api_set.rb +4 -4
  356. data/lib/rubygems/resolver/api_specification.rb +6 -6
  357. data/lib/rubygems/resolver/best_set.rb +5 -5
  358. data/lib/rubygems/resolver/conflict.rb +10 -10
  359. data/lib/rubygems/resolver/dependency_request.rb +2 -2
  360. data/lib/rubygems/resolver/git_set.rb +2 -2
  361. data/lib/rubygems/resolver/git_specification.rb +6 -6
  362. data/lib/rubygems/resolver/index_set.rb +3 -3
  363. data/lib/rubygems/resolver/index_specification.rb +6 -5
  364. data/lib/rubygems/resolver/installed_specification.rb +4 -4
  365. data/lib/rubygems/resolver/installer_set.rb +21 -26
  366. data/lib/rubygems/resolver/local_specification.rb +2 -2
  367. data/lib/rubygems/resolver/lock_set.rb +4 -4
  368. data/lib/rubygems/resolver/lock_specification.rb +4 -4
  369. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +3 -3
  370. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
  371. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  372. data/lib/rubygems/resolver/molinillo.rb +1 -1
  373. data/lib/rubygems/resolver/specification.rb +1 -1
  374. data/lib/rubygems/resolver/stats.rb +1 -1
  375. data/lib/rubygems/resolver/vendor_set.rb +1 -1
  376. data/lib/rubygems/resolver/vendor_specification.rb +3 -3
  377. data/lib/rubygems/resolver.rb +40 -40
  378. data/lib/rubygems/s3_uri_signer.rb +6 -6
  379. data/lib/rubygems/safe_yaml.rb +10 -10
  380. data/lib/rubygems/security/policies.rb +47 -47
  381. data/lib/rubygems/security/policy.rb +19 -21
  382. data/lib/rubygems/security/signer.rb +5 -5
  383. data/lib/rubygems/security/trust_dir.rb +4 -4
  384. data/lib/rubygems/security.rb +37 -43
  385. data/lib/rubygems/security_option.rb +7 -7
  386. data/lib/rubygems/source/git.rb +25 -24
  387. data/lib/rubygems/source/installed.rb +1 -1
  388. data/lib/rubygems/source/local.rb +2 -2
  389. data/lib/rubygems/source/specific_file.rb +1 -1
  390. data/lib/rubygems/source.rb +27 -32
  391. data/lib/rubygems/source_list.rb +5 -9
  392. data/lib/rubygems/spec_fetcher.rb +37 -37
  393. data/lib/rubygems/specification.rb +265 -211
  394. data/lib/rubygems/specification_policy.rb +49 -30
  395. data/lib/rubygems/stub_specification.rb +24 -27
  396. data/lib/rubygems/text.rb +22 -21
  397. data/lib/rubygems/tsort/.document +1 -0
  398. data/lib/rubygems/tsort/LICENSE.txt +22 -0
  399. data/lib/rubygems/tsort/lib/tsort.rb +452 -0
  400. data/lib/rubygems/tsort.rb +3 -0
  401. data/lib/rubygems/uninstaller.rb +29 -26
  402. data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
  403. data/lib/rubygems/update_suggestion.rb +69 -0
  404. data/lib/rubygems/uri.rb +45 -30
  405. data/lib/rubygems/uri_formatter.rb +1 -1
  406. data/lib/rubygems/user_interaction.rb +42 -28
  407. data/lib/rubygems/util/licenses.rb +4 -2
  408. data/lib/rubygems/util.rb +12 -16
  409. data/lib/rubygems/validator.rb +6 -6
  410. data/lib/rubygems/version.rb +28 -17
  411. data/lib/rubygems/version_option.rb +5 -5
  412. data/lib/rubygems.rb +129 -117
  413. data/rubygems-update.gemspec +3 -3
  414. data/setup.rb +11 -16
  415. data/test/rubygems/alternate_cert.pem +14 -14
  416. data/test/rubygems/alternate_cert_32.pem +15 -15
  417. data/test/rubygems/alternate_key.pem +25 -25
  418. data/test/rubygems/bundler_test_gem.rb +419 -0
  419. data/test/rubygems/child_cert.pem +15 -16
  420. data/test/rubygems/child_cert_32.pem +15 -16
  421. data/test/rubygems/child_key.pem +25 -25
  422. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  423. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  424. data/test/rubygems/encrypted_private_key.pem +26 -26
  425. data/test/rubygems/expired_cert.pem +15 -15
  426. data/test/rubygems/future_cert.pem +15 -15
  427. data/test/rubygems/future_cert_32.pem +15 -15
  428. data/test/rubygems/grandchild_cert.pem +15 -16
  429. data/test/rubygems/grandchild_cert_32.pem +15 -16
  430. data/test/rubygems/grandchild_key.pem +25 -25
  431. data/test/rubygems/helper.rb +237 -207
  432. data/test/rubygems/installer_test_case.rb +13 -13
  433. data/test/rubygems/invalid_issuer_cert.pem +16 -16
  434. data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
  435. data/test/rubygems/invalid_key.pem +25 -25
  436. data/test/rubygems/invalid_signer_cert.pem +15 -15
  437. data/test/rubygems/invalid_signer_cert_32.pem +15 -15
  438. data/test/rubygems/invalidchild_cert.pem +15 -16
  439. data/test/rubygems/invalidchild_cert_32.pem +15 -16
  440. data/test/rubygems/invalidchild_key.pem +25 -25
  441. data/test/rubygems/package/tar_test_case.rb +52 -17
  442. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  443. data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
  444. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
  445. data/test/rubygems/private_key.pem +25 -25
  446. data/test/rubygems/public_cert.pem +16 -16
  447. data/test/rubygems/public_cert_32.pem +15 -15
  448. data/test/rubygems/public_key.pem +7 -7
  449. data/test/rubygems/rubygems_plugin.rb +2 -2
  450. data/test/rubygems/simple_gem.rb +1 -1
  451. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +4 -4
  452. data/test/rubygems/test_bundled_ca.rb +11 -11
  453. data/test/rubygems/test_config.rb +5 -5
  454. data/test/rubygems/test_deprecate.rb +3 -3
  455. data/test/rubygems/test_exit.rb +17 -0
  456. data/test/rubygems/test_gem.rb +367 -757
  457. data/test/rubygems/test_gem_available_set.rb +21 -21
  458. data/test/rubygems/test_gem_bundler_version_finder.rb +27 -47
  459. data/test/rubygems/test_gem_command.rb +45 -45
  460. data/test/rubygems/test_gem_command_manager.rb +124 -27
  461. data/test/rubygems/test_gem_commands_build_command.rb +73 -63
  462. data/test/rubygems/test_gem_commands_cert_command.rb +105 -107
  463. data/test/rubygems/test_gem_commands_check_command.rb +4 -4
  464. data/test/rubygems/test_gem_commands_cleanup_command.rb +40 -40
  465. data/test/rubygems/test_gem_commands_contents_command.rb +28 -28
  466. data/test/rubygems/test_gem_commands_dependency_command.rb +36 -36
  467. data/test/rubygems/test_gem_commands_environment_command.rb +38 -14
  468. data/test/rubygems/test_gem_commands_exec_command.rb +851 -0
  469. data/test/rubygems/test_gem_commands_fetch_command.rb +159 -26
  470. data/test/rubygems/test_gem_commands_generate_index_command.rb +7 -7
  471. data/test/rubygems/test_gem_commands_help_command.rb +13 -13
  472. data/test/rubygems/test_gem_commands_info_command.rb +28 -2
  473. data/test/rubygems/test_gem_commands_install_command.rb +200 -132
  474. data/test/rubygems/test_gem_commands_list_command.rb +4 -4
  475. data/test/rubygems/test_gem_commands_lock_command.rb +10 -10
  476. data/test/rubygems/test_gem_commands_mirror.rb +2 -2
  477. data/test/rubygems/test_gem_commands_open_command.rb +5 -5
  478. data/test/rubygems/test_gem_commands_outdated_command.rb +9 -9
  479. data/test/rubygems/test_gem_commands_owner_command.rb +126 -45
  480. data/test/rubygems/test_gem_commands_pristine_command.rb +141 -92
  481. data/test/rubygems/test_gem_commands_push_command.rb +85 -59
  482. data/test/rubygems/test_gem_commands_query_command.rb +73 -73
  483. data/test/rubygems/test_gem_commands_search_command.rb +2 -2
  484. data/test/rubygems/test_gem_commands_server_command.rb +6 -48
  485. data/test/rubygems/test_gem_commands_setup_command.rb +169 -92
  486. data/test/rubygems/test_gem_commands_signin_command.rb +154 -26
  487. data/test/rubygems/test_gem_commands_signout_command.rb +3 -3
  488. data/test/rubygems/test_gem_commands_sources_command.rb +74 -25
  489. data/test/rubygems/test_gem_commands_specification_command.rb +32 -32
  490. data/test/rubygems/test_gem_commands_stale_command.rb +4 -4
  491. data/test/rubygems/test_gem_commands_uninstall_command.rb +99 -82
  492. data/test/rubygems/test_gem_commands_unpack_command.rb +31 -31
  493. data/test/rubygems/test_gem_commands_update_command.rb +202 -91
  494. data/test/rubygems/test_gem_commands_which_command.rb +6 -6
  495. data/test/rubygems/test_gem_commands_yank_command.rb +43 -43
  496. data/test/rubygems/test_gem_config_file.rb +93 -81
  497. data/test/rubygems/test_gem_dependency.rb +78 -80
  498. data/test/rubygems/test_gem_dependency_installer.rb +165 -165
  499. data/test/rubygems/test_gem_dependency_list.rb +47 -47
  500. data/test/rubygems/test_gem_dependency_resolution_error.rb +4 -4
  501. data/test/rubygems/test_gem_doctor.rb +26 -26
  502. data/test/rubygems/test_gem_ext_builder.rb +60 -62
  503. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +1 -0
  504. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +8 -0
  505. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +233 -0
  506. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +10 -0
  507. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +27 -0
  508. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +1 -0
  509. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +1 -0
  510. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +247 -0
  511. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +10 -0
  512. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +8 -0
  513. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +51 -0
  514. data/test/rubygems/test_gem_ext_cargo_builder.rb +166 -0
  515. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +33 -0
  516. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +60 -0
  517. data/test/rubygems/test_gem_ext_cmake_builder.rb +17 -15
  518. data/test/rubygems/test_gem_ext_configure_builder.rb +13 -13
  519. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +53 -50
  520. data/test/rubygems/test_gem_ext_rake_builder.rb +15 -15
  521. data/test/rubygems/test_gem_gem_runner.rb +13 -8
  522. data/test/rubygems/test_gem_gemcutter_utilities.rb +71 -65
  523. data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -4
  524. data/test/rubygems/test_gem_indexer.rb +90 -67
  525. data/test/rubygems/test_gem_install_update_options.rb +18 -18
  526. data/test/rubygems/test_gem_installer.rb +511 -327
  527. data/test/rubygems/test_gem_local_remote_options.rb +10 -10
  528. data/test/rubygems/test_gem_name_tuple.rb +4 -4
  529. data/test/rubygems/test_gem_package.rb +246 -236
  530. data/test/rubygems/test_gem_package_old.rb +13 -13
  531. data/test/rubygems/test_gem_package_tar_header.rb +47 -47
  532. data/test/rubygems/test_gem_package_tar_reader.rb +55 -8
  533. data/test/rubygems/test_gem_package_tar_reader_entry.rb +161 -16
  534. data/test/rubygems/test_gem_package_tar_writer.rb +76 -76
  535. data/test/rubygems/test_gem_package_task.rb +18 -18
  536. data/test/rubygems/test_gem_path_support.rb +15 -19
  537. data/test/rubygems/test_gem_platform.rb +335 -214
  538. data/test/rubygems/test_gem_rdoc.rb +14 -14
  539. data/test/rubygems/test_gem_remote_fetcher.rb +169 -154
  540. data/test/rubygems/test_gem_request.rb +65 -59
  541. data/test/rubygems/test_gem_request_connection_pools.rb +29 -29
  542. data/test/rubygems/test_gem_request_set.rb +100 -100
  543. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +209 -211
  544. data/test/rubygems/test_gem_request_set_lockfile.rb +86 -86
  545. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +58 -58
  546. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +62 -62
  547. data/test/rubygems/test_gem_requirement.rb +47 -42
  548. data/test/rubygems/test_gem_resolver.rb +173 -106
  549. data/test/rubygems/test_gem_resolver_activation_request.rb +6 -6
  550. data/test/rubygems/test_gem_resolver_api_set.rb +33 -33
  551. data/test/rubygems/test_gem_resolver_api_specification.rb +47 -47
  552. data/test/rubygems/test_gem_resolver_best_set.rb +22 -22
  553. data/test/rubygems/test_gem_resolver_composed_set.rb +1 -1
  554. data/test/rubygems/test_gem_resolver_conflict.rb +12 -12
  555. data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -15
  556. data/test/rubygems/test_gem_resolver_git_set.rb +21 -21
  557. data/test/rubygems/test_gem_resolver_git_specification.rb +21 -21
  558. data/test/rubygems/test_gem_resolver_index_set.rb +12 -12
  559. data/test/rubygems/test_gem_resolver_index_specification.rb +16 -16
  560. data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -5
  561. data/test/rubygems/test_gem_resolver_installer_set.rb +79 -35
  562. data/test/rubygems/test_gem_resolver_local_specification.rb +7 -7
  563. data/test/rubygems/test_gem_resolver_lock_set.rb +12 -12
  564. data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -17
  565. data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -1
  566. data/test/rubygems/test_gem_resolver_specification.rb +8 -8
  567. data/test/rubygems/test_gem_resolver_vendor_set.rb +6 -6
  568. data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -10
  569. data/test/rubygems/test_gem_security.rb +69 -69
  570. data/test/rubygems/test_gem_security_policy.rb +72 -72
  571. data/test/rubygems/test_gem_security_signer.rb +34 -34
  572. data/test/rubygems/test_gem_security_trust_dir.rb +6 -6
  573. data/test/rubygems/test_gem_silent_ui.rb +38 -32
  574. data/test/rubygems/test_gem_source.rb +44 -44
  575. data/test/rubygems/test_gem_source_fetch_problem.rb +9 -9
  576. data/test/rubygems/test_gem_source_git.rb +69 -62
  577. data/test/rubygems/test_gem_source_installed.rb +16 -16
  578. data/test/rubygems/test_gem_source_list.rb +5 -5
  579. data/test/rubygems/test_gem_source_local.rb +14 -14
  580. data/test/rubygems/test_gem_source_lock.rb +31 -31
  581. data/test/rubygems/test_gem_source_specific_file.rb +17 -17
  582. data/test/rubygems/test_gem_source_subpath_problem.rb +7 -7
  583. data/test/rubygems/test_gem_source_vendor.rb +13 -13
  584. data/test/rubygems/test_gem_spec_fetcher.rb +72 -72
  585. data/test/rubygems/test_gem_specification.rb +560 -493
  586. data/test/rubygems/test_gem_stream_ui.rb +20 -20
  587. data/test/rubygems/test_gem_stub_specification.rb +32 -48
  588. data/test/rubygems/test_gem_text.rb +7 -1
  589. data/test/rubygems/test_gem_uninstaller.rb +113 -113
  590. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -3
  591. data/test/rubygems/test_gem_update_suggestion.rb +208 -0
  592. data/test/rubygems/test_gem_uri.rb +4 -4
  593. data/test/rubygems/test_gem_uri_formatter.rb +14 -14
  594. data/test/rubygems/test_gem_util.rb +23 -23
  595. data/test/rubygems/test_gem_validator.rb +8 -8
  596. data/test/rubygems/test_gem_version.rb +27 -16
  597. data/test/rubygems/test_gem_version_option.rb +15 -15
  598. data/test/rubygems/test_kernel.rb +42 -60
  599. data/test/rubygems/test_project_sanity.rb +2 -2
  600. data/test/rubygems/test_remote_fetch_error.rb +6 -6
  601. data/test/rubygems/test_require.rb +132 -174
  602. data/test/rubygems/test_rubygems.rb +42 -12
  603. data/test/rubygems/utilities.rb +59 -37
  604. data/test/rubygems/wrong_key_cert.pem +15 -15
  605. data/test/rubygems/wrong_key_cert_32.pem +15 -15
  606. data/test/test_changelog_generator.rb +1 -0
  607. metadata +97 -41
  608. data/bundler/lib/bundler/dep_proxy.rb +0 -55
  609. data/bundler/lib/bundler/gemdeps.rb +0 -29
  610. data/bundler/lib/bundler/psyched_yaml.rb +0 -22
  611. data/bundler/lib/bundler/templates/gems.rb +0 -8
  612. data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
  613. data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
  614. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
  615. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
  616. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
  617. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
  618. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
  619. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
  620. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
  621. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
  622. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
  623. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
  624. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
  625. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
  626. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -143
  627. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
  628. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
  629. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
  630. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
  631. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
  632. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
  633. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
  634. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
  635. data/bundler/lib/bundler/version_ranges.rb +0 -122
  636. data/lib/rubygems/psych_additions.rb +0 -10
  637. data/lib/rubygems/server.rb +0 -882
  638. data/test/rubygems/bogussources.rb +0 -9
  639. data/test/rubygems/data/null-type.gemspec.rz +0 -0
  640. data/test/rubygems/test_gem_server.rb +0 -608
  641. /data/bundler/lib/bundler/templates/newgem/ext/newgem/{extconf.rb.tt → extconf-c.rb.tt} +0 -0
@@ -1,16 +1,16 @@
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
+ 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"
11
11
 
12
12
  class TestGemSpecification < Gem::TestCase
13
- LEGACY_YAML_SPEC = <<-EOF.freeze
13
+ LEGACY_YAML_SPEC = <<-EOF
14
14
  --- !ruby/object:Gem::Specification
15
15
  rubygems_version: "1.0"
16
16
  name: keyedlist
@@ -29,7 +29,7 @@ email: flgr@ccan.de
29
29
  has_rdoc: true
30
30
  EOF
31
31
 
32
- LEGACY_RUBY_SPEC = <<-EOF.freeze
32
+ LEGACY_RUBY_SPEC = <<-EOF
33
33
  Gem::Specification.new do |s|
34
34
  s.name = %q{keyedlist}
35
35
  s.version = %q{0.4.0}
@@ -44,16 +44,16 @@ end
44
44
  EOF
45
45
 
46
46
  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'
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"
53
53
 
54
- s.add_dependency 'rake', '> 0.4'
55
- s.add_dependency 'jabber4r', '> 0.0.0'
56
- s.add_dependency 'pqa', ['> 0.4', '<= 0.6']
54
+ s.add_dependency "rake", "> 0.4"
55
+ s.add_dependency "jabber4r", "> 0.0.0"
56
+ s.add_dependency "pqa", ["> 0.4", "<= 0.6"]
57
57
 
58
58
  s.mark_version
59
59
  s.files = %w[lib/code.rb]
@@ -61,16 +61,16 @@ end
61
61
  end
62
62
 
63
63
  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'
64
+ @ext = util_spec "ext", "1" do |s|
65
+ s.executable = "exec"
66
+ s.test_file = "test/suite.rb"
67
67
  s.extensions = %w[ext/extconf.rb]
68
- s.license = 'MIT'
68
+ s.license = "MIT"
69
69
  s.platform = platform
70
70
 
71
71
  s.mark_version
72
72
  s.files = %w[lib/code.rb]
73
- s.installed_by_version = v('2.2')
73
+ s.installed_by_version = v("2.2")
74
74
  end
75
75
  end
76
76
 
@@ -88,40 +88,40 @@ end
88
88
  # is not set.
89
89
  Gem.instance_variable_set(:'@default_source_date_epoch', nil)
90
90
 
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'
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"
96
96
 
97
97
  s.mark_version
98
98
  s.files = %w[lib/code.rb]
99
99
  end
100
100
 
101
- @a2 = util_spec 'a', '2' do |s|
101
+ @a2 = util_spec "a", "2" do |s|
102
102
  s.files = %w[lib/code.rb]
103
103
  end
104
104
 
105
- @a3 = util_spec 'a', '3' do |s|
106
- s.metadata['allowed_push_host'] = "https://privategemserver.com"
105
+ @a3 = util_spec "a", "3" do |s|
106
+ s.metadata["allowed_push_host"] = "https://privategemserver.com"
107
107
  end
108
108
 
109
109
  @current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
110
110
  end
111
111
 
112
112
  def test_self_find_active_stub_by_path
113
- spec = util_spec('a', '1', nil, 'lib/foo.rb')
113
+ spec = util_spec("a", "1", nil, "lib/foo.rb")
114
114
  spec.activated = true
115
115
 
116
116
  # There used to be a bug (introduced in a9c1aaf) when Gem::Specification
117
117
  # objects are present in the @stubs collection. This test verifies that
118
118
  # this scenario works correctly.
119
119
  Gem::Specification.all = [spec]
120
- assert_equal spec, Gem::Specification.find_active_stub_by_path('foo')
120
+ assert_equal spec, Gem::Specification.find_active_stub_by_path("foo")
121
121
  end
122
122
 
123
123
  def test_self_activate
124
- foo = util_spec 'foo', '1'
124
+ foo = util_spec "foo", "1"
125
125
 
126
126
  assert_activate %w[foo-1], foo
127
127
  end
@@ -147,6 +147,7 @@ end
147
147
  end
148
148
 
149
149
  def test_find_in_unresolved_tree_is_not_exponentiental
150
+ pend "currently slower in CI on TruffleRuby" if RUBY_ENGINE == "truffleruby"
150
151
  num_of_pkg = 7
151
152
  num_of_version_per_pkg = 3
152
153
  packages = (0..num_of_pkg).map do |pkgi|
@@ -157,7 +158,7 @@ end
157
158
  util_spec "pkg#{pkgi}", pkg_version.to_s, deps
158
159
  end
159
160
  end
160
- base = util_spec "pkg_base", "1", {"pkg0" => ">= 0"}
161
+ base = util_spec "pkg_base", "1", { "pkg0" => ">= 0" }
161
162
 
162
163
  Gem::Specification.reset
163
164
  install_specs(*packages.flatten.reverse)
@@ -165,7 +166,7 @@ end
165
166
  base.activate
166
167
 
167
168
  tms = Benchmark.measure do
168
- assert_raise(LoadError) { require 'no_such_file_foo' }
169
+ assert_raise(LoadError) { require "no_such_file_foo" }
169
170
  end
170
171
  assert_operator tms.total, :<=, 10
171
172
  end
@@ -304,10 +305,10 @@ end
304
305
 
305
306
  def test_require_should_not_conflict
306
307
  base = util_spec "0", "1", "A" => ">= 1"
307
- a1 = util_spec "A", "1", {"c" => ">= 2", "b" => "> 0"}, "lib/a.rb"
308
- a2 = util_spec "A", "2", {"c" => ">= 2", "b" => "> 0"}, "lib/a.rb"
309
- b1 = util_spec "b", "1", {"c" => "= 1"}, "lib/d#{$$}.rb"
310
- b2 = util_spec "b", "2", {"c" => "= 2"}, "lib/d#{$$}.rb"
308
+ a1 = util_spec "A", "1", { "c" => ">= 2", "b" => "> 0" }, "lib/a.rb"
309
+ a2 = util_spec "A", "2", { "c" => ">= 2", "b" => "> 0" }, "lib/a.rb"
310
+ b1 = util_spec "b", "1", { "c" => "= 1" }, "lib/d#{$$}.rb"
311
+ b2 = util_spec "b", "2", { "c" => "= 2" }, "lib/d#{$$}.rb"
311
312
  c1 = util_spec "c", "1", {}, "lib/c.rb"
312
313
  c2 = util_spec "c", "2", {}, "lib/c.rb"
313
314
  c3 = util_spec "c", "3", {}, "lib/c.rb"
@@ -371,13 +372,13 @@ end
371
372
  # [B] ~> 1.0 (satisfied by 1.0)
372
373
 
373
374
  def test_self_activate_checks_dependencies
374
- a = util_spec 'a', '1.0'
375
- a.add_dependency 'c', '= 1.0'
376
- a.add_dependency 'b', '~> 1.0'
375
+ a = util_spec "a", "1.0"
376
+ a.add_dependency "c", "= 1.0"
377
+ a.add_dependency "b", "~> 1.0"
377
378
 
378
- b1 = util_spec 'b', '1.0'
379
- b2 = util_spec 'b', '2.0'
380
- c = util_spec 'c', '1.0', 'b' => '= 2.0'
379
+ b1 = util_spec "b", "1.0"
380
+ b2 = util_spec "b", "2.0"
381
+ c = util_spec "c", "1.0", "b" => "= 2.0"
381
382
  install_specs b1, b2, c, a
382
383
 
383
384
  e = assert_raise Gem::LoadError do
@@ -395,10 +396,10 @@ end
395
396
  # [B] = 2.0
396
397
 
397
398
  def test_self_activate_divergent
398
- a = util_spec 'a', '1.0', 'b' => '~> 1.0', 'c' => '= 1.0'
399
- b1 = util_spec 'b', '1.0'
400
- b2 = util_spec 'b', '2.0'
401
- c = util_spec 'c', '1.0', 'b' => '= 2.0'
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"
402
403
 
403
404
  install_specs b1, b2, c, a
404
405
 
@@ -414,9 +415,9 @@ end
414
415
  # DOC
415
416
 
416
417
  def test_self_activate_old_required
417
- e1, = util_spec 'e', '1', 'd' => '= 1'
418
- @d1 = util_spec 'd', '1'
419
- @d2 = util_spec 'd', '2'
418
+ e1, = util_spec "e", "1", "d" => "= 1"
419
+ @d1 = util_spec "d", "1"
420
+ @d2 = util_spec "d", "2"
420
421
 
421
422
  install_specs @d1, @d2, e1
422
423
 
@@ -427,17 +428,17 @@ end
427
428
  # DOC
428
429
 
429
430
  def test_self_activate_platform_alternate
430
- @x1_m = util_spec 'x', '1' do |s|
431
+ @x1_m = util_spec "x", "1" do |s|
431
432
  s.platform = Gem::Platform.new %w[cpu my_platform 1]
432
433
  end
433
434
 
434
- @x1_o = util_spec 'x', '1' do |s|
435
+ @x1_o = util_spec "x", "1" do |s|
435
436
  s.platform = Gem::Platform.new %w[cpu other_platform 1]
436
437
  end
437
438
 
438
- @w1 = util_spec 'w', '1', 'x' => nil
439
+ @w1 = util_spec "w", "1", "x" => nil
439
440
 
440
- util_set_arch 'cpu-my_platform1'
441
+ util_set_arch "cpu-my_platform1"
441
442
  install_specs @x1_m, @x1_o, @w1
442
443
 
443
444
  assert_activate %w[x-1-cpu-my_platform-1 w-1], @w1, @x1_m
@@ -447,13 +448,13 @@ end
447
448
  # DOC
448
449
 
449
450
  def test_self_activate_platform_bump
450
- @y1 = util_spec 'y', '1'
451
+ @y1 = util_spec "y", "1"
451
452
 
452
- @y1_1_p = util_spec 'y', '1.1' do |s|
453
+ @y1_1_p = util_spec "y", "1.1" do |s|
453
454
  s.platform = Gem::Platform.new %w[cpu my_platform 1]
454
455
  end
455
456
 
456
- @z1 = util_spec 'z', '1', 'y' => nil
457
+ @z1 = util_spec "z", "1", "y" => nil
457
458
  install_specs @y1, @y1_1_p, @z1
458
459
 
459
460
  assert_activate %w[y-1 z-1], @z1, @y1
@@ -466,11 +467,11 @@ end
466
467
  # [A] >= 0 (satisfied by 1.a)
467
468
 
468
469
  def test_self_activate_prerelease
469
- @c1_pre = util_spec 'c', '1.a', "a" => "1.a", "b" => "1"
470
- @a1_pre = util_spec 'a', '1.a'
471
- @b1 = util_spec 'b', '1' do |s|
472
- s.add_dependency 'a'
473
- s.add_development_dependency 'aa'
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"
474
475
  end
475
476
  install_specs @a1_pre, @b1, @c1_pre
476
477
 
@@ -532,7 +533,7 @@ end
532
533
  end
533
534
 
534
535
  def test_self_activate_loaded
535
- foo = util_spec 'foo', '1'
536
+ foo = util_spec "foo", "1"
536
537
 
537
538
  assert foo.activate
538
539
  refute foo.activate
@@ -544,9 +545,9 @@ end
544
545
  # [C] depends on nothing
545
546
 
546
547
  def test_self_activate_unrelated
547
- a = util_spec 'a', '1.0', 'b' => '>= 1.0'
548
- b = util_spec 'b', '1.0'
549
- c = util_spec 'c', '1.0'
548
+ a = util_spec "a", "1.0", "b" => ">= 1.0"
549
+ b = util_spec "b", "1.0"
550
+ c = util_spec "c", "1.0"
550
551
  install_specs b, c, a
551
552
 
552
553
  assert_activate %w[b-1.0 c-1.0 a-1.0], a, c, "b"
@@ -562,11 +563,11 @@ end
562
563
  # TODO: move these to specification
563
564
 
564
565
  def test_self_activate_over
565
- a = util_spec 'a', '1.0', 'b' => '>= 1.0', 'c' => '= 1.0'
566
- install_specs util_spec 'b', '1.0'
567
- install_specs util_spec 'b', '1.1'
568
- install_specs util_spec 'b', '2.0'
569
- install_specs util_spec 'c', '1.0', 'b' => '~> 1.0'
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"
570
571
  install_specs a
571
572
 
572
573
  a.activate
@@ -587,10 +588,10 @@ end
587
588
  # first resolve through a dependency that is later pruned.
588
589
 
589
590
  def test_self_activate_under
590
- a = util_spec 'a', '1.0', 'b' => '~> 1.0', 'c' => '= 1.0'
591
- b1 = util_spec 'b', '1.0'
592
- b1_1 = util_spec 'b', '1.1'
593
- c = util_spec 'c', '1.0', 'b' => '= 1.0'
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"
594
595
 
595
596
  install_specs b1, b1_1, c, a
596
597
 
@@ -606,10 +607,10 @@ end
606
607
  # [C1] depends on nothing
607
608
 
608
609
  def test_self_activate_dropped
609
- a1 = util_spec 'a', '1', 'b' => nil
610
- b1 = util_spec 'b', '1', 'c' => nil
611
- b2 = util_spec 'b', '2'
612
- c1 = util_spec 'c', '1'
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"
613
614
  install_specs c1, b1, b2, a1
614
615
 
615
616
  assert_activate %w[b-2 a-1], a1, "b"
@@ -626,11 +627,11 @@ end
626
627
  # resolve.
627
628
 
628
629
  def test_self_activate_raggi_the_edgecase_generator
629
- a = util_spec 'a', '1.0', 'b' => '>= 1.0', 'c' => '>= 1.0'
630
- b1 = util_spec 'b', '1.0'
631
- b1_0 = util_spec 'b', '1.1', 'z' => '>= 1.0'
632
- c = util_spec 'c', '1.0', 'b' => '= 1.0'
633
- z = util_spec 'z', '1'
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"
634
635
 
635
636
  install_specs z, b1, b1_0, c, z
636
637
 
@@ -638,8 +639,8 @@ end
638
639
  end
639
640
 
640
641
  def test_self_activate_conflict
641
- install_specs util_spec 'b', '1.0'
642
- install_specs util_spec 'b', '2.0'
642
+ install_specs util_spec "b", "1.0"
643
+ install_specs util_spec "b", "2.0"
643
644
 
644
645
  gem "b", "= 1.0"
645
646
 
@@ -654,7 +655,7 @@ end
654
655
  install_specs a
655
656
  Gem::Specification.all = [a]
656
657
 
657
- assert_equal a, Gem::Specification.find_inactive_by_path('foo')
658
+ assert_equal a, Gem::Specification.find_inactive_by_path("foo")
658
659
  end
659
660
 
660
661
  def test_self_attribute_names
@@ -697,13 +698,13 @@ end
697
698
 
698
699
  def test_self__load_future
699
700
  spec = Gem::Specification.new
700
- spec.name = 'a'
701
- spec.version = '1'
701
+ spec.name = "a"
702
+ spec.version = "1"
702
703
  spec.specification_version = @current_version + 1
703
704
 
704
705
  load_spec = Marshal.load Marshal.dump(spec)
705
706
 
706
- assert_equal 'a', load_spec.name
707
+ assert_equal "a", load_spec.name
707
708
  assert_equal Gem::Version.new(1), load_spec.version
708
709
  assert_equal @current_version, load_spec.specification_version
709
710
  end
@@ -782,20 +783,20 @@ dependencies: []
782
783
  end
783
784
 
784
785
  def test_self_load_relative
785
- File.open 'a-2.gemspec', 'w' do |io|
786
+ File.open "a-2.gemspec", "w" do |io|
786
787
  io.write @a2.to_ruby_for_cache
787
788
  end
788
789
 
789
- spec = Gem::Specification.load 'a-2.gemspec'
790
+ spec = Gem::Specification.load "a-2.gemspec"
790
791
 
791
792
  @a2.files.clear
792
793
 
793
794
  assert_equal @a2, spec
794
795
 
795
- assert_equal File.join(@tempdir, 'a-2.gemspec'), spec.loaded_from
796
+ assert_equal File.join(@tempdir, "a-2.gemspec"), spec.loaded_from
796
797
  end
797
798
 
798
- if RUBY_ENGINE == 'ruby' and RUBY_VERSION < '2.7'
799
+ if RUBY_ENGINE == "ruby" && RUBY_VERSION < "2.7"
799
800
  def test_self_load_tainted
800
801
  full_path = @a2.spec_file
801
802
  write_file full_path do |io|
@@ -873,34 +874,31 @@ dependencies: []
873
874
  end
874
875
 
875
876
  def test_self_load_utf8_with_ascii_encoding
876
- int_enc = Encoding.default_internal
877
- silence_warnings { Encoding.default_internal = 'US-ASCII' }
877
+ with_internal_encoding("US-ASCII") do
878
+ spec2 = @a2.dup
879
+ bin = "\u5678".dup
880
+ spec2.authors = [bin]
881
+ full_path = spec2.spec_file
882
+ 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
+ end
878
885
 
879
- spec2 = @a2.dup
880
- bin = "\u5678".dup
881
- spec2.authors = [bin]
882
- full_path = spec2.spec_file
883
- write_file full_path do |io|
884
- io.write spec2.to_ruby_for_cache.force_encoding('BINARY').sub("\\u{5678}", bin.force_encoding('BINARY'))
885
- end
886
+ spec = Gem::Specification.load full_path
886
887
 
887
- spec = Gem::Specification.load full_path
888
+ spec2.files.clear
888
889
 
889
- spec2.files.clear
890
-
891
- assert_equal spec2, spec
892
- ensure
893
- silence_warnings { Encoding.default_internal = int_enc }
890
+ assert_equal spec2, spec
891
+ end
894
892
  end
895
893
 
896
894
  def test_self_load_legacy_ruby
897
895
  spec = Gem::Deprecate.skip_during do
898
896
  eval LEGACY_RUBY_SPEC
899
897
  end
900
- assert_equal 'keyedlist', spec.name
901
- assert_equal '0.4.0', spec.version.to_s
898
+ assert_equal "keyedlist", spec.name
899
+ assert_equal "0.4.0", spec.version.to_s
902
900
  assert_kind_of Time, spec.date
903
- assert spec.required_ruby_version.satisfied_by?(Gem::Version.new('1'))
901
+ assert spec.required_ruby_version.satisfied_by?(Gem::Version.new("1"))
904
902
  assert_equal false, spec.has_unit_tests?
905
903
  end
906
904
 
@@ -935,26 +933,26 @@ dependencies: []
935
933
 
936
934
  def test_self_outdated
937
935
  spec_fetcher do |fetcher|
938
- fetcher.download 'a', 4
936
+ fetcher.download "a", 4
939
937
 
940
- fetcher.spec 'a', 3
938
+ fetcher.spec "a", 3
941
939
  end
942
940
 
943
941
  assert_equal %w[a], Gem::Specification.outdated
944
942
  end
945
943
 
946
944
  def test_self_outdated_and_latest_remotes
947
- specs = spec_fetcher do |fetcher|
948
- fetcher.download 'a', 4
949
- fetcher.download 'b', 3
945
+ spec_fetcher do |fetcher|
946
+ fetcher.download "a", 4
947
+ fetcher.download "b", 3
950
948
 
951
- fetcher.spec 'a', '3.a'
952
- fetcher.spec 'b', 2
949
+ fetcher.spec "a", "3.a"
950
+ fetcher.spec "b", 2
953
951
  end
954
952
 
955
953
  expected = [
956
- [specs['a-3.a'], v(4)],
957
- [specs['b-2'], v(3)],
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)],
958
956
  ]
959
957
 
960
958
  assert_equal expected, Gem::Specification.outdated_and_latest_version.to_a
@@ -963,18 +961,18 @@ dependencies: []
963
961
  def test_self_remove_spec
964
962
  install_specs @a1
965
963
 
966
- assert_includes Gem::Specification.all_names, 'a-1'
967
- assert_includes Gem::Specification.stubs.map {|s| s.full_name }, 'a-1'
964
+ assert_includes Gem::Specification.all_names, "a-1"
965
+ assert_includes Gem::Specification.stubs.map {|s| s.full_name }, "a-1"
968
966
 
969
967
  uninstall_gem @a1
970
968
  Gem::Specification.reset
971
969
 
972
- refute_includes Gem::Specification.all_names, 'a-1'
973
- refute_includes Gem::Specification.stubs.map {|s| s.full_name }, 'a-1'
970
+ refute_includes Gem::Specification.all_names, "a-1"
971
+ refute_includes Gem::Specification.stubs.map {|s| s.full_name }, "a-1"
974
972
  end
975
973
 
976
974
  def test_self_remove_spec_removed
977
- File.open @a1.spec_file, 'w' do |io|
975
+ File.open @a1.spec_file, "w" do |io|
978
976
  io.write @a1.to_ruby
979
977
  end
980
978
 
@@ -984,40 +982,40 @@ dependencies: []
984
982
 
985
983
  Gem::Specification.reset
986
984
 
987
- refute_includes Gem::Specification.all_names, 'a-1'
988
- refute_includes Gem::Specification.stubs.map {|s| s.full_name }, 'a-1'
985
+ refute_includes Gem::Specification.all_names, "a-1"
986
+ refute_includes Gem::Specification.stubs.map {|s| s.full_name }, "a-1"
989
987
  end
990
988
 
991
989
  def test_self_stubs_for_lazy_loading
992
990
  Gem.loaded_specs.clear
993
991
  Gem::Specification.class_variable_set(:@@stubs, nil)
994
992
 
995
- dir_standard_specs = File.join Gem.dir, 'specifications'
993
+ dir_standard_specs = File.join Gem.dir, "specifications"
996
994
 
997
- save_gemspec('a-1', '1', dir_standard_specs){|s| s.name = 'a' }
998
- save_gemspec('b-1', '1', dir_standard_specs){|s| s.name = 'b' }
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" }
999
997
 
1000
- assert_equal ['a-1'], Gem::Specification.stubs_for('a').map {|s| s.full_name }
998
+ assert_equal ["a-1"], Gem::Specification.stubs_for("a").map {|s| s.full_name }
1001
999
  assert_equal 1, Gem::Specification.class_variable_get(:@@stubs_by_name).length
1002
- assert_equal ['b-1'], Gem::Specification.stubs_for('b').map {|s| s.full_name }
1000
+ assert_equal ["b-1"], Gem::Specification.stubs_for("b").map {|s| s.full_name }
1003
1001
  assert_equal 2, Gem::Specification.class_variable_get(:@@stubs_by_name).length
1004
1002
 
1005
1003
  assert_equal(
1006
- Gem::Specification.stubs_for('a').map {|s| s.object_id },
1007
- Gem::Specification.stubs_for('a').map {|s| s.object_id }
1004
+ Gem::Specification.stubs_for("a").map {|s| s.object_id },
1005
+ Gem::Specification.stubs_for("a").map {|s| s.object_id }
1008
1006
  )
1009
1007
 
1010
- Gem.loaded_specs.delete 'a'
1011
- Gem.loaded_specs.delete 'b'
1008
+ Gem.loaded_specs.delete "a"
1009
+ Gem.loaded_specs.delete "b"
1012
1010
  Gem::Specification.class_variable_set(:@@stubs, nil)
1013
1011
  end
1014
1012
 
1015
1013
  def test_self_stubs_for_no_lazy_loading_after_all_specs_setup
1016
- Gem::Specification.all = [util_spec('a', '1')]
1014
+ Gem::Specification.all = [util_spec("a", "1")]
1017
1015
 
1018
- save_gemspec('b-1', '1', File.join(Gem.dir, 'specifications')){|s| s.name = 'b' }
1016
+ save_gemspec("b-1", "1", File.join(Gem.dir, "specifications")) {|s| s.name = "b" }
1019
1017
 
1020
- assert_equal [], Gem::Specification.stubs_for('b').map {|s| s.full_name }
1018
+ assert_equal [], Gem::Specification.stubs_for("b").map {|s| s.full_name }
1021
1019
  end
1022
1020
 
1023
1021
  def test_self_stubs_for_mult_platforms
@@ -1027,30 +1025,30 @@ dependencies: []
1027
1025
  orig_platform = Gem.platforms.dup
1028
1026
 
1029
1027
  # create user spec
1030
- user_spec_dir = File.join Gem.user_dir, 'specifications'
1028
+ user_spec_dir = File.join Gem.user_dir, "specifications"
1031
1029
  FileUtils.mkdir_p(user_spec_dir) unless Dir.exist? user_spec_dir
1032
1030
  # dirs doesn't include user ?
1033
1031
  Gem::Specification.dirs << user_spec_dir
1034
1032
 
1035
- gem = 'mingw'
1036
- v = '1.1.1'
1037
- platforms = ['x86-mingw32', 'x64-mingw32']
1033
+ gem = "mingw"
1034
+ v = "1.1.1"
1035
+ platforms = ["x86-mingw32", "x64-mingw32"]
1038
1036
 
1039
1037
  #create specs
1040
1038
  platforms.each do |plat|
1041
1039
  spec = Gem::Specification.new(gem, v) {|s| s.platform = plat }
1042
- File.open File.join(user_spec_dir, "#{gem}-#{v}-#{plat}.gemspec"), 'w' do |io|
1040
+ File.open File.join(user_spec_dir, "#{gem}-#{v}-#{plat}.gemspec"), "w" do |io|
1043
1041
  io.write spec.to_ruby
1044
1042
  end
1045
1043
  end
1046
1044
 
1047
1045
  platforms.each do |plat|
1048
1046
  cur_plat = Gem::Platform.new plat
1049
- Gem.platforms = ['ruby', cur_plat]
1047
+ Gem.platforms = ["ruby", cur_plat]
1050
1048
 
1051
1049
  Gem::Specification.class_variable_set :@@stubs, nil
1052
1050
  Gem::Specification.stubs if plat == platforms.last # test loading via stubs
1053
- t = Gem::Specification.stubs_for 'mingw'
1051
+ t = Gem::Specification.stubs_for "mingw"
1054
1052
 
1055
1053
  assert_equal 1, t.length
1056
1054
  assert_equal cur_plat, t.first.platform
@@ -1060,21 +1058,29 @@ dependencies: []
1060
1058
  end
1061
1059
 
1062
1060
  def test_self_stubs_returns_only_specified_named_specs
1063
- dir_standard_specs = File.join Gem.dir, 'specifications'
1061
+ dir_standard_specs = File.join Gem.dir, "specifications"
1064
1062
 
1065
- save_gemspec('a-1', '1', dir_standard_specs){|s| s.name = 'a' }
1066
- save_gemspec('a-2', '2', dir_standard_specs){|s| s.name = 'a' }
1067
- save_gemspec('a-a', '3', dir_standard_specs){|s| s.name = 'a-a' }
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" }
1068
1066
 
1069
- assert_equal ['a-1', 'a-2'], Gem::Specification.stubs_for('a').map(&:full_name).sort
1067
+ assert_equal ["a-1", "a-2"], Gem::Specification.stubs_for("a").map(&:full_name).sort
1070
1068
  end
1071
1069
 
1072
1070
  def test_handles_private_null_type
1073
- path = File.expand_path "../data/null-type.gemspec.rz", __FILE__
1071
+ path = File.expand_path "data/pry-0.4.7.gemspec.rz", __dir__
1072
+
1073
+ data = Marshal.load Gem::Util.inflate(Gem.read_binary(path))
1074
+
1075
+ assert_instance_of Gem::Specification, data
1076
+ end
1077
+
1078
+ def test_handles_dependencies_with_syck_requirements_bug
1079
+ path = File.expand_path "data/excon-0.7.7.gemspec.rz", __dir__
1074
1080
 
1075
1081
  data = Marshal.load Gem::Util.inflate(Gem.read_binary(path))
1076
1082
 
1077
- assert_nil data.signing_key
1083
+ assert_instance_of Gem::Specification, data
1078
1084
  end
1079
1085
 
1080
1086
  def test_initialize
@@ -1096,9 +1102,9 @@ dependencies: []
1096
1102
  assert_equal [], spec.extensions
1097
1103
  assert_equal [], spec.requirements
1098
1104
  assert_equal [], spec.dependencies
1099
- assert_equal 'bin', spec.bindir
1100
- assert_equal '>= 0', spec.required_ruby_version.to_s
1101
- assert_equal '>= 0', spec.required_rubygems_version.to_s
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
1102
1108
  end
1103
1109
 
1104
1110
  def test_initialize_future
@@ -1120,18 +1126,18 @@ dependencies: []
1120
1126
  spec = Gem::Specification.new do |s|
1121
1127
  s.name = "blah"
1122
1128
  s.version = "1.3.5"
1123
- s.summary = 'summary'
1124
- s.description = 'description'
1125
- s.authors = 'author a', 'author b'
1126
- s.licenses = 'BSD-2-Clause'
1127
- s.files = 'lib/file.rb'
1128
- s.test_files = 'test/file.rb'
1129
- s.rdoc_options = '--foo'
1130
- s.extra_rdoc_files = 'README.txt'
1131
- s.executables = 'exec'
1132
- s.extensions = 'ext/extconf.rb'
1133
- s.requirements = 'requirement'
1134
- s.add_dependency 'some_gem'
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"
1135
1141
  end
1136
1142
 
1137
1143
  dup_spec = spec.dup
@@ -1145,84 +1151,93 @@ dependencies: []
1145
1151
  assert_equal Gem::Platform::RUBY, spec.platform
1146
1152
  assert_same spec.platform, dup_spec.platform
1147
1153
 
1148
- assert_equal 'summary', spec.summary
1154
+ assert_equal "summary", spec.summary
1149
1155
  assert_same spec.summary, dup_spec.summary
1150
1156
 
1151
1157
  assert_equal %w[README.txt bin/exec ext/extconf.rb lib/file.rb
1152
1158
  test/file.rb].sort,
1153
1159
  spec.files
1154
- refute_same spec.files, dup_spec.files, 'files'
1160
+ refute_same spec.files, dup_spec.files, "files"
1155
1161
 
1156
1162
  assert_equal %w[test/file.rb], spec.test_files
1157
- refute_same spec.test_files, dup_spec.test_files, 'test_files'
1163
+ refute_same spec.test_files, dup_spec.test_files, "test_files"
1158
1164
 
1159
1165
  assert_equal %w[--foo], spec.rdoc_options
1160
- refute_same spec.rdoc_options, dup_spec.rdoc_options, 'rdoc_options'
1166
+ refute_same spec.rdoc_options, dup_spec.rdoc_options, "rdoc_options"
1161
1167
 
1162
1168
  assert_equal %w[README.txt], spec.extra_rdoc_files
1163
1169
  refute_same spec.extra_rdoc_files, dup_spec.extra_rdoc_files,
1164
- 'extra_rdoc_files'
1170
+ "extra_rdoc_files"
1165
1171
 
1166
1172
  assert_equal %w[exec], spec.executables
1167
- refute_same spec.executables, dup_spec.executables, 'executables'
1173
+ refute_same spec.executables, dup_spec.executables, "executables"
1168
1174
 
1169
1175
  assert_equal %w[ext/extconf.rb], spec.extensions
1170
- refute_same spec.extensions, dup_spec.extensions, 'extensions'
1176
+ refute_same spec.extensions, dup_spec.extensions, "extensions"
1171
1177
 
1172
1178
  assert_equal %w[requirement], spec.requirements
1173
- refute_same spec.requirements, dup_spec.requirements, 'requirements'
1179
+ refute_same spec.requirements, dup_spec.requirements, "requirements"
1174
1180
 
1175
- assert_equal [Gem::Dependency.new('some_gem', Gem::Requirement.default)],
1181
+ assert_equal [Gem::Dependency.new("some_gem", Gem::Requirement.default)],
1176
1182
  spec.dependencies
1177
- refute_same spec.dependencies, dup_spec.dependencies, 'dependencies'
1183
+ refute_same spec.dependencies, dup_spec.dependencies, "dependencies"
1178
1184
 
1179
- assert_equal 'bin', spec.bindir
1185
+ assert_equal "bin", spec.bindir
1180
1186
  assert_same spec.bindir, dup_spec.bindir
1181
1187
 
1182
- assert_equal '>= 0', spec.required_ruby_version.to_s
1188
+ assert_equal ">= 0", spec.required_ruby_version.to_s
1183
1189
  assert_same spec.required_ruby_version, dup_spec.required_ruby_version
1184
1190
 
1185
- assert_equal '>= 0', spec.required_rubygems_version.to_s
1191
+ assert_equal ">= 0", spec.required_rubygems_version.to_s
1186
1192
  assert_same spec.required_rubygems_version,
1187
1193
  dup_spec.required_rubygems_version
1188
1194
  end
1189
1195
 
1190
1196
  def test_initialize_copy_broken
1191
1197
  spec = Gem::Specification.new do |s|
1192
- s.name = 'a'
1193
- s.version = '1'
1198
+ s.name = "a"
1199
+ s.version = "1"
1194
1200
  end
1195
1201
 
1196
1202
  spec.instance_variable_set :@licenses, (class << (Object.new);self;end)
1197
- spec.loaded_from = '/path/to/file'
1203
+ spec.loaded_from = "/path/to/file"
1198
1204
 
1199
1205
  e = assert_raise Gem::FormatException do
1200
1206
  spec.dup
1201
1207
  end
1202
1208
 
1203
- assert_equal 'a-1 has an invalid value for @licenses', e.message
1204
- assert_equal '/path/to/file', e.file_path
1209
+ assert_equal "a-1 has an invalid value for @licenses", e.message
1210
+ assert_equal "/path/to/file", e.file_path
1205
1211
  end
1206
1212
 
1207
1213
  def test_initialize_prerelease_version_before_name
1208
1214
  spec = Gem::Specification.new do |s|
1209
- s.version = '1.0.0.dev'
1210
- s.name = 'a'
1215
+ s.version = "1.0.0.dev"
1216
+ s.name = "a"
1211
1217
  end
1212
1218
 
1213
1219
  assert_equal "a", spec.name
1214
1220
  assert_equal "1.0.0.dev", spec.version.to_s
1215
1221
  end
1216
1222
 
1223
+ def test_initialize_nil_version
1224
+ expected = "nil versions are discouraged and will be deprecated in Rubygems 4\n"
1225
+ actual_stdout, actual_stderr = capture_output do
1226
+ Gem::Specification.new.version = nil
1227
+ end
1228
+ assert_empty actual_stdout
1229
+ assert_equal(expected, actual_stderr)
1230
+ end
1231
+
1217
1232
  def test__dump
1218
1233
  @a2.platform = Gem::Platform.local
1219
- @a2.instance_variable_set :@original_platform, 'old_platform'
1234
+ @a2.instance_variable_set :@original_platform, "old_platform"
1220
1235
 
1221
1236
  data = Marshal.dump @a2
1222
1237
 
1223
1238
  same_spec = Marshal.load data
1224
1239
 
1225
- assert_equal 'old_platform', same_spec.original_platform
1240
+ assert_equal "old_platform", same_spec.original_platform
1226
1241
  end
1227
1242
 
1228
1243
  def test_activate
@@ -1241,7 +1256,7 @@ dependencies: []
1241
1256
  end
1242
1257
 
1243
1258
  def test_add_dependency_from_existing_dependency
1244
- dep = Gem::Dependency.new("existing_dep", Gem::Requirement.new('> 1'), :runtime)
1259
+ dep = Gem::Dependency.new("existing_dep", Gem::Requirement.new("> 1"), :runtime)
1245
1260
  spec = Gem::Specification.new {|s| s.add_dependency dep }
1246
1261
  assert_equal dep, spec.dependencies.first
1247
1262
  end
@@ -1256,22 +1271,22 @@ dependencies: []
1256
1271
  end
1257
1272
 
1258
1273
  def test_author
1259
- assert_equal 'A User', @a1.author
1274
+ assert_equal "A User", @a1.author
1260
1275
  end
1261
1276
 
1262
1277
  def test_authors
1263
- assert_equal ['A User'], @a1.authors
1278
+ assert_equal ["A User"], @a1.authors
1264
1279
  end
1265
1280
 
1266
1281
  def test_bindir_equals
1267
- @a1.bindir = 'apps'
1282
+ @a1.bindir = "apps"
1268
1283
 
1269
- assert_equal 'apps', @a1.bindir
1284
+ assert_equal "apps", @a1.bindir
1270
1285
  end
1271
1286
 
1272
1287
  def test_bindir_equals_nil
1273
1288
  @a2.bindir = nil
1274
- @a2.executable = 'app'
1289
+ @a2.executable = "app"
1275
1290
 
1276
1291
  assert_nil @a2.bindir
1277
1292
  assert_equal %w[app lib/code.rb].sort, @a2.files
@@ -1307,14 +1322,14 @@ dependencies: []
1307
1322
 
1308
1323
  assert_empty @ext.build_args
1309
1324
 
1310
- File.open @ext.build_info_file, 'w' do |io|
1325
+ File.open @ext.build_info_file, "w" do |io|
1311
1326
  io.puts
1312
1327
  end
1313
1328
 
1314
1329
  assert_empty @ext.build_args
1315
1330
 
1316
- File.open @ext.build_info_file, 'w' do |io|
1317
- io.puts '--with-foo-dir=wherever'
1331
+ File.open @ext.build_info_file, "w" do |io|
1332
+ io.puts "--with-foo-dir=wherever"
1318
1333
  end
1319
1334
 
1320
1335
  assert_equal %w[--with-foo-dir=wherever], @ext.build_args
@@ -1324,13 +1339,13 @@ dependencies: []
1324
1339
  pend "extensions don't quite work on jruby" if Gem.java_platform?
1325
1340
  ext_spec
1326
1341
 
1327
- assert_path_not_exist @ext.extension_dir, 'sanity check'
1328
- refute_empty @ext.extensions, 'sanity check'
1342
+ assert_path_not_exist @ext.extension_dir, "sanity check"
1343
+ refute_empty @ext.extensions, "sanity check"
1329
1344
 
1330
1345
  extconf_rb = File.join @ext.gem_dir, @ext.extensions.first
1331
1346
  FileUtils.mkdir_p File.dirname extconf_rb
1332
1347
 
1333
- File.open extconf_rb, 'w' do |f|
1348
+ File.open extconf_rb, "w" do |f|
1334
1349
  f.write <<-'RUBY'
1335
1350
  File.open 'Makefile', 'w' do |f|
1336
1351
  f.puts "clean:\n\techo clean"
@@ -1346,13 +1361,13 @@ dependencies: []
1346
1361
  end
1347
1362
 
1348
1363
  def test_default_spec_stub_is_marked_default
1349
- default = new_default_spec 'default', 2
1364
+ default = new_default_spec "default", 2
1350
1365
  install_default_gems default
1351
1366
 
1352
- stub = Gem::Specification.stubs.find {|s| s.name == 'default' }
1367
+ stub = Gem::Specification.stubs.find {|s| s.name == "default" }
1353
1368
  assert_predicate stub, :default_gem?
1354
1369
 
1355
- stub = Gem::Specification.find_all_by_name('default').first
1370
+ stub = Gem::Specification.find_all_by_name("default").first
1356
1371
  assert_predicate stub, :default_gem?
1357
1372
  end
1358
1373
 
@@ -1360,28 +1375,28 @@ dependencies: []
1360
1375
  pend "extensions don't quite work on jruby" if Gem.java_platform?
1361
1376
  ext_spec
1362
1377
 
1363
- refute_empty @ext.extensions, 'sanity check'
1378
+ refute_empty @ext.extensions, "sanity check"
1364
1379
 
1365
1380
  gem_build_complete =
1366
- File.join @ext.extension_dir, 'gem.build_complete'
1381
+ File.join @ext.extension_dir, "gem.build_complete"
1367
1382
 
1368
1383
  FileUtils.mkdir_p @ext.extension_dir
1369
1384
  FileUtils.touch gem_build_complete
1370
1385
 
1371
1386
  @ext.build_extensions
1372
1387
 
1373
- gem_make_out = File.join @ext.extension_dir, 'gem_make.out'
1388
+ gem_make_out = File.join @ext.extension_dir, "gem_make.out"
1374
1389
  assert_path_not_exist gem_make_out
1375
1390
  end
1376
1391
 
1377
1392
  def test_build_extensions_default_gem
1378
- spec = new_default_spec 'default', 1
1379
- spec.extensions << 'extconf.rb'
1393
+ spec = new_default_spec "default", 1
1394
+ spec.extensions << "extconf.rb"
1380
1395
 
1381
1396
  extconf_rb = File.join spec.gem_dir, spec.extensions.first
1382
1397
  FileUtils.mkdir_p File.dirname extconf_rb
1383
1398
 
1384
- File.open extconf_rb, 'w' do |f|
1399
+ File.open extconf_rb, "w" do |f|
1385
1400
  f.write <<-'RUBY'
1386
1401
  File.open 'Makefile', 'w' do |f|
1387
1402
  f.puts "default:\n\techo built"
@@ -1399,7 +1414,7 @@ dependencies: []
1399
1414
  pend "extensions don't quite work on jruby" if Gem.java_platform?
1400
1415
  ext_spec
1401
1416
 
1402
- refute_empty @ext.extensions, 'sanity check'
1417
+ refute_empty @ext.extensions, "sanity check"
1403
1418
 
1404
1419
  assert_raise Gem::Ext::BuildError do
1405
1420
  @ext.build_extensions
@@ -1407,18 +1422,18 @@ dependencies: []
1407
1422
  end
1408
1423
 
1409
1424
  def test_build_extensions_extensions_dir_unwritable
1410
- pend 'chmod not supported' if Gem.win_platform?
1411
- pend 'skipped in root privilege' if Process.uid.zero?
1425
+ pend "chmod not supported" if Gem.win_platform?
1426
+ pend "skipped in root privilege" if Process.uid.zero?
1412
1427
 
1413
1428
  pend "extensions don't quite work on jruby" if Gem.java_platform?
1414
1429
  ext_spec
1415
1430
 
1416
- refute_empty @ext.extensions, 'sanity check'
1431
+ refute_empty @ext.extensions, "sanity check"
1417
1432
 
1418
1433
  extconf_rb = File.join @ext.gem_dir, @ext.extensions.first
1419
1434
  FileUtils.mkdir_p File.dirname extconf_rb
1420
1435
 
1421
- File.open extconf_rb, 'w' do |f|
1436
+ File.open extconf_rb, "w" do |f|
1422
1437
  f.write <<-'RUBY'
1423
1438
  File.open 'Makefile', 'w' do |f|
1424
1439
  f.puts "clean:\n\techo clean"
@@ -1428,30 +1443,30 @@ dependencies: []
1428
1443
  RUBY
1429
1444
  end
1430
1445
 
1431
- FileUtils.mkdir_p File.join @ext.base_dir, 'extensions'
1446
+ FileUtils.mkdir_p File.join @ext.base_dir, "extensions"
1432
1447
  FileUtils.chmod 0555, @ext.base_dir
1433
- FileUtils.chmod 0555, File.join(@ext.base_dir, 'extensions')
1448
+ FileUtils.chmod 0555, File.join(@ext.base_dir, "extensions")
1434
1449
 
1435
1450
  @ext.build_extensions
1436
1451
  assert_path_not_exist @ext.extension_dir
1437
1452
  ensure
1438
- unless ($DEBUG or win_platform? or Process.uid.zero? or Gem.java_platform?)
1439
- FileUtils.chmod 0755, File.join(@ext.base_dir, 'extensions')
1453
+ unless ($DEBUG || win_platform? || Process.uid.zero? || Gem.java_platform?)
1454
+ FileUtils.chmod 0755, File.join(@ext.base_dir, "extensions")
1440
1455
  FileUtils.chmod 0755, @ext.base_dir
1441
1456
  end
1442
1457
  end
1443
1458
 
1444
1459
  def test_build_extensions_no_extensions_dir_unwritable
1445
- pend 'chmod not supported' if Gem.win_platform?
1460
+ pend "chmod not supported" if Gem.win_platform?
1446
1461
  pend "extensions don't quite work on jruby" if Gem.java_platform?
1447
1462
  ext_spec
1448
1463
 
1449
- refute_empty @ext.extensions, 'sanity check'
1464
+ refute_empty @ext.extensions, "sanity check"
1450
1465
 
1451
1466
  extconf_rb = File.join @ext.gem_dir, @ext.extensions.first
1452
1467
  FileUtils.mkdir_p File.dirname extconf_rb
1453
1468
 
1454
- File.open extconf_rb, 'w' do |f|
1469
+ File.open extconf_rb, "w" do |f|
1455
1470
  f.write <<-'RUBY'
1456
1471
  File.open 'Makefile', 'w' do |f|
1457
1472
  f.puts "clean:\n\techo clean"
@@ -1461,20 +1476,20 @@ dependencies: []
1461
1476
  RUBY
1462
1477
  end
1463
1478
 
1464
- FileUtils.rm_r File.join @gemhome, 'extensions'
1479
+ FileUtils.rm_r File.join @gemhome, "extensions"
1465
1480
  FileUtils.chmod 0555, @gemhome
1466
1481
 
1467
1482
  @ext.build_extensions
1468
1483
 
1469
- gem_make_out = File.join @ext.extension_dir, 'gem_make.out'
1484
+ gem_make_out = File.join @ext.extension_dir, "gem_make.out"
1470
1485
  assert_path_not_exist gem_make_out
1471
1486
  ensure
1472
1487
  FileUtils.chmod 0755, @gemhome
1473
1488
  end
1474
1489
 
1475
1490
  def test_build_extensions_none
1476
- assert_path_not_exist @a1.extension_dir, 'sanity check'
1477
- assert_empty @a1.extensions, 'sanity check'
1491
+ assert_path_not_exist @a1.extension_dir, "sanity check"
1492
+ assert_empty @a1.extensions, "sanity check"
1478
1493
 
1479
1494
  @a1.build_extensions
1480
1495
 
@@ -1488,7 +1503,7 @@ dependencies: []
1488
1503
  extconf_rb = File.join @ext.gem_dir, @ext.extensions.first
1489
1504
  FileUtils.mkdir_p File.dirname extconf_rb
1490
1505
 
1491
- File.open extconf_rb, 'w' do |f|
1506
+ File.open extconf_rb, "w" do |f|
1492
1507
  f.write <<-'RUBY'
1493
1508
  File.open 'Makefile', 'w' do |f|
1494
1509
  f.puts "clean:\n\techo clean"
@@ -1498,22 +1513,22 @@ dependencies: []
1498
1513
  RUBY
1499
1514
  end
1500
1515
 
1501
- refute_empty @ext.extensions, 'sanity check'
1516
+ refute_empty @ext.extensions, "sanity check"
1502
1517
 
1503
- @ext.installed_by_version = v('2.2.0.preview.2')
1518
+ @ext.installed_by_version = v("2.2.0.preview.2")
1504
1519
 
1505
1520
  @ext.build_extensions
1506
1521
 
1507
- gem_make_out = File.join @ext.extension_dir, 'gem_make.out'
1522
+ gem_make_out = File.join @ext.extension_dir, "gem_make.out"
1508
1523
  assert_path_exist gem_make_out
1509
1524
  end
1510
1525
 
1511
1526
  def test_contains_requirable_file_eh
1512
- code_rb = File.join @a1.gem_dir, 'lib', 'code.rb'
1527
+ code_rb = File.join @a1.gem_dir, "lib", "code.rb"
1513
1528
  FileUtils.mkdir_p File.dirname code_rb
1514
1529
  FileUtils.touch code_rb
1515
1530
 
1516
- assert @a1.contains_requirable_file? 'code'
1531
+ assert @a1.contains_requirable_file? "code"
1517
1532
  end
1518
1533
 
1519
1534
  def test_contains_requirable_file_eh_extension
@@ -1521,7 +1536,7 @@ dependencies: []
1521
1536
  ext_spec
1522
1537
 
1523
1538
  _, err = capture_output do
1524
- refute @ext.contains_requirable_file? 'nonexistent'
1539
+ refute @ext.contains_requirable_file? "nonexistent"
1525
1540
  end
1526
1541
 
1527
1542
  expected = "Ignoring ext-1 because its extensions are not built. " +
@@ -1534,7 +1549,7 @@ dependencies: []
1534
1549
  ext_spec(platform: Gem::Platform.new("java"))
1535
1550
 
1536
1551
  _, err = capture_output do
1537
- refute @ext.contains_requirable_file? 'nonexistent'
1552
+ refute @ext.contains_requirable_file? "nonexistent"
1538
1553
  end
1539
1554
 
1540
1555
  assert_empty err
@@ -1550,13 +1565,13 @@ dependencies: []
1550
1565
  end
1551
1566
 
1552
1567
  def test_date_equals_string
1553
- @a1.date = '2003-09-17'
1568
+ @a1.date = "2003-09-17"
1554
1569
  assert_equal Time.utc(2003, 9, 17, 0,0,0), @a1.date
1555
1570
  end
1556
1571
 
1557
1572
  def test_date_equals_string_bad
1558
1573
  assert_raise Gem::InvalidSpecificationException do
1559
- @a1.date = '9/11/2003'
1574
+ @a1.date = "9/11/2003"
1560
1575
  end
1561
1576
  end
1562
1577
 
@@ -1603,7 +1618,7 @@ dependencies: []
1603
1618
 
1604
1619
  assert_empty @gem.dependent_gems
1605
1620
 
1606
- bonobo = util_spec 'bonobo', 1
1621
+ bonobo = util_spec "bonobo", 1
1607
1622
  install_gem bonobo
1608
1623
  install_gem @gem
1609
1624
 
@@ -1615,11 +1630,11 @@ dependencies: []
1615
1630
  end
1616
1631
 
1617
1632
  def test_doc_dir
1618
- assert_equal File.join(@gemhome, 'doc', 'a-1'), @a1.doc_dir
1633
+ assert_equal File.join(@gemhome, "doc", "a-1"), @a1.doc_dir
1619
1634
  end
1620
1635
 
1621
1636
  def test_doc_dir_type
1622
- assert_equal File.join(@gemhome, 'doc', 'a-1', 'ri'), @a1.doc_dir('ri')
1637
+ assert_equal File.join(@gemhome, "doc", "a-1", "ri"), @a1.doc_dir("ri")
1623
1638
  end
1624
1639
 
1625
1640
  def test_runtime_dependencies
@@ -1633,12 +1648,12 @@ dependencies: []
1633
1648
  end
1634
1649
 
1635
1650
  def test_description
1636
- assert_equal 'This is a test description', @a1.description
1651
+ assert_equal "This is a test description", @a1.description
1637
1652
  end
1638
1653
 
1639
1654
  def test_eql_eh
1640
- g1 = util_spec 'gem', 1
1641
- g2 = util_spec 'gem', 1
1655
+ g1 = util_spec "gem", 1
1656
+ g2 = util_spec "gem", 1
1642
1657
 
1643
1658
  assert_equal g1, g2
1644
1659
  assert_equal g1.hash, g2.hash
@@ -1647,47 +1662,47 @@ dependencies: []
1647
1662
 
1648
1663
  def test_eql_eh_extensions
1649
1664
  spec = @a1.dup
1650
- spec.extensions = 'xx'
1665
+ spec.extensions = "xx"
1651
1666
 
1652
1667
  refute_operator @a1, :eql?, spec
1653
1668
  refute_operator spec, :eql?, @a1
1654
1669
  end
1655
1670
 
1656
1671
  def test_executables
1657
- @a1.executable = 'app'
1672
+ @a1.executable = "app"
1658
1673
  assert_equal %w[app], @a1.executables
1659
1674
  end
1660
1675
 
1661
1676
  def test_executable_equals
1662
- @a2.executable = 'app'
1663
- assert_equal 'app', @a2.executable
1677
+ @a2.executable = "app"
1678
+ assert_equal "app", @a2.executable
1664
1679
  assert_equal %w[bin/app lib/code.rb].sort, @a2.files
1665
1680
  end
1666
1681
 
1667
1682
  def test_extensions
1668
- assert_equal ['ext/extconf.rb'], ext_spec.extensions
1683
+ assert_equal ["ext/extconf.rb"], ext_spec.extensions
1669
1684
  end
1670
1685
 
1671
1686
  def test_extension_dir
1672
- enable_shared, RbConfig::CONFIG['ENABLE_SHARED'] =
1673
- RbConfig::CONFIG['ENABLE_SHARED'], 'no'
1687
+ enable_shared, RbConfig::CONFIG["ENABLE_SHARED"] =
1688
+ RbConfig::CONFIG["ENABLE_SHARED"], "no"
1674
1689
 
1675
1690
  ext_spec
1676
1691
 
1677
1692
  refute_empty @ext.extensions
1678
1693
 
1679
1694
  expected =
1680
- File.join(@ext.base_dir, 'extensions', Gem::Platform.local.to_s,
1695
+ File.join(@ext.base_dir, "extensions", Gem::Platform.local.to_s,
1681
1696
  "#{Gem.ruby_api_version}-static", @ext.full_name)
1682
1697
 
1683
1698
  assert_equal expected, @ext.extension_dir
1684
1699
  ensure
1685
- RbConfig::CONFIG['ENABLE_SHARED'] = enable_shared
1700
+ RbConfig::CONFIG["ENABLE_SHARED"] = enable_shared
1686
1701
  end
1687
1702
 
1688
1703
  def test_extension_dir_override
1689
- enable_shared, RbConfig::CONFIG['ENABLE_SHARED'] =
1690
- RbConfig::CONFIG['ENABLE_SHARED'], 'no'
1704
+ enable_shared, RbConfig::CONFIG["ENABLE_SHARED"] =
1705
+ RbConfig::CONFIG["ENABLE_SHARED"], "no"
1691
1706
 
1692
1707
  class << Gem
1693
1708
  alias orig_default_ext_dir_for default_ext_dir_for
@@ -1695,7 +1710,7 @@ dependencies: []
1695
1710
  remove_method :default_ext_dir_for
1696
1711
 
1697
1712
  def Gem.default_ext_dir_for(base_dir)
1698
- 'elsewhere'
1713
+ "elsewhere"
1699
1714
  end
1700
1715
  end
1701
1716
 
@@ -1703,11 +1718,11 @@ dependencies: []
1703
1718
 
1704
1719
  refute_empty @ext.extensions
1705
1720
 
1706
- expected = File.join @tempdir, 'elsewhere', @ext.full_name
1721
+ expected = File.join @tempdir, "elsewhere", @ext.full_name
1707
1722
 
1708
1723
  assert_equal expected, @ext.extension_dir
1709
1724
  ensure
1710
- RbConfig::CONFIG['ENABLE_SHARED'] = enable_shared
1725
+ RbConfig::CONFIG["ENABLE_SHARED"] = enable_shared
1711
1726
 
1712
1727
  class << Gem
1713
1728
  remove_method :default_ext_dir_for
@@ -1797,9 +1812,9 @@ dependencies: []
1797
1812
  end
1798
1813
 
1799
1814
  def test_for_cache
1800
- @a2.add_runtime_dependency 'b', '1'
1815
+ @a2.add_runtime_dependency "b", "1"
1801
1816
  @a2.dependencies.first.instance_variable_set :@type, nil
1802
- @a2.required_rubygems_version = Gem::Requirement.new '> 0'
1817
+ @a2.required_rubygems_version = Gem::Requirement.new "> 0"
1803
1818
  @a2.test_files = %w[test/test_b.rb]
1804
1819
 
1805
1820
  refute_empty @a2.files
@@ -1815,11 +1830,11 @@ dependencies: []
1815
1830
  end
1816
1831
 
1817
1832
  def test_full_gem_path
1818
- assert_equal File.join(@gemhome, 'gems', @a1.full_name), @a1.full_gem_path
1833
+ assert_equal File.join(@gemhome, "gems", @a1.full_name), @a1.full_gem_path
1819
1834
 
1820
- @a1.original_platform = 'mswin32'
1835
+ @a1.original_platform = "mswin32"
1821
1836
 
1822
- assert_equal File.join(@gemhome, 'gems', @a1.original_name),
1837
+ assert_equal File.join(@gemhome, "gems", @a1.original_name),
1823
1838
  @a1.full_gem_path
1824
1839
  end
1825
1840
 
@@ -1832,40 +1847,40 @@ dependencies: []
1832
1847
  end
1833
1848
 
1834
1849
  def test_full_name
1835
- assert_equal 'a-1', @a1.full_name
1850
+ assert_equal "a-1", @a1.full_name
1836
1851
 
1837
1852
  @a1 = Gem::Specification.new "a", 1
1838
- @a1.platform = Gem::Platform.new ['universal', 'darwin', nil]
1839
- assert_equal 'a-1-universal-darwin', @a1.full_name
1853
+ @a1.platform = Gem::Platform.new ["universal", "darwin", nil]
1854
+ assert_equal "a-1-universal-darwin", @a1.full_name
1840
1855
 
1841
1856
  @a1 = Gem::Specification.new "a", 1
1842
- @a1.instance_variable_set :@new_platform, 'mswin32'
1843
- assert_equal 'a-1-mswin32', @a1.full_name, 'legacy'
1857
+ @a1.instance_variable_set :@new_platform, "mswin32"
1858
+ assert_equal "a-1-mswin32", @a1.full_name, "legacy"
1844
1859
 
1845
1860
  return if win_platform?
1846
1861
 
1847
1862
  @a1 = Gem::Specification.new "a", 1
1848
- @a1.platform = 'current'
1849
- assert_equal 'a-1-x86-darwin-8', @a1.full_name
1863
+ @a1.platform = "current"
1864
+ assert_equal "a-1-x86-darwin-8", @a1.full_name
1850
1865
  end
1851
1866
 
1852
1867
  def test_full_name_windows
1853
1868
  test_cases = {
1854
- 'i386-mswin32' => 'a-1-x86-mswin32-60',
1855
- 'i386-mswin32_80' => 'a-1-x86-mswin32-80',
1856
- 'i386-mingw32' => 'a-1-x86-mingw32',
1869
+ "i386-mswin32" => "a-1-x86-mswin32-60",
1870
+ "i386-mswin32_80" => "a-1-x86-mswin32-80",
1871
+ "i386-mingw32" => "a-1-x86-mingw32",
1857
1872
  }
1858
1873
 
1859
1874
  test_cases.each do |arch, expected|
1860
1875
  @a1 = Gem::Specification.new "a", 1
1861
1876
  util_set_arch arch
1862
- @a1.platform = 'current'
1877
+ @a1.platform = "current"
1863
1878
  assert_equal expected, @a1.full_name
1864
1879
  end
1865
1880
  end
1866
1881
 
1867
1882
  def test_gem_build_complete_path
1868
- expected = File.join @a1.extension_dir, 'gem.build_complete'
1883
+ expected = File.join @a1.extension_dir, "gem.build_complete"
1869
1884
  assert_equal expected, @a1.gem_build_complete_path
1870
1885
  end
1871
1886
 
@@ -1909,23 +1924,23 @@ dependencies: []
1909
1924
  end
1910
1925
 
1911
1926
  def test_license
1912
- assert_equal 'MIT', @a1.license
1927
+ assert_equal "MIT", @a1.license
1913
1928
  end
1914
1929
 
1915
1930
  def test_licenses
1916
- assert_equal ['MIT'], @a1.licenses
1931
+ assert_equal ["MIT"], @a1.licenses
1917
1932
  end
1918
1933
 
1919
1934
  def test_name
1920
- assert_equal 'a', @a1.name
1935
+ assert_equal "a", @a1.name
1921
1936
  end
1922
1937
 
1923
1938
  def test_original_name
1924
- assert_equal 'a-1', @a1.full_name
1939
+ assert_equal "a-1", @a1.full_name
1925
1940
 
1926
- @a1.platform = 'i386-linux'
1927
- @a1.instance_variable_set :@original_platform, 'i386-linux'
1928
- assert_equal 'a-1-i386-linux', @a1.original_name
1941
+ @a1.platform = "i386-linux"
1942
+ @a1.instance_variable_set :@original_platform, "i386-linux"
1943
+ assert_equal "a-1-i386-linux", @a1.original_name
1929
1944
  end
1930
1945
 
1931
1946
  def test_platform
@@ -1954,10 +1969,10 @@ dependencies: []
1954
1969
  assert_equal Gem::Platform::RUBY, @a1.platform
1955
1970
 
1956
1971
  test_cases = {
1957
- 'i386-mswin32' => ['x86', 'mswin32', '60'],
1958
- 'i386-mswin32_80' => ['x86', 'mswin32', '80'],
1959
- 'i386-mingw32' => ['x86', 'mingw32', nil ],
1960
- 'x86-darwin8' => ['x86', 'darwin', '8' ],
1972
+ "i386-mswin32" => ["x86", "mswin32", "60"],
1973
+ "i386-mswin32_80" => ["x86", "mswin32", "80"],
1974
+ "i386-mingw32" => ["x86", "mingw32", nil ],
1975
+ "x86-darwin8" => ["x86", "darwin", "8" ],
1961
1976
  }
1962
1977
 
1963
1978
  test_cases.each do |arch, expected|
@@ -1974,29 +1989,29 @@ dependencies: []
1974
1989
  end
1975
1990
 
1976
1991
  def test_platform_equals_legacy
1977
- @a1.platform = 'mswin32'
1978
- assert_equal Gem::Platform.new('x86-mswin32'), @a1.platform
1992
+ @a1.platform = "mswin32"
1993
+ assert_equal Gem::Platform.new("x86-mswin32"), @a1.platform
1979
1994
 
1980
- @a1.platform = 'i586-linux'
1981
- assert_equal Gem::Platform.new('x86-linux'), @a1.platform
1995
+ @a1.platform = "i586-linux"
1996
+ assert_equal Gem::Platform.new("x86-linux"), @a1.platform
1982
1997
 
1983
- @a1.platform = 'powerpc-darwin'
1984
- assert_equal Gem::Platform.new('ppc-darwin'), @a1.platform
1998
+ @a1.platform = "powerpc-darwin"
1999
+ assert_equal Gem::Platform.new("ppc-darwin"), @a1.platform
1985
2000
  end
1986
2001
 
1987
2002
  def test_prerelease_spec_adds_required_rubygems_version
1988
- @prerelease = util_spec('tardis', '2.2.0.a')
1989
- refute @prerelease.required_rubygems_version.satisfied_by?(Gem::Version.new('1.3.1'))
1990
- assert @prerelease.required_rubygems_version.satisfied_by?(Gem::Version.new('1.4.0'))
2003
+ @prerelease = util_spec("tardis", "2.2.0.a")
2004
+ refute @prerelease.required_rubygems_version.satisfied_by?(Gem::Version.new("1.3.1"))
2005
+ assert @prerelease.required_rubygems_version.satisfied_by?(Gem::Version.new("1.4.0"))
1991
2006
  end
1992
2007
 
1993
2008
  def test_require_paths
1994
- enable_shared 'no' do
2009
+ enable_shared "no" do
1995
2010
  ext_spec
1996
2011
 
1997
- @ext.require_paths = 'lib'
2012
+ @ext.require_paths = "lib"
1998
2013
 
1999
- assert_equal [@ext.extension_dir, 'lib'], @ext.require_paths
2014
+ assert_equal [@ext.extension_dir, "lib"], @ext.require_paths
2000
2015
  end
2001
2016
  end
2002
2017
 
@@ -2008,15 +2023,15 @@ dependencies: []
2008
2023
  end
2009
2024
 
2010
2025
  def Gem.default_ext_dir_for(base_dir)
2011
- '/foo'
2026
+ "/foo"
2012
2027
  end
2013
2028
 
2014
- enable_shared 'no' do
2029
+ enable_shared "no" do
2015
2030
  ext_spec
2016
2031
 
2017
- @ext.require_paths = 'lib'
2032
+ @ext.require_paths = "lib"
2018
2033
 
2019
- assert_equal [File.expand_path('/foo/ext-1'), 'lib'], @ext.require_paths
2034
+ assert_equal [File.expand_path("/foo/ext-1"), "lib"], @ext.require_paths
2020
2035
  end
2021
2036
  ensure
2022
2037
  class << Gem
@@ -2034,7 +2049,7 @@ dependencies: []
2034
2049
  ext_spec
2035
2050
 
2036
2051
  @ext.require_paths = %w[lib ext foo]
2037
- @ext.extensions << 'bar/baz'
2052
+ @ext.extensions << "bar/baz"
2038
2053
 
2039
2054
  expected = %w[
2040
2055
  lib
@@ -2049,10 +2064,10 @@ dependencies: []
2049
2064
  def test_full_require_paths
2050
2065
  ext_spec
2051
2066
 
2052
- @ext.require_paths = 'lib'
2067
+ @ext.require_paths = "lib"
2053
2068
 
2054
2069
  expected = [
2055
- File.join(@gemhome, 'gems', @ext.original_name, 'lib'),
2070
+ File.join(@gemhome, "gems", @ext.original_name, "lib"),
2056
2071
  @ext.extension_dir,
2057
2072
  ]
2058
2073
 
@@ -2062,10 +2077,10 @@ dependencies: []
2062
2077
  def test_to_fullpath
2063
2078
  ext_spec
2064
2079
 
2065
- @ext.require_paths = 'lib'
2080
+ @ext.require_paths = "lib"
2066
2081
 
2067
- dir = File.join(@gemhome, 'gems', @ext.original_name, 'lib')
2068
- expected_rb = File.join(dir, 'code.rb')
2082
+ dir = File.join(@gemhome, "gems", @ext.original_name, "lib")
2083
+ expected_rb = File.join(dir, "code.rb")
2069
2084
  FileUtils.mkdir_p dir
2070
2085
  FileUtils.touch expected_rb
2071
2086
 
@@ -2099,10 +2114,10 @@ dependencies: []
2099
2114
  def test_fullpath_return_rb_extension_file_when_exist_the_same_name_file
2100
2115
  ext_spec
2101
2116
 
2102
- @ext.require_paths = 'lib'
2117
+ @ext.require_paths = "lib"
2103
2118
 
2104
- dir = File.join(@gemhome, 'gems', @ext.original_name, 'lib')
2105
- expected_rb = File.join(dir, 'code.rb')
2119
+ dir = File.join(@gemhome, "gems", @ext.original_name, "lib")
2120
+ expected_rb = File.join(dir, "code.rb")
2106
2121
  FileUtils.mkdir_p dir
2107
2122
  FileUtils.touch expected_rb
2108
2123
 
@@ -2154,12 +2169,12 @@ dependencies: []
2154
2169
  end
2155
2170
 
2156
2171
  def test_requirements
2157
- assert_equal ['A working computer'], @a1.requirements
2172
+ assert_equal ["A working computer"], @a1.requirements
2158
2173
  end
2159
2174
 
2160
2175
  def test_allowed_push_host
2161
- assert_nil @a1.metadata['allowed_push_host']
2162
- assert_equal 'https://privategemserver.com', @a3.metadata['allowed_push_host']
2176
+ assert_nil @a1.metadata["allowed_push_host"]
2177
+ assert_equal "https://privategemserver.com", @a3.metadata["allowed_push_host"]
2163
2178
  end
2164
2179
 
2165
2180
  def test_runtime_dependencies_legacy
@@ -2175,8 +2190,8 @@ dependencies: []
2175
2190
  end
2176
2191
 
2177
2192
  def test_spaceship_name
2178
- s1 = util_spec 'a', '1'
2179
- s2 = util_spec 'b', '1'
2193
+ s1 = util_spec "a", "1"
2194
+ s2 = util_spec "b", "1"
2180
2195
 
2181
2196
  assert_equal(-1, (s1 <=> s2))
2182
2197
  assert_equal(0, (s1 <=> s1))
@@ -2184,9 +2199,9 @@ dependencies: []
2184
2199
  end
2185
2200
 
2186
2201
  def test_spaceship_platform
2187
- s1 = util_spec 'a', '1'
2188
- s2 = util_spec 'a', '1' do |s|
2189
- s.platform = Gem::Platform.new 'x86-my_platform1'
2202
+ s1 = util_spec "a", "1"
2203
+ s2 = util_spec "a", "1" do |s|
2204
+ s.platform = Gem::Platform.new "x86-my_platform1"
2190
2205
  end
2191
2206
 
2192
2207
  assert_equal(-1, (s1 <=> s2))
@@ -2195,8 +2210,8 @@ dependencies: []
2195
2210
  end
2196
2211
 
2197
2212
  def test_spaceship_version
2198
- s1 = util_spec 'a', '1'
2199
- s2 = util_spec 'a', '2'
2213
+ s1 = util_spec "a", "1"
2214
+ s2 = util_spec "a", "2"
2200
2215
 
2201
2216
  assert_equal(-1, (s1 <=> s2))
2202
2217
  assert_equal(0, (s1 <=> s1))
@@ -2204,25 +2219,25 @@ dependencies: []
2204
2219
  end
2205
2220
 
2206
2221
  def test_spec_file
2207
- assert_equal File.join(@gemhome, 'specifications', 'a-1.gemspec'),
2222
+ assert_equal File.join(@gemhome, "specifications", "a-1.gemspec"),
2208
2223
  @a1.spec_file
2209
2224
  end
2210
2225
 
2211
2226
  def test_spec_name
2212
- assert_equal 'a-1.gemspec', @a1.spec_name
2227
+ assert_equal "a-1.gemspec", @a1.spec_name
2213
2228
  end
2214
2229
 
2215
2230
  def test_summary
2216
- assert_equal 'this is a summary', @a1.summary
2231
+ assert_equal "this is a summary", @a1.summary
2217
2232
  end
2218
2233
 
2219
2234
  def test_test_files
2220
- @a1.test_file = 'test/suite.rb'
2221
- assert_equal ['test/suite.rb'], @a1.test_files
2235
+ @a1.test_file = "test/suite.rb"
2236
+ assert_equal ["test/suite.rb"], @a1.test_files
2222
2237
  end
2223
2238
 
2224
2239
  def test_runtime_predicate_true
2225
- @a2.add_runtime_dependency 'b', '1'
2240
+ @a2.add_runtime_dependency "b", "1"
2226
2241
  assert_predicate @a2.dependencies.first, :runtime?
2227
2242
 
2228
2243
  @a2.dependencies.first.instance_variable_set :@type, nil
@@ -2230,15 +2245,15 @@ dependencies: []
2230
2245
  end
2231
2246
 
2232
2247
  def test_runtime_predicate_false
2233
- @a2.add_development_dependency 'b', '1'
2248
+ @a2.add_development_dependency "b", "1"
2234
2249
  refute_predicate @a2.dependencies.first, :runtime?
2235
2250
  end
2236
2251
 
2237
2252
  def test_to_ruby
2238
- @a2.add_runtime_dependency 'b', '1'
2253
+ @a2.add_runtime_dependency "b", "1"
2239
2254
  @a2.dependencies.first.instance_variable_set :@type, nil
2240
- @a2.required_rubygems_version = Gem::Requirement.new '> 0'
2241
- @a2.require_paths << 'other'
2255
+ @a2.required_rubygems_version = Gem::Requirement.new "> 0"
2256
+ @a2.require_paths << "other"
2242
2257
 
2243
2258
  ruby_code = @a2.to_ruby
2244
2259
 
@@ -2261,15 +2276,9 @@ Gem::Specification.new do |s|
2261
2276
  s.rubygems_version = "#{Gem::VERSION}".freeze
2262
2277
  s.summary = "this is a summary".freeze
2263
2278
 
2264
- if s.respond_to? :specification_version then
2265
- s.specification_version = #{Gem::Specification::CURRENT_SPECIFICATION_VERSION}
2266
- end
2279
+ s.specification_version = #{Gem::Specification::CURRENT_SPECIFICATION_VERSION}
2267
2280
 
2268
- if s.respond_to? :add_runtime_dependency then
2269
- s.add_runtime_dependency(%q<b>.freeze, [\"= 1\"])
2270
- else
2271
- s.add_dependency(%q<b>.freeze, [\"= 1\"])
2272
- end
2281
+ s.add_runtime_dependency(%q<b>.freeze, [\"= 1\"])
2273
2282
  end
2274
2283
  SPEC
2275
2284
 
@@ -2281,8 +2290,8 @@ end
2281
2290
  end
2282
2291
 
2283
2292
  def test_to_ruby_with_rsa_key
2284
- require 'rubygems/openssl'
2285
- pend 'openssl is missing' unless defined?(OpenSSL::PKey::RSA)
2293
+ require "rubygems/openssl"
2294
+ pend "openssl is missing" unless defined?(OpenSSL::PKey::RSA)
2286
2295
 
2287
2296
  rsa_key = OpenSSL::PKey::RSA.new(2048)
2288
2297
  @a2.signing_key = rsa_key
@@ -2313,9 +2322,9 @@ end
2313
2322
  end
2314
2323
 
2315
2324
  def test_to_ruby_for_cache
2316
- @a2.add_runtime_dependency 'b', '1'
2325
+ @a2.add_runtime_dependency "b", "1"
2317
2326
  @a2.dependencies.first.instance_variable_set :@type, nil
2318
- @a2.required_rubygems_version = Gem::Requirement.new '> 0'
2327
+ @a2.required_rubygems_version = Gem::Requirement.new "> 0"
2319
2328
  @a2.installed_by_version = Gem.rubygems_version
2320
2329
 
2321
2330
  # cached specs do not have spec.files populated:
@@ -2341,15 +2350,9 @@ Gem::Specification.new do |s|
2341
2350
 
2342
2351
  s.installed_by_version = "#{Gem::VERSION}" if s.respond_to? :installed_by_version
2343
2352
 
2344
- if s.respond_to? :specification_version then
2345
- s.specification_version = #{Gem::Specification::CURRENT_SPECIFICATION_VERSION}
2346
- end
2353
+ s.specification_version = #{Gem::Specification::CURRENT_SPECIFICATION_VERSION}
2347
2354
 
2348
- if s.respond_to? :add_runtime_dependency then
2349
- s.add_runtime_dependency(%q<b>.freeze, [\"= 1\"])
2350
- else
2351
- s.add_dependency(%q<b>.freeze, [\"= 1\"])
2352
- end
2355
+ s.add_runtime_dependency(%q<b>.freeze, [\"= 1\"])
2353
2356
  end
2354
2357
  SPEC
2355
2358
 
@@ -2400,19 +2403,11 @@ Gem::Specification.new do |s|
2400
2403
  s.summary = "this is a summary".freeze
2401
2404
  s.test_files = ["test/suite.rb".freeze]
2402
2405
 
2403
- if s.respond_to? :specification_version then
2404
- s.specification_version = 4
2405
- end
2406
+ s.specification_version = 4
2406
2407
 
2407
- if s.respond_to? :add_runtime_dependency then
2408
- s.add_runtime_dependency(%q<rake>.freeze, [\"> 0.4\"])
2409
- s.add_runtime_dependency(%q<jabber4r>.freeze, [\"> 0.0.0\"])
2410
- s.add_runtime_dependency(%q<pqa>.freeze, [\"> 0.4\", \"<= 0.6\"])
2411
- else
2412
- s.add_dependency(%q<rake>.freeze, [\"> 0.4\"])
2413
- s.add_dependency(%q<jabber4r>.freeze, [\"> 0.0.0\"])
2414
- s.add_dependency(%q<pqa>.freeze, [\"> 0.4\", \"<= 0.6\"])
2415
- end
2408
+ s.add_runtime_dependency(%q<rake>.freeze, [\"> 0.4\"])
2409
+ s.add_runtime_dependency(%q<jabber4r>.freeze, [\"> 0.0.0\"])
2410
+ s.add_runtime_dependency(%q<pqa>.freeze, [\"> 0.4\", \"<= 0.6\"])
2416
2411
  end
2417
2412
  SPEC
2418
2413
 
@@ -2424,8 +2419,8 @@ end
2424
2419
  end
2425
2420
 
2426
2421
  def test_to_ruby_keeps_requirements_as_originally_specified
2427
- spec = util_spec 'a', '1' do |s|
2428
- s.add_dependency 'b', ['~> 1.0', '>= 1.0.0']
2422
+ spec = util_spec "a", "1" do |s|
2423
+ s.add_dependency "b", ["~> 1.0", ">= 1.0.0"]
2429
2424
  end
2430
2425
 
2431
2426
  assert_includes spec.to_ruby, '"~> 1.0", ">= 1.0.0"'
@@ -2454,13 +2449,13 @@ end
2454
2449
 
2455
2450
  def test_to_ruby_platform
2456
2451
  @a2.platform = Gem::Platform.local
2457
- @a2.instance_variable_set :@original_platform, 'old_platform'
2452
+ @a2.instance_variable_set :@original_platform, "old_platform"
2458
2453
 
2459
2454
  ruby_code = @a2.to_ruby
2460
2455
 
2461
2456
  same_spec = eval ruby_code
2462
2457
 
2463
- assert_equal 'old_platform', same_spec.original_platform
2458
+ assert_equal "old_platform", same_spec.original_platform
2464
2459
  end
2465
2460
 
2466
2461
  def test_to_yaml
@@ -2485,21 +2480,21 @@ end
2485
2480
  end
2486
2481
 
2487
2482
  def test_to_yaml_platform_empty_string
2488
- @a1.instance_variable_set :@original_platform, ''
2483
+ @a1.instance_variable_set :@original_platform, ""
2489
2484
 
2490
2485
  assert_match %r{^platform: ruby$}, @a1.to_yaml
2491
2486
  end
2492
2487
 
2493
2488
  def test_to_yaml_platform_legacy
2494
- @a1.platform = 'powerpc-darwin7.9.0'
2495
- @a1.instance_variable_set :@original_platform, 'powerpc-darwin7.9.0'
2489
+ @a1.platform = "powerpc-darwin7.9.0"
2490
+ @a1.instance_variable_set :@original_platform, "powerpc-darwin7.9.0"
2496
2491
 
2497
2492
  yaml_str = @a1.to_yaml
2498
2493
 
2499
2494
  same_spec = load_yaml yaml_str
2500
2495
 
2501
- assert_equal Gem::Platform.new('powerpc-darwin7'), same_spec.platform
2502
- assert_equal 'powerpc-darwin7.9.0', same_spec.original_platform
2496
+ assert_equal Gem::Platform.new("powerpc-darwin7"), same_spec.platform
2497
+ assert_equal "powerpc-darwin7.9.0", same_spec.original_platform
2503
2498
  end
2504
2499
 
2505
2500
  def test_to_yaml_platform_nil
@@ -2516,7 +2511,7 @@ end
2516
2511
  end
2517
2512
  end
2518
2513
 
2519
- def x(s); s.gsub(/xxx/, ''); end
2514
+ def x(s); s.gsub(/xxx/, ""); end
2520
2515
  def w; x "WARxxxNING"; end
2521
2516
  def t; x "TOxxxDO"; end
2522
2517
  def f; x "FxxxIXME"; end
@@ -2531,7 +2526,7 @@ end
2531
2526
  @a1.validate
2532
2527
  end
2533
2528
 
2534
- assert_match "#{w}: no author specified\n", @ui.error, 'error'
2529
+ assert_match "#{w}: no author specified\n", @ui.error, "error"
2535
2530
 
2536
2531
  @a1.authors = [Object.new]
2537
2532
 
@@ -2565,14 +2560,14 @@ end
2565
2560
  util_setup_validate
2566
2561
 
2567
2562
  Dir.chdir @tempdir do
2568
- @a1.autorequire = 'code'
2563
+ @a1.autorequire = "code"
2569
2564
 
2570
2565
  use_ui @ui do
2571
2566
  @a1.validate
2572
2567
  end
2573
2568
 
2574
2569
  assert_match "#{w}: deprecated autorequire specified\n",
2575
- @ui.error, 'error'
2570
+ @ui.error, "error"
2576
2571
  end
2577
2572
  end
2578
2573
 
@@ -2580,19 +2575,19 @@ end
2580
2575
  util_setup_validate
2581
2576
 
2582
2577
  Dir.chdir @tempdir do
2583
- @a1.add_runtime_dependency 'b', '>= 1.0.rc1'
2584
- @a1.add_development_dependency 'c', '>= 2.0.rc2'
2585
- @a1.add_runtime_dependency 'd', '~> 1.2.3'
2586
- @a1.add_runtime_dependency 'e', '~> 1.2.3.4'
2587
- @a1.add_runtime_dependency 'g', '~> 1.2.3', '>= 1.2.3.4'
2588
- @a1.add_runtime_dependency 'h', '>= 1.2.3', '<= 2'
2589
- @a1.add_runtime_dependency 'i', '>= 1.2'
2590
- @a1.add_runtime_dependency 'j', '>= 1.2.3'
2591
- @a1.add_runtime_dependency 'k', '> 1.2'
2592
- @a1.add_runtime_dependency 'l', '> 1.2.3'
2593
- @a1.add_runtime_dependency 'm', '~> 2.1.0'
2594
- @a1.add_runtime_dependency 'n', '~> 0.1.0'
2595
- @a1.add_runtime_dependency 'o'
2578
+ @a1.add_runtime_dependency "b", ">= 1.0.rc1"
2579
+ @a1.add_development_dependency "c", ">= 2.0.rc2"
2580
+ @a1.add_runtime_dependency "d", "~> 1.2.3"
2581
+ @a1.add_runtime_dependency "e", "~> 1.2.3.4"
2582
+ @a1.add_runtime_dependency "g", "~> 1.2.3", ">= 1.2.3.4"
2583
+ @a1.add_runtime_dependency "h", ">= 1.2.3", "<= 2"
2584
+ @a1.add_runtime_dependency "i", ">= 1.2"
2585
+ @a1.add_runtime_dependency "j", ">= 1.2.3"
2586
+ @a1.add_runtime_dependency "k", "> 1.2"
2587
+ @a1.add_runtime_dependency "l", "> 1.2.3"
2588
+ @a1.add_runtime_dependency "m", "~> 2.1.0"
2589
+ @a1.add_runtime_dependency "n", "~> 0.1.0"
2590
+ @a1.add_runtime_dependency "o"
2596
2591
 
2597
2592
  use_ui @ui do
2598
2593
  @a1.validate
@@ -2618,7 +2613,7 @@ end
2618
2613
  #{w}: See https://guides.rubygems.org/specification-reference/ for help
2619
2614
  EXPECTED
2620
2615
 
2621
- assert_equal expected, @ui.error, 'warning'
2616
+ assert_equal expected, @ui.error, "warning"
2622
2617
  end
2623
2618
  end
2624
2619
 
@@ -2626,10 +2621,10 @@ end
2626
2621
  util_setup_validate
2627
2622
 
2628
2623
  Dir.chdir @tempdir do
2629
- @a1.add_runtime_dependency 'b', '~> 1.2'
2630
- @a1.add_runtime_dependency 'b', '>= 1.2.3'
2631
- @a1.add_development_dependency 'c', '~> 1.2'
2632
- @a1.add_development_dependency 'c', '>= 1.2.3'
2624
+ @a1.add_runtime_dependency "b", "~> 1.2"
2625
+ @a1.add_runtime_dependency "b", ">= 1.2.3"
2626
+ @a1.add_development_dependency "c", "~> 1.2"
2627
+ @a1.add_development_dependency "c", ">= 1.2.3"
2633
2628
 
2634
2629
  use_ui @ui do
2635
2630
  e = assert_raise Gem::InvalidSpecificationException do
@@ -2656,14 +2651,14 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2656
2651
  util_setup_validate
2657
2652
 
2658
2653
  Dir.chdir @tempdir do
2659
- @a1.add_runtime_dependency 'b', '~> 1.2'
2660
- @a1.add_development_dependency 'b', '= 1.2.3'
2654
+ @a1.add_runtime_dependency "b", "~> 1.2"
2655
+ @a1.add_development_dependency "b", "= 1.2.3"
2661
2656
 
2662
2657
  use_ui @ui do
2663
2658
  @a1.validate
2664
2659
  end
2665
2660
 
2666
- assert_equal '', @ui.error, 'warning'
2661
+ assert_equal "", @ui.error, "warning"
2667
2662
  end
2668
2663
  end
2669
2664
 
@@ -2671,14 +2666,31 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2671
2666
  util_setup_validate
2672
2667
 
2673
2668
  Dir.chdir @tempdir do
2674
- @a1.version = '1.0.0.beta.1'
2675
- @a1.add_runtime_dependency 'b', '~> 1.2.0.beta.1'
2669
+ @a1.version = "1.0.0.beta.1"
2670
+ @a1.add_runtime_dependency "b", "~> 1.2.0.beta.1"
2671
+
2672
+ use_ui @ui do
2673
+ @a1.validate
2674
+ end
2675
+
2676
+ assert_equal "", @ui.error, "warning"
2677
+ end
2678
+ end
2679
+
2680
+ def test_validate_self_referencing_dependencies
2681
+ util_setup_validate
2682
+
2683
+ Dir.chdir @tempdir do
2684
+ @a1.add_runtime_dependency @a1.name, "1"
2676
2685
 
2677
2686
  use_ui @ui do
2678
2687
  @a1.validate
2679
2688
  end
2680
2689
 
2681
- assert_equal '', @ui.error, 'warning'
2690
+ assert_equal <<-EXPECTED, @ui.error
2691
+ #{w}: Self referencing dependency is unnecessary and strongly discouraged.
2692
+ #{w}: See https://guides.rubygems.org/specification-reference/ for help
2693
+ EXPECTED
2682
2694
  end
2683
2695
  end
2684
2696
 
@@ -2686,8 +2698,8 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2686
2698
  util_setup_validate
2687
2699
 
2688
2700
  Dir.chdir @tempdir do
2689
- @a1.extensions = ['Rakefile']
2690
- File.write File.join(@tempdir, 'Rakefile'), ''
2701
+ @a1.extensions = ["Rakefile"]
2702
+ File.write File.join(@tempdir, "Rakefile"), ""
2691
2703
 
2692
2704
  use_ui @ui do
2693
2705
  @a1.validate
@@ -2701,9 +2713,9 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2701
2713
  util_setup_validate
2702
2714
 
2703
2715
  Dir.chdir @tempdir do
2704
- @a1.extensions = ['Rakefile']
2705
- @a1.add_runtime_dependency 'rake'
2706
- File.write File.join(@tempdir, 'Rakefile'), ''
2716
+ @a1.extensions = ["Rakefile"]
2717
+ @a1.add_runtime_dependency "rake"
2718
+ File.write File.join(@tempdir, "Rakefile"), ""
2707
2719
 
2708
2720
  use_ui @ui do
2709
2721
  @a1.validate
@@ -2713,11 +2725,44 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2713
2725
  end
2714
2726
  end
2715
2727
 
2728
+ def test_validate_rust_extension_have_missing_cargo_toml_error
2729
+ util_setup_validate
2730
+
2731
+ Dir.chdir @tempdir do
2732
+ @a1.extensions = ["Cargo.toml"]
2733
+ File.write File.join(@tempdir, "Cargo.toml"), ""
2734
+
2735
+ e = assert_raise Gem::InvalidSpecificationException do
2736
+ use_ui @ui do
2737
+ @a1.validate
2738
+ end
2739
+ end
2740
+
2741
+ assert_match(/but Cargo.lock is not part of the gem files/, e.message)
2742
+ end
2743
+ end
2744
+
2745
+ def test_validate_rust_extension_have_no_missing_cargo_toml_error
2746
+ util_setup_validate
2747
+
2748
+ Dir.chdir @tempdir do
2749
+ @a1.extensions = ["Cargo.toml"]
2750
+ @a1.files << "Cargo.toml"
2751
+ @a1.files << "Cargo.lock"
2752
+ File.write File.join(@tempdir, "Cargo.toml"), ""
2753
+ File.write File.join(@tempdir, "Cargo.lock"), ""
2754
+
2755
+ use_ui @ui do
2756
+ @a1.validate
2757
+ end
2758
+ end
2759
+ end
2760
+
2716
2761
  def test_validate_description
2717
2762
  util_setup_validate
2718
2763
 
2719
2764
  Dir.chdir @tempdir do
2720
- @a1.description = ''
2765
+ @a1.description = ""
2721
2766
 
2722
2767
  use_ui @ui do
2723
2768
  @a1.validate
@@ -2807,7 +2852,7 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2807
2852
  Gem::Specification.new.validate
2808
2853
  end
2809
2854
 
2810
- assert_equal 'missing value for attribute name', e.message
2855
+ assert_equal "missing value for attribute name", e.message
2811
2856
  end
2812
2857
 
2813
2858
  def test_validate_error
@@ -2817,15 +2862,15 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2817
2862
  end
2818
2863
  end
2819
2864
 
2820
- assert_match 'See https://guides.rubygems.org/specification-reference/ for help', @ui.error
2865
+ assert_match "See https://guides.rubygems.org/specification-reference/ for help", @ui.error
2821
2866
  end
2822
2867
 
2823
2868
  def test_validate_executables
2824
2869
  util_setup_validate
2825
2870
 
2826
- FileUtils.mkdir_p File.join(@tempdir, 'bin')
2827
- File.write File.join(@tempdir, 'bin', 'exec'), ''
2828
- FileUtils.mkdir_p File.join(@tempdir, 'exec')
2871
+ FileUtils.mkdir_p File.join(@tempdir, "bin")
2872
+ File.write File.join(@tempdir, "bin", "exec"), ""
2873
+ FileUtils.mkdir_p File.join(@tempdir, "exec")
2829
2874
 
2830
2875
  use_ui @ui do
2831
2876
  Dir.chdir @tempdir do
@@ -2835,13 +2880,13 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2835
2880
 
2836
2881
  assert_equal %w[exec], @a1.executables
2837
2882
 
2838
- assert_equal '', @ui.output, 'output'
2839
- assert_match "#{w}: bin/exec is missing #! line\n", @ui.error, 'error'
2883
+ assert_equal "", @ui.output, "output"
2884
+ assert_match "#{w}: bin/exec is missing #! line\n", @ui.error, "error"
2840
2885
  end
2841
2886
 
2842
2887
  def test_validate_empty_require_paths
2843
2888
  if win_platform?
2844
- pend 'test_validate_empty_require_paths skipped on MS Windows (symlink)'
2889
+ pend "test_validate_empty_require_paths skipped on MS Windows (symlink)"
2845
2890
  else
2846
2891
  util_setup_validate
2847
2892
 
@@ -2850,26 +2895,26 @@ duplicate dependency on c (>= 1.2.3, development), (~> 1.2) use:
2850
2895
  @a1.validate
2851
2896
  end
2852
2897
 
2853
- assert_equal 'specification must have at least one require_path',
2898
+ assert_equal "specification must have at least one require_path",
2854
2899
  e.message
2855
2900
  end
2856
2901
  end
2857
2902
 
2858
2903
  def test_validate_files
2859
- pend 'test_validate_files skipped on MS Windows (symlink)' if win_platform?
2904
+ pend "test_validate_files skipped on MS Windows (symlink)" if win_platform?
2860
2905
  util_setup_validate
2861
2906
 
2862
- @a1.files += ['lib', 'lib2']
2863
- @a1.extensions << 'ext/a/extconf.rb'
2907
+ @a1.files += ["lib", "lib2"]
2908
+ @a1.extensions << "ext/a/extconf.rb"
2864
2909
 
2865
2910
  Dir.chdir @tempdir do
2866
- FileUtils.ln_s 'lib/code.rb', 'lib2' unless vc_windows?
2911
+ FileUtils.ln_s "lib/code.rb", "lib2" unless vc_windows?
2867
2912
 
2868
2913
  use_ui @ui do
2869
2914
  @a1.validate
2870
2915
  end
2871
2916
 
2872
- assert_match 'WARNING: lib2 is a symlink, which is not supported on all platforms', @ui.error
2917
+ assert_match "WARNING: lib2 is a symlink, which is not supported on all platforms", @ui.error
2873
2918
  end
2874
2919
 
2875
2920
  assert_equal %w[bin/exec ext/a/extconf.rb lib/code.rb lib2 test/suite.rb].sort,
@@ -2975,19 +3020,19 @@ Please report a bug if this causes problems.
2975
3020
  @a1.validate
2976
3021
  end
2977
3022
 
2978
- assert_match "#{w}: no homepage specified\n", @ui.error, 'error'
3023
+ assert_match "#{w}: no homepage specified\n", @ui.error, "error"
2979
3024
 
2980
3025
  @ui = Gem::MockGemUi.new
2981
3026
 
2982
- @a1.homepage = ''
3027
+ @a1.homepage = ""
2983
3028
 
2984
3029
  use_ui @ui do
2985
3030
  @a1.validate
2986
3031
  end
2987
3032
 
2988
- assert_match "#{w}: no homepage specified\n", @ui.error, 'error'
3033
+ assert_match "#{w}: no homepage specified\n", @ui.error, "error"
2989
3034
 
2990
- @a1.homepage = 'over at my cool site'
3035
+ @a1.homepage = "over at my cool site"
2991
3036
 
2992
3037
  e = assert_raise Gem::InvalidSpecificationException do
2993
3038
  @a1.validate
@@ -2995,7 +3040,7 @@ Please report a bug if this causes problems.
2995
3040
 
2996
3041
  assert_equal '"over at my cool site" is not a valid HTTP URI', e.message
2997
3042
 
2998
- @a1.homepage = 'ftp://rubygems.org'
3043
+ @a1.homepage = "ftp://rubygems.org"
2999
3044
 
3000
3045
  e = assert_raise Gem::InvalidSpecificationException do
3001
3046
  @a1.validate
@@ -3003,12 +3048,11 @@ Please report a bug if this causes problems.
3003
3048
 
3004
3049
  assert_equal '"ftp://rubygems.org" is not a valid HTTP URI', e.message
3005
3050
 
3006
- @a1.homepage = 'https://rubygems.org/'
3051
+ @a1.homepage = "https://rubygems.org/"
3007
3052
  assert_equal true, @a1.validate
3008
3053
 
3009
- @a1.homepage = 'https://rubygems.org'
3054
+ @a1.homepage = "https://rubygems.org"
3010
3055
  assert_equal true, @a1.validate
3011
-
3012
3056
  end
3013
3057
  end
3014
3058
 
@@ -3045,7 +3089,7 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3045
3089
  util_setup_validate
3046
3090
 
3047
3091
  use_ui @ui do
3048
- @a1.rubyforge_project = 'invalid-attribute'
3092
+ @a1.rubyforge_project = "invalid-attribute"
3049
3093
  @a1.validate
3050
3094
  end
3051
3095
 
@@ -3056,7 +3100,7 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3056
3100
  util_setup_validate
3057
3101
 
3058
3102
  use_ui @ui do
3059
- @a1.licenses = ['BSD']
3103
+ @a1.licenses = ["BSD"]
3060
3104
  @a1.validate
3061
3105
  end
3062
3106
 
@@ -3066,11 +3110,22 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3066
3110
  WARNING
3067
3111
  end
3068
3112
 
3113
+ def test_validate_license_ref
3114
+ util_setup_validate
3115
+
3116
+ use_ui @ui do
3117
+ @a1.licenses = ["LicenseRef-LICENSE.md"]
3118
+ @a1.validate
3119
+ end
3120
+
3121
+ assert_empty @ui.error
3122
+ end
3123
+
3069
3124
  def test_validate_license_values_plus
3070
3125
  util_setup_validate
3071
3126
 
3072
3127
  use_ui @ui do
3073
- @a1.licenses = ['GPL-2.0+']
3128
+ @a1.licenses = ["GPL-2.0+"]
3074
3129
  @a1.validate
3075
3130
  end
3076
3131
 
@@ -3081,7 +3136,7 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3081
3136
  util_setup_validate
3082
3137
 
3083
3138
  use_ui @ui do
3084
- @a1.licenses = ['GPL-2.0-or-later']
3139
+ @a1.licenses = ["GPL-2.0-or-later"]
3085
3140
  @a1.validate
3086
3141
  end
3087
3142
 
@@ -3092,7 +3147,7 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3092
3147
  util_setup_validate
3093
3148
 
3094
3149
  use_ui @ui do
3095
- @a1.licenses = ['GPL-2.0+ WITH Autoconf-exception-2.0']
3150
+ @a1.licenses = ["GPL-2.0+ WITH Autoconf-exception-2.0"]
3096
3151
  @a1.validate
3097
3152
  end
3098
3153
 
@@ -3103,7 +3158,7 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3103
3158
  util_setup_validate
3104
3159
 
3105
3160
  use_ui @ui do
3106
- @a1.licenses = ['GPL-2.0+ FOO', 'GPL-2.0 FOO']
3161
+ @a1.licenses = ["GPL-2.0+ FOO", "GPL-2.0 FOO"]
3107
3162
  @a1.validate
3108
3163
  end
3109
3164
 
@@ -3121,7 +3176,7 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3121
3176
  util_setup_validate
3122
3177
 
3123
3178
  use_ui @ui do
3124
- @a1.licenses = ['GPL-2.0+ WITH Autocofn-exception-2.0']
3179
+ @a1.licenses = ["GPL-2.0+ WITH Autocofn-exception-2.0"]
3125
3180
  @a1.validate
3126
3181
  end
3127
3182
 
@@ -3135,7 +3190,7 @@ http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
3135
3190
  util_setup_validate
3136
3191
 
3137
3192
  use_ui @ui do
3138
- @a1.licenses = ['ruby']
3193
+ @a1.licenses = ["ruby"]
3139
3194
  @a1.validate
3140
3195
  end
3141
3196
 
@@ -3245,13 +3300,13 @@ Did you mean 'Ruby'?
3245
3300
  end
3246
3301
 
3247
3302
  def test_validate_permissions
3248
- pend 'chmod not supported' if Gem.win_platform?
3303
+ pend "chmod not supported" if Gem.win_platform?
3249
3304
 
3250
3305
  util_setup_validate
3251
3306
 
3252
3307
  Dir.chdir @tempdir do
3253
- File.chmod 0640, File.join('lib', 'code.rb')
3254
- File.chmod 0640, File.join('bin', 'exec')
3308
+ File.chmod 0640, File.join("lib", "code.rb")
3309
+ File.chmod 0640, File.join("bin", "exec")
3255
3310
 
3256
3311
  use_ui @ui do
3257
3312
  @a1.validate
@@ -3264,12 +3319,12 @@ Did you mean 'Ruby'?
3264
3319
  end
3265
3320
 
3266
3321
  def test_validate_permissions_of_missing_file_non_packaging
3267
- pend 'chmod not supported' if Gem.win_platform?
3322
+ pend "chmod not supported" if Gem.win_platform?
3268
3323
 
3269
3324
  util_setup_validate
3270
3325
 
3271
3326
  Dir.chdir @tempdir do
3272
- File.delete File.join('lib', 'code.rb')
3327
+ File.delete File.join("lib", "code.rb")
3273
3328
 
3274
3329
  use_ui @ui do
3275
3330
  assert @a1.validate(false)
@@ -3281,13 +3336,13 @@ Did you mean 'Ruby'?
3281
3336
  util_setup_validate
3282
3337
 
3283
3338
  Dir.chdir @tempdir do
3284
- @a1.platform = 'mswin32'
3339
+ @a1.platform = "mswin32"
3285
3340
  assert @a1.validate
3286
3341
 
3287
- @a1.platform = 'i586-linux'
3342
+ @a1.platform = "i586-linux"
3288
3343
  assert @a1.validate
3289
3344
 
3290
- @a1.platform = 'powerpc-darwin'
3345
+ @a1.platform = "powerpc-darwin"
3291
3346
  assert @a1.validate
3292
3347
  end
3293
3348
  end
@@ -3308,7 +3363,7 @@ Did you mean 'Ruby'?
3308
3363
  util_setup_validate
3309
3364
 
3310
3365
  Dir.chdir @tempdir do
3311
- @a1.specification_version = '1.0'
3366
+ @a1.specification_version = "1.0"
3312
3367
 
3313
3368
  e = assert_raise Gem::InvalidSpecificationException do
3314
3369
  use_ui @ui do
@@ -3316,7 +3371,7 @@ Did you mean 'Ruby'?
3316
3371
  end
3317
3372
  end
3318
3373
 
3319
- err = 'specification_version must be an Integer (did you mean version?)'
3374
+ err = "specification_version must be an Integer (did you mean version?)"
3320
3375
  assert_equal err, e.message
3321
3376
  end
3322
3377
  end
@@ -3325,13 +3380,13 @@ Did you mean 'Ruby'?
3325
3380
  util_setup_validate
3326
3381
 
3327
3382
  Dir.chdir @tempdir do
3328
- @a1.summary = ''
3383
+ @a1.summary = ""
3329
3384
 
3330
3385
  use_ui @ui do
3331
3386
  @a1.validate
3332
3387
  end
3333
3388
 
3334
- assert_match "#{w}: no summary specified\n", @ui.error, 'error'
3389
+ assert_match "#{w}: no summary specified\n", @ui.error, "error"
3335
3390
 
3336
3391
  @a1.summary = "#{f} (describe your package)"
3337
3392
 
@@ -3359,11 +3414,11 @@ Did you mean 'Ruby'?
3359
3414
  @a1.validate
3360
3415
  end
3361
3416
 
3362
- assert_match 'See https://guides.rubygems.org/specification-reference/ for help', @ui.error
3417
+ assert_match "See https://guides.rubygems.org/specification-reference/ for help", @ui.error
3363
3418
  end
3364
3419
 
3365
3420
  def test_version
3366
- assert_equal Gem::Version.new('1'), @a1.version
3421
+ assert_equal Gem::Version.new("1"), @a1.version
3367
3422
  end
3368
3423
 
3369
3424
  def test_version_change_reset_full_name
@@ -3409,22 +3464,22 @@ Did you mean 'Ruby'?
3409
3464
 
3410
3465
  def test_latest_specs
3411
3466
  spec_fetcher do |fetcher|
3412
- fetcher.spec 'a', 1 do |s|
3413
- s.platform = Gem::Platform.new 'x86-my_platform1'
3467
+ fetcher.spec "a", 1 do |s|
3468
+ s.platform = Gem::Platform.new "x86-my_platform1"
3414
3469
  end
3415
3470
 
3416
- fetcher.spec 'a', 2
3471
+ fetcher.spec "a", 2
3417
3472
 
3418
- fetcher.spec 'a', 2 do |s|
3419
- s.platform = Gem::Platform.new 'x86-my_platform1'
3473
+ fetcher.spec "a", 2 do |s|
3474
+ s.platform = Gem::Platform.new "x86-my_platform1"
3420
3475
  end
3421
3476
 
3422
- fetcher.spec 'a', 2 do |s|
3423
- s.platform = Gem::Platform.new 'x86-other_platform1'
3477
+ fetcher.spec "a", 2 do |s|
3478
+ s.platform = Gem::Platform.new "x86-other_platform1"
3424
3479
  end
3425
3480
 
3426
- fetcher.spec 'a', 3 do |s|
3427
- s.platform = Gem::Platform.new 'x86-other_platform1'
3481
+ fetcher.spec "a", 3 do |s|
3482
+ s.platform = Gem::Platform.new "x86-other_platform1"
3428
3483
  end
3429
3484
  end
3430
3485
 
@@ -3441,13 +3496,13 @@ Did you mean 'Ruby'?
3441
3496
  util_setup_validate
3442
3497
 
3443
3498
  Dir.chdir @tempdir do
3444
- @m1 = quick_gem 'm', '1' do |s|
3499
+ @m1 = quick_gem "m", "1" do |s|
3445
3500
  s.files = %w[lib/code.rb]
3446
3501
  s.metadata = {
3447
- "one" => "two",
3448
- "home" => "three",
3502
+ "one" => "two",
3503
+ "home" => "three",
3449
3504
  "homepage_uri" => "https://example.com/user/repo",
3450
- "funding_uri" => "https://example.com/donate",
3505
+ "funding_uri" => "https://example.com/donate",
3451
3506
  }
3452
3507
  end
3453
3508
 
@@ -3461,7 +3516,7 @@ Did you mean 'Ruby'?
3461
3516
  util_setup_validate
3462
3517
 
3463
3518
  Dir.chdir @tempdir do
3464
- @m2 = quick_gem 'm', '2' do |s|
3519
+ @m2 = quick_gem "m", "2" do |s|
3465
3520
  s.files = %w[lib/code.rb]
3466
3521
  s.metadata = { 1 => "fail" }
3467
3522
  end
@@ -3478,7 +3533,7 @@ Did you mean 'Ruby'?
3478
3533
  util_setup_validate
3479
3534
 
3480
3535
  Dir.chdir @tempdir do
3481
- @m2 = quick_gem 'm', '2' do |s|
3536
+ @m2 = quick_gem "m", "2" do |s|
3482
3537
  s.files = %w[lib/code.rb]
3483
3538
  s.metadata = { ("x" * 129) => "fail" }
3484
3539
  end
@@ -3495,9 +3550,9 @@ Did you mean 'Ruby'?
3495
3550
  util_setup_validate
3496
3551
 
3497
3552
  Dir.chdir @tempdir do
3498
- @m2 = quick_gem 'm', '2' do |s|
3553
+ @m2 = quick_gem "m", "2" do |s|
3499
3554
  s.files = %w[lib/code.rb]
3500
- s.metadata = { 'fail' => [] }
3555
+ s.metadata = { "fail" => [] }
3501
3556
  end
3502
3557
 
3503
3558
  e = assert_raise Gem::InvalidSpecificationException do
@@ -3512,9 +3567,9 @@ Did you mean 'Ruby'?
3512
3567
  util_setup_validate
3513
3568
 
3514
3569
  Dir.chdir @tempdir do
3515
- @m2 = quick_gem 'm', '2' do |s|
3570
+ @m2 = quick_gem "m", "2" do |s|
3516
3571
  s.files = %w[lib/code.rb]
3517
- s.metadata = { 'fail' => ("x" * 1025) }
3572
+ s.metadata = { "fail" => ("x" * 1025) }
3518
3573
  end
3519
3574
 
3520
3575
  e = assert_raise Gem::InvalidSpecificationException do
@@ -3529,9 +3584,9 @@ Did you mean 'Ruby'?
3529
3584
  util_setup_validate
3530
3585
 
3531
3586
  Dir.chdir @tempdir do
3532
- @m2 = quick_gem 'm', '2' do |s|
3587
+ @m2 = quick_gem "m", "2" do |s|
3533
3588
  s.files = %w[lib/code.rb]
3534
- s.metadata = { 'homepage_uri' => 'http:/example.com' }
3589
+ s.metadata = { "homepage_uri" => "http:/example.com" }
3535
3590
  end
3536
3591
 
3537
3592
  e = assert_raise Gem::InvalidSpecificationException do
@@ -3543,9 +3598,9 @@ Did you mean 'Ruby'?
3543
3598
  end
3544
3599
 
3545
3600
  def test_metadata_specs
3546
- @m1 = quick_gem 'm', '1' do |s|
3601
+ @m1 = quick_gem "m", "1" do |s|
3547
3602
  s.files = %w[lib/code.rb]
3548
- s.metadata = { 'one' => "two", 'two' => "three" }
3603
+ s.metadata = { "one" => "two", "two" => "three" }
3549
3604
  end
3550
3605
 
3551
3606
  valid_ruby_spec = <<-EOF
@@ -3582,7 +3637,7 @@ end
3582
3637
  extconf_rb = File.join @ext.gem_dir, @ext.extensions.first
3583
3638
  FileUtils.mkdir_p File.dirname extconf_rb
3584
3639
 
3585
- File.open extconf_rb, 'w' do |f|
3640
+ File.open extconf_rb, "w" do |f|
3586
3641
  f.write <<-'RUBY'
3587
3642
  File.open 'Makefile', 'w' do |f|
3588
3643
  f.puts "clean:\n\techo clean"
@@ -3598,8 +3653,8 @@ end
3598
3653
  end
3599
3654
 
3600
3655
  def test_missing_extensions_eh_default_gem
3601
- spec = new_default_spec 'default', 1
3602
- spec.extensions << 'extconf.rb'
3656
+ spec = new_default_spec "default", 1
3657
+ spec.extensions << "extconf.rb"
3603
3658
 
3604
3659
  refute spec.missing_extensions?
3605
3660
  end
@@ -3609,7 +3664,7 @@ end
3609
3664
  end
3610
3665
 
3611
3666
  def test_find_all_by_full_name
3612
- pl = Gem::Platform.new 'i386-linux'
3667
+ pl = Gem::Platform.new "i386-linux"
3613
3668
 
3614
3669
  a1 = util_spec "a", "1"
3615
3670
  a1_pre = util_spec "a", "1.0.0.pre.1"
@@ -3660,6 +3715,8 @@ end
3660
3715
 
3661
3716
  install_specs b
3662
3717
 
3718
+ Gem::Specification.reset
3719
+
3663
3720
  assert Gem::Specification.find_by_name "b"
3664
3721
 
3665
3722
  assert_raise Gem::MissingSpecVersionError do
@@ -3669,14 +3726,31 @@ end
3669
3726
  assert Gem::Specification.find_by_name "b", ">1"
3670
3727
  end
3671
3728
 
3729
+ def test_find_by_full_name
3730
+ pl = Gem::Platform.new "x86_64-linux"
3731
+
3732
+ a = util_spec "a", "1"
3733
+ install_specs a
3734
+
3735
+ a_pl = util_spec("a", "1") {|s| s.platform = pl }
3736
+ install_specs a_pl
3737
+
3738
+ assert_equal a, Gem::Specification.find_by_full_name("a-1")
3739
+ assert_equal a_pl, Gem::Specification.find_by_full_name("a-1-x86_64-linux")
3740
+
3741
+ assert_nil Gem::Specification.find_by_full_name("a-2")
3742
+ assert_nil Gem::Specification.find_by_full_name("b-1")
3743
+ assert_nil Gem::Specification.find_by_full_name("a-1-arm64-linux")
3744
+ end
3745
+
3672
3746
  def test_find_by_path
3673
3747
  a = util_spec "foo", "1", nil, "lib/foo.rb"
3674
3748
 
3675
3749
  install_specs a
3676
3750
 
3677
- assert_equal a, Gem::Specification.find_by_path('foo')
3751
+ assert_equal a, Gem::Specification.find_by_path("foo")
3678
3752
  a.activate
3679
- assert_equal a, Gem::Specification.find_by_path('foo')
3753
+ assert_equal a, Gem::Specification.find_by_path("foo")
3680
3754
  end
3681
3755
 
3682
3756
  def test_find_inactive_by_path
@@ -3684,9 +3758,9 @@ end
3684
3758
 
3685
3759
  install_specs a
3686
3760
 
3687
- assert_equal a, Gem::Specification.find_inactive_by_path('foo')
3761
+ assert_equal a, Gem::Specification.find_inactive_by_path("foo")
3688
3762
  a.activate
3689
- assert_nil Gem::Specification.find_inactive_by_path('foo')
3763
+ assert_nil Gem::Specification.find_inactive_by_path("foo")
3690
3764
  end
3691
3765
 
3692
3766
  def test_load_default_gem
@@ -3734,11 +3808,4 @@ end
3734
3808
  end
3735
3809
  end
3736
3810
  end
3737
-
3738
- def silence_warnings
3739
- old_verbose, $VERBOSE = $VERBOSE, false
3740
- yield
3741
- ensure
3742
- $VERBOSE = old_verbose
3743
- end
3744
3811
  end