rubygems-update 3.1.6 → 3.3.22

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 (703) hide show
  1. checksums.yaml +4 -4
  2. data/{History.txt → CHANGELOG.md} +1452 -514
  3. data/CODE_OF_CONDUCT.md +55 -19
  4. data/CONTRIBUTING.md +74 -27
  5. data/Manifest.txt +154 -117
  6. data/POLICIES.md +27 -19
  7. data/README.md +10 -8
  8. data/UPGRADING.md +5 -81
  9. data/bin/gem +3 -8
  10. data/bin/update_rubygems +5 -5
  11. data/bundler/CHANGELOG.md +2358 -1430
  12. data/bundler/README.md +7 -9
  13. data/bundler/UPGRADING.md +27 -34
  14. data/bundler/bundler.gemspec +8 -11
  15. data/bundler/exe/bundle +10 -8
  16. data/bundler/exe/bundler +1 -1
  17. data/bundler/lib/bundler/.document +1 -0
  18. data/bundler/lib/bundler/build_metadata.rb +4 -12
  19. data/bundler/lib/bundler/cli/add.rb +1 -1
  20. data/bundler/lib/bundler/cli/binstubs.rb +6 -2
  21. data/bundler/lib/bundler/cli/cache.rb +3 -8
  22. data/bundler/lib/bundler/cli/check.rb +4 -2
  23. data/bundler/lib/bundler/cli/clean.rb +1 -1
  24. data/bundler/lib/bundler/cli/common.rb +31 -3
  25. data/bundler/lib/bundler/cli/config.rb +10 -1
  26. data/bundler/lib/bundler/cli/console.rb +1 -1
  27. data/bundler/lib/bundler/cli/doctor.rb +25 -6
  28. data/bundler/lib/bundler/cli/exec.rb +5 -10
  29. data/bundler/lib/bundler/cli/fund.rb +36 -0
  30. data/bundler/lib/bundler/cli/gem.rb +219 -28
  31. data/bundler/lib/bundler/cli/info.rb +38 -6
  32. data/bundler/lib/bundler/cli/init.rb +3 -3
  33. data/bundler/lib/bundler/cli/inject.rb +1 -1
  34. data/bundler/lib/bundler/cli/install.rb +25 -54
  35. data/bundler/lib/bundler/cli/issue.rb +5 -4
  36. data/bundler/lib/bundler/cli/list.rb +19 -11
  37. data/bundler/lib/bundler/cli/lock.rb +5 -1
  38. data/bundler/lib/bundler/cli/open.rb +1 -2
  39. data/bundler/lib/bundler/cli/outdated.rb +105 -76
  40. data/bundler/lib/bundler/cli/platform.rb +2 -2
  41. data/bundler/lib/bundler/cli/plugin.rb +10 -0
  42. data/bundler/lib/bundler/cli/pristine.rb +5 -0
  43. data/bundler/lib/bundler/cli/remove.rb +1 -2
  44. data/bundler/lib/bundler/cli/show.rb +2 -2
  45. data/bundler/lib/bundler/cli/update.rb +20 -9
  46. data/bundler/lib/bundler/cli.rb +106 -83
  47. data/bundler/lib/bundler/compact_index_client/cache.rb +6 -23
  48. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
  49. data/bundler/lib/bundler/compact_index_client/updater.rb +29 -25
  50. data/bundler/lib/bundler/compact_index_client.rb +3 -9
  51. data/bundler/lib/bundler/current_ruby.rb +17 -6
  52. data/bundler/lib/bundler/definition.rb +297 -396
  53. data/bundler/lib/bundler/dep_proxy.rb +16 -9
  54. data/bundler/lib/bundler/dependency.rb +22 -77
  55. data/bundler/lib/bundler/digest.rb +71 -0
  56. data/bundler/lib/bundler/dsl.rb +76 -83
  57. data/bundler/lib/bundler/endpoint_specification.rb +16 -14
  58. data/bundler/lib/bundler/env.rb +2 -2
  59. data/bundler/lib/bundler/environment_preserver.rb +29 -2
  60. data/bundler/lib/bundler/errors.rb +30 -3
  61. data/bundler/lib/bundler/feature_flag.rb +0 -9
  62. data/bundler/lib/bundler/fetcher/base.rb +7 -9
  63. data/bundler/lib/bundler/fetcher/compact_index.rb +11 -16
  64. data/bundler/lib/bundler/fetcher/downloader.rb +10 -7
  65. data/bundler/lib/bundler/fetcher/index.rb +2 -30
  66. data/bundler/lib/bundler/fetcher.rb +24 -25
  67. data/bundler/lib/bundler/friendly_errors.rb +46 -47
  68. data/bundler/lib/bundler/gem_helper.rb +53 -31
  69. data/bundler/lib/bundler/gem_helpers.rb +43 -24
  70. data/bundler/lib/bundler/gem_version_promoter.rb +10 -20
  71. data/bundler/lib/bundler/graph.rb +1 -1
  72. data/bundler/lib/bundler/index.rb +19 -25
  73. data/bundler/lib/bundler/injector.rb +38 -6
  74. data/bundler/lib/bundler/inline.rb +4 -13
  75. data/bundler/lib/bundler/installer/gem_installer.rb +19 -24
  76. data/bundler/lib/bundler/installer/parallel_installer.rb +46 -25
  77. data/bundler/lib/bundler/installer/standalone.rb +58 -11
  78. data/bundler/lib/bundler/installer.rb +51 -81
  79. data/bundler/lib/bundler/lazy_specification.rb +79 -36
  80. data/bundler/lib/bundler/lockfile_generator.rb +3 -3
  81. data/bundler/lib/bundler/lockfile_parser.rb +19 -44
  82. data/bundler/lib/bundler/man/.document +1 -0
  83. data/bundler/{man → lib/bundler/man}/bundle-add.1 +21 -5
  84. data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +16 -4
  85. data/bundler/{man → lib/bundler/man}/bundle-binstubs.1 +5 -3
  86. data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +2 -4
  87. data/bundler/{man → lib/bundler/man}/bundle-cache.1 +7 -1
  88. data/bundler/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +7 -0
  89. data/bundler/{man → lib/bundler/man}/bundle-check.1 +1 -1
  90. data/bundler/{man → lib/bundler/man}/bundle-clean.1 +1 -1
  91. data/bundler/{man → lib/bundler/man}/bundle-config.1 +65 -47
  92. data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +74 -65
  93. data/bundler/lib/bundler/man/bundle-console.1 +53 -0
  94. data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
  95. data/bundler/{man → lib/bundler/man}/bundle-doctor.1 +1 -1
  96. data/bundler/{man → lib/bundler/man}/bundle-exec.1 +2 -2
  97. data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +1 -1
  98. data/bundler/{man → lib/bundler/man}/bundle-gem.1 +38 -3
  99. data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +46 -7
  100. data/bundler/lib/bundler/man/bundle-help.1 +13 -0
  101. data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
  102. data/bundler/{man → lib/bundler/man}/bundle-info.1 +1 -1
  103. data/bundler/{man → lib/bundler/man}/bundle-init.1 +1 -1
  104. data/bundler/{man → lib/bundler/man}/bundle-inject.1 +5 -2
  105. data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +3 -1
  106. data/bundler/{man → lib/bundler/man}/bundle-install.1 +35 -4
  107. data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +33 -5
  108. data/bundler/{man → lib/bundler/man}/bundle-list.1 +7 -7
  109. data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
  110. data/bundler/{man → lib/bundler/man}/bundle-lock.1 +1 -1
  111. data/bundler/{man → lib/bundler/man}/bundle-open.1 +1 -1
  112. data/bundler/{man → lib/bundler/man}/bundle-outdated.1 +3 -10
  113. data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +1 -10
  114. data/bundler/{man → lib/bundler/man}/bundle-platform.1 +16 -6
  115. data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +14 -7
  116. data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
  117. data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
  118. data/bundler/{man → lib/bundler/man}/bundle-pristine.1 +1 -1
  119. data/bundler/{man → lib/bundler/man}/bundle-remove.1 +1 -1
  120. data/bundler/{man → lib/bundler/man}/bundle-show.1 +1 -1
  121. data/bundler/{man → lib/bundler/man}/bundle-update.1 +5 -5
  122. data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +5 -4
  123. data/bundler/lib/bundler/man/bundle-version.1 +35 -0
  124. data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
  125. data/bundler/{man → lib/bundler/man}/bundle-viz.1 +4 -1
  126. data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +2 -0
  127. data/bundler/{man → lib/bundler/man}/bundle.1 +15 -10
  128. data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +12 -7
  129. data/bundler/{man → lib/bundler/man}/gemfile.5 +106 -80
  130. data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +94 -83
  131. data/bundler/{man → lib/bundler/man}/index.txt +4 -0
  132. data/bundler/lib/bundler/match_metadata.rb +13 -0
  133. data/bundler/lib/bundler/match_platform.rb +0 -1
  134. data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
  135. data/bundler/lib/bundler/mirror.rb +2 -2
  136. data/bundler/lib/bundler/plugin/api/source.rb +25 -9
  137. data/bundler/lib/bundler/plugin/dsl.rb +1 -1
  138. data/bundler/lib/bundler/plugin/index.rb +13 -1
  139. data/bundler/lib/bundler/plugin/installer/git.rb +0 -4
  140. data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -5
  141. data/bundler/lib/bundler/plugin/installer.rb +11 -11
  142. data/bundler/lib/bundler/plugin/source_list.rb +5 -1
  143. data/bundler/lib/bundler/plugin.rb +58 -11
  144. data/bundler/lib/bundler/process_lock.rb +1 -1
  145. data/bundler/lib/bundler/remote_specification.rb +11 -6
  146. data/bundler/lib/bundler/resolver/base.rb +50 -0
  147. data/bundler/lib/bundler/resolver/spec_group.rb +64 -57
  148. data/bundler/lib/bundler/resolver.rb +234 -230
  149. data/bundler/lib/bundler/retry.rb +2 -2
  150. data/bundler/lib/bundler/ruby_dsl.rb +1 -1
  151. data/bundler/lib/bundler/ruby_version.rb +6 -19
  152. data/bundler/lib/bundler/rubygems_ext.rb +194 -33
  153. data/bundler/lib/bundler/rubygems_gem_installer.rb +87 -16
  154. data/bundler/lib/bundler/rubygems_integration.rb +71 -153
  155. data/bundler/lib/bundler/runtime.rb +22 -26
  156. data/bundler/lib/bundler/self_manager.rb +168 -0
  157. data/bundler/lib/bundler/settings.rb +145 -66
  158. data/bundler/lib/bundler/setup.rb +2 -2
  159. data/bundler/lib/bundler/shared_helpers.rb +17 -32
  160. data/bundler/lib/bundler/similarity_detector.rb +1 -1
  161. data/bundler/lib/bundler/source/git/git_proxy.rb +88 -84
  162. data/bundler/lib/bundler/source/git.rb +50 -32
  163. data/bundler/lib/bundler/source/metadata.rb +3 -7
  164. data/bundler/lib/bundler/source/path/installer.rb +10 -10
  165. data/bundler/lib/bundler/source/path.rb +10 -4
  166. data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
  167. data/bundler/lib/bundler/source/rubygems.rb +201 -179
  168. data/bundler/lib/bundler/source/rubygems_aggregate.rb +68 -0
  169. data/bundler/lib/bundler/source.rb +25 -5
  170. data/bundler/lib/bundler/source_list.rb +105 -63
  171. data/bundler/lib/bundler/source_map.rb +71 -0
  172. data/bundler/lib/bundler/spec_set.rb +62 -57
  173. data/bundler/lib/bundler/stub_specification.rb +30 -10
  174. data/bundler/lib/bundler/templates/Executable +2 -4
  175. data/bundler/lib/bundler/templates/Executable.bundler +8 -8
  176. data/bundler/lib/bundler/templates/Executable.standalone +2 -4
  177. data/bundler/lib/bundler/templates/Gemfile +0 -2
  178. data/bundler/lib/bundler/templates/gems.rb +0 -3
  179. data/bundler/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
  180. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  181. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +12 -1
  182. data/bundler/lib/bundler/templates/newgem/README.md.tt +9 -14
  183. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +32 -5
  184. data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
  185. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
  186. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
  187. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +27 -0
  188. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
  189. data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  190. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
  191. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +27 -17
  192. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
  193. data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
  194. data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
  195. data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
  196. data/bundler/lib/bundler/templates/newgem/standard.yml.tt +3 -0
  197. data/bundler/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
  198. data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/test_newgem.rb.tt} +3 -1
  199. data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  200. data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  201. data/bundler/lib/bundler/ui/shell.rb +6 -6
  202. data/bundler/lib/bundler/uri_credentials_filter.rb +3 -1
  203. data/bundler/lib/bundler/vendor/.document +1 -0
  204. data/bundler/lib/bundler/vendor/connection_pool/LICENSE +20 -0
  205. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +19 -21
  206. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  207. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +57 -0
  208. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +39 -74
  209. data/bundler/lib/bundler/vendor/fileutils/LICENSE.txt +22 -0
  210. data/bundler/lib/bundler/vendor/molinillo/LICENSE +9 -0
  211. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +7 -0
  212. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
  213. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +11 -5
  214. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +37 -5
  215. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +34 -28
  216. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  217. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +12 -1
  218. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +49 -47
  219. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -1
  220. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
  221. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +82 -189
  222. data/bundler/lib/bundler/vendor/thor/LICENSE.md +20 -0
  223. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
  224. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +9 -7
  225. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -2
  226. data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +7 -3
  227. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
  228. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +6 -0
  229. data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +10 -5
  230. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +5 -1
  231. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +28 -9
  232. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +27 -6
  233. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +5 -1
  234. data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
  235. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
  236. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  237. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +5 -13
  238. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
  239. data/bundler/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
  240. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +452 -0
  241. data/bundler/lib/bundler/vendor/uri/LICENSE.txt +22 -0
  242. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +17 -80
  243. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +0 -1
  244. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +5 -6
  245. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +0 -1
  246. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +0 -1
  247. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
  248. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +0 -1
  249. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +1 -14
  250. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +1 -12
  251. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  252. data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +84 -0
  253. data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +22 -0
  254. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +0 -1
  255. data/bundler/lib/bundler/vendored_persistent.rb +0 -7
  256. data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
  257. data/bundler/lib/bundler/vendored_tsort.rb +4 -0
  258. data/bundler/lib/bundler/version.rb +1 -1
  259. data/bundler/lib/bundler/worker.rb +20 -5
  260. data/bundler/lib/bundler/yaml_serializer.rb +1 -1
  261. data/bundler/lib/bundler.rb +79 -47
  262. data/hide_lib_for_update/note.txt +0 -4
  263. data/lib/rubygems/available_set.rb +7 -9
  264. data/lib/rubygems/basic_specification.rb +23 -21
  265. data/lib/rubygems/bundler_version_finder.rb +26 -53
  266. data/lib/rubygems/command.rb +48 -45
  267. data/lib/rubygems/command_manager.rb +20 -14
  268. data/lib/rubygems/commands/build_command.rb +47 -27
  269. data/lib/rubygems/commands/cert_command.rb +78 -75
  270. data/lib/rubygems/commands/check_command.rb +20 -22
  271. data/lib/rubygems/commands/cleanup_command.rb +30 -26
  272. data/lib/rubygems/commands/contents_command.rb +16 -18
  273. data/lib/rubygems/commands/dependency_command.rb +39 -51
  274. data/lib/rubygems/commands/environment_command.rb +11 -10
  275. data/lib/rubygems/commands/fetch_command.rb +33 -16
  276. data/lib/rubygems/commands/generate_index_command.rb +17 -19
  277. data/lib/rubygems/commands/help_command.rb +6 -6
  278. data/lib/rubygems/commands/info_command.rb +10 -7
  279. data/lib/rubygems/commands/install_command.rb +29 -27
  280. data/lib/rubygems/commands/list_command.rb +9 -8
  281. data/lib/rubygems/commands/lock_command.rb +5 -7
  282. data/lib/rubygems/commands/mirror_command.rb +3 -5
  283. data/lib/rubygems/commands/open_command.rb +10 -14
  284. data/lib/rubygems/commands/outdated_command.rb +5 -7
  285. data/lib/rubygems/commands/owner_command.rb +26 -16
  286. data/lib/rubygems/commands/pristine_command.rb +61 -49
  287. data/lib/rubygems/commands/push_command.rb +22 -59
  288. data/lib/rubygems/commands/query_command.rb +21 -351
  289. data/lib/rubygems/commands/rdoc_command.rb +23 -25
  290. data/lib/rubygems/commands/search_command.rb +8 -8
  291. data/lib/rubygems/commands/server_command.rb +16 -77
  292. data/lib/rubygems/commands/setup_command.rb +255 -229
  293. data/lib/rubygems/commands/signin_command.rb +9 -11
  294. data/lib/rubygems/commands/signout_command.rb +7 -9
  295. data/lib/rubygems/commands/sources_command.rb +27 -25
  296. data/lib/rubygems/commands/specification_command.rb +25 -21
  297. data/lib/rubygems/commands/stale_command.rb +3 -5
  298. data/lib/rubygems/commands/uninstall_command.rb +41 -43
  299. data/lib/rubygems/commands/unpack_command.rb +13 -15
  300. data/lib/rubygems/commands/update_command.rb +132 -74
  301. data/lib/rubygems/commands/which_command.rb +7 -9
  302. data/lib/rubygems/commands/yank_command.rb +16 -19
  303. data/lib/rubygems/compatibility.rb +4 -2
  304. data/lib/rubygems/config_file.rb +42 -26
  305. data/lib/rubygems/core_ext/kernel_gem.rb +1 -1
  306. data/lib/rubygems/core_ext/kernel_require.rb +6 -3
  307. data/lib/rubygems/core_ext/kernel_warn.rb +12 -13
  308. data/lib/rubygems/core_ext/tcpsocket_init.rb +52 -0
  309. data/lib/rubygems/defaults.rb +108 -32
  310. data/lib/rubygems/dependency.rb +21 -22
  311. data/lib/rubygems/dependency_installer.rb +19 -91
  312. data/lib/rubygems/dependency_list.rb +13 -15
  313. data/lib/rubygems/deprecate.rb +102 -8
  314. data/lib/rubygems/doctor.rb +22 -22
  315. data/lib/rubygems/errors.rb +6 -21
  316. data/lib/rubygems/exceptions.rb +33 -34
  317. data/lib/rubygems/ext/build_error.rb +2 -0
  318. data/lib/rubygems/ext/builder.rb +48 -54
  319. data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +23 -0
  320. data/lib/rubygems/ext/cargo_builder.rb +321 -0
  321. data/lib/rubygems/ext/cmake_builder.rb +6 -9
  322. data/lib/rubygems/ext/configure_builder.rb +5 -8
  323. data/lib/rubygems/ext/ext_conf_builder.rb +42 -66
  324. data/lib/rubygems/ext/rake_builder.rb +7 -10
  325. data/lib/rubygems/ext.rb +7 -6
  326. data/lib/rubygems/gem_runner.rb +15 -26
  327. data/lib/rubygems/gemcutter_utilities.rb +153 -32
  328. data/lib/rubygems/indexer.rb +30 -49
  329. data/lib/rubygems/install_default_message.rb +2 -2
  330. data/lib/rubygems/install_message.rb +2 -2
  331. data/lib/rubygems/install_update_options.rb +73 -64
  332. data/lib/rubygems/installer.rb +194 -151
  333. data/lib/rubygems/installer_uninstaller_utils.rb +29 -0
  334. data/lib/rubygems/local_remote_options.rb +22 -24
  335. data/lib/rubygems/mock_gem_ui.rb +2 -8
  336. data/lib/rubygems/name_tuple.rb +9 -14
  337. data/lib/rubygems/openssl.rb +7 -0
  338. data/lib/rubygems/optparse/.document +1 -0
  339. data/lib/rubygems/optparse/COPYING +56 -0
  340. data/lib/rubygems/optparse/lib/optionparser.rb +2 -0
  341. data/lib/rubygems/optparse/lib/optparse/ac.rb +54 -0
  342. data/lib/rubygems/optparse/lib/optparse/date.rb +18 -0
  343. data/lib/rubygems/optparse/lib/optparse/kwargs.rb +22 -0
  344. data/lib/rubygems/optparse/lib/optparse/shellwords.rb +7 -0
  345. data/lib/rubygems/optparse/lib/optparse/time.rb +11 -0
  346. data/lib/rubygems/optparse/lib/optparse/uri.rb +7 -0
  347. data/lib/rubygems/optparse/lib/optparse/version.rb +71 -0
  348. data/lib/rubygems/optparse/lib/optparse.rb +2303 -0
  349. data/lib/rubygems/optparse.rb +3 -0
  350. data/lib/rubygems/package/digest_io.rb +0 -2
  351. data/lib/rubygems/package/file_source.rb +2 -4
  352. data/lib/rubygems/package/io_source.rb +4 -2
  353. data/lib/rubygems/package/old.rb +9 -11
  354. data/lib/rubygems/package/tar_header.rb +54 -56
  355. data/lib/rubygems/package/tar_reader/entry.rb +2 -5
  356. data/lib/rubygems/package/tar_reader.rb +1 -4
  357. data/lib/rubygems/package/tar_writer.rb +8 -18
  358. data/lib/rubygems/package.rb +101 -117
  359. data/lib/rubygems/package_task.rb +5 -11
  360. data/lib/rubygems/path_support.rb +2 -9
  361. data/lib/rubygems/platform.rb +101 -76
  362. data/lib/rubygems/psych_tree.rb +1 -3
  363. data/lib/rubygems/query_utils.rb +351 -0
  364. data/lib/rubygems/rdoc.rb +2 -14
  365. data/lib/rubygems/remote_fetcher.rb +48 -74
  366. data/lib/rubygems/request/connection_pools.rb +6 -10
  367. data/lib/rubygems/request/http_pool.rb +2 -4
  368. data/lib/rubygems/request/https_pool.rb +0 -2
  369. data/lib/rubygems/request.rb +26 -31
  370. data/lib/rubygems/request_set/gem_dependency_api.rb +23 -25
  371. data/lib/rubygems/request_set/lockfile/parser.rb +26 -28
  372. data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -7
  373. data/lib/rubygems/request_set/lockfile.rb +17 -21
  374. data/lib/rubygems/request_set.rb +27 -40
  375. data/lib/rubygems/requirement.rb +28 -48
  376. data/lib/rubygems/resolver/activation_request.rb +12 -6
  377. data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
  378. data/lib/rubygems/resolver/api_set.rb +32 -25
  379. data/lib/rubygems/resolver/api_specification.rb +29 -15
  380. data/lib/rubygems/resolver/best_set.rb +7 -9
  381. data/lib/rubygems/resolver/composed_set.rb +3 -5
  382. data/lib/rubygems/resolver/conflict.rb +12 -14
  383. data/lib/rubygems/resolver/current_set.rb +0 -2
  384. data/lib/rubygems/resolver/dependency_request.rb +3 -5
  385. data/lib/rubygems/resolver/git_set.rb +2 -4
  386. data/lib/rubygems/resolver/git_specification.rb +6 -8
  387. data/lib/rubygems/resolver/index_set.rb +4 -6
  388. data/lib/rubygems/resolver/index_specification.rb +38 -7
  389. data/lib/rubygems/resolver/installed_specification.rb +4 -6
  390. data/lib/rubygems/resolver/installer_set.rb +66 -24
  391. data/lib/rubygems/resolver/local_specification.rb +2 -4
  392. data/lib/rubygems/resolver/lock_set.rb +6 -8
  393. data/lib/rubygems/resolver/lock_specification.rb +4 -6
  394. data/lib/rubygems/resolver/molinillo/LICENSE +9 -0
  395. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
  396. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +8 -0
  397. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
  398. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
  399. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
  400. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
  401. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
  402. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
  403. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
  404. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
  405. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +51 -12
  406. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +41 -8
  407. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +76 -8
  408. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
  409. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +13 -1
  410. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
  411. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +510 -165
  412. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
  413. data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
  414. data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
  415. data/lib/rubygems/resolver/molinillo.rb +1 -1
  416. data/lib/rubygems/resolver/requirement_list.rb +0 -2
  417. data/lib/rubygems/resolver/set.rb +0 -3
  418. data/lib/rubygems/resolver/source_set.rb +0 -2
  419. data/lib/rubygems/resolver/spec_specification.rb +14 -2
  420. data/lib/rubygems/resolver/specification.rb +14 -4
  421. data/lib/rubygems/resolver/stats.rb +0 -2
  422. data/lib/rubygems/resolver/vendor_set.rb +1 -3
  423. data/lib/rubygems/resolver/vendor_specification.rb +3 -5
  424. data/lib/rubygems/resolver.rb +53 -51
  425. data/lib/rubygems/s3_uri_signer.rb +7 -15
  426. data/lib/rubygems/safe_yaml.rb +14 -16
  427. data/lib/rubygems/security/policies.rb +11 -11
  428. data/lib/rubygems/security/policy.rb +25 -29
  429. data/lib/rubygems/security/signer.rb +13 -16
  430. data/lib/rubygems/security/trust_dir.rb +4 -5
  431. data/lib/rubygems/security.rb +103 -69
  432. data/lib/rubygems/security_option.rb +7 -7
  433. data/lib/rubygems/source/git.rb +30 -30
  434. data/lib/rubygems/source/installed.rb +1 -3
  435. data/lib/rubygems/source/local.rb +4 -6
  436. data/lib/rubygems/source/lock.rb +0 -2
  437. data/lib/rubygems/source/specific_file.rb +1 -3
  438. data/lib/rubygems/source/vendor.rb +0 -2
  439. data/lib/rubygems/source.rb +44 -38
  440. data/lib/rubygems/source_list.rb +9 -16
  441. data/lib/rubygems/spec_fetcher.rb +49 -48
  442. data/lib/rubygems/specification.rb +338 -295
  443. data/lib/rubygems/specification_policy.rb +112 -61
  444. data/lib/rubygems/stub_specification.rb +21 -28
  445. data/lib/rubygems/text.rb +21 -20
  446. data/lib/rubygems/tsort/.document +1 -0
  447. data/lib/rubygems/tsort/LICENSE.txt +22 -0
  448. data/lib/rubygems/tsort/lib/tsort.rb +454 -0
  449. data/lib/rubygems/tsort.rb +3 -0
  450. data/lib/rubygems/uninstaller.rb +98 -45
  451. data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
  452. data/lib/rubygems/uri.rb +126 -0
  453. data/lib/rubygems/uri_formatter.rb +2 -3
  454. data/lib/rubygems/user_interaction.rb +43 -54
  455. data/lib/rubygems/util/licenses.rb +115 -10
  456. data/lib/rubygems/util/list.rb +0 -2
  457. data/lib/rubygems/util.rb +18 -12
  458. data/lib/rubygems/validator.rb +6 -8
  459. data/lib/rubygems/version.rb +29 -20
  460. data/lib/rubygems/version_option.rb +11 -5
  461. data/lib/rubygems.rb +192 -289
  462. data/rubygems-update.gemspec +4 -4
  463. data/setup.rb +11 -22
  464. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  465. data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
  466. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  467. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  468. data/test/rubygems/encrypted_private_key.pem +26 -26
  469. data/{lib/rubygems/test_case.rb → test/rubygems/helper.rb} +380 -314
  470. data/{lib → test}/rubygems/installer_test_case.rb +38 -24
  471. data/{lib → test}/rubygems/package/tar_test_case.rb +4 -6
  472. data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
  473. data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
  474. data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
  475. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
  476. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
  477. data/test/rubygems/private_ec_key.pem +9 -0
  478. data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
  479. data/test/rubygems/rubygems_plugin.rb +2 -4
  480. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
  481. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +4 -6
  482. data/test/rubygems/test_bundled_ca.rb +43 -50
  483. data/test/rubygems/test_config.rb +5 -7
  484. data/test/rubygems/test_deprecate.rb +87 -10
  485. data/test/rubygems/test_exit.rb +11 -0
  486. data/test/rubygems/test_gem.rb +719 -639
  487. data/test/rubygems/test_gem_available_set.rb +24 -26
  488. data/test/rubygems/test_gem_bundler_version_finder.rb +37 -44
  489. data/test/rubygems/test_gem_command.rb +78 -49
  490. data/test/rubygems/test_gem_command_manager.rb +98 -35
  491. data/test/rubygems/test_gem_commands_build_command.rb +275 -57
  492. data/test/rubygems/test_gem_commands_cert_command.rb +180 -125
  493. data/test/rubygems/test_gem_commands_check_command.rb +9 -11
  494. data/test/rubygems/test_gem_commands_cleanup_command.rb +78 -69
  495. data/test/rubygems/test_gem_commands_contents_command.rb +73 -42
  496. data/test/rubygems/test_gem_commands_dependency_command.rb +38 -40
  497. data/test/rubygems/test_gem_commands_environment_command.rb +60 -38
  498. data/test/rubygems/test_gem_commands_fetch_command.rb +163 -32
  499. data/test/rubygems/test_gem_commands_generate_index_command.rb +8 -14
  500. data/test/rubygems/test_gem_commands_help_command.rb +34 -16
  501. data/test/rubygems/test_gem_commands_info_command.rb +33 -9
  502. data/test/rubygems/test_gem_commands_install_command.rb +401 -198
  503. data/test/rubygems/test_gem_commands_list_command.rb +5 -7
  504. data/test/rubygems/test_gem_commands_lock_command.rb +11 -13
  505. data/test/rubygems/test_gem_commands_mirror.rb +3 -5
  506. data/test/rubygems/test_gem_commands_open_command.rb +16 -19
  507. data/test/rubygems/test_gem_commands_outdated_command.rb +23 -7
  508. data/test/rubygems/test_gem_commands_owner_command.rb +100 -46
  509. data/test/rubygems/test_gem_commands_pristine_command.rb +131 -99
  510. data/test/rubygems/test_gem_commands_push_command.rb +134 -66
  511. data/test/rubygems/test_gem_commands_query_command.rb +91 -91
  512. data/test/rubygems/test_gem_commands_search_command.rb +2 -4
  513. data/test/rubygems/test_gem_commands_server_command.rb +6 -50
  514. data/test/rubygems/test_gem_commands_setup_command.rb +288 -179
  515. data/test/rubygems/test_gem_commands_signin_command.rb +162 -28
  516. data/test/rubygems/test_gem_commands_signout_command.rb +3 -10
  517. data/test/rubygems/test_gem_commands_sources_command.rb +139 -32
  518. data/test/rubygems/test_gem_commands_specification_command.rb +81 -55
  519. data/test/rubygems/test_gem_commands_stale_command.rb +4 -6
  520. data/test/rubygems/test_gem_commands_uninstall_command.rb +80 -82
  521. data/test/rubygems/test_gem_commands_unpack_command.rb +32 -34
  522. data/test/rubygems/test_gem_commands_update_command.rb +335 -88
  523. data/test/rubygems/test_gem_commands_which_command.rb +12 -14
  524. data/test/rubygems/test_gem_commands_yank_command.rb +80 -44
  525. data/test/rubygems/test_gem_config_file.rb +114 -97
  526. data/test/rubygems/test_gem_dependency.rb +87 -87
  527. data/test/rubygems/test_gem_dependency_installer.rb +277 -391
  528. data/test/rubygems/test_gem_dependency_list.rb +57 -59
  529. data/test/rubygems/test_gem_dependency_resolution_error.rb +5 -7
  530. data/test/rubygems/test_gem_doctor.rb +73 -47
  531. data/test/rubygems/test_gem_ext_builder.rb +115 -109
  532. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +1 -0
  533. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.lock +243 -0
  534. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.toml +10 -0
  535. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb +21 -0
  536. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +10 -0
  537. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/src/lib.rs +27 -0
  538. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +1 -0
  539. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +243 -0
  540. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +10 -0
  541. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/build.rb +21 -0
  542. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +8 -0
  543. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +39 -0
  544. data/test/rubygems/test_gem_ext_cargo_builder.rb +178 -0
  545. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +33 -0
  546. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +75 -0
  547. data/test/rubygems/test_gem_ext_cmake_builder.rb +31 -38
  548. data/test/rubygems/test_gem_ext_configure_builder.rb +23 -39
  549. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +66 -82
  550. data/test/rubygems/test_gem_ext_rake_builder.rb +49 -32
  551. data/test/rubygems/test_gem_gem_runner.rb +51 -8
  552. data/test/rubygems/test_gem_gemcutter_utilities.rb +87 -76
  553. data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -6
  554. data/test/rubygems/test_gem_indexer.rb +62 -64
  555. data/test/rubygems/test_gem_install_update_options.rb +31 -21
  556. data/test/rubygems/test_gem_installer.rb +798 -491
  557. data/test/rubygems/test_gem_local_remote_options.rb +11 -13
  558. data/test/rubygems/test_gem_name_tuple.rb +4 -6
  559. data/test/rubygems/test_gem_package.rb +318 -283
  560. data/test/rubygems/test_gem_package_old.rb +18 -20
  561. data/test/rubygems/test_gem_package_tar_header.rb +64 -47
  562. data/test/rubygems/test_gem_package_tar_reader.rb +8 -10
  563. data/test/rubygems/test_gem_package_tar_reader_entry.rb +18 -20
  564. data/test/rubygems/test_gem_package_tar_writer.rb +96 -100
  565. data/test/rubygems/test_gem_package_task.rb +58 -25
  566. data/test/rubygems/test_gem_path_support.rb +15 -21
  567. data/test/rubygems/test_gem_platform.rb +354 -201
  568. data/test/rubygems/test_gem_rdoc.rb +19 -21
  569. data/test/rubygems/test_gem_remote_fetcher.rb +376 -337
  570. data/test/rubygems/test_gem_request.rb +114 -86
  571. data/test/rubygems/test_gem_request_connection_pools.rb +30 -34
  572. data/test/rubygems/test_gem_request_set.rb +123 -124
  573. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +222 -226
  574. data/test/rubygems/test_gem_request_set_lockfile.rb +93 -95
  575. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +68 -70
  576. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +136 -138
  577. data/test/rubygems/test_gem_requirement.rb +133 -54
  578. data/test/rubygems/test_gem_resolver.rb +149 -117
  579. data/test/rubygems/test_gem_resolver_activation_request.rb +6 -8
  580. data/test/rubygems/test_gem_resolver_api_set.rb +79 -78
  581. data/test/rubygems/test_gem_resolver_api_specification.rb +47 -49
  582. data/test/rubygems/test_gem_resolver_best_set.rb +43 -22
  583. data/test/rubygems/test_gem_resolver_composed_set.rb +1 -3
  584. data/test/rubygems/test_gem_resolver_conflict.rb +12 -14
  585. data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -17
  586. data/test/rubygems/test_gem_resolver_git_set.rb +22 -24
  587. data/test/rubygems/test_gem_resolver_git_specification.rb +22 -23
  588. data/test/rubygems/test_gem_resolver_index_set.rb +14 -16
  589. data/test/rubygems/test_gem_resolver_index_specification.rb +16 -18
  590. data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -7
  591. data/test/rubygems/test_gem_resolver_installer_set.rb +104 -44
  592. data/test/rubygems/test_gem_resolver_local_specification.rb +7 -9
  593. data/test/rubygems/test_gem_resolver_lock_set.rb +15 -17
  594. data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -19
  595. data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -3
  596. data/test/rubygems/test_gem_resolver_specification.rb +8 -12
  597. data/test/rubygems/test_gem_resolver_vendor_set.rb +9 -11
  598. data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -12
  599. data/test/rubygems/test_gem_security.rb +104 -78
  600. data/test/rubygems/test_gem_security_policy.rb +92 -97
  601. data/test/rubygems/test_gem_security_signer.rb +45 -47
  602. data/test/rubygems/test_gem_security_trust_dir.rb +12 -14
  603. data/test/rubygems/test_gem_silent_ui.rb +46 -42
  604. data/test/rubygems/test_gem_source.rb +53 -52
  605. data/test/rubygems/test_gem_source_fetch_problem.rb +16 -8
  606. data/test/rubygems/test_gem_source_git.rb +69 -69
  607. data/test/rubygems/test_gem_source_installed.rb +16 -18
  608. data/test/rubygems/test_gem_source_list.rb +5 -6
  609. data/test/rubygems/test_gem_source_local.rb +15 -17
  610. data/test/rubygems/test_gem_source_lock.rb +31 -33
  611. data/test/rubygems/test_gem_source_specific_file.rb +18 -20
  612. data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
  613. data/test/rubygems/test_gem_source_vendor.rb +13 -15
  614. data/test/rubygems/test_gem_spec_fetcher.rb +74 -67
  615. data/test/rubygems/test_gem_specification.rb +888 -1024
  616. data/test/rubygems/test_gem_stream_ui.rb +23 -23
  617. data/test/rubygems/test_gem_stub_specification.rb +39 -57
  618. data/test/rubygems/test_gem_text.rb +8 -4
  619. data/test/rubygems/test_gem_uninstaller.rb +233 -104
  620. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -5
  621. data/test/rubygems/test_gem_uri.rb +39 -0
  622. data/test/rubygems/test_gem_uri_formatter.rb +14 -16
  623. data/test/rubygems/test_gem_util.rb +37 -35
  624. data/test/rubygems/test_gem_validator.rb +10 -12
  625. data/test/rubygems/test_gem_version.rb +31 -31
  626. data/test/rubygems/test_gem_version_option.rb +16 -18
  627. data/test/rubygems/test_kernel.rb +46 -60
  628. data/test/rubygems/test_project_sanity.rb +8 -3
  629. data/test/rubygems/test_remote_fetch_error.rb +7 -9
  630. data/test/rubygems/test_require.rb +240 -167
  631. data/test/rubygems/test_rubygems.rb +74 -0
  632. data/{lib/rubygems/test_utilities.rb → test/rubygems/utilities.rb} +30 -39
  633. data/test/test_changelog_generator.rb +17 -0
  634. metadata +158 -146
  635. data/.bundle/config +0 -2
  636. data/.rubocop.yml +0 -91
  637. data/Gemfile +0 -8
  638. data/Gemfile.lock +0 -43
  639. data/Rakefile +0 -428
  640. data/bundler/CODE_OF_CONDUCT.md +0 -136
  641. data/bundler/lib/bundler/gemdeps.rb +0 -29
  642. data/bundler/lib/bundler/psyched_yaml.rb +0 -37
  643. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +0 -66
  644. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
  645. data/bundler/man/bundle-add.1.txt +0 -58
  646. data/bundler/man/bundle-binstubs.1.txt +0 -48
  647. data/bundler/man/bundle-cache.1.txt +0 -78
  648. data/bundler/man/bundle-check.1.txt +0 -33
  649. data/bundler/man/bundle-clean.1.txt +0 -26
  650. data/bundler/man/bundle-config.1.txt +0 -528
  651. data/bundler/man/bundle-doctor.1.txt +0 -44
  652. data/bundler/man/bundle-exec.1.txt +0 -178
  653. data/bundler/man/bundle-gem.1.txt +0 -91
  654. data/bundler/man/bundle-info.1.txt +0 -21
  655. data/bundler/man/bundle-init.1.txt +0 -34
  656. data/bundler/man/bundle-inject.1.txt +0 -32
  657. data/bundler/man/bundle-install.1.txt +0 -401
  658. data/bundler/man/bundle-list.1.txt +0 -43
  659. data/bundler/man/bundle-lock.1.txt +0 -93
  660. data/bundler/man/bundle-open.1.txt +0 -29
  661. data/bundler/man/bundle-outdated.1.txt +0 -131
  662. data/bundler/man/bundle-platform.1.txt +0 -57
  663. data/bundler/man/bundle-pristine.1.txt +0 -44
  664. data/bundler/man/bundle-remove.1.txt +0 -34
  665. data/bundler/man/bundle-show.1.txt +0 -27
  666. data/bundler/man/bundle-update.1.txt +0 -390
  667. data/bundler/man/bundle-viz.1.txt +0 -39
  668. data/bundler/man/bundle.1.txt +0 -116
  669. data/bundler/man/gemfile.5.txt +0 -649
  670. data/lib/rubygems/psych_additions.rb +0 -10
  671. data/lib/rubygems/server.rb +0 -879
  672. data/lib/rubygems/source_local.rb +0 -7
  673. data/lib/rubygems/source_specific_file.rb +0 -6
  674. data/lib/rubygems/syck_hack.rb +0 -79
  675. data/lib/rubygems/uri_parser.rb +0 -36
  676. data/lib/rubygems/uri_parsing.rb +0 -23
  677. data/lib/ubygems.rb +0 -14
  678. data/test/rubygems/bogussources.rb +0 -9
  679. data/test/rubygems/data/null-type.gemspec.rz +0 -0
  680. data/test/rubygems/test_gem_server.rb +0 -612
  681. data/tmp/.keep +0 -0
  682. data/util/CL2notes +0 -55
  683. data/util/bisect +0 -10
  684. data/util/ci.sh +0 -62
  685. data/util/cops/deprecations.rb +0 -52
  686. data/util/create_certs.rb +0 -171
  687. data/util/create_certs.sh +0 -27
  688. data/util/create_encrypted_key.rb +0 -16
  689. data/util/generate_spdx_license_list.rb +0 -63
  690. data/util/patch_with_prs.rb +0 -77
  691. data/util/rubocop +0 -8
  692. data/util/update_bundled_ca_certificates.rb +0 -137
  693. data/util/update_changelog.rb +0 -64
  694. /data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
  695. /data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
  696. /data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
  697. /data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
  698. /data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +0 -0
  699. /data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
  700. /data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
  701. /data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
  702. /data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
  703. /data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
@@ -1,10 +1,9 @@
1
1
  # frozen_string_literal: true
2
- require 'rubygems/test_case'
3
- require 'rubygems/source'
4
- require 'rubygems/indexer'
2
+ require_relative "helper"
3
+ require "rubygems/source"
4
+ require "rubygems/indexer"
5
5
 
6
6
  class TestGemSource < Gem::TestCase
7
-
8
7
  def tuple(*args)
9
8
  Gem::NameTuple.new(*args)
10
9
  end
@@ -13,25 +12,25 @@ class TestGemSource < Gem::TestCase
13
12
  super
14
13
 
15
14
  @specs = spec_fetcher do |fetcher|
16
- fetcher.spec 'a', '1.a'
17
- fetcher.gem 'a', 1
18
- fetcher.spec 'a', 2
19
- fetcher.spec 'b', 2
15
+ fetcher.spec "a", "1.a"
16
+ fetcher.gem "a", 1
17
+ fetcher.spec "a", 2
18
+ fetcher.spec "b", 2
20
19
  end
21
20
 
22
21
  @source = Gem::Source.new(@gem_repo)
23
22
  end
24
23
 
25
24
  def test_initialize_invalid_uri
26
- assert_raises URI::InvalidURIError do
27
- Gem::Source.new 'git@example:a.git'
25
+ assert_raise URI::InvalidURIError do
26
+ Gem::Source.new "git@example:a.git"
28
27
  end
29
28
  end
30
29
 
31
30
  def test_initialize_git
32
- repository = 'git@example:a.git'
31
+ repository = "git@example:a.git"
33
32
 
34
- source = Gem::Source::Git.new 'a', repository, 'master', false
33
+ source = Gem::Source::Git.new "a", repository, "master", false
35
34
 
36
35
  assert_equal repository, source.uri
37
36
  end
@@ -39,15 +38,15 @@ class TestGemSource < Gem::TestCase
39
38
  def test_cache_dir_escapes_windows_paths
40
39
  uri = URI.parse("file:///C:/WINDOWS/Temp/gem_repo")
41
40
  root = Gem.spec_cache_dir
42
- cache_dir = @source.cache_dir(uri).gsub(root, '')
41
+ cache_dir = @source.cache_dir(uri).gsub(root, "")
43
42
  assert cache_dir !~ /:/, "#{cache_dir} should not contain a :"
44
43
  end
45
44
 
46
45
  def test_dependency_resolver_set_bundler_api
47
- response = Net::HTTPResponse.new '1.1', 200, 'OK'
48
- response.uri = URI('http://example') if response.respond_to? :uri
46
+ response = Net::HTTPResponse.new "1.1", 200, "OK"
47
+ response.uri = URI("http://example")
49
48
 
50
- @fetcher.data["#{@gem_repo}api/v1/dependencies"] = response
49
+ @fetcher.data[@gem_repo] = response
51
50
 
52
51
  set = @source.dependency_resolver_set
53
52
 
@@ -55,8 +54,6 @@ class TestGemSource < Gem::TestCase
55
54
  end
56
55
 
57
56
  def test_dependency_resolver_set_file_uri
58
- skip 'install builder gem' unless defined? Builder::XChar
59
-
60
57
  Gem::Indexer.new(@tempdir).generate_index
61
58
 
62
59
  source = Gem::Source.new "file://#{@tempdir}/"
@@ -73,11 +70,11 @@ class TestGemSource < Gem::TestCase
73
70
  end
74
71
 
75
72
  def test_fetch_spec
76
- a1 = @specs['a-1']
73
+ a1 = @specs["a-1"]
77
74
 
78
75
  spec_uri = "#{@gem_repo}#{Gem::MARSHAL_SPEC_DIR}#{a1.spec_name}"
79
76
 
80
- spec = @source.fetch_spec tuple('a', Gem::Version.new(1), 'ruby')
77
+ spec = @source.fetch_spec tuple("a", Gem::Version.new(1), "ruby")
81
78
  assert_equal a1.full_name, spec.full_name
82
79
 
83
80
  cache_dir = @source.cache_dir URI.parse(spec_uri)
@@ -88,7 +85,7 @@ class TestGemSource < Gem::TestCase
88
85
  end
89
86
 
90
87
  def test_fetch_spec_cached
91
- a1 = @specs['a-1']
88
+ a1 = @specs["a-1"]
92
89
 
93
90
  spec_uri = "#{@gem_repo}/#{Gem::MARSHAL_SPEC_DIR}#{a1.spec_name}"
94
91
  @fetcher.data["#{spec_uri}.rz"] = nil
@@ -98,11 +95,11 @@ class TestGemSource < Gem::TestCase
98
95
 
99
96
  cache_file = File.join cache_dir, a1.spec_name
100
97
 
101
- File.open cache_file, 'wb' do |io|
98
+ File.open cache_file, "wb" do |io|
102
99
  Marshal.dump a1, io
103
100
  end
104
101
 
105
- spec = @source.fetch_spec tuple('a', Gem::Version.new(1), 'ruby')
102
+ spec = @source.fetch_spec tuple("a", Gem::Version.new(1), "ruby")
106
103
  assert_equal a1.full_name, spec.full_name
107
104
  end
108
105
 
@@ -111,24 +108,24 @@ class TestGemSource < Gem::TestCase
111
108
  fetcher.legacy_platform
112
109
  end
113
110
 
114
- spec = @source.fetch_spec tuple('pl', Gem::Version.new(1), 'i386-linux')
111
+ spec = @source.fetch_spec tuple("pl", Gem::Version.new(1), "i386-linux")
115
112
 
116
- assert_equal specs['pl-1-x86-linux'].full_name, spec.full_name
113
+ assert_equal specs["pl-1-x86-linux"].full_name, spec.full_name
117
114
  end
118
115
 
119
116
  def test_fetch_spec_platform_ruby
120
- spec = @source.fetch_spec tuple('a', Gem::Version.new(1), nil)
121
- assert_equal @specs['a-1'].full_name, spec.full_name
117
+ spec = @source.fetch_spec tuple("a", Gem::Version.new(1), nil)
118
+ assert_equal @specs["a-1"].full_name, spec.full_name
122
119
 
123
- spec = @source.fetch_spec tuple('a', Gem::Version.new(1), '')
124
- assert_equal @specs['a-1'].full_name, spec.full_name
120
+ spec = @source.fetch_spec tuple("a", Gem::Version.new(1), "")
121
+ assert_equal @specs["a-1"].full_name, spec.full_name
125
122
  end
126
123
 
127
124
  def test_load_specs
128
- released = @source.load_specs(:released).map { |spec| spec.full_name }
125
+ released = @source.load_specs(:released).map {|spec| spec.full_name }
129
126
  assert_equal %W[a-2 a-1 b-2], released
130
127
 
131
- cache_dir = File.join Gem.spec_cache_dir, 'gems.example.com%80'
128
+ cache_dir = File.join Gem.spec_cache_dir, "gems.example.com%80"
132
129
  assert File.exist?(cache_dir), "#{cache_dir} does not exist"
133
130
 
134
131
  cache_file = File.join cache_dir, "specs.#{Gem.marshal_version}"
@@ -139,19 +136,19 @@ class TestGemSource < Gem::TestCase
139
136
  latest_specs = @source.load_specs :latest
140
137
 
141
138
  # Make sure the cached version is actually different:
142
- latest_specs << Gem::NameTuple.new('cached', Gem::Version.new('1.0.0'), 'ruby')
139
+ latest_specs << Gem::NameTuple.new("cached", Gem::Version.new("1.0.0"), "ruby")
143
140
 
144
141
  @fetcher.data["#{@gem_repo}latest_specs.#{Gem.marshal_version}.gz"] = nil
145
142
  @fetcher.data["#{@gem_repo}latest_specs.#{Gem.marshal_version}"] =
146
- ' ' * Marshal.dump(latest_specs).length
143
+ " " * Marshal.dump(latest_specs).length
147
144
 
148
- cache_dir = File.join Gem.spec_cache_dir, 'gems.example.com%80'
145
+ cache_dir = File.join Gem.spec_cache_dir, "gems.example.com%80"
149
146
 
150
147
  FileUtils.mkdir_p cache_dir
151
148
 
152
149
  cache_file = File.join cache_dir, "latest_specs.#{Gem.marshal_version}"
153
150
 
154
- File.open cache_file, 'wb' do |io|
151
+ File.open cache_file, "wb" do |io|
155
152
  Marshal.dump latest_specs, io
156
153
  end
157
154
 
@@ -164,18 +161,18 @@ class TestGemSource < Gem::TestCase
164
161
  latest_specs = @source.load_specs :latest
165
162
 
166
163
  # Make sure the cached version is actually different:
167
- latest_specs << Gem::NameTuple.new('fixed', Gem::Version.new('1.0.0'), 'ruby')
164
+ latest_specs << Gem::NameTuple.new("fixed", Gem::Version.new("1.0.0"), "ruby")
168
165
  # Setup valid data on the 'remote'
169
166
  @fetcher.data["#{@gem_repo}latest_specs.#{Gem.marshal_version}.gz"] =
170
167
  util_gzip(Marshal.dump(latest_specs))
171
168
 
172
- cache_dir = File.join Gem.spec_cache_dir, 'gems.example.com%80'
169
+ cache_dir = File.join Gem.spec_cache_dir, "gems.example.com%80"
173
170
 
174
171
  FileUtils.mkdir_p cache_dir
175
172
 
176
173
  cache_file = File.join cache_dir, "latest_specs.#{Gem.marshal_version}"
177
174
 
178
- File.open cache_file, 'wb' do |io|
175
+ File.open cache_file, "wb" do |io|
179
176
  # Setup invalid data in the cache:
180
177
  io.write Marshal.dump(latest_specs)[0, 10]
181
178
  end
@@ -188,41 +185,41 @@ class TestGemSource < Gem::TestCase
188
185
  def test_load_specs_from_unavailable_uri
189
186
  src = Gem::Source.new("http://not-there.nothing")
190
187
 
191
- assert_raises Gem::RemoteFetcher::FetchError do
188
+ assert_raise Gem::RemoteFetcher::FetchError do
192
189
  src.load_specs :latest
193
190
  end
194
191
  end
195
192
 
196
193
  def test_spaceship
197
194
  remote = @source
198
- specific = Gem::Source::SpecificFile.new @specs['a-1'].cache_file
195
+ specific = Gem::Source::SpecificFile.new @specs["a-1"].cache_file
199
196
  installed = Gem::Source::Installed.new
200
197
  local = Gem::Source::Local.new
201
198
 
202
- assert_equal(0, remote. <=>(remote), 'remote <=> remote')
199
+ assert_equal(0, remote.<=>(remote), "remote <=> remote")
203
200
 
204
- assert_equal(-1, remote. <=>(specific), 'remote <=> specific')
205
- assert_equal(1, specific. <=>(remote), 'specific <=> remote')
201
+ assert_equal(-1, remote.<=>(specific), "remote <=> specific")
202
+ assert_equal(1, specific.<=>(remote), "specific <=> remote")
206
203
 
207
- assert_equal(-1, remote. <=>(local), 'remote <=> local')
208
- assert_equal(1, local. <=>(remote), 'local <=> remote')
204
+ assert_equal(-1, remote.<=>(local), "remote <=> local")
205
+ assert_equal(1, local.<=>(remote), "local <=> remote")
209
206
 
210
- assert_equal(-1, remote. <=>(installed), 'remote <=> installed')
211
- assert_equal(1, installed.<=>(remote), 'installed <=> remote')
207
+ assert_equal(-1, remote.<=>(installed), "remote <=> installed")
208
+ assert_equal(1, installed.<=>(remote), "installed <=> remote")
212
209
 
213
210
  no_uri = @source.dup
214
211
  no_uri.instance_variable_set :@uri, nil
215
212
 
216
- assert_equal(-1, remote. <=>(no_uri), 'remote <=> no_uri')
213
+ assert_equal(-1, remote.<=>(no_uri), "remote <=> no_uri")
217
214
  end
218
215
 
219
216
  def test_spaceship_order_is_preserved_when_uri_differs
220
217
  sourceA = Gem::Source.new "http://example.com/a"
221
218
  sourceB = Gem::Source.new "http://example.com/b"
222
219
 
223
- assert_equal(0, sourceA. <=>(sourceA), 'sourceA <=> sourceA')
224
- assert_equal(1, sourceA. <=>(sourceB), 'sourceA <=> sourceB')
225
- assert_equal(1, sourceB. <=>(sourceA), 'sourceB <=> sourceA')
220
+ assert_equal(0, sourceA.<=>(sourceA), "sourceA <=> sourceA")
221
+ assert_equal(1, sourceA.<=>(sourceB), "sourceA <=> sourceB")
222
+ assert_equal(1, sourceB.<=>(sourceA), "sourceB <=> sourceA")
226
223
  end
227
224
 
228
225
  def test_update_cache_eh
@@ -243,10 +240,14 @@ class TestGemSource < Gem::TestCase
243
240
  refute rubygems_source.typo_squatting?("rubysertgems.org")
244
241
  end
245
242
 
243
+ def test_typo_squatting_false_positive
244
+ rubygems_source = Gem::Source.new("https://rubygems.org")
245
+ refute rubygems_source.typo_squatting?("rubygems.org")
246
+ end
247
+
246
248
  def test_typo_squatting_custom_distance_threshold
247
249
  rubygems_source = Gem::Source.new("https://rubgems.org")
248
250
  distance_threshold = 5
249
251
  assert rubygems_source.typo_squatting?("rubysertgems.org", distance_threshold)
250
252
  end
251
-
252
253
  end
@@ -1,28 +1,36 @@
1
1
  # frozen_string_literal: true
2
- require 'rubygems/test_case'
2
+ require_relative "helper"
3
3
 
4
4
  class TestGemSourceFetchProblem < Gem::TestCase
5
-
6
5
  def test_exception
7
6
  source = Gem::Source.new @gem_repo
8
- error = RuntimeError.new 'test'
7
+ error = RuntimeError.new "test"
9
8
 
10
9
  sf = Gem::SourceFetchProblem.new source, error
11
10
 
12
- e = assert_raises RuntimeError do
11
+ e = assert_raise RuntimeError do
13
12
  raise sf
14
13
  end
15
14
 
16
- assert_equal 'test', e.message
15
+ assert_equal "test", e.message
17
16
  end
18
17
 
19
18
  def test_password_redacted
20
- source = Gem::Source.new 'https://username:secret@gemsource.com'
21
- error = RuntimeError.new 'test'
19
+ source = Gem::Source.new "https://username:secret@gemsource.com"
20
+ error = RuntimeError.new "test"
22
21
 
23
22
  sf = Gem::SourceFetchProblem.new source, error
24
23
 
25
- refute_match sf.wordy, 'secret'
24
+ refute_match sf.wordy, "secret"
26
25
  end
27
26
 
27
+ def test_source_password_no_redacted
28
+ source = Gem::Source.new "https://username:secret@gemsource.com"
29
+ error = RuntimeError.new "test"
30
+
31
+ sf = Gem::SourceFetchProblem.new source, error
32
+ sf.wordy
33
+
34
+ assert_match "secret", source.uri.to_s
35
+ end
28
36
  end
@@ -1,9 +1,8 @@
1
1
  # frozen_string_literal: true
2
- require 'rubygems/test_case'
3
- require 'rubygems/source'
2
+ require_relative "helper"
3
+ require "rubygems/source"
4
4
 
5
5
  class TestGemSourceGit < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
9
8
 
@@ -11,36 +10,36 @@ class TestGemSourceGit < Gem::TestCase
11
10
 
12
11
  @hash = Digest::SHA1.hexdigest @repository
13
12
 
14
- @source = Gem::Source::Git.new @name, @repository, 'master', false
13
+ @source = Gem::Source::Git.new @name, @repository, "master", false
15
14
  end
16
15
 
17
16
  def test_base_dir
18
- assert_equal File.join(Gem.dir, 'bundler'), @source.base_dir
17
+ assert_equal File.join(Gem.dir, "bundler"), @source.base_dir
19
18
 
20
19
  @source.root_dir = "#{@gemhome}2"
21
20
 
22
- assert_equal File.join("#{@gemhome}2", 'bundler'), @source.base_dir
21
+ assert_equal File.join("#{@gemhome}2", "bundler"), @source.base_dir
23
22
  end
24
23
 
25
24
  def test_checkout
26
25
  @source.checkout
27
26
 
28
- assert_path_exists File.join @source.install_dir, 'a.gemspec'
27
+ assert_path_exist File.join @source.install_dir, "a.gemspec"
29
28
  end
30
29
 
31
30
  def test_checkout_master
32
31
  Dir.chdir @repository do
33
- system @git, 'checkout', '-q', '-b', 'other'
34
- system @git, 'mv', 'a.gemspec', 'b.gemspec'
35
- system @git, 'commit', '-q', '-a', '-m', 'rename gemspec'
36
- system @git, 'checkout', '-q', 'master'
32
+ system @git, "checkout", "-q", "-b", "other"
33
+ system @git, "mv", "a.gemspec", "b.gemspec"
34
+ system @git, "commit", "-q", "-a", "-m", "rename gemspec"
35
+ system @git, "checkout", "-q", "master"
37
36
  end
38
37
 
39
- @source = Gem::Source::Git.new @name, @repository, 'other', false
38
+ @source = Gem::Source::Git.new @name, @repository, "other", false
40
39
 
41
40
  @source.checkout
42
41
 
43
- assert_path_exists File.join @source.install_dir, 'b.gemspec'
42
+ assert_path_exist File.join @source.install_dir, "b.gemspec"
44
43
  end
45
44
 
46
45
  def test_checkout_local
@@ -48,9 +47,9 @@ class TestGemSourceGit < Gem::TestCase
48
47
 
49
48
  @source.checkout
50
49
 
51
- install_dir = File.join Gem.dir, 'bundler', 'gems', "a-#{@head[0..11]}"
50
+ install_dir = File.join Gem.dir, "bundler", "gems", "a-#{@head[0..11]}"
52
51
 
53
- refute_path_exists File.join install_dir, 'a.gemspec'
52
+ assert_path_not_exist File.join install_dir, "a.gemspec"
54
53
  end
55
54
 
56
55
  def test_checkout_local_cached
@@ -60,33 +59,35 @@ class TestGemSourceGit < Gem::TestCase
60
59
 
61
60
  @source.checkout
62
61
 
63
- assert_path_exists File.join @source.install_dir, 'a.gemspec'
62
+ assert_path_exist File.join @source.install_dir, "a.gemspec"
64
63
  end
65
64
 
66
65
  def test_checkout_submodules
67
- source = Gem::Source::Git.new @name, @repository, 'master', true
66
+ source = Gem::Source::Git.new @name, @repository, "master", true
67
+
68
+ git_gem "b"
68
69
 
69
- git_gem 'b'
70
+ Dir.chdir "git/a" do
71
+ require "open3"
72
+ output, status = Open3.capture2e(@git, "submodule", "--quiet", "add", File.expand_path("../b"), "b")
73
+ assert status.success?, output
70
74
 
71
- Dir.chdir 'git/a' do
72
- Gem::Util.silent_system @git, 'submodule', '--quiet',
73
- 'add', File.expand_path('../b'), 'b'
74
- system @git, 'commit', '--quiet', '-m', 'add submodule b'
75
+ system @git, "commit", "--quiet", "-m", "add submodule b"
75
76
  end
76
77
 
77
78
  source.checkout
78
79
 
79
- assert_path_exists File.join source.install_dir, 'a.gemspec'
80
- assert_path_exists File.join source.install_dir, 'b/b.gemspec'
80
+ assert_path_exist File.join source.install_dir, "a.gemspec"
81
+ assert_path_exist File.join source.install_dir, "b/b.gemspec"
81
82
  end
82
83
 
83
84
  def test_cache
84
85
  assert @source.cache
85
86
 
86
- assert_path_exists @source.repo_cache_dir
87
+ assert_path_exist @source.repo_cache_dir
87
88
 
88
89
  Dir.chdir @source.repo_cache_dir do
89
- assert_equal @head, Gem::Util.popen(@git, 'rev-parse', 'master').strip
90
+ assert_equal @head, Gem::Util.popen(@git, "rev-parse", "master").strip
90
91
  end
91
92
  end
92
93
 
@@ -95,7 +96,7 @@ class TestGemSourceGit < Gem::TestCase
95
96
 
96
97
  @source.cache
97
98
 
98
- refute_path_exists @source.repo_cache_dir
99
+ assert_path_not_exist @source.repo_cache_dir
99
100
  end
100
101
 
101
102
  def test_dir_shortref
@@ -114,17 +115,17 @@ class TestGemSourceGit < Gem::TestCase
114
115
  assert_equal @source, @source.dup
115
116
 
116
117
  source =
117
- Gem::Source::Git.new @source.name, @source.repository, 'other', false
118
+ Gem::Source::Git.new @source.name, @source.repository, "other", false
118
119
 
119
120
  refute_equal @source, source
120
121
 
121
122
  source =
122
- Gem::Source::Git.new @source.name, 'repo/other', @source.reference, false
123
+ Gem::Source::Git.new @source.name, "repo/other", @source.reference, false
123
124
 
124
125
  refute_equal @source, source
125
126
 
126
127
  source =
127
- Gem::Source::Git.new 'b', @source.repository, @source.reference, false
128
+ Gem::Source::Git.new "b", @source.repository, @source.reference, false
128
129
 
129
130
  refute_equal @source, source
130
131
 
@@ -138,7 +139,7 @@ class TestGemSourceGit < Gem::TestCase
138
139
  def test_install_dir
139
140
  @source.cache
140
141
 
141
- expected = File.join Gem.dir, 'bundler', 'gems', "a-#{@head[0..11]}"
142
+ expected = File.join Gem.dir, "bundler", "gems", "a-#{@head[0..11]}"
142
143
 
143
144
  assert_equal expected, @source.install_dir
144
145
  end
@@ -151,14 +152,14 @@ class TestGemSourceGit < Gem::TestCase
151
152
 
152
153
  def test_repo_cache_dir
153
154
  expected =
154
- File.join Gem.dir, 'cache', 'bundler', 'git', "a-#{@hash}"
155
+ File.join Gem.dir, "cache", "bundler", "git", "a-#{@hash}"
155
156
 
156
157
  assert_equal expected, @source.repo_cache_dir
157
158
 
158
159
  @source.root_dir = "#{@gemhome}2"
159
160
 
160
161
  expected =
161
- File.join "#{@gemhome}2", 'cache', 'bundler', 'git', "a-#{@hash}"
162
+ File.join "#{@gemhome}2", "cache", "bundler", "git", "a-#{@hash}"
162
163
 
163
164
  assert_equal expected, @source.repo_cache_dir
164
165
  end
@@ -169,25 +170,25 @@ class TestGemSourceGit < Gem::TestCase
169
170
  assert_equal @head, @source.rev_parse
170
171
 
171
172
  Dir.chdir @repository do
172
- system @git, 'checkout', '--quiet', '-b', 'other'
173
+ system @git, "checkout", "--quiet", "-b", "other"
173
174
  end
174
175
 
175
176
  master_head = @head
176
177
 
177
- git_gem 'a', 2
178
+ git_gem "a", 2
178
179
 
179
- source = Gem::Source::Git.new @name, @repository, 'other', false
180
+ source = Gem::Source::Git.new @name, @repository, "other", false
180
181
 
181
182
  source.cache
182
183
 
183
184
  refute_equal master_head, source.rev_parse
184
185
 
185
- source = Gem::Source::Git.new @name, @repository, 'nonexistent', false
186
+ source = Gem::Source::Git.new @name, @repository, "nonexistent", false
186
187
 
187
188
  source.cache
188
189
 
189
- e = assert_raises Gem::Exception do
190
- capture_subprocess_io {source.rev_parse}
190
+ e = assert_raise Gem::Exception do
191
+ capture_subprocess_io { source.rev_parse }
191
192
  end
192
193
 
193
194
  assert_equal "unable to find reference nonexistent in #{@repository}",
@@ -203,59 +204,59 @@ class TestGemSourceGit < Gem::TestCase
203
204
  end
204
205
 
205
206
  def test_spaceship
206
- git = Gem::Source::Git.new 'a', 'git/a', 'master', false
207
+ git = Gem::Source::Git.new "a", "git/a", "master", false
207
208
  remote = Gem::Source.new @gem_repo
208
209
  installed = Gem::Source::Installed.new
209
- vendor = Gem::Source::Vendor.new 'vendor/foo'
210
+ vendor = Gem::Source::Vendor.new "vendor/foo"
210
211
 
211
- assert_equal(0, git. <=>(git), 'git <=> git')
212
+ assert_equal(0, git.<=>(git), "git <=> git")
212
213
 
213
- assert_equal(1, git. <=>(remote), 'git <=> remote')
214
- assert_equal(-1, remote. <=>(git), 'remote <=> git')
214
+ assert_equal(1, git.<=>(remote), "git <=> remote")
215
+ assert_equal(-1, remote.<=>(git), "remote <=> git")
215
216
 
216
- assert_equal(1, git. <=>(installed), 'git <=> installed')
217
- assert_equal(-1, installed.<=>(git), 'installed <=> git')
217
+ assert_equal(1, git.<=>(installed), "git <=> installed")
218
+ assert_equal(-1, installed.<=>(git), "installed <=> git")
218
219
 
219
- assert_equal(-1, git. <=>(vendor), 'git <=> vendor')
220
- assert_equal(1, vendor. <=>(git), 'vendor <=> git')
220
+ assert_equal(-1, git.<=>(vendor), "git <=> vendor")
221
+ assert_equal(1, vendor.<=>(git), "vendor <=> git")
221
222
  end
222
223
 
223
224
  def test_specs
224
- source = Gem::Source::Git.new @name, @repository, 'master', true
225
+ source = Gem::Source::Git.new @name, @repository, "master", true
225
226
 
226
- Dir.chdir 'git/a' do
227
- FileUtils.mkdir 'b'
227
+ Dir.chdir "git/a" do
228
+ FileUtils.mkdir "b"
228
229
 
229
- Dir.chdir 'b' do
230
- b = Gem::Specification.new 'b', 1
230
+ Dir.chdir "b" do
231
+ b = Gem::Specification.new "b", 1
231
232
 
232
- File.open 'b.gemspec', 'w' do |io|
233
+ File.open "b.gemspec", "w" do |io|
233
234
  io.write b.to_ruby
234
235
  end
235
236
 
236
- system @git, 'add', 'b.gemspec'
237
- system @git, 'commit', '--quiet', '-m', 'add b/b.gemspec'
237
+ system @git, "add", "b.gemspec"
238
+ system @git, "commit", "--quiet", "-m", "add b/b.gemspec"
238
239
  end
239
240
  end
240
241
 
241
242
  specs = nil
242
243
 
243
- capture_io do
244
+ capture_output do
244
245
  specs = source.specs
245
246
  end
246
247
 
247
- assert_equal %w[a-1 b-1], specs.map { |spec| spec.full_name }
248
+ assert_equal %w[a-1 b-1], specs.map {|spec| spec.full_name }
248
249
 
249
250
  a_spec = specs.shift
250
251
 
251
252
  base_dir = File.dirname File.dirname source.install_dir
252
253
 
253
254
  assert_equal source.install_dir, a_spec.full_gem_path
254
- assert_equal File.join(source.install_dir, 'a.gemspec'), a_spec.loaded_from
255
+ assert_equal File.join(source.install_dir, "a.gemspec"), a_spec.loaded_from
255
256
  assert_equal base_dir, a_spec.base_dir
256
257
 
257
258
  extension_dir =
258
- File.join Gem.dir, 'bundler', 'extensions',
259
+ File.join Gem.dir, "bundler", "extensions",
259
260
  Gem::Platform.local.to_s, Gem.extension_api_version,
260
261
  "a-#{source.dir_shortref}"
261
262
 
@@ -263,8 +264,8 @@ class TestGemSourceGit < Gem::TestCase
263
264
 
264
265
  b_spec = specs.shift
265
266
 
266
- assert_equal File.join(source.install_dir, 'b'), b_spec.full_gem_path
267
- assert_equal File.join(source.install_dir, 'b', 'b.gemspec'),
267
+ assert_equal File.join(source.install_dir, "b"), b_spec.full_gem_path
268
+ assert_equal File.join(source.install_dir, "b", "b.gemspec"),
268
269
  b_spec.loaded_from
269
270
  assert_equal base_dir, b_spec.base_dir
270
271
 
@@ -272,10 +273,10 @@ class TestGemSourceGit < Gem::TestCase
272
273
  end
273
274
 
274
275
  def test_specs_local
275
- source = Gem::Source::Git.new @name, @repository, 'master', true
276
+ source = Gem::Source::Git.new @name, @repository, "master", true
276
277
  source.remote = false
277
278
 
278
- capture_io do
279
+ capture_output do
279
280
  assert_empty source.specs
280
281
  end
281
282
  end
@@ -288,16 +289,15 @@ class TestGemSourceGit < Gem::TestCase
288
289
  assert_equal @hash, @source.uri_hash
289
290
 
290
291
  source =
291
- Gem::Source::Git.new 'a', 'http://git@example/repo.git', 'master', false
292
+ Gem::Source::Git.new "a", "http://git@example/repo.git", "master", false
292
293
 
293
- assert_equal '291c4caac7feba8bb64c297987028acb3dde6cfe',
294
+ assert_equal "291c4caac7feba8bb64c297987028acb3dde6cfe",
294
295
  source.uri_hash
295
296
 
296
297
  source =
297
- Gem::Source::Git.new 'a', 'HTTP://git@EXAMPLE/repo.git', 'master', false
298
+ Gem::Source::Git.new "a", "HTTP://git@EXAMPLE/repo.git", "master", false
298
299
 
299
- assert_equal '291c4caac7feba8bb64c297987028acb3dde6cfe',
300
+ assert_equal "291c4caac7feba8bb64c297987028acb3dde6cfe",
300
301
  source.uri_hash
301
302
  end
302
-
303
303
  end