rubygems-update 3.2.30 → 3.4.10

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 (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,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'helper'
3
- require 'rubygems/commands/signin_command'
4
- require 'rubygems/installer'
2
+ require_relative "helper"
3
+ require "rubygems/commands/signin_command"
4
+ require "rubygems/installer"
5
5
 
6
6
  class TestGemCommandsSigninCommand < Gem::TestCase
7
7
  def setup
@@ -34,7 +34,7 @@ class TestGemCommandsSigninCommand < Gem::TestCase
34
34
  end
35
35
 
36
36
  def test_execute_when_already_signed_in_with_same_host
37
- host = 'http://some-gemcutter-compatible-host.org'
37
+ host = "http://some-gemcutter-compatible-host.org"
38
38
 
39
39
  util_capture(nil, host) { @cmd.execute }
40
40
  old_credentials = load_yaml_file Gem.configuration.credentials_path
@@ -46,10 +46,10 @@ class TestGemCommandsSigninCommand < Gem::TestCase
46
46
  end
47
47
 
48
48
  def test_execute_when_already_signed_in_with_different_host
49
- api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf04045xxxx'
49
+ api_key = "a5fdbb6ba150cbb83aad2bb2fede64cf04045xxxx"
50
50
 
51
51
  util_capture(nil, nil, api_key) { @cmd.execute }
52
- host = 'http://some-gemcutter-compatible-host.org'
52
+ host = "http://some-gemcutter-compatible-host.org"
53
53
 
54
54
  util_capture(nil, host, api_key) { @cmd.execute }
55
55
  credentials = load_yaml_file Gem.configuration.credentials_path
@@ -60,30 +60,55 @@ class TestGemCommandsSigninCommand < Gem::TestCase
60
60
  end
61
61
 
62
62
  def test_execute_with_host_supplied
63
- host = 'http://some-gemcutter-compatible-host.org'
63
+ host = "http://some-gemcutter-compatible-host.org"
64
64
 
65
65
  sign_in_ui = util_capture(nil, host) { @cmd.execute }
66
66
  assert_match %r{Enter your #{host} credentials.}, sign_in_ui.output
67
67
  assert_match %r{Signed in.}, sign_in_ui.output
68
68
 
69
- api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
69
+ api_key = "a5fdbb6ba150cbb83aad2bb2fede64cf040453903"
70
70
  credentials = load_yaml_file Gem.configuration.credentials_path
71
71
  assert_equal api_key, credentials[host]
72
72
  end
73
73
 
74
+ def test_execute_with_host_permanent_redirect
75
+ host = "http://rubygems.example/"
76
+ ENV["RUBYGEMS_HOST"] = host
77
+ path = "/api/v1/api_key"
78
+ redirected_uri = "http://rubygems.example#{path}"
79
+ fetcher = Gem::FakeFetcher.new
80
+ fetcher.data["#{host}#{path}"] = HTTPResponseFactory.create(
81
+ body: "",
82
+ code: "308",
83
+ msg: "Permanent Redirect",
84
+ headers: { "location" => redirected_uri }
85
+ )
86
+ Gem::RemoteFetcher.fetcher = fetcher
87
+ ui = Gem::MockGemUi.new("you@example.com\nsecret\n\n\n\n\n\n\n\n\n")
88
+
89
+ assert_raise Gem::MockGemUi::TermError do
90
+ use_ui ui do
91
+ @cmd.execute
92
+ end
93
+ end
94
+
95
+ response = "The request has redirected permanently to #{redirected_uri}. Please check your defined push host URL."
96
+ assert_match response, ui.output
97
+ end
98
+
74
99
  def test_execute_with_valid_creds_set_for_default_host
75
100
  util_capture { @cmd.execute }
76
101
 
77
- api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
102
+ api_key = "a5fdbb6ba150cbb83aad2bb2fede64cf040453903"
78
103
  credentials = load_yaml_file Gem.configuration.credentials_path
79
104
 
80
105
  assert_equal api_key, credentials[:rubygems_api_key]
81
106
  end
82
107
 
83
- def test_excute_with_key_name_and_scope
84
- email = 'you@example.com'
85
- password = 'secret'
86
- api_key = '1234'
108
+ def test_execute_with_key_name_and_scope
109
+ email = "you@example.com"
110
+ password = "secret"
111
+ api_key = "1234"
87
112
  fetcher = Gem::RemoteFetcher.fetcher
88
113
 
89
114
  key_name_ui = Gem::MockGemUi.new "#{email}\n#{password}\ntest-key\n\ny\n\n\n\n\n\n"
@@ -92,31 +117,134 @@ class TestGemCommandsSigninCommand < Gem::TestCase
92
117
  user = ENV["USER"] || ENV["USERNAME"]
93
118
 
94
119
  assert_match "API Key name [#{Socket.gethostname}-#{user}", key_name_ui.output
95
- assert_match "index_rubygems [y/N]", key_name_ui.output
96
- assert_match "push_rubygem [y/N]", key_name_ui.output
97
- assert_match "yank_rubygem [y/N]", key_name_ui.output
98
- assert_match "add_owner [y/N]", key_name_ui.output
99
- assert_match "remove_owner [y/N]", key_name_ui.output
100
- assert_match "access_webhooks [y/N]", key_name_ui.output
101
- assert_match "show_dashboard [y/N]", key_name_ui.output
120
+ assert_match "index_rubygems [yN]", key_name_ui.output
121
+ assert_match "push_rubygem [yN]", key_name_ui.output
122
+ assert_match "yank_rubygem [yN]", key_name_ui.output
123
+ assert_match "add_owner [yN]", key_name_ui.output
124
+ assert_match "remove_owner [yN]", key_name_ui.output
125
+ assert_match "access_webhooks [yN]", key_name_ui.output
126
+ assert_match "show_dashboard [yN]", key_name_ui.output
102
127
  assert_equal "name=test-key&push_rubygem=true", fetcher.last_request.body
103
128
 
104
129
  credentials = load_yaml_file Gem.configuration.credentials_path
105
130
  assert_equal api_key, credentials[:rubygems_api_key]
106
131
  end
107
132
 
133
+ def test_execute_with_key_name_scope_and_mfa_level_of_ui_only
134
+ email = "you@example.com"
135
+ password = "secret"
136
+ api_key = "1234"
137
+ fetcher = Gem::RemoteFetcher.fetcher
138
+ mfa_level = "ui_only"
139
+
140
+ key_name_ui = Gem::MockGemUi.new "#{email}\n#{password}\ntest-key\n\ny\n\n\n\n\n\ny"
141
+ util_capture(key_name_ui, nil, api_key, fetcher, mfa_level) { @cmd.execute }
142
+
143
+ user = ENV["USER"] || ENV["USERNAME"]
144
+
145
+ assert_match "API Key name [#{Socket.gethostname}-#{user}", key_name_ui.output
146
+ assert_match "index_rubygems [yN]", key_name_ui.output
147
+ assert_match "push_rubygem [yN]", key_name_ui.output
148
+ assert_match "yank_rubygem [yN]", key_name_ui.output
149
+ assert_match "add_owner [yN]", key_name_ui.output
150
+ assert_match "remove_owner [yN]", key_name_ui.output
151
+ assert_match "access_webhooks [yN]", key_name_ui.output
152
+ assert_match "show_dashboard [yN]", key_name_ui.output
153
+ assert_match "Would you like to enable MFA for this key? (strongly recommended) [yn]", key_name_ui.output
154
+ assert_equal "name=test-key&push_rubygem=true&mfa=true", fetcher.last_request.body
155
+
156
+ credentials = load_yaml_file Gem.configuration.credentials_path
157
+ assert_equal api_key, credentials[:rubygems_api_key]
158
+ end
159
+
160
+ def test_execute_with_key_name_scope_and_mfa_level_of_gem_signin
161
+ email = "you@example.com"
162
+ password = "secret"
163
+ api_key = "1234"
164
+ fetcher = Gem::RemoteFetcher.fetcher
165
+ mfa_level = "ui_and_gem_signin"
166
+
167
+ key_name_ui = Gem::MockGemUi.new "#{email}\n#{password}\ntest-key\n\ny\n\n\n\n\n\ny"
168
+ util_capture(key_name_ui, nil, api_key, fetcher, mfa_level) { @cmd.execute }
169
+
170
+ user = ENV["USER"] || ENV["USERNAME"]
171
+
172
+ assert_match "API Key name [#{Socket.gethostname}-#{user}", key_name_ui.output
173
+ assert_match "index_rubygems [yN]", key_name_ui.output
174
+ assert_match "push_rubygem [yN]", key_name_ui.output
175
+ assert_match "yank_rubygem [yN]", key_name_ui.output
176
+ assert_match "add_owner [yN]", key_name_ui.output
177
+ assert_match "remove_owner [yN]", key_name_ui.output
178
+ assert_match "access_webhooks [yN]", key_name_ui.output
179
+ assert_match "show_dashboard [yN]", key_name_ui.output
180
+ assert_match "Would you like to enable MFA for this key? (strongly recommended) [yn]", key_name_ui.output
181
+ assert_equal "name=test-key&push_rubygem=true&mfa=true", fetcher.last_request.body
182
+
183
+ credentials = load_yaml_file Gem.configuration.credentials_path
184
+ assert_equal api_key, credentials[:rubygems_api_key]
185
+ end
186
+
187
+ def test_execute_with_warnings
188
+ email = "you@example.com"
189
+ password = "secret"
190
+ api_key = "1234"
191
+ fetcher = Gem::RemoteFetcher.fetcher
192
+ mfa_level = "disabled"
193
+ warning = "/[WARNING/] For protection of your account and gems"
194
+
195
+ key_name_ui = Gem::MockGemUi.new "#{email}\n#{password}\ntest-key\n\ny\n\n\n\n\n\ny"
196
+ util_capture(key_name_ui, nil, api_key, fetcher, mfa_level, warning) { @cmd.execute }
197
+
198
+ assert_match warning, key_name_ui.output
199
+ end
200
+
201
+ def test_execute_on_gemserver_without_profile_me_endpoint
202
+ host = "http://some-gemcutter-compatible-host.org"
203
+
204
+ email = "you@example.com"
205
+ password = "secret"
206
+ api_key = "1234"
207
+ fetcher = Gem::RemoteFetcher.fetcher
208
+
209
+ key_name_ui = Gem::MockGemUi.new "#{email}\n#{password}\ntest-key\n\ny\n\n\n\n\n\ny"
210
+
211
+ # Set the expected response for the Web-API supplied
212
+ ENV["RUBYGEMS_HOST"] = host
213
+ data_key = "#{ENV['RUBYGEMS_HOST']}/api/v1/api_key"
214
+ fetcher.data[data_key] = HTTPResponseFactory.create(body: api_key, code: 200, msg: "OK")
215
+
216
+ use_ui key_name_ui do
217
+ @cmd.execute
218
+ end
219
+
220
+ user = ENV["USER"] || ENV["USERNAME"]
221
+
222
+ assert_match "API Key name [#{Socket.gethostname}-#{user}", key_name_ui.output
223
+ assert_match "index_rubygems [yN]", key_name_ui.output
224
+ assert_match "push_rubygem [yN]", key_name_ui.output
225
+ assert_match "yank_rubygem [yN]", key_name_ui.output
226
+ assert_match "add_owner [yN]", key_name_ui.output
227
+ assert_match "remove_owner [yN]", key_name_ui.output
228
+ assert_match "access_webhooks [yN]", key_name_ui.output
229
+ assert_match "show_dashboard [yN]", key_name_ui.output
230
+ assert_equal "name=test-key&push_rubygem=true", fetcher.last_request.body
231
+ end
232
+
108
233
  # Utility method to capture IO/UI within the block passed
109
234
 
110
- def util_capture(ui_stub = nil, host = nil, api_key = nil, fetcher = Gem::FakeFetcher.new)
111
- api_key ||= 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
112
- response = [api_key, 200, 'OK']
113
- email = 'you@example.com'
114
- password = 'secret'
235
+ def util_capture(ui_stub = nil, host = nil, api_key = nil, fetcher = Gem::FakeFetcher.new, mfa_level = "disabled", warning = nil)
236
+ api_key ||= "a5fdbb6ba150cbb83aad2bb2fede64cf040453903"
237
+ response = HTTPResponseFactory.create(body: api_key, code: 200, msg: "OK")
238
+ profile_response = HTTPResponseFactory.create(body: "mfa: #{mfa_level}\nwarning: #{warning}", code: 200, msg: "OK")
239
+ email = "you@example.com"
240
+ password = "secret"
115
241
 
116
242
  # Set the expected response for the Web-API supplied
117
- ENV['RUBYGEMS_HOST'] = host || Gem::DEFAULT_HOST
243
+ ENV["RUBYGEMS_HOST"] = host || Gem::DEFAULT_HOST
118
244
  data_key = "#{ENV['RUBYGEMS_HOST']}/api/v1/api_key"
119
245
  fetcher.data[data_key] = response
246
+ profile = "#{ENV['RUBYGEMS_HOST']}/api/v1/profile/me.yaml"
247
+ fetcher.data[profile] = profile_response
120
248
  Gem::RemoteFetcher.fetcher = fetcher
121
249
 
122
250
  sign_in_ui = ui_stub || Gem::MockGemUi.new("#{email}\n#{password}\n\n\n\n\n\n\n\n\n")
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'helper'
4
- require 'rubygems/commands/signout_command'
5
- require 'rubygems/installer'
3
+ require_relative "helper"
4
+ require "rubygems/commands/signout_command"
5
+ require "rubygems/installer"
6
6
 
7
7
  class TestGemCommandsSignoutCommand < Gem::TestCase
8
8
  def setup
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'helper'
3
- require 'rubygems/commands/sources_command'
2
+ require_relative "helper"
3
+ require "rubygems/commands/sources_command"
4
4
 
5
5
  class TestGemCommandsSourcesCommand < Gem::TestCase
6
6
  def setup
@@ -20,7 +20,7 @@ class TestGemCommandsSourcesCommand < Gem::TestCase
20
20
  end
21
21
 
22
22
  def test_initialize_proxy
23
- assert @cmd.handles?(['--http-proxy', 'http://proxy.example.com'])
23
+ assert @cmd.handles?(["--http-proxy", "http://proxy.example.com"])
24
24
  end
25
25
 
26
26
  def test_execute
@@ -37,12 +37,12 @@ class TestGemCommandsSourcesCommand < Gem::TestCase
37
37
  EOF
38
38
 
39
39
  assert_equal expected, @ui.output
40
- assert_equal '', @ui.error
40
+ assert_equal "", @ui.error
41
41
  end
42
42
 
43
43
  def test_execute_add
44
44
  spec_fetcher do |fetcher|
45
- fetcher.spec 'a', 1
45
+ fetcher.spec "a", 1
46
46
  end
47
47
 
48
48
  specs = Gem::Specification.map do |spec|
@@ -70,7 +70,7 @@ class TestGemCommandsSourcesCommand < Gem::TestCase
70
70
  EOF
71
71
 
72
72
  assert_equal expected, @ui.output
73
- assert_equal '', @ui.error
73
+ assert_equal "", @ui.error
74
74
  end
75
75
 
76
76
  def test_execute_add_allow_typo_squatting_source
@@ -161,7 +161,6 @@ class TestGemCommandsSourcesCommand < Gem::TestCase
161
161
  ui = Gem::MockGemUi.new("n")
162
162
 
163
163
  use_ui ui do
164
-
165
164
  assert_raise Gem::MockGemUi::TermError do
166
165
  @cmd.execute
167
166
  end
@@ -182,7 +181,7 @@ class TestGemCommandsSourcesCommand < Gem::TestCase
182
181
 
183
182
  uri = "http://beta-gems.example.com/specs.#{@marshal_version}.gz"
184
183
  @fetcher.data[uri] = proc do
185
- raise Gem::RemoteFetcher::FetchError.new('it died', uri)
184
+ raise Gem::RemoteFetcher::FetchError.new("it died", uri)
186
185
  end
187
186
 
188
187
  @cmd.handle_options %w[--add http://beta-gems.example.com]
@@ -199,7 +198,57 @@ Error fetching http://beta-gems.example.com:
199
198
  EOF
200
199
 
201
200
  assert_equal expected, @ui.output
202
- assert_equal '', @ui.error
201
+ assert_equal "", @ui.error
202
+ end
203
+
204
+ def test_execute_add_existent_source_invalid_uri
205
+ spec_fetcher
206
+
207
+ uri = "https://u:p@example.com/specs.#{@marshal_version}.gz"
208
+
209
+ @cmd.handle_options %w[--add https://u:p@example.com]
210
+ @fetcher.data[uri] = proc do
211
+ raise Gem::RemoteFetcher::FetchError.new("it died", uri)
212
+ end
213
+
214
+ use_ui @ui do
215
+ assert_raise Gem::MockGemUi::TermError do
216
+ @cmd.execute
217
+ end
218
+ end
219
+
220
+ expected = <<-EOF
221
+ Error fetching https://u:REDACTED@example.com:
222
+ \tit died (https://u:REDACTED@example.com/specs.#{@marshal_version}.gz)
223
+ EOF
224
+
225
+ assert_equal expected, @ui.output
226
+ assert_equal "", @ui.error
227
+ end
228
+
229
+ def test_execute_add_existent_source_invalid_uri_with_error_by_chance_including_the_uri_password
230
+ spec_fetcher
231
+
232
+ uri = "https://u:secret@example.com/specs.#{@marshal_version}.gz"
233
+
234
+ @cmd.handle_options %w[--add https://u:secret@example.com]
235
+ @fetcher.data[uri] = proc do
236
+ raise Gem::RemoteFetcher::FetchError.new("it secretly died", uri)
237
+ end
238
+
239
+ use_ui @ui do
240
+ assert_raise Gem::MockGemUi::TermError do
241
+ @cmd.execute
242
+ end
243
+ end
244
+
245
+ expected = <<-EOF
246
+ Error fetching https://u:REDACTED@example.com:
247
+ \tit secretly died (https://u:REDACTED@example.com/specs.#{@marshal_version}.gz)
248
+ EOF
249
+
250
+ assert_equal expected, @ui.output
251
+ assert_equal "", @ui.error
203
252
  end
204
253
 
205
254
  def test_execute_add_redundant_source
@@ -218,7 +267,7 @@ source #{@gem_repo} already present in the cache
218
267
  EOF
219
268
 
220
269
  assert_equal expected, @ui.output
221
- assert_equal '', @ui.error
270
+ assert_equal "", @ui.error
222
271
  end
223
272
 
224
273
  def test_execute_add_redundant_source_trailing_slash
@@ -238,7 +287,7 @@ source #{@gem_repo} already present in the cache
238
287
  EOF
239
288
 
240
289
  assert_equal expected, @ui.output
241
- assert_equal '', @ui.error
290
+ assert_equal "", @ui.error
242
291
 
243
292
  # Re-add pre-existing gem source (w/o slash)
244
293
  repo_without_slash = "http://gems.example.com"
@@ -255,7 +304,7 @@ http://gems.example.com added to sources
255
304
  EOF
256
305
 
257
306
  assert_equal expected, @ui.output
258
- assert_equal '', @ui.error
307
+ assert_equal "", @ui.error
259
308
 
260
309
  # Re-add original gem source (w/ slash)
261
310
  @cmd.handle_options %W[--add #{repo_with_slash}]
@@ -272,14 +321,14 @@ source http://gems.example.com/ already present in the cache
272
321
  EOF
273
322
 
274
323
  assert_equal expected, @ui.output
275
- assert_equal '', @ui.error
324
+ assert_equal "", @ui.error
276
325
  end
277
326
 
278
327
  def test_execute_add_http_rubygems_org
279
- http_rubygems_org = 'http://rubygems.org/'
328
+ http_rubygems_org = "http://rubygems.org/"
280
329
 
281
330
  spec_fetcher do |fetcher|
282
- fetcher.spec 'a', 1
331
+ fetcher.spec "a", 1
283
332
  end
284
333
 
285
334
  specs = Gem::Specification.map do |spec|
@@ -344,10 +393,10 @@ source http://gems.example.com/ already present in the cache
344
393
  end
345
394
 
346
395
  def test_execute_add_https_rubygems_org
347
- https_rubygems_org = 'https://rubygems.org/'
396
+ https_rubygems_org = "https://rubygems.org/"
348
397
 
349
398
  spec_fetcher do |fetcher|
350
- fetcher.spec 'a', 1
399
+ fetcher.spec "a", 1
351
400
  end
352
401
 
353
402
  specs = Gem::Specification.map do |spec|
@@ -397,7 +446,7 @@ beta-gems.example.com is not a URI
397
446
  EOF
398
447
 
399
448
  assert_equal expected, @ui.output
400
- assert_equal '', @ui.error
449
+ assert_equal "", @ui.error
401
450
  end
402
451
 
403
452
  def test_execute_clear_all
@@ -412,10 +461,10 @@ beta-gems.example.com is not a URI
412
461
  EOF
413
462
 
414
463
  assert_equal expected, @ui.output
415
- assert_equal '', @ui.error
464
+ assert_equal "", @ui.error
416
465
 
417
466
  dir = Gem.spec_cache_dir
418
- refute File.exist?(dir), 'cache dir removed'
467
+ refute File.exist?(dir), "cache dir removed"
419
468
  end
420
469
 
421
470
  def test_execute_list
@@ -432,7 +481,7 @@ beta-gems.example.com is not a URI
432
481
  EOF
433
482
 
434
483
  assert_equal expected, @ui.output
435
- assert_equal '', @ui.error
484
+ assert_equal "", @ui.error
436
485
  end
437
486
 
438
487
  def test_execute_remove
@@ -445,7 +494,7 @@ beta-gems.example.com is not a URI
445
494
  expected = "#{@gem_repo} removed from sources\n"
446
495
 
447
496
  assert_equal expected, @ui.output
448
- assert_equal '', @ui.error
497
+ assert_equal "", @ui.error
449
498
  end
450
499
 
451
500
  def test_execute_remove_no_network
@@ -464,14 +513,14 @@ beta-gems.example.com is not a URI
464
513
  expected = "#{@gem_repo} removed from sources\n"
465
514
 
466
515
  assert_equal expected, @ui.output
467
- assert_equal '', @ui.error
516
+ assert_equal "", @ui.error
468
517
  end
469
518
 
470
519
  def test_execute_update
471
520
  @cmd.handle_options %w[--update]
472
521
 
473
522
  spec_fetcher do |fetcher|
474
- fetcher.gem 'a', 1
523
+ fetcher.gem "a", 1
475
524
  end
476
525
 
477
526
  use_ui @ui do
@@ -479,6 +528,6 @@ beta-gems.example.com is not a URI
479
528
  end
480
529
 
481
530
  assert_equal "source cache successfully updated\n", @ui.output
482
- assert_equal '', @ui.error
531
+ assert_equal "", @ui.error
483
532
  end
484
533
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'helper'
3
- require 'rubygems/commands/specification_command'
2
+ require_relative "helper"
3
+ require "rubygems/commands/specification_command"
4
4
 
5
5
  class TestGemCommandsSpecificationCommand < Gem::TestCase
6
6
  def setup
@@ -10,7 +10,7 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
10
10
  end
11
11
 
12
12
  def test_execute
13
- foo = util_spec 'foo'
13
+ foo = util_spec "foo"
14
14
 
15
15
  install_specs foo
16
16
 
@@ -22,12 +22,12 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
22
22
 
23
23
  assert_match %r{Gem::Specification}, @ui.output
24
24
  assert_match %r{name: foo}, @ui.output
25
- assert_equal '', @ui.error
25
+ assert_equal "", @ui.error
26
26
  end
27
27
 
28
28
  def test_execute_all
29
- install_specs util_spec 'foo', '0.0.1'
30
- install_specs util_spec 'foo', '0.0.2'
29
+ install_specs util_spec "foo", "0.0.1"
30
+ install_specs util_spec "foo", "0.0.2"
31
31
 
32
32
  @cmd.options[:args] = %w[foo]
33
33
  @cmd.options[:all] = true
@@ -40,12 +40,12 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
40
40
  assert_match %r{name: foo}, @ui.output
41
41
  assert_match %r{version: 0.0.1}, @ui.output
42
42
  assert_match %r{version: 0.0.2}, @ui.output
43
- assert_equal '', @ui.error
43
+ assert_equal "", @ui.error
44
44
  end
45
45
 
46
46
  def test_execute_all_conflicts_with_version
47
- util_spec 'foo', '0.0.1'
48
- util_spec 'foo', '0.0.2'
47
+ util_spec "foo", "0.0.1"
48
+ util_spec "foo", "0.0.2"
49
49
 
50
50
  @cmd.options[:args] = %w[foo]
51
51
  @cmd.options[:all] = true
@@ -57,7 +57,7 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
57
57
  end
58
58
  end
59
59
 
60
- assert_equal '', @ui.output
60
+ assert_equal "", @ui.output
61
61
  assert_equal "ERROR: Specify --all or -v, not both\n", @ui.error
62
62
  end
63
63
 
@@ -70,7 +70,7 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
70
70
  end
71
71
  end
72
72
 
73
- assert_equal '', @ui.output
73
+ assert_equal "", @ui.output
74
74
  assert_equal "ERROR: No gem matching 'foo (>= 0)' found\n", @ui.error
75
75
  end
76
76
 
@@ -84,13 +84,13 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
84
84
  end
85
85
  end
86
86
 
87
- assert_equal '', @ui.output
87
+ assert_equal "", @ui.output
88
88
  assert_equal "ERROR: No gem matching 'foo (= 1.3.2)' found\n", @ui.error
89
89
  end
90
90
 
91
91
  def test_execute_exact_match
92
- install_specs util_spec 'foo'
93
- install_specs util_spec 'foo_bar'
92
+ install_specs util_spec "foo"
93
+ install_specs util_spec "foo_bar"
94
94
 
95
95
  @cmd.options[:args] = %w[foo]
96
96
 
@@ -100,11 +100,11 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
100
100
 
101
101
  assert_match %r{Gem::Specification}, @ui.output
102
102
  assert_match %r{name: foo}, @ui.output
103
- assert_equal '', @ui.error
103
+ assert_equal "", @ui.error
104
104
  end
105
105
 
106
106
  def test_execute_field
107
- foo = util_spec 'foo', '2'
107
+ foo = util_spec "foo", "2"
108
108
 
109
109
  install_specs foo
110
110
 
@@ -118,7 +118,7 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
118
118
  end
119
119
 
120
120
  def test_execute_file
121
- foo = util_spec 'foo' do |s|
121
+ foo = util_spec "foo" do |s|
122
122
  s.files = %w[lib/code.rb]
123
123
  end
124
124
 
@@ -132,11 +132,11 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
132
132
 
133
133
  assert_match %r{Gem::Specification}, @ui.output
134
134
  assert_match %r{name: foo}, @ui.output
135
- assert_equal '', @ui.error
135
+ assert_equal "", @ui.error
136
136
  end
137
137
 
138
138
  def test_execute_marshal
139
- foo = util_spec 'foo', '2'
139
+ foo = util_spec "foo", "2"
140
140
 
141
141
  install_specs foo
142
142
 
@@ -148,12 +148,12 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
148
148
  end
149
149
 
150
150
  assert_equal foo, Marshal.load(@ui.output)
151
- assert_equal '', @ui.error
151
+ assert_equal "", @ui.error
152
152
  end
153
153
 
154
154
  def test_execute_remote
155
155
  spec_fetcher do |fetcher|
156
- fetcher.spec 'foo', 1
156
+ fetcher.spec "foo", 1
157
157
  end
158
158
 
159
159
  @cmd.options[:args] = %w[foo]
@@ -169,8 +169,8 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
169
169
 
170
170
  def test_execute_remote_with_version
171
171
  spec_fetcher do |fetcher|
172
- fetcher.spec 'foo', "1"
173
- fetcher.spec 'foo', "2"
172
+ fetcher.spec "foo", "1"
173
+ fetcher.spec "foo", "2"
174
174
  end
175
175
 
176
176
  @cmd.options[:args] = %w[foo]
@@ -190,9 +190,9 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
190
190
  original_platforms = Gem.platforms.dup
191
191
 
192
192
  spec_fetcher do |fetcher|
193
- fetcher.spec 'foo', "1"
194
- fetcher.spec 'foo', "1" do |s|
195
- s.platform = 'x86_64-linux'
193
+ fetcher.spec "foo", "1"
194
+ fetcher.spec "foo", "1" do |s|
195
+ s.platform = "x86_64-linux"
196
196
  end
197
197
  end
198
198
 
@@ -216,8 +216,8 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
216
216
 
217
217
  def test_execute_remote_without_prerelease
218
218
  spec_fetcher do |fetcher|
219
- fetcher.spec 'foo', '2.0.0'
220
- fetcher.spec 'foo', '2.0.1.pre'
219
+ fetcher.spec "foo", "2.0.0"
220
+ fetcher.spec "foo", "2.0.1.pre"
221
221
  end
222
222
 
223
223
  @cmd.options[:args] = %w[foo]
@@ -237,8 +237,8 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
237
237
 
238
238
  def test_execute_remote_with_prerelease
239
239
  spec_fetcher do |fetcher|
240
- fetcher.spec 'foo', '2.0.0'
241
- fetcher.spec 'foo', '2.0.1.pre'
240
+ fetcher.spec "foo", "2.0.0"
241
+ fetcher.spec "foo", "2.0.1.pre"
242
242
  end
243
243
 
244
244
  @cmd.options[:args] = %w[foo]
@@ -258,7 +258,7 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
258
258
  end
259
259
 
260
260
  def test_execute_ruby
261
- foo = util_spec 'foo'
261
+ foo = util_spec "foo"
262
262
 
263
263
  install_specs foo
264
264
 
@@ -271,6 +271,6 @@ class TestGemCommandsSpecificationCommand < Gem::TestCase
271
271
 
272
272
  assert_match %r{Gem::Specification.new}, @ui.output
273
273
  assert_match %r{s.name = "foo"}, @ui.output
274
- assert_equal '', @ui.error
274
+ assert_equal "", @ui.error
275
275
  end
276
276
  end