rubygems-update 3.3.18 → 3.4.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (615) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1429 -1064
  3. data/CONTRIBUTING.md +31 -8
  4. data/Manifest.txt +61 -36
  5. data/POLICIES.md +55 -20
  6. data/README.md +19 -6
  7. data/bundler/CHANGELOG.md +457 -1
  8. data/bundler/README.md +3 -6
  9. data/bundler/UPGRADING.md +11 -4
  10. data/bundler/bundler.gemspec +8 -10
  11. data/bundler/exe/bundle +5 -16
  12. data/bundler/lib/bundler/build_metadata.rb +2 -2
  13. data/bundler/lib/bundler/cli/add.rb +1 -1
  14. data/bundler/lib/bundler/cli/binstubs.rb +6 -2
  15. data/bundler/lib/bundler/cli/check.rb +1 -1
  16. data/bundler/lib/bundler/cli/common.rb +2 -0
  17. data/bundler/lib/bundler/cli/console.rb +2 -2
  18. data/bundler/lib/bundler/cli/doctor.rb +4 -6
  19. data/bundler/lib/bundler/cli/gem.rb +62 -40
  20. data/bundler/lib/bundler/cli/info.rb +1 -1
  21. data/bundler/lib/bundler/cli/init.rb +6 -2
  22. data/bundler/lib/bundler/cli/install.rb +8 -6
  23. data/bundler/lib/bundler/cli/lock.rb +8 -5
  24. data/bundler/lib/bundler/cli/open.rb +6 -4
  25. data/bundler/lib/bundler/cli/outdated.rb +14 -7
  26. data/bundler/lib/bundler/cli/platform.rb +7 -5
  27. data/bundler/lib/bundler/cli/viz.rb +1 -1
  28. data/bundler/lib/bundler/cli.rb +53 -7
  29. data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
  30. data/bundler/lib/bundler/compact_index_client/updater.rb +40 -39
  31. data/bundler/lib/bundler/constants.rb +1 -1
  32. data/bundler/lib/bundler/current_ruby.rb +16 -5
  33. data/bundler/lib/bundler/definition.rb +262 -133
  34. data/bundler/lib/bundler/dependency.rb +20 -86
  35. data/bundler/lib/bundler/digest.rb +1 -1
  36. data/bundler/lib/bundler/dsl.rb +6 -7
  37. data/bundler/lib/bundler/endpoint_specification.rb +2 -13
  38. data/bundler/lib/bundler/env.rb +2 -2
  39. data/bundler/lib/bundler/environment_preserver.rb +3 -2
  40. data/bundler/lib/bundler/errors.rb +1 -11
  41. data/bundler/lib/bundler/feature_flag.rb +0 -2
  42. data/bundler/lib/bundler/fetcher/compact_index.rb +11 -13
  43. data/bundler/lib/bundler/fetcher/dependency.rb +2 -6
  44. data/bundler/lib/bundler/fetcher/downloader.rb +4 -5
  45. data/bundler/lib/bundler/fetcher/index.rb +1 -2
  46. data/bundler/lib/bundler/fetcher.rb +21 -15
  47. data/bundler/lib/bundler/force_platform.rb +18 -0
  48. data/bundler/lib/bundler/friendly_errors.rb +1 -4
  49. data/bundler/lib/bundler/gem_helper.rb +3 -4
  50. data/bundler/lib/bundler/gem_helpers.rb +7 -2
  51. data/bundler/lib/bundler/gem_version_promoter.rb +53 -98
  52. data/bundler/lib/bundler/graph.rb +3 -3
  53. data/bundler/lib/bundler/index.rb +13 -47
  54. data/bundler/lib/bundler/injector.rb +5 -4
  55. data/bundler/lib/bundler/inline.rb +9 -11
  56. data/bundler/lib/bundler/installer/parallel_installer.rb +4 -34
  57. data/bundler/lib/bundler/installer/standalone.rb +13 -9
  58. data/bundler/lib/bundler/installer.rb +17 -29
  59. data/bundler/lib/bundler/lazy_specification.rb +54 -53
  60. data/bundler/lib/bundler/lockfile_generator.rb +3 -3
  61. data/bundler/lib/bundler/lockfile_parser.rb +17 -16
  62. data/bundler/lib/bundler/man/bundle-add.1 +6 -2
  63. data/bundler/lib/bundler/man/bundle-add.1.ronn +4 -1
  64. data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
  65. data/bundler/lib/bundler/man/bundle-cache.1 +9 -3
  66. data/bundler/lib/bundler/man/bundle-cache.1.ronn +9 -2
  67. data/bundler/lib/bundler/man/bundle-check.1 +1 -1
  68. data/bundler/lib/bundler/man/bundle-clean.1 +2 -2
  69. data/bundler/lib/bundler/man/bundle-clean.1.ronn +1 -1
  70. data/bundler/lib/bundler/man/bundle-config.1 +26 -10
  71. data/bundler/lib/bundler/man/bundle-config.1.ronn +17 -10
  72. data/bundler/lib/bundler/man/bundle-console.1 +53 -0
  73. data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
  74. data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
  75. data/bundler/lib/bundler/man/bundle-exec.1 +6 -6
  76. data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -6
  77. data/bundler/lib/bundler/man/bundle-gem.1 +27 -37
  78. data/bundler/lib/bundler/man/bundle-gem.1.ronn +5 -5
  79. data/bundler/lib/bundler/man/bundle-help.1 +13 -0
  80. data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
  81. data/bundler/lib/bundler/man/bundle-info.1 +3 -3
  82. data/bundler/lib/bundler/man/bundle-info.1.ronn +3 -3
  83. data/bundler/lib/bundler/man/bundle-init.1 +5 -1
  84. data/bundler/lib/bundler/man/bundle-init.1.ronn +2 -0
  85. data/bundler/lib/bundler/man/bundle-inject.1 +5 -2
  86. data/bundler/lib/bundler/man/bundle-inject.1.ronn +3 -1
  87. data/bundler/lib/bundler/man/bundle-install.1 +5 -30
  88. data/bundler/lib/bundler/man/bundle-install.1.ronn +6 -29
  89. data/bundler/lib/bundler/man/bundle-list.1 +1 -1
  90. data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
  91. data/bundler/lib/bundler/man/bundle-open.1 +22 -2
  92. data/bundler/lib/bundler/man/bundle-open.1.ronn +9 -1
  93. data/bundler/lib/bundler/man/bundle-outdated.1 +13 -9
  94. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +12 -9
  95. data/bundler/lib/bundler/man/bundle-platform.1 +16 -6
  96. data/bundler/lib/bundler/man/bundle-platform.1.ronn +14 -7
  97. data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
  98. data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
  99. data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
  100. data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
  101. data/bundler/lib/bundler/man/bundle-show.1 +1 -1
  102. data/bundler/lib/bundler/man/bundle-update.1 +1 -1
  103. data/bundler/lib/bundler/man/bundle-version.1 +35 -0
  104. data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
  105. data/bundler/lib/bundler/man/bundle-viz.1 +4 -1
  106. data/bundler/lib/bundler/man/bundle-viz.1.ronn +2 -0
  107. data/bundler/lib/bundler/man/bundle.1 +15 -10
  108. data/bundler/lib/bundler/man/bundle.1.ronn +12 -7
  109. data/bundler/lib/bundler/man/gemfile.5 +55 -55
  110. data/bundler/lib/bundler/man/gemfile.5.ronn +57 -53
  111. data/bundler/lib/bundler/man/index.txt +4 -0
  112. data/bundler/lib/bundler/match_metadata.rb +13 -0
  113. data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
  114. data/bundler/lib/bundler/mirror.rb +5 -7
  115. data/bundler/lib/bundler/plugin/index.rb +5 -5
  116. data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -4
  117. data/bundler/lib/bundler/plugin/installer.rb +5 -2
  118. data/bundler/lib/bundler/plugin.rb +3 -1
  119. data/bundler/lib/bundler/remote_specification.rb +7 -12
  120. data/bundler/lib/bundler/resolver/base.rb +107 -0
  121. data/bundler/lib/bundler/resolver/candidate.rb +94 -0
  122. data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
  123. data/bundler/lib/bundler/resolver/package.rb +72 -0
  124. data/bundler/lib/bundler/resolver/root.rb +25 -0
  125. data/bundler/lib/bundler/resolver/spec_group.rb +42 -71
  126. data/bundler/lib/bundler/resolver.rb +335 -328
  127. data/bundler/lib/bundler/ruby_dsl.rb +7 -1
  128. data/bundler/lib/bundler/ruby_version.rb +8 -8
  129. data/bundler/lib/bundler/rubygems_ext.rb +100 -9
  130. data/bundler/lib/bundler/rubygems_gem_installer.rb +23 -14
  131. data/bundler/lib/bundler/rubygems_integration.rb +11 -15
  132. data/bundler/lib/bundler/runtime.rb +2 -6
  133. data/bundler/lib/bundler/safe_marshal.rb +31 -0
  134. data/bundler/lib/bundler/settings.rb +5 -11
  135. data/bundler/lib/bundler/setup.rb +4 -1
  136. data/bundler/lib/bundler/shared_helpers.rb +3 -3
  137. data/bundler/lib/bundler/source/git/git_proxy.rb +237 -74
  138. data/bundler/lib/bundler/source/git.rb +55 -30
  139. data/bundler/lib/bundler/source/metadata.rb +1 -2
  140. data/bundler/lib/bundler/source/path/installer.rb +1 -22
  141. data/bundler/lib/bundler/source/path.rb +6 -6
  142. data/bundler/lib/bundler/source/rubygems.rb +26 -81
  143. data/bundler/lib/bundler/source.rb +1 -1
  144. data/bundler/lib/bundler/source_list.rb +8 -2
  145. data/bundler/lib/bundler/spec_set.rb +60 -37
  146. data/bundler/lib/bundler/templates/Executable +1 -1
  147. data/bundler/lib/bundler/templates/Executable.bundler +5 -10
  148. data/bundler/lib/bundler/templates/Executable.standalone +2 -0
  149. data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
  150. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +3 -0
  151. data/bundler/lib/bundler/templates/newgem/README.md.tt +6 -4
  152. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +12 -1
  153. data/bundler/lib/bundler/templates/newgem/bin/console.tt +0 -4
  154. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
  155. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
  156. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt +10 -0
  157. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
  158. data/bundler/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +1 -1
  159. data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
  160. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +10 -0
  161. data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
  162. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +13 -4
  163. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +9 -2
  164. data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
  165. data/bundler/lib/bundler/ui/shell.rb +35 -12
  166. data/bundler/lib/bundler/ui/silent.rb +21 -5
  167. data/bundler/lib/bundler/uri_normalizer.rb +23 -0
  168. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
  169. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
  170. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
  171. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1351 -409
  172. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
  173. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
  174. data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
  175. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
  176. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
  177. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
  178. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
  179. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
  180. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
  181. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
  182. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
  183. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
  184. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
  185. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
  186. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
  187. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
  188. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +248 -0
  189. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
  190. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
  191. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +1 -1
  192. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +64 -16
  193. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
  194. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -1
  195. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +27 -7
  196. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -2
  197. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -1
  198. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
  199. data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
  200. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -2
  201. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +15 -9
  202. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +11 -6
  203. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  204. data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +1 -2
  205. data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +2 -1
  206. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -2
  207. data/bundler/lib/bundler/vendored_persistent.rb +1 -33
  208. data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_pub_grub.rb} +1 -1
  209. data/bundler/lib/bundler/version.rb +5 -1
  210. data/bundler/lib/bundler/worker.rb +5 -7
  211. data/bundler/lib/bundler.rb +25 -77
  212. data/{bin → exe}/gem +4 -5
  213. data/{bin → exe}/update_rubygems +12 -10
  214. data/lib/rubygems/available_set.rb +4 -3
  215. data/lib/rubygems/basic_specification.rb +5 -4
  216. data/lib/rubygems/bundler_version_finder.rb +2 -2
  217. data/lib/rubygems/command.rb +41 -32
  218. data/lib/rubygems/command_manager.rb +30 -15
  219. data/lib/rubygems/commands/build_command.rb +12 -8
  220. data/lib/rubygems/commands/cert_command.rb +34 -33
  221. data/lib/rubygems/commands/check_command.rb +21 -20
  222. data/lib/rubygems/commands/cleanup_command.rb +18 -17
  223. data/lib/rubygems/commands/contents_command.rb +14 -13
  224. data/lib/rubygems/commands/dependency_command.rb +17 -16
  225. data/lib/rubygems/commands/environment_command.rb +6 -5
  226. data/lib/rubygems/commands/exec_command.rb +249 -0
  227. data/lib/rubygems/commands/fetch_command.rb +10 -9
  228. data/lib/rubygems/commands/generate_index_command.rb +18 -17
  229. data/lib/rubygems/commands/help_command.rb +7 -6
  230. data/lib/rubygems/commands/info_command.rb +3 -3
  231. data/lib/rubygems/commands/install_command.rb +28 -23
  232. data/lib/rubygems/commands/list_command.rb +4 -3
  233. data/lib/rubygems/commands/lock_command.rb +5 -4
  234. data/lib/rubygems/commands/mirror_command.rb +4 -3
  235. data/lib/rubygems/commands/open_command.rb +10 -9
  236. data/lib/rubygems/commands/outdated_command.rb +6 -5
  237. data/lib/rubygems/commands/owner_command.rb +17 -14
  238. data/lib/rubygems/commands/pristine_command.rb +46 -36
  239. data/lib/rubygems/commands/push_command.rb +9 -8
  240. data/lib/rubygems/commands/query_command.rb +9 -8
  241. data/lib/rubygems/commands/rdoc_command.rb +21 -19
  242. data/lib/rubygems/commands/search_command.rb +4 -3
  243. data/lib/rubygems/commands/server_command.rb +4 -3
  244. data/lib/rubygems/commands/setup_command.rb +97 -106
  245. data/lib/rubygems/commands/signin_command.rb +10 -9
  246. data/lib/rubygems/commands/signout_command.rb +8 -7
  247. data/lib/rubygems/commands/sources_command.rb +22 -21
  248. data/lib/rubygems/commands/specification_command.rb +14 -13
  249. data/lib/rubygems/commands/stale_command.rb +3 -2
  250. data/lib/rubygems/commands/uninstall_command.rb +44 -40
  251. data/lib/rubygems/commands/unpack_command.rb +14 -13
  252. data/lib/rubygems/commands/update_command.rb +42 -63
  253. data/lib/rubygems/commands/which_command.rb +8 -7
  254. data/lib/rubygems/commands/yank_command.rb +12 -11
  255. data/lib/rubygems/config_file.rb +55 -21
  256. data/lib/rubygems/core_ext/kernel_gem.rb +1 -6
  257. data/lib/rubygems/core_ext/kernel_require.rb +109 -115
  258. data/lib/rubygems/core_ext/kernel_warn.rb +33 -37
  259. data/lib/rubygems/core_ext/tcpsocket_init.rb +3 -1
  260. data/lib/rubygems/defaults.rb +33 -18
  261. data/lib/rubygems/dependency.rb +15 -11
  262. data/lib/rubygems/dependency_installer.rb +38 -37
  263. data/lib/rubygems/dependency_list.rb +7 -6
  264. data/lib/rubygems/deprecate.rb +3 -2
  265. data/lib/rubygems/doctor.rb +19 -18
  266. data/lib/rubygems/errors.rb +3 -2
  267. data/lib/rubygems/exceptions.rb +16 -8
  268. data/lib/rubygems/ext/build_error.rb +2 -1
  269. data/lib/rubygems/ext/builder.rb +37 -21
  270. data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +9 -5
  271. data/lib/rubygems/ext/cargo_builder.rb +150 -111
  272. data/lib/rubygems/ext/cmake_builder.rb +2 -2
  273. data/lib/rubygems/ext/configure_builder.rb +2 -1
  274. data/lib/rubygems/ext/ext_conf_builder.rb +11 -9
  275. data/lib/rubygems/ext/rake_builder.rb +7 -5
  276. data/lib/rubygems/ext.rb +8 -7
  277. data/lib/rubygems/gem_runner.rb +6 -5
  278. data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +163 -0
  279. data/lib/rubygems/gemcutter_utilities/webauthn_listener.rb +105 -0
  280. data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +78 -0
  281. data/lib/rubygems/gemcutter_utilities.rb +90 -34
  282. data/lib/rubygems/indexer.rb +29 -28
  283. data/lib/rubygems/install_default_message.rb +3 -2
  284. data/lib/rubygems/install_message.rb +3 -2
  285. data/lib/rubygems/install_update_options.rb +56 -55
  286. data/lib/rubygems/installer.rb +54 -46
  287. data/lib/rubygems/installer_uninstaller_utils.rb +2 -2
  288. data/lib/rubygems/local_remote_options.rb +19 -20
  289. data/lib/rubygems/mock_gem_ui.rb +3 -2
  290. data/lib/rubygems/name_tuple.rb +5 -4
  291. data/lib/rubygems/optparse/lib/optparse.rb +20 -15
  292. data/lib/rubygems/optparse.rb +1 -1
  293. data/lib/rubygems/package/digest_io.rb +1 -0
  294. data/lib/rubygems/package/file_source.rb +3 -2
  295. data/lib/rubygems/package/io_source.rb +1 -0
  296. data/lib/rubygems/package/old.rb +9 -8
  297. data/lib/rubygems/package/source.rb +1 -0
  298. data/lib/rubygems/package/tar_header.rb +63 -62
  299. data/lib/rubygems/package/tar_reader/entry.rb +91 -9
  300. data/lib/rubygems/package/tar_reader.rb +2 -29
  301. data/lib/rubygems/package/tar_writer.rb +8 -7
  302. data/lib/rubygems/package.rb +64 -48
  303. data/lib/rubygems/package_task.rb +5 -4
  304. data/lib/rubygems/path_support.rb +1 -0
  305. data/lib/rubygems/platform.rb +79 -53
  306. data/lib/rubygems/psych_tree.rb +2 -1
  307. data/lib/rubygems/query_utils.rb +35 -35
  308. data/lib/rubygems/rdoc.rb +3 -2
  309. data/lib/rubygems/remote_fetcher.rb +23 -22
  310. data/lib/rubygems/request/connection_pools.rb +4 -4
  311. data/lib/rubygems/request/http_pool.rb +2 -1
  312. data/lib/rubygems/request/https_pool.rb +1 -0
  313. data/lib/rubygems/request.rb +23 -22
  314. data/lib/rubygems/request_set/gem_dependency_api.rb +123 -123
  315. data/lib/rubygems/request_set/lockfile/parser.rb +28 -27
  316. data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -3
  317. data/lib/rubygems/request_set/lockfile.rb +6 -5
  318. data/lib/rubygems/request_set.rb +20 -19
  319. data/lib/rubygems/requirement.rb +15 -14
  320. data/lib/rubygems/resolver/activation_request.rb +4 -3
  321. data/lib/rubygems/resolver/api_set.rb +5 -4
  322. data/lib/rubygems/resolver/api_specification.rb +7 -6
  323. data/lib/rubygems/resolver/best_set.rb +6 -5
  324. data/lib/rubygems/resolver/composed_set.rb +1 -0
  325. data/lib/rubygems/resolver/conflict.rb +11 -10
  326. data/lib/rubygems/resolver/current_set.rb +1 -0
  327. data/lib/rubygems/resolver/dependency_request.rb +3 -2
  328. data/lib/rubygems/resolver/git_set.rb +3 -2
  329. data/lib/rubygems/resolver/git_specification.rb +7 -6
  330. data/lib/rubygems/resolver/index_set.rb +4 -3
  331. data/lib/rubygems/resolver/index_specification.rb +7 -5
  332. data/lib/rubygems/resolver/installed_specification.rb +5 -4
  333. data/lib/rubygems/resolver/installer_set.rb +15 -17
  334. data/lib/rubygems/resolver/local_specification.rb +3 -2
  335. data/lib/rubygems/resolver/lock_set.rb +5 -4
  336. data/lib/rubygems/resolver/lock_specification.rb +5 -4
  337. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +1 -1
  338. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
  339. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  340. data/lib/rubygems/resolver/molinillo.rb +2 -1
  341. data/lib/rubygems/resolver/requirement_list.rb +1 -0
  342. data/lib/rubygems/resolver/set.rb +1 -0
  343. data/lib/rubygems/resolver/source_set.rb +2 -0
  344. data/lib/rubygems/resolver/spec_specification.rb +1 -0
  345. data/lib/rubygems/resolver/specification.rb +2 -1
  346. data/lib/rubygems/resolver/stats.rb +2 -1
  347. data/lib/rubygems/resolver/vendor_set.rb +2 -1
  348. data/lib/rubygems/resolver/vendor_specification.rb +4 -3
  349. data/lib/rubygems/resolver.rb +41 -40
  350. data/lib/rubygems/s3_uri_signer.rb +10 -8
  351. data/lib/rubygems/safe_yaml.rb +4 -2
  352. data/lib/rubygems/security/policies.rb +48 -47
  353. data/lib/rubygems/security/policy.rb +19 -18
  354. data/lib/rubygems/security/signer.rb +6 -5
  355. data/lib/rubygems/security/trust_dir.rb +5 -4
  356. data/lib/rubygems/security.rb +30 -42
  357. data/lib/rubygems/security_option.rb +6 -5
  358. data/lib/rubygems/shellwords.rb +3 -0
  359. data/lib/rubygems/source/git.rb +22 -22
  360. data/lib/rubygems/source/installed.rb +2 -1
  361. data/lib/rubygems/source/local.rb +3 -2
  362. data/lib/rubygems/source/lock.rb +1 -0
  363. data/lib/rubygems/source/specific_file.rb +2 -1
  364. data/lib/rubygems/source/vendor.rb +1 -0
  365. data/lib/rubygems/source.rb +16 -16
  366. data/lib/rubygems/spec_fetcher.rb +10 -9
  367. data/lib/rubygems/specification.rb +121 -114
  368. data/lib/rubygems/specification_policy.rb +36 -15
  369. data/lib/rubygems/stub_specification.rb +11 -9
  370. data/lib/rubygems/text.rb +2 -2
  371. data/lib/rubygems/tsort/lib/tsort.rb +308 -310
  372. data/lib/rubygems/tsort.rb +1 -1
  373. data/lib/rubygems/uninstaller.rb +19 -18
  374. data/lib/rubygems/update_suggestion.rb +69 -0
  375. data/lib/rubygems/uri.rb +4 -4
  376. data/lib/rubygems/uri_formatter.rb +1 -1
  377. data/lib/rubygems/user_interaction.rb +37 -21
  378. data/lib/rubygems/util/licenses.rb +4 -3
  379. data/lib/rubygems/util/list.rb +1 -0
  380. data/lib/rubygems/util.rb +12 -15
  381. data/lib/rubygems/validator.rb +7 -6
  382. data/lib/rubygems/version.rb +17 -11
  383. data/lib/rubygems/version_option.rb +4 -3
  384. data/lib/rubygems.rb +89 -68
  385. data/rubygems-update.gemspec +10 -8
  386. data/setup.rb +10 -9
  387. data/test/rubygems/alternate_cert.pem +14 -14
  388. data/test/rubygems/alternate_cert_32.pem +15 -15
  389. data/test/rubygems/alternate_key.pem +25 -25
  390. data/test/rubygems/bad_rake.rb +1 -0
  391. data/test/rubygems/bundler_test_gem.rb +421 -0
  392. data/test/rubygems/child_cert.pem +15 -16
  393. data/test/rubygems/child_cert_32.pem +15 -16
  394. data/test/rubygems/child_key.pem +25 -25
  395. data/test/rubygems/encrypted_private_key.pem +26 -26
  396. data/test/rubygems/expired_cert.pem +15 -15
  397. data/test/rubygems/fake_certlib/openssl.rb +1 -0
  398. data/test/rubygems/future_cert.pem +15 -15
  399. data/test/rubygems/future_cert_32.pem +15 -15
  400. data/test/rubygems/good_rake.rb +1 -0
  401. data/test/rubygems/grandchild_cert.pem +15 -16
  402. data/test/rubygems/grandchild_cert_32.pem +15 -16
  403. data/test/rubygems/grandchild_key.pem +25 -25
  404. data/test/rubygems/helper.rb +172 -151
  405. data/test/rubygems/installer_test_case.rb +14 -13
  406. data/test/rubygems/invalid_issuer_cert.pem +16 -16
  407. data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
  408. data/test/rubygems/invalid_key.pem +25 -25
  409. data/test/rubygems/invalid_signer_cert.pem +15 -15
  410. data/test/rubygems/invalid_signer_cert_32.pem +15 -15
  411. data/test/rubygems/invalidchild_cert.pem +15 -16
  412. data/test/rubygems/invalidchild_cert_32.pem +15 -16
  413. data/test/rubygems/invalidchild_key.pem +25 -25
  414. data/test/rubygems/multifactor_auth_utilities.rb +111 -0
  415. data/test/rubygems/package/tar_test_case.rb +53 -17
  416. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  417. data/test/rubygems/plugin/exception/rubygems_plugin.rb +2 -1
  418. data/test/rubygems/plugin/load/rubygems_plugin.rb +1 -0
  419. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +2 -1
  420. data/test/rubygems/private_key.pem +25 -25
  421. data/test/rubygems/public_cert.pem +16 -16
  422. data/test/rubygems/public_cert_32.pem +15 -15
  423. data/test/rubygems/public_key.pem +7 -7
  424. data/test/rubygems/rubygems/commands/crash_command.rb +1 -0
  425. data/test/rubygems/rubygems_plugin.rb +3 -2
  426. data/test/rubygems/simple_gem.rb +2 -1
  427. data/test/rubygems/specifications/bar-0.0.2.gemspec +2 -0
  428. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +6 -4
  429. data/test/rubygems/test_bundled_ca.rb +13 -12
  430. data/test/rubygems/test_config.rb +5 -4
  431. data/test/rubygems/test_deprecate.rb +5 -4
  432. data/test/rubygems/test_exit.rb +9 -3
  433. data/test/rubygems/test_gem.rb +339 -677
  434. data/test/rubygems/test_gem_available_set.rb +22 -21
  435. data/test/rubygems/test_gem_bundler_version_finder.rb +6 -4
  436. data/test/rubygems/test_gem_command.rb +45 -44
  437. data/test/rubygems/test_gem_command_manager.rb +96 -30
  438. data/test/rubygems/test_gem_commands_build_command.rb +74 -63
  439. data/test/rubygems/test_gem_commands_cert_command.rb +98 -99
  440. data/test/rubygems/test_gem_commands_check_command.rb +5 -4
  441. data/test/rubygems/test_gem_commands_cleanup_command.rb +41 -40
  442. data/test/rubygems/test_gem_commands_contents_command.rb +28 -27
  443. data/test/rubygems/test_gem_commands_dependency_command.rb +37 -36
  444. data/test/rubygems/test_gem_commands_environment_command.rb +17 -16
  445. data/test/rubygems/test_gem_commands_exec_command.rb +853 -0
  446. data/test/rubygems/test_gem_commands_fetch_command.rb +38 -37
  447. data/test/rubygems/test_gem_commands_generate_index_command.rb +8 -7
  448. data/test/rubygems/test_gem_commands_help_command.rb +14 -13
  449. data/test/rubygems/test_gem_commands_info_command.rb +29 -2
  450. data/test/rubygems/test_gem_commands_install_command.rb +152 -132
  451. data/test/rubygems/test_gem_commands_list_command.rb +5 -4
  452. data/test/rubygems/test_gem_commands_lock_command.rb +11 -10
  453. data/test/rubygems/test_gem_commands_mirror.rb +3 -2
  454. data/test/rubygems/test_gem_commands_open_command.rb +5 -4
  455. data/test/rubygems/test_gem_commands_outdated_command.rb +10 -9
  456. data/test/rubygems/test_gem_commands_owner_command.rb +227 -50
  457. data/test/rubygems/test_gem_commands_pristine_command.rb +142 -93
  458. data/test/rubygems/test_gem_commands_push_command.rb +189 -64
  459. data/test/rubygems/test_gem_commands_query_command.rb +74 -73
  460. data/test/rubygems/test_gem_commands_search_command.rb +3 -2
  461. data/test/rubygems/test_gem_commands_server_command.rb +3 -2
  462. data/test/rubygems/test_gem_commands_setup_command.rb +123 -96
  463. data/test/rubygems/test_gem_commands_signin_command.rb +71 -31
  464. data/test/rubygems/test_gem_commands_signout_command.rb +3 -3
  465. data/test/rubygems/test_gem_commands_sources_command.rb +29 -29
  466. data/test/rubygems/test_gem_commands_specification_command.rb +33 -32
  467. data/test/rubygems/test_gem_commands_stale_command.rb +5 -4
  468. data/test/rubygems/test_gem_commands_uninstall_command.rb +99 -81
  469. data/test/rubygems/test_gem_commands_unpack_command.rb +32 -31
  470. data/test/rubygems/test_gem_commands_update_command.rb +96 -95
  471. data/test/rubygems/test_gem_commands_which_command.rb +7 -6
  472. data/test/rubygems/test_gem_commands_yank_command.rb +162 -43
  473. data/test/rubygems/test_gem_config_file.rb +94 -81
  474. data/test/rubygems/test_gem_dependency.rb +76 -73
  475. data/test/rubygems/test_gem_dependency_installer.rb +200 -165
  476. data/test/rubygems/test_gem_dependency_list.rb +48 -47
  477. data/test/rubygems/test_gem_dependency_resolution_error.rb +5 -4
  478. data/test/rubygems/test_gem_doctor.rb +27 -26
  479. data/test/rubygems/test_gem_ext_builder.rb +60 -61
  480. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +4 -4
  481. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{Cargo.lock → ext/custom_name_lib/Cargo.lock} +23 -33
  482. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{Cargo.toml → ext/custom_name_lib/Cargo.toml} +1 -1
  483. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{src → ext/custom_name_lib/src}/lib.rs +1 -1
  484. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +3 -0
  485. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +37 -33
  486. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +1 -1
  487. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +2 -0
  488. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +12 -0
  489. data/test/rubygems/test_gem_ext_cargo_builder.rb +48 -59
  490. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +20 -19
  491. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +21 -36
  492. data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -15
  493. data/test/rubygems/test_gem_ext_configure_builder.rb +14 -13
  494. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +51 -52
  495. data/test/rubygems/test_gem_ext_rake_builder.rb +16 -15
  496. data/test/rubygems/test_gem_gem_runner.rb +15 -9
  497. data/test/rubygems/test_gem_gemcutter_utilities.rb +170 -84
  498. data/test/rubygems/test_gem_impossible_dependencies_error.rb +5 -4
  499. data/test/rubygems/test_gem_indexer.rb +87 -67
  500. data/test/rubygems/test_gem_install_update_options.rb +17 -16
  501. data/test/rubygems/test_gem_installer.rb +422 -304
  502. data/test/rubygems/test_gem_local_remote_options.rb +11 -10
  503. data/test/rubygems/test_gem_name_tuple.rb +5 -4
  504. data/test/rubygems/test_gem_package.rb +243 -231
  505. data/test/rubygems/test_gem_package_old.rb +14 -13
  506. data/test/rubygems/test_gem_package_tar_header.rb +48 -47
  507. data/test/rubygems/test_gem_package_tar_reader.rb +56 -8
  508. data/test/rubygems/test_gem_package_tar_reader_entry.rb +162 -16
  509. data/test/rubygems/test_gem_package_tar_writer.rb +77 -76
  510. data/test/rubygems/test_gem_package_task.rb +19 -18
  511. data/test/rubygems/test_gem_path_support.rb +15 -14
  512. data/test/rubygems/test_gem_platform.rb +333 -227
  513. data/test/rubygems/test_gem_rdoc.rb +15 -14
  514. data/test/rubygems/test_gem_remote_fetcher.rb +155 -154
  515. data/test/rubygems/test_gem_request.rb +64 -58
  516. data/test/rubygems/test_gem_request_connection_pools.rb +30 -29
  517. data/test/rubygems/test_gem_request_set.rb +101 -100
  518. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +210 -211
  519. data/test/rubygems/test_gem_request_set_lockfile.rb +87 -86
  520. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +58 -57
  521. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +63 -62
  522. data/test/rubygems/test_gem_requirement.rb +48 -41
  523. data/test/rubygems/test_gem_resolver.rb +167 -99
  524. data/test/rubygems/test_gem_resolver_activation_request.rb +7 -6
  525. data/test/rubygems/test_gem_resolver_api_set.rb +34 -33
  526. data/test/rubygems/test_gem_resolver_api_specification.rb +48 -47
  527. data/test/rubygems/test_gem_resolver_best_set.rb +23 -22
  528. data/test/rubygems/test_gem_resolver_composed_set.rb +2 -1
  529. data/test/rubygems/test_gem_resolver_conflict.rb +13 -12
  530. data/test/rubygems/test_gem_resolver_dependency_request.rb +16 -15
  531. data/test/rubygems/test_gem_resolver_git_set.rb +22 -21
  532. data/test/rubygems/test_gem_resolver_git_specification.rb +22 -21
  533. data/test/rubygems/test_gem_resolver_index_set.rb +13 -12
  534. data/test/rubygems/test_gem_resolver_index_specification.rb +17 -16
  535. data/test/rubygems/test_gem_resolver_installed_specification.rb +6 -5
  536. data/test/rubygems/test_gem_resolver_installer_set.rb +79 -34
  537. data/test/rubygems/test_gem_resolver_local_specification.rb +8 -7
  538. data/test/rubygems/test_gem_resolver_lock_set.rb +13 -12
  539. data/test/rubygems/test_gem_resolver_lock_specification.rb +18 -17
  540. data/test/rubygems/test_gem_resolver_requirement_list.rb +2 -1
  541. data/test/rubygems/test_gem_resolver_specification.rb +9 -8
  542. data/test/rubygems/test_gem_resolver_vendor_set.rb +7 -6
  543. data/test/rubygems/test_gem_resolver_vendor_specification.rb +11 -10
  544. data/test/rubygems/test_gem_security.rb +69 -68
  545. data/test/rubygems/test_gem_security_policy.rb +72 -72
  546. data/test/rubygems/test_gem_security_signer.rb +35 -34
  547. data/test/rubygems/test_gem_security_trust_dir.rb +7 -6
  548. data/test/rubygems/test_gem_silent_ui.rb +39 -32
  549. data/test/rubygems/test_gem_source.rb +45 -44
  550. data/test/rubygems/test_gem_source_fetch_problem.rb +10 -9
  551. data/test/rubygems/test_gem_source_git.rb +69 -62
  552. data/test/rubygems/test_gem_source_installed.rb +17 -16
  553. data/test/rubygems/test_gem_source_list.rb +6 -5
  554. data/test/rubygems/test_gem_source_local.rb +15 -14
  555. data/test/rubygems/test_gem_source_lock.rb +32 -31
  556. data/test/rubygems/test_gem_source_specific_file.rb +18 -17
  557. data/test/rubygems/test_gem_source_subpath_problem.rb +8 -7
  558. data/test/rubygems/test_gem_source_vendor.rb +14 -13
  559. data/test/rubygems/test_gem_spec_fetcher.rb +73 -72
  560. data/test/rubygems/test_gem_specification.rb +533 -469
  561. data/test/rubygems/test_gem_stream_ui.rb +53 -22
  562. data/test/rubygems/test_gem_stub_specification.rb +33 -32
  563. data/test/rubygems/test_gem_text.rb +2 -1
  564. data/test/rubygems/test_gem_uninstaller.rb +118 -117
  565. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +4 -3
  566. data/test/rubygems/test_gem_update_suggestion.rb +209 -0
  567. data/test/rubygems/test_gem_uri.rb +6 -4
  568. data/test/rubygems/test_gem_uri_formatter.rb +15 -14
  569. data/test/rubygems/test_gem_util.rb +24 -23
  570. data/test/rubygems/test_gem_validator.rb +8 -8
  571. data/test/rubygems/test_gem_version.rb +24 -16
  572. data/test/rubygems/test_gem_version_option.rb +16 -15
  573. data/test/rubygems/test_kernel.rb +43 -48
  574. data/test/rubygems/test_project_sanity.rb +32 -3
  575. data/test/rubygems/test_remote_fetch_error.rb +8 -7
  576. data/test/rubygems/test_require.rb +118 -103
  577. data/test/rubygems/test_rubygems.rb +10 -8
  578. data/test/rubygems/test_webauthn_listener.rb +143 -0
  579. data/test/rubygems/test_webauthn_listener_response.rb +93 -0
  580. data/test/rubygems/test_webauthn_poller.rb +124 -0
  581. data/test/rubygems/utilities.rb +98 -34
  582. data/test/rubygems/wrong_key_cert.pem +15 -15
  583. data/test/rubygems/wrong_key_cert_32.pem +15 -15
  584. data/test/test_changelog_generator.rb +1 -1
  585. metadata +99 -46
  586. data/bundler/lib/bundler/dep_proxy.rb +0 -55
  587. data/bundler/lib/bundler/templates/gems.rb +0 -5
  588. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +0 -5
  589. data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
  590. data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
  591. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
  592. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
  593. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
  594. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
  595. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
  596. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
  597. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
  598. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
  599. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
  600. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
  601. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
  602. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
  603. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -149
  604. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
  605. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
  606. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
  607. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
  608. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
  609. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
  610. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
  611. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
  612. data/bundler/lib/bundler/vendored_molinillo.rb +0 -4
  613. data/bundler/lib/bundler/version_ranges.rb +0 -122
  614. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb +0 -21
  615. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/build.rb +0 -21
@@ -1,14 +1,15 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'helper'
3
- require 'rubygems/request_set'
4
- require 'rubygems/request_set/lockfile'
5
- require 'rubygems/request_set/lockfile/tokenizer'
6
- require 'rubygems/request_set/lockfile/parser'
2
+
3
+ require_relative "helper"
4
+ require "rubygems/request_set"
5
+ require "rubygems/request_set/lockfile"
6
+ require "rubygems/request_set/lockfile/tokenizer"
7
+ require "rubygems/request_set/lockfile/parser"
7
8
 
8
9
  class TestGemRequestSetLockfileParser < Gem::TestCase
9
10
  def setup
10
11
  super
11
- @gem_deps_file = 'gem.deps.rb'
12
+ @gem_deps_file = "gem.deps.rb"
12
13
  @lock_file = File.expand_path "#{@gem_deps_file}.lock"
13
14
  @set = Gem::RequestSet.new
14
15
  end
@@ -53,7 +54,7 @@ class TestGemRequestSetLockfileParser < Gem::TestCase
53
54
  parser = tokenizer.make_parser nil, nil
54
55
 
55
56
  e = assert_raise Gem::RequestSet::Lockfile::ParseError do
56
- parser.get :text, 'y'
57
+ parser.get :text, "y"
57
58
  end
58
59
 
59
60
  expected =
@@ -83,7 +84,7 @@ DEPENDENCIES
83
84
  platforms = []
84
85
  parse_lockfile @set, platforms
85
86
 
86
- assert_equal [dep('a')], @set.dependencies
87
+ assert_equal [dep("a")], @set.dependencies
87
88
 
88
89
  assert_equal [Gem::Platform::RUBY], platforms
89
90
 
@@ -91,7 +92,7 @@ DEPENDENCIES
91
92
  Gem::Resolver::LockSet === set
92
93
  end
93
94
 
94
- assert lockfile_set, 'could not find a LockSet'
95
+ assert lockfile_set, "could not find a LockSet"
95
96
 
96
97
  assert_equal %w[a-2], lockfile_set.specs.map {|tuple| tuple.full_name }
97
98
  end
@@ -113,7 +114,7 @@ DEPENDENCIES
113
114
  platforms = []
114
115
  parse_lockfile @set, platforms
115
116
 
116
- assert_equal [dep('a', '>= 1', '<= 2')], @set.dependencies
117
+ assert_equal [dep("a", ">= 1", "<= 2")], @set.dependencies
117
118
 
118
119
  assert_equal [Gem::Platform::RUBY], platforms
119
120
 
@@ -121,7 +122,7 @@ DEPENDENCIES
121
122
  Gem::Resolver::LockSet === set
122
123
  end
123
124
 
124
- assert lockfile_set, 'could not find a LockSet'
125
+ assert lockfile_set, "could not find a LockSet"
125
126
 
126
127
  assert_equal %w[a-2], lockfile_set.specs.map {|tuple| tuple.full_name }
127
128
  end
@@ -159,8 +160,8 @@ DEPENDENCIES
159
160
  parse_lockfile @set, []
160
161
 
161
162
  expected = [
162
- dep('i18n-active_record', '= 0.0.2'),
163
- dep('rails-footnotes', '= 3.7.9'),
163
+ dep("i18n-active_record", "= 0.0.2"),
164
+ dep("rails-footnotes", "= 3.7.9"),
164
165
  ]
165
166
 
166
167
  assert_equal expected, @set.dependencies
@@ -188,7 +189,7 @@ DEPENDENCIES
188
189
  parse_lockfile @set, []
189
190
 
190
191
  expected = [
191
- dep('jwt', '= 1.1'),
192
+ dep("jwt", "= 1.1"),
192
193
  ]
193
194
 
194
195
  assert_equal expected, @set.dependencies
@@ -209,13 +210,13 @@ DEPENDENCIES
209
210
 
210
211
  parse_lockfile @set, []
211
212
 
212
- assert_equal [dep('a', '>= 0')], @set.dependencies
213
+ assert_equal [dep("a", ">= 0")], @set.dependencies
213
214
 
214
215
  lockfile_set = @set.sets.find do |set|
215
216
  Gem::Resolver::LockSet === set
216
217
  end
217
218
 
218
- assert lockfile_set, 'found a LockSet'
219
+ assert lockfile_set, "found a LockSet"
219
220
 
220
221
  assert_equal %w[a-2], lockfile_set.specs.map {|s| s.full_name }
221
222
  end
@@ -237,13 +238,13 @@ DEPENDENCIES
237
238
 
238
239
  parse_lockfile @set, []
239
240
 
240
- assert_equal [dep('a', '>= 0')], @set.dependencies
241
+ assert_equal [dep("a", ">= 0")], @set.dependencies
241
242
 
242
243
  lockfile_set = @set.sets.find do |set|
243
244
  Gem::Resolver::LockSet === set
244
245
  end
245
246
 
246
- assert lockfile_set, 'found a LockSet'
247
+ assert lockfile_set, "found a LockSet"
247
248
 
248
249
  assert_equal %w[a-2], lockfile_set.specs.map {|s| s.full_name }
249
250
 
@@ -252,12 +253,12 @@ DEPENDENCIES
252
253
  end
253
254
 
254
255
  def test_parse_GIT
255
- @set.instance_variable_set :@install_dir, 'install_dir'
256
+ @set.instance_variable_set :@install_dir, "install_dir"
256
257
 
257
258
  write_lockfile <<-LOCKFILE
258
259
  GIT
259
260
  remote: git://example/a.git
260
- revision: master
261
+ revision: abranch
261
262
  specs:
262
263
  a (2)
263
264
  b (>= 3)
@@ -269,31 +270,31 @@ DEPENDENCIES
269
270
 
270
271
  parse_lockfile @set, []
271
272
 
272
- assert_equal [dep('a', '= 2')], @set.dependencies
273
+ assert_equal [dep("a", "= 2")], @set.dependencies
273
274
 
274
275
  lockfile_set = @set.sets.find do |set|
275
276
  Gem::Resolver::LockSet === set
276
277
  end
277
278
 
278
- refute lockfile_set, 'fount a LockSet'
279
+ refute lockfile_set, "found a LockSet"
279
280
 
280
281
  git_set = @set.sets.find do |set|
281
282
  Gem::Resolver::GitSet === set
282
283
  end
283
284
 
284
- assert git_set, 'could not find a GitSet'
285
+ assert git_set, "could not find a GitSet"
285
286
 
286
287
  assert_equal %w[a-2], git_set.specs.values.map {|s| s.full_name }
287
288
 
288
- assert_equal [dep('b', '>= 3'), dep('c')],
289
+ assert_equal [dep("b", ">= 3"), dep("c")],
289
290
  git_set.specs.values.first.dependencies
290
291
 
291
292
  expected = {
292
- 'a' => %w[git://example/a.git master],
293
+ "a" => %w[git://example/a.git abranch],
293
294
  }
294
295
 
295
296
  assert_equal expected, git_set.repositories
296
- assert_equal 'install_dir', git_set.root_dir
297
+ assert_equal "install_dir", git_set.root_dir
297
298
  end
298
299
 
299
300
  def test_parse_GIT_branch
@@ -312,22 +313,22 @@ DEPENDENCIES
312
313
 
313
314
  parse_lockfile @set, []
314
315
 
315
- assert_equal [dep('a', '= 2')], @set.dependencies
316
+ assert_equal [dep("a", "= 2")], @set.dependencies
316
317
 
317
318
  lockfile_set = @set.sets.find do |set|
318
319
  Gem::Resolver::LockSet === set
319
320
  end
320
321
 
321
- refute lockfile_set, 'fount a LockSet'
322
+ refute lockfile_set, "found a LockSet"
322
323
 
323
324
  git_set = @set.sets.find do |set|
324
325
  Gem::Resolver::GitSet === set
325
326
  end
326
327
 
327
- assert git_set, 'could not find a GitSet'
328
+ assert git_set, "could not find a GitSet"
328
329
 
329
330
  expected = {
330
- 'a' => %w[git://example/a.git 1234abc],
331
+ "a" => %w[git://example/a.git 1234abc],
331
332
  }
332
333
 
333
334
  assert_equal expected, git_set.repositories
@@ -349,22 +350,22 @@ DEPENDENCIES
349
350
 
350
351
  parse_lockfile @set, []
351
352
 
352
- assert_equal [dep('a', '= 2')], @set.dependencies
353
+ assert_equal [dep("a", "= 2")], @set.dependencies
353
354
 
354
355
  lockfile_set = @set.sets.find do |set|
355
356
  Gem::Resolver::LockSet === set
356
357
  end
357
358
 
358
- refute lockfile_set, 'fount a LockSet'
359
+ refute lockfile_set, "found a LockSet"
359
360
 
360
361
  git_set = @set.sets.find do |set|
361
362
  Gem::Resolver::GitSet === set
362
363
  end
363
364
 
364
- assert git_set, 'could not find a GitSet'
365
+ assert git_set, "could not find a GitSet"
365
366
 
366
367
  expected = {
367
- 'a' => %w[git://example/a.git 1234abc],
368
+ "a" => %w[git://example/a.git 1234abc],
368
369
  }
369
370
 
370
371
  assert_equal expected, git_set.repositories
@@ -386,22 +387,22 @@ DEPENDENCIES
386
387
 
387
388
  parse_lockfile @set, []
388
389
 
389
- assert_equal [dep('a', '= 2')], @set.dependencies
390
+ assert_equal [dep("a", "= 2")], @set.dependencies
390
391
 
391
392
  lockfile_set = @set.sets.find do |set|
392
393
  Gem::Resolver::LockSet === set
393
394
  end
394
395
 
395
- refute lockfile_set, 'fount a LockSet'
396
+ refute lockfile_set, "found a LockSet"
396
397
 
397
398
  git_set = @set.sets.find do |set|
398
399
  Gem::Resolver::GitSet === set
399
400
  end
400
401
 
401
- assert git_set, 'could not find a GitSet'
402
+ assert git_set, "could not find a GitSet"
402
403
 
403
404
  expected = {
404
- 'a' => %w[git://example/a.git 1234abc],
405
+ "a" => %w[git://example/a.git 1234abc],
405
406
  }
406
407
 
407
408
  assert_equal expected, git_set.repositories
@@ -423,45 +424,45 @@ DEPENDENCIES
423
424
 
424
425
  parse_lockfile @set, []
425
426
 
426
- assert_equal [dep('a', '= 1')], @set.dependencies
427
+ assert_equal [dep("a", "= 1")], @set.dependencies
427
428
 
428
429
  lockfile_set = @set.sets.find do |set|
429
430
  Gem::Resolver::LockSet === set
430
431
  end
431
432
 
432
- refute lockfile_set, 'found a LockSet'
433
+ refute lockfile_set, "found a LockSet"
433
434
 
434
435
  vendor_set = @set.sets.find do |set|
435
436
  Gem::Resolver::VendorSet === set
436
437
  end
437
438
 
438
- assert vendor_set, 'could not find a VendorSet'
439
+ assert vendor_set, "could not find a VendorSet"
439
440
 
440
441
  assert_equal %w[a-1], vendor_set.specs.values.map {|s| s.full_name }
441
442
 
442
- spec = vendor_set.load_spec 'a', nil, nil, nil
443
+ spec = vendor_set.load_spec "a", nil, nil, nil
443
444
 
444
- assert_equal [dep('b', '= 2')], spec.dependencies
445
+ assert_equal [dep("b", "= 2")], spec.dependencies
445
446
  end
446
447
 
447
448
  def test_parse_dependency
448
- write_lockfile ' 1)'
449
+ write_lockfile " 1)"
449
450
 
450
451
  tokenizer = Gem::RequestSet::Lockfile::Tokenizer.from_file @lock_file
451
452
  parser = tokenizer.make_parser nil, nil
452
453
 
453
- parsed = parser.parse_dependency 'a', '='
454
+ parsed = parser.parse_dependency "a", "="
454
455
 
455
- assert_equal dep('a', '= 1'), parsed
456
+ assert_equal dep("a", "= 1"), parsed
456
457
 
457
- write_lockfile ')'
458
+ write_lockfile ")"
458
459
 
459
460
  tokenizer = Gem::RequestSet::Lockfile::Tokenizer.from_file @lock_file
460
461
  parser = tokenizer.make_parser nil, nil
461
462
 
462
- parsed = parser.parse_dependency 'a', '2'
463
+ parsed = parser.parse_dependency "a", "2"
463
464
 
464
- assert_equal dep('a', '= 2'), parsed
465
+ assert_equal dep("a", "= 2"), parsed
465
466
  end
466
467
 
467
468
  def test_parse_gem_specs_dependency
@@ -486,7 +487,7 @@ DEPENDENCIES
486
487
  platforms = []
487
488
  parse_lockfile @set, platforms
488
489
 
489
- assert_equal [dep('a')], @set.dependencies
490
+ assert_equal [dep("a")], @set.dependencies
490
491
 
491
492
  assert_equal [Gem::Platform::RUBY], platforms
492
493
 
@@ -494,13 +495,13 @@ DEPENDENCIES
494
495
  Gem::Resolver::LockSet === set
495
496
  end
496
497
 
497
- assert lockfile_set, 'could not find a LockSet'
498
+ assert lockfile_set, "could not find a LockSet"
498
499
 
499
500
  assert_equal %w[a-2 b-3], lockfile_set.specs.map {|tuple| tuple.full_name }
500
501
 
501
502
  expected = [
502
503
  Gem::Platform::RUBY,
503
- Gem::Platform.new('x86_64-linux'),
504
+ Gem::Platform.new("x86_64-linux"),
504
505
  ]
505
506
 
506
507
  assert_equal expected, lockfile_set.specs.map {|tuple| tuple.platform }
@@ -508,10 +509,10 @@ DEPENDENCIES
508
509
  spec = lockfile_set.specs.first
509
510
 
510
511
  expected = [
511
- dep('b', '= 3'),
512
- dep('c', '~> 4'),
513
- dep('d'),
514
- dep('e', '~> 5.0', '>= 5.0.1'),
512
+ dep("b", "= 3"),
513
+ dep("c", "~> 4"),
514
+ dep("d"),
515
+ dep("e", "~> 5.0", ">= 5.0.1"),
515
516
  ]
516
517
 
517
518
  assert_equal expected, spec.dependencies
@@ -530,7 +531,7 @@ DEPENDENCIES
530
531
  end
531
532
 
532
533
  def write_lockfile(lockfile)
533
- File.open @lock_file, 'w' do |io|
534
+ File.open @lock_file, "w" do |io|
534
535
  io.write lockfile
535
536
  end
536
537
  end
@@ -1,15 +1,16 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'helper'
3
- require 'rubygems/request_set'
4
- require 'rubygems/request_set/lockfile'
5
- require 'rubygems/request_set/lockfile/tokenizer'
6
- require 'rubygems/request_set/lockfile/parser'
2
+
3
+ require_relative "helper"
4
+ require "rubygems/request_set"
5
+ require "rubygems/request_set/lockfile"
6
+ require "rubygems/request_set/lockfile/tokenizer"
7
+ require "rubygems/request_set/lockfile/parser"
7
8
 
8
9
  class TestGemRequestSetLockfileTokenizer < Gem::TestCase
9
10
  def setup
10
11
  super
11
12
 
12
- @gem_deps_file = 'gem.deps.rb'
13
+ @gem_deps_file = "gem.deps.rb"
13
14
  @lock_file = File.expand_path "#{@gem_deps_file}.lock"
14
15
  end
15
16
 
@@ -34,10 +35,10 @@ class TestGemRequestSetLockfileTokenizer < Gem::TestCase
34
35
  end
35
36
 
36
37
  def test_token_pos
37
- tokenizer = Gem::RequestSet::Lockfile::Tokenizer.new ''
38
+ tokenizer = Gem::RequestSet::Lockfile::Tokenizer.new ""
38
39
  assert_equal [5, 0], tokenizer.token_pos(5)
39
40
 
40
- tokenizer = Gem::RequestSet::Lockfile::Tokenizer.new '', nil, 1, 2
41
+ tokenizer = Gem::RequestSet::Lockfile::Tokenizer.new "", nil, 1, 2
41
42
  assert_equal [3, 1], tokenizer.token_pos(5)
42
43
  end
43
44
 
@@ -63,74 +64,74 @@ DEPENDENCIES
63
64
  LOCKFILE
64
65
 
65
66
  expected = [
66
- [:section, 'GEM', 0, 0],
67
+ [:section, "GEM", 0, 0],
67
68
  [:newline, nil, 3, 0],
68
69
 
69
- [:entry, 'remote', 2, 1],
70
+ [:entry, "remote", 2, 1],
70
71
  [:text, @gem_repo, 10, 1],
71
72
  [:newline, nil, 34, 1],
72
73
 
73
- [:entry, 'specs', 2, 2],
74
+ [:entry, "specs", 2, 2],
74
75
  [:newline, nil, 8, 2],
75
76
 
76
- [:text, 'a', 4, 3],
77
+ [:text, "a", 4, 3],
77
78
  [:l_paren, nil, 6, 3],
78
- [:text, '2', 7, 3],
79
+ [:text, "2", 7, 3],
79
80
  [:r_paren, nil, 8, 3],
80
81
  [:newline, nil, 9, 3],
81
82
 
82
- [:text, 'b', 6, 4],
83
+ [:text, "b", 6, 4],
83
84
  [:l_paren, nil, 8, 4],
84
- [:requirement, '=', 9, 4],
85
- [:text, '2', 11, 4],
85
+ [:requirement, "=", 9, 4],
86
+ [:text, "2", 11, 4],
86
87
  [:r_paren, nil, 12, 4],
87
88
  [:newline, nil, 13, 4],
88
89
 
89
- [:text, 'c', 6, 5],
90
+ [:text, "c", 6, 5],
90
91
  [:l_paren, nil, 8, 5],
91
- [:requirement, '!=', 9, 5],
92
- [:text, '3', 12, 5],
92
+ [:requirement, "!=", 9, 5],
93
+ [:text, "3", 12, 5],
93
94
  [:r_paren, nil, 13, 5],
94
95
  [:newline, nil, 14, 5],
95
96
 
96
- [:text, 'd', 6, 6],
97
+ [:text, "d", 6, 6],
97
98
  [:l_paren, nil, 8, 6],
98
- [:requirement, '>', 9, 6],
99
- [:text, '4', 11, 6],
99
+ [:requirement, ">", 9, 6],
100
+ [:text, "4", 11, 6],
100
101
  [:r_paren, nil, 12, 6],
101
102
  [:newline, nil, 13, 6],
102
103
 
103
- [:text, 'e', 6, 7],
104
+ [:text, "e", 6, 7],
104
105
  [:l_paren, nil, 8, 7],
105
- [:requirement, '<', 9, 7],
106
- [:text, '5', 11, 7],
106
+ [:requirement, "<", 9, 7],
107
+ [:text, "5", 11, 7],
107
108
  [:r_paren, nil, 12, 7],
108
109
  [:newline, nil, 13, 7],
109
110
 
110
- [:text, 'f', 6, 8],
111
+ [:text, "f", 6, 8],
111
112
  [:l_paren, nil, 8, 8],
112
- [:requirement, '>=', 9, 8],
113
- [:text, '6', 12, 8],
113
+ [:requirement, ">=", 9, 8],
114
+ [:text, "6", 12, 8],
114
115
  [:r_paren, nil, 13, 8],
115
116
  [:newline, nil, 14, 8],
116
117
 
117
- [:text, 'g', 6, 9],
118
+ [:text, "g", 6, 9],
118
119
  [:l_paren, nil, 8, 9],
119
- [:requirement, '<=', 9, 9],
120
- [:text, '7', 12, 9],
120
+ [:requirement, "<=", 9, 9],
121
+ [:text, "7", 12, 9],
121
122
  [:r_paren, nil, 13, 9],
122
123
  [:newline, nil, 14, 9],
123
124
 
124
- [:text, 'h', 6, 10],
125
+ [:text, "h", 6, 10],
125
126
  [:l_paren, nil, 8, 10],
126
- [:requirement, '~>', 9, 10],
127
- [:text, '8', 12, 10],
127
+ [:requirement, "~>", 9, 10],
128
+ [:text, "8", 12, 10],
128
129
  [:r_paren, nil, 13, 10],
129
130
  [:newline, nil, 14, 10],
130
131
 
131
132
  [:newline, nil, 0, 11],
132
133
 
133
- [:section, 'PLATFORMS', 0, 12],
134
+ [:section, "PLATFORMS", 0, 12],
134
135
  [:newline, nil, 9, 12],
135
136
 
136
137
  [:text, Gem::Platform::RUBY, 2, 13],
@@ -138,10 +139,10 @@ DEPENDENCIES
138
139
 
139
140
  [:newline, nil, 0, 14],
140
141
 
141
- [:section, 'DEPENDENCIES', 0, 15],
142
+ [:section, "DEPENDENCIES", 0, 15],
142
143
  [:newline, nil, 12, 15],
143
144
 
144
- [:text, 'a', 2, 16],
145
+ [:text, "a", 2, 16],
145
146
  [:newline, nil, 3, 16],
146
147
  ]
147
148
 
@@ -163,27 +164,27 @@ DEPENDENCIES
163
164
  LOCKFILE
164
165
 
165
166
  expected = [
166
- [:section, 'GEM', 0, 0],
167
+ [:section, "GEM", 0, 0],
167
168
  [:newline, nil, 3, 0],
168
- [:entry, 'remote', 2, 1],
169
+ [:entry, "remote", 2, 1],
169
170
  [:text, @gem_repo, 10, 1],
170
171
  [:newline, nil, 34, 1],
171
- [:entry, 'specs', 2, 2],
172
+ [:entry, "specs", 2, 2],
172
173
  [:newline, nil, 8, 2],
173
- [:text, 'Ab', 4, 3],
174
+ [:text, "Ab", 4, 3],
174
175
  [:l_paren, nil, 7, 3],
175
- [:text, '2', 8, 3],
176
+ [:text, "2", 8, 3],
176
177
  [:r_paren, nil, 9, 3],
177
178
  [:newline, nil, 10, 3],
178
179
  [:newline, nil, 0, 4],
179
- [:section, 'PLATFORMS', 0, 5],
180
+ [:section, "PLATFORMS", 0, 5],
180
181
  [:newline, nil, 9, 5],
181
182
  [:text, Gem::Platform::RUBY, 2, 6],
182
183
  [:newline, nil, 6, 6],
183
184
  [:newline, nil, 0, 7],
184
- [:section, 'DEPENDENCIES', 0, 8],
185
+ [:section, "DEPENDENCIES", 0, 8],
185
186
  [:newline, nil, 12, 8],
186
- [:text, 'Ab', 2, 9],
187
+ [:text, "Ab", 2, 9],
187
188
  [:newline, nil, 4, 9],
188
189
  ]
189
190
 
@@ -191,7 +192,7 @@ DEPENDENCIES
191
192
  end
192
193
 
193
194
  def test_tokenize_conflict_markers
194
- write_lockfile '<<<<<<<'
195
+ write_lockfile "<<<<<<<"
195
196
 
196
197
  e = assert_raise Gem::RequestSet::Lockfile::ParseError do
197
198
  tokenize_lockfile
@@ -200,7 +201,7 @@ DEPENDENCIES
200
201
  assert_equal "your #{@lock_file} contains merge conflict markers (at line 0 column 0)",
201
202
  e.message
202
203
 
203
- write_lockfile '|||||||'
204
+ write_lockfile "|||||||"
204
205
 
205
206
  e = assert_raise Gem::RequestSet::Lockfile::ParseError do
206
207
  tokenize_lockfile
@@ -209,7 +210,7 @@ DEPENDENCIES
209
210
  assert_equal "your #{@lock_file} contains merge conflict markers (at line 0 column 0)",
210
211
  e.message
211
212
 
212
- write_lockfile '======='
213
+ write_lockfile "======="
213
214
 
214
215
  e = assert_raise Gem::RequestSet::Lockfile::ParseError do
215
216
  tokenize_lockfile
@@ -218,7 +219,7 @@ DEPENDENCIES
218
219
  assert_equal "your #{@lock_file} contains merge conflict markers (at line 0 column 0)",
219
220
  e.message
220
221
 
221
- write_lockfile '>>>>>>>'
222
+ write_lockfile ">>>>>>>"
222
223
 
223
224
  e = assert_raise Gem::RequestSet::Lockfile::ParseError do
224
225
  tokenize_lockfile
@@ -235,10 +236,10 @@ DEPENDENCIES
235
236
  LOCKFILE
236
237
 
237
238
  expected = [
238
- [:section, 'DEPENDENCIES', 0, 0],
239
+ [:section, "DEPENDENCIES", 0, 0],
239
240
  [:newline, nil, 12, 0],
240
241
 
241
- [:text, 'a', 2, 1],
242
+ [:text, "a", 2, 1],
242
243
  [:bang, nil, 3, 1],
243
244
  [:newline, nil, 4, 1],
244
245
  ]
@@ -256,29 +257,29 @@ GEM
256
257
  LOCKFILE
257
258
 
258
259
  expected = [
259
- [:section, 'GEM', 0, 0],
260
+ [:section, "GEM", 0, 0],
260
261
  [:newline, nil, 3, 0],
261
262
 
262
- [:entry, 'remote', 2, 1],
263
+ [:entry, "remote", 2, 1],
263
264
  [:text, @gem_repo, 10, 1],
264
265
  [:newline, nil, 34, 1],
265
266
 
266
- [:entry, 'specs', 2, 2],
267
+ [:entry, "specs", 2, 2],
267
268
  [:newline, nil, 8, 2],
268
269
 
269
- [:text, 'a', 4, 3],
270
+ [:text, "a", 4, 3],
270
271
  [:l_paren, nil, 6, 3],
271
- [:text, '2', 7, 3],
272
+ [:text, "2", 7, 3],
272
273
  [:r_paren, nil, 8, 3],
273
274
  [:newline, nil, 9, 3],
274
275
 
275
- [:text, 'b', 6, 4],
276
+ [:text, "b", 6, 4],
276
277
  [:l_paren, nil, 8, 4],
277
- [:requirement, '~>', 9, 4],
278
- [:text, '3.0', 12, 4],
278
+ [:requirement, "~>", 9, 4],
279
+ [:text, "3.0", 12, 4],
279
280
  [:comma, nil, 15, 4],
280
- [:requirement, '>=', 17, 4],
281
- [:text, '3.0.1', 20, 4],
281
+ [:requirement, ">=", 17, 4],
282
+ [:text, "3.0.1", 20, 4],
282
283
  [:r_paren, nil, 25, 4],
283
284
  [:newline, nil, 26, 4],
284
285
  ]
@@ -295,7 +296,7 @@ GEM
295
296
  end
296
297
 
297
298
  def write_lockfile(lockfile)
298
- File.open @lock_file, 'w' do |io|
299
+ File.open @lock_file, "w" do |io|
299
300
  io.write lockfile
300
301
  end
301
302
  end