rubygems-update 3.1.1 → 3.2.0.rc.2

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 (518) hide show
  1. checksums.yaml +4 -4
  2. data/CODE_OF_CONDUCT.md +55 -19
  3. data/CONTRIBUTING.md +25 -11
  4. data/History.txt +389 -144
  5. data/Manifest.txt +37 -73
  6. data/POLICIES.md +2 -9
  7. data/README.md +5 -5
  8. data/Rakefile +47 -82
  9. data/bin/update_rubygems +2 -2
  10. data/bundler/CHANGELOG.md +1546 -1414
  11. data/bundler/README.md +6 -8
  12. data/bundler/UPGRADING.md +18 -32
  13. data/bundler/bundler.gemspec +3 -3
  14. data/bundler/exe/bundle +3 -0
  15. data/bundler/lib/bundler.rb +21 -7
  16. data/bundler/lib/bundler/build_metadata.rb +4 -12
  17. data/bundler/lib/bundler/cli.rb +54 -20
  18. data/bundler/lib/bundler/cli/add.rb +1 -1
  19. data/bundler/lib/bundler/cli/cache.rb +1 -7
  20. data/bundler/lib/bundler/cli/clean.rb +1 -1
  21. data/bundler/lib/bundler/cli/common.rb +14 -0
  22. data/bundler/lib/bundler/cli/console.rb +1 -1
  23. data/bundler/lib/bundler/cli/doctor.rb +1 -1
  24. data/bundler/lib/bundler/cli/exec.rb +4 -13
  25. data/bundler/lib/bundler/cli/fund.rb +36 -0
  26. data/bundler/lib/bundler/cli/gem.rb +84 -11
  27. data/bundler/lib/bundler/cli/info.rb +15 -4
  28. data/bundler/lib/bundler/cli/init.rb +2 -2
  29. data/bundler/lib/bundler/cli/inject.rb +1 -1
  30. data/bundler/lib/bundler/cli/install.rb +12 -18
  31. data/bundler/lib/bundler/cli/issue.rb +2 -2
  32. data/bundler/lib/bundler/cli/list.rb +12 -10
  33. data/bundler/lib/bundler/cli/outdated.rb +89 -66
  34. data/bundler/lib/bundler/cli/plugin.rb +10 -0
  35. data/bundler/lib/bundler/cli/pristine.rb +5 -0
  36. data/bundler/lib/bundler/cli/show.rb +1 -1
  37. data/bundler/lib/bundler/cli/update.rb +2 -0
  38. data/bundler/lib/bundler/compact_index_client.rb +1 -1
  39. data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
  40. data/bundler/lib/bundler/definition.rb +51 -60
  41. data/bundler/lib/bundler/dep_proxy.rb +1 -1
  42. data/bundler/lib/bundler/dependency.rb +0 -9
  43. data/bundler/lib/bundler/dsl.rb +5 -9
  44. data/bundler/lib/bundler/endpoint_specification.rb +1 -1
  45. data/bundler/lib/bundler/environment_preserver.rb +26 -2
  46. data/bundler/lib/bundler/errors.rb +1 -0
  47. data/bundler/lib/bundler/feature_flag.rb +0 -2
  48. data/bundler/lib/bundler/fetcher.rb +4 -3
  49. data/bundler/lib/bundler/fetcher/base.rb +1 -1
  50. data/bundler/lib/bundler/fetcher/compact_index.rb +1 -1
  51. data/bundler/lib/bundler/fetcher/downloader.rb +1 -1
  52. data/bundler/lib/bundler/fetcher/index.rb +1 -1
  53. data/bundler/lib/bundler/friendly_errors.rb +7 -13
  54. data/bundler/lib/bundler/gem_helper.rb +33 -19
  55. data/bundler/lib/bundler/gem_helpers.rb +6 -1
  56. data/bundler/lib/bundler/gem_version_promoter.rb +2 -2
  57. data/bundler/lib/bundler/graph.rb +1 -1
  58. data/bundler/lib/bundler/index.rb +1 -1
  59. data/bundler/lib/bundler/injector.rb +15 -4
  60. data/bundler/lib/bundler/inline.rb +2 -2
  61. data/bundler/lib/bundler/installer.rb +30 -29
  62. data/bundler/lib/bundler/installer/gem_installer.rb +3 -3
  63. data/bundler/lib/bundler/installer/parallel_installer.rb +10 -10
  64. data/bundler/lib/bundler/installer/standalone.rb +2 -2
  65. data/bundler/lib/bundler/lazy_specification.rb +19 -6
  66. data/bundler/lib/bundler/lockfile_generator.rb +1 -1
  67. data/bundler/lib/bundler/lockfile_parser.rb +1 -1
  68. data/bundler/lib/bundler/mirror.rb +2 -2
  69. data/bundler/lib/bundler/plugin.rb +30 -5
  70. data/bundler/lib/bundler/plugin/index.rb +10 -1
  71. data/bundler/lib/bundler/plugin/installer.rb +1 -1
  72. data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
  73. data/bundler/lib/bundler/plugin/source_list.rb +1 -1
  74. data/bundler/lib/bundler/psyched_yaml.rb +0 -15
  75. data/bundler/lib/bundler/remote_specification.rb +5 -2
  76. data/bundler/lib/bundler/resolver.rb +32 -9
  77. data/bundler/lib/bundler/resolver/spec_group.rb +27 -6
  78. data/bundler/lib/bundler/retry.rb +1 -1
  79. data/bundler/lib/bundler/ruby_version.rb +1 -1
  80. data/bundler/lib/bundler/rubygems_ext.rb +53 -9
  81. data/bundler/lib/bundler/rubygems_gem_installer.rb +3 -9
  82. data/bundler/lib/bundler/rubygems_integration.rb +31 -54
  83. data/bundler/lib/bundler/runtime.rb +4 -14
  84. data/bundler/lib/bundler/settings.rb +49 -45
  85. data/bundler/lib/bundler/setup.rb +5 -0
  86. data/bundler/lib/bundler/shared_helpers.rb +2 -2
  87. data/bundler/lib/bundler/similarity_detector.rb +1 -1
  88. data/bundler/lib/bundler/source.rb +1 -1
  89. data/bundler/lib/bundler/source/git.rb +5 -5
  90. data/bundler/lib/bundler/source/git/git_proxy.rb +56 -59
  91. data/bundler/lib/bundler/source/path.rb +7 -3
  92. data/bundler/lib/bundler/source/path/installer.rb +8 -10
  93. data/bundler/lib/bundler/source/rubygems.rb +13 -16
  94. data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
  95. data/bundler/lib/bundler/source_list.rb +2 -2
  96. data/bundler/lib/bundler/spec_set.rb +1 -1
  97. data/bundler/lib/bundler/stub_specification.rb +17 -5
  98. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  99. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +9 -1
  100. data/bundler/lib/bundler/templates/newgem/README.md.tt +1 -1
  101. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +19 -5
  102. data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
  103. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
  104. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
  105. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
  106. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
  107. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +2 -0
  108. data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  109. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +8 -6
  110. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +10 -0
  111. data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
  112. data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
  113. data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
  114. data/bundler/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
  115. data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  116. data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  117. data/bundler/lib/bundler/ui/shell.rb +5 -5
  118. data/bundler/lib/bundler/uri_credentials_filter.rb +1 -1
  119. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +79 -212
  120. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +0 -7
  121. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
  122. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
  123. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  124. data/bundler/lib/bundler/vendored_persistent.rb +0 -7
  125. data/bundler/lib/bundler/version.rb +1 -1
  126. data/bundler/lib/bundler/worker.rb +1 -1
  127. data/bundler/lib/bundler/yaml_serializer.rb +1 -1
  128. data/bundler/man/bundle-add.1 +1 -1
  129. data/bundler/man/{bundle-add.ronn → bundle-add.1.ronn} +0 -0
  130. data/bundler/man/bundle-binstubs.1 +5 -3
  131. data/bundler/man/{bundle-binstubs.ronn → bundle-binstubs.1.ronn} +2 -4
  132. data/bundler/man/bundle-cache.1 +1 -1
  133. data/bundler/man/{bundle-cache.ronn → bundle-cache.1.ronn} +0 -0
  134. data/bundler/man/bundle-check.1 +1 -1
  135. data/bundler/man/{bundle-check.ronn → bundle-check.1.ronn} +0 -0
  136. data/bundler/man/bundle-clean.1 +1 -1
  137. data/bundler/man/{bundle-clean.ronn → bundle-clean.1.ronn} +0 -0
  138. data/bundler/man/bundle-config.1 +16 -22
  139. data/bundler/man/{bundle-config.ronn → bundle-config.1.ronn} +19 -22
  140. data/bundler/man/bundle-doctor.1 +1 -1
  141. data/bundler/man/{bundle-doctor.ronn → bundle-doctor.1.ronn} +0 -0
  142. data/bundler/man/bundle-exec.1 +1 -1
  143. data/bundler/man/{bundle-exec.ronn → bundle-exec.1.ronn} +0 -0
  144. data/bundler/man/bundle-gem.1 +25 -3
  145. data/bundler/man/{bundle-gem.ronn → bundle-gem.1.ronn} +30 -7
  146. data/bundler/man/bundle-info.1 +1 -1
  147. data/bundler/man/{bundle-info.ronn → bundle-info.1.ronn} +0 -0
  148. data/bundler/man/bundle-init.1 +1 -1
  149. data/bundler/man/{bundle-init.ronn → bundle-init.1.ronn} +0 -0
  150. data/bundler/man/bundle-inject.1 +1 -1
  151. data/bundler/man/{bundle-inject.ronn → bundle-inject.1.ronn} +0 -0
  152. data/bundler/man/bundle-install.1 +29 -2
  153. data/bundler/man/{bundle-install.ronn → bundle-install.1.ronn} +24 -2
  154. data/bundler/man/bundle-list.1 +7 -7
  155. data/bundler/man/{bundle-list.ronn → bundle-list.1.ronn} +6 -6
  156. data/bundler/man/bundle-lock.1 +1 -1
  157. data/bundler/man/{bundle-lock.ronn → bundle-lock.1.ronn} +0 -0
  158. data/bundler/man/bundle-open.1 +1 -1
  159. data/bundler/man/{bundle-open.ronn → bundle-open.1.ronn} +0 -0
  160. data/bundler/man/bundle-outdated.1 +1 -1
  161. data/bundler/man/{bundle-outdated.ronn → bundle-outdated.1.ronn} +0 -0
  162. data/bundler/man/bundle-platform.1 +1 -1
  163. data/bundler/man/{bundle-platform.ronn → bundle-platform.1.ronn} +0 -0
  164. data/bundler/man/bundle-pristine.1 +1 -1
  165. data/bundler/man/{bundle-pristine.ronn → bundle-pristine.1.ronn} +0 -0
  166. data/bundler/man/bundle-remove.1 +1 -1
  167. data/bundler/man/{bundle-remove.ronn → bundle-remove.1.ronn} +0 -0
  168. data/bundler/man/bundle-show.1 +1 -1
  169. data/bundler/man/{bundle-show.ronn → bundle-show.1.ronn} +0 -0
  170. data/bundler/man/bundle-update.1 +1 -1
  171. data/bundler/man/{bundle-update.ronn → bundle-update.1.ronn} +0 -0
  172. data/bundler/man/bundle-viz.1 +1 -1
  173. data/bundler/man/{bundle-viz.ronn → bundle-viz.1.ronn} +0 -0
  174. data/bundler/man/bundle.1 +1 -1
  175. data/bundler/man/{bundle.ronn → bundle.1.ronn} +0 -0
  176. data/bundler/man/gemfile.5 +4 -4
  177. data/bundler/man/gemfile.5.ronn +4 -4
  178. data/lib/rubygems.rb +133 -186
  179. data/lib/rubygems/available_set.rb +4 -6
  180. data/lib/rubygems/basic_specification.rb +12 -10
  181. data/lib/rubygems/bundler_version_finder.rb +14 -9
  182. data/lib/rubygems/command.rb +17 -17
  183. data/lib/rubygems/command_manager.rb +4 -5
  184. data/lib/rubygems/commands/build_command.rb +4 -1
  185. data/lib/rubygems/commands/cert_command.rb +1 -9
  186. data/lib/rubygems/commands/check_command.rb +0 -2
  187. data/lib/rubygems/commands/cleanup_command.rb +11 -7
  188. data/lib/rubygems/commands/contents_command.rb +4 -6
  189. data/lib/rubygems/commands/dependency_command.rb +6 -8
  190. data/lib/rubygems/commands/environment_command.rb +1 -3
  191. data/lib/rubygems/commands/fetch_command.rb +2 -4
  192. data/lib/rubygems/commands/generate_index_command.rb +0 -2
  193. data/lib/rubygems/commands/help_command.rb +2 -4
  194. data/lib/rubygems/commands/info_command.rb +8 -5
  195. data/lib/rubygems/commands/install_command.rb +3 -5
  196. data/lib/rubygems/commands/list_command.rb +8 -7
  197. data/lib/rubygems/commands/lock_command.rb +1 -3
  198. data/lib/rubygems/commands/mirror_command.rb +0 -2
  199. data/lib/rubygems/commands/open_command.rb +0 -4
  200. data/lib/rubygems/commands/outdated_command.rb +0 -2
  201. data/lib/rubygems/commands/owner_command.rb +0 -2
  202. data/lib/rubygems/commands/pristine_command.rb +10 -4
  203. data/lib/rubygems/commands/push_command.rb +4 -44
  204. data/lib/rubygems/commands/query_command.rb +6 -353
  205. data/lib/rubygems/commands/rdoc_command.rb +0 -2
  206. data/lib/rubygems/commands/search_command.rb +7 -7
  207. data/lib/rubygems/commands/server_command.rb +0 -2
  208. data/lib/rubygems/commands/setup_command.rb +156 -48
  209. data/lib/rubygems/commands/signin_command.rb +0 -2
  210. data/lib/rubygems/commands/signout_command.rb +0 -2
  211. data/lib/rubygems/commands/sources_command.rb +3 -5
  212. data/lib/rubygems/commands/specification_command.rb +2 -4
  213. data/lib/rubygems/commands/stale_command.rb +1 -3
  214. data/lib/rubygems/commands/uninstall_command.rb +2 -4
  215. data/lib/rubygems/commands/unpack_command.rb +1 -3
  216. data/lib/rubygems/commands/update_command.rb +59 -14
  217. data/lib/rubygems/commands/which_command.rb +0 -2
  218. data/lib/rubygems/commands/yank_command.rb +0 -2
  219. data/lib/rubygems/config_file.rb +11 -4
  220. data/lib/rubygems/core_ext/kernel_require.rb +26 -36
  221. data/lib/rubygems/core_ext/kernel_warn.rb +6 -6
  222. data/lib/rubygems/defaults.rb +99 -5
  223. data/lib/rubygems/dependency.rb +2 -7
  224. data/lib/rubygems/dependency_installer.rb +1 -75
  225. data/lib/rubygems/dependency_list.rb +7 -9
  226. data/lib/rubygems/deprecate.rb +46 -1
  227. data/lib/rubygems/doctor.rb +4 -4
  228. data/lib/rubygems/errors.rb +3 -14
  229. data/lib/rubygems/exceptions.rb +2 -33
  230. data/lib/rubygems/ext.rb +6 -6
  231. data/lib/rubygems/ext/build_error.rb +2 -0
  232. data/lib/rubygems/ext/builder.rb +4 -4
  233. data/lib/rubygems/ext/cmake_builder.rb +1 -3
  234. data/lib/rubygems/ext/configure_builder.rb +0 -2
  235. data/lib/rubygems/ext/ext_conf_builder.rb +6 -9
  236. data/lib/rubygems/ext/rake_builder.rb +0 -2
  237. data/lib/rubygems/gem_runner.rb +3 -10
  238. data/lib/rubygems/gemcutter_utilities.rb +1 -1
  239. data/lib/rubygems/indexer.rb +1 -21
  240. data/lib/rubygems/install_update_options.rb +5 -5
  241. data/lib/rubygems/installer.rb +47 -48
  242. data/lib/rubygems/installer_test_case.rb +18 -5
  243. data/lib/rubygems/installer_uninstaller_utils.rb +24 -0
  244. data/lib/rubygems/local_remote_options.rb +1 -1
  245. data/lib/rubygems/mock_gem_ui.rb +0 -6
  246. data/lib/rubygems/name_tuple.rb +2 -6
  247. data/lib/rubygems/openssl.rb +7 -0
  248. data/lib/rubygems/package.rb +11 -23
  249. data/lib/rubygems/package/digest_io.rb +0 -2
  250. data/lib/rubygems/package/file_source.rb +0 -2
  251. data/lib/rubygems/package/io_source.rb +0 -2
  252. data/lib/rubygems/package/old.rb +1 -3
  253. data/lib/rubygems/package/tar_header.rb +3 -5
  254. data/lib/rubygems/package/tar_reader.rb +0 -3
  255. data/lib/rubygems/package/tar_reader/entry.rb +0 -3
  256. data/lib/rubygems/package/tar_test_case.rb +1 -3
  257. data/lib/rubygems/package/tar_writer.rb +2 -12
  258. data/lib/rubygems/package_task.rb +1 -7
  259. data/lib/rubygems/path_support.rb +1 -3
  260. data/lib/rubygems/platform.rb +3 -5
  261. data/lib/rubygems/psych_tree.rb +0 -2
  262. data/lib/rubygems/query_utils.rb +362 -0
  263. data/lib/rubygems/rdoc.rb +0 -12
  264. data/lib/rubygems/remote_fetcher.rb +9 -25
  265. data/lib/rubygems/request.rb +1 -9
  266. data/lib/rubygems/request/connection_pools.rb +1 -5
  267. data/lib/rubygems/request/http_pool.rb +0 -2
  268. data/lib/rubygems/request/https_pool.rb +0 -2
  269. data/lib/rubygems/request_set.rb +5 -7
  270. data/lib/rubygems/request_set/gem_dependency_api.rb +2 -4
  271. data/lib/rubygems/request_set/lockfile.rb +8 -12
  272. data/lib/rubygems/request_set/lockfile/parser.rb +0 -2
  273. data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -3
  274. data/lib/rubygems/requirement.rb +20 -21
  275. data/lib/rubygems/resolver.rb +7 -10
  276. data/lib/rubygems/resolver/activation_request.rb +0 -2
  277. data/lib/rubygems/resolver/api_set.rb +4 -6
  278. data/lib/rubygems/resolver/api_specification.rb +16 -7
  279. data/lib/rubygems/resolver/best_set.rb +0 -2
  280. data/lib/rubygems/resolver/composed_set.rb +3 -5
  281. data/lib/rubygems/resolver/conflict.rb +1 -3
  282. data/lib/rubygems/resolver/current_set.rb +0 -2
  283. data/lib/rubygems/resolver/dependency_request.rb +0 -2
  284. data/lib/rubygems/resolver/git_set.rb +0 -2
  285. data/lib/rubygems/resolver/git_specification.rb +0 -2
  286. data/lib/rubygems/resolver/index_set.rb +1 -3
  287. data/lib/rubygems/resolver/index_specification.rb +0 -2
  288. data/lib/rubygems/resolver/installed_specification.rb +0 -2
  289. data/lib/rubygems/resolver/installer_set.rb +3 -5
  290. data/lib/rubygems/resolver/local_specification.rb +0 -2
  291. data/lib/rubygems/resolver/lock_set.rb +1 -3
  292. data/lib/rubygems/resolver/lock_specification.rb +0 -2
  293. data/lib/rubygems/resolver/requirement_list.rb +0 -2
  294. data/lib/rubygems/resolver/set.rb +0 -2
  295. data/lib/rubygems/resolver/source_set.rb +0 -2
  296. data/lib/rubygems/resolver/spec_specification.rb +0 -2
  297. data/lib/rubygems/resolver/specification.rb +0 -2
  298. data/lib/rubygems/resolver/stats.rb +0 -2
  299. data/lib/rubygems/resolver/vendor_set.rb +0 -2
  300. data/lib/rubygems/resolver/vendor_specification.rb +0 -2
  301. data/lib/rubygems/s3_uri_signer.rb +1 -7
  302. data/lib/rubygems/safe_yaml.rb +4 -4
  303. data/lib/rubygems/security.rb +26 -32
  304. data/lib/rubygems/security/policy.rb +3 -7
  305. data/lib/rubygems/security/signer.rb +4 -6
  306. data/lib/rubygems/security/trust_dir.rb +1 -3
  307. data/lib/rubygems/server.rb +9 -11
  308. data/lib/rubygems/source.rb +4 -4
  309. data/lib/rubygems/source/git.rb +7 -8
  310. data/lib/rubygems/source/installed.rb +0 -2
  311. data/lib/rubygems/source/local.rb +2 -4
  312. data/lib/rubygems/source/lock.rb +0 -2
  313. data/lib/rubygems/source/specific_file.rb +0 -2
  314. data/lib/rubygems/source/vendor.rb +0 -2
  315. data/lib/rubygems/source_list.rb +6 -7
  316. data/lib/rubygems/spec_fetcher.rb +18 -17
  317. data/lib/rubygems/specification.rb +107 -120
  318. data/lib/rubygems/specification_policy.rb +88 -30
  319. data/lib/rubygems/stub_specification.rb +0 -4
  320. data/lib/rubygems/syck_hack.rb +0 -2
  321. data/lib/rubygems/test_case.rb +122 -92
  322. data/lib/rubygems/test_utilities.rb +6 -14
  323. data/lib/rubygems/uninstaller.rb +35 -16
  324. data/lib/rubygems/uri_formatter.rb +0 -2
  325. data/lib/rubygems/uri_parser.rb +0 -2
  326. data/lib/rubygems/user_interaction.rb +1 -26
  327. data/lib/rubygems/util.rb +15 -3
  328. data/lib/rubygems/util/licenses.rb +4 -6
  329. data/lib/rubygems/util/list.rb +0 -2
  330. data/lib/rubygems/validator.rb +1 -3
  331. data/lib/rubygems/version.rb +5 -7
  332. data/rubygems-update.gemspec +2 -2
  333. data/setup.rb +2 -7
  334. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
  335. data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
  336. data/test/rubygems/rubygems_plugin.rb +0 -2
  337. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
  338. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
  339. data/test/rubygems/test_bundled_ca.rb +38 -45
  340. data/test/rubygems/test_config.rb +0 -2
  341. data/test/rubygems/test_deprecate.rb +40 -7
  342. data/test/rubygems/test_gem.rb +150 -103
  343. data/test/rubygems/test_gem_available_set.rb +3 -5
  344. data/test/rubygems/test_gem_bundler_version_finder.rb +19 -3
  345. data/test/rubygems/test_gem_command.rb +24 -7
  346. data/test/rubygems/test_gem_command_manager.rb +36 -5
  347. data/test/rubygems/test_gem_commands_build_command.rb +53 -10
  348. data/test/rubygems/test_gem_commands_cert_command.rb +2 -4
  349. data/test/rubygems/test_gem_commands_check_command.rb +0 -2
  350. data/test/rubygems/test_gem_commands_cleanup_command.rb +13 -4
  351. data/test/rubygems/test_gem_commands_contents_command.rb +48 -17
  352. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -2
  353. data/test/rubygems/test_gem_commands_environment_command.rb +21 -23
  354. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -2
  355. data/test/rubygems/test_gem_commands_generate_index_command.rb +1 -7
  356. data/test/rubygems/test_gem_commands_help_command.rb +0 -2
  357. data/test/rubygems/test_gem_commands_info_command.rb +6 -8
  358. data/test/rubygems/test_gem_commands_install_command.rb +31 -33
  359. data/test/rubygems/test_gem_commands_list_command.rb +0 -2
  360. data/test/rubygems/test_gem_commands_lock_command.rb +0 -2
  361. data/test/rubygems/test_gem_commands_mirror.rb +1 -3
  362. data/test/rubygems/test_gem_commands_open_command.rb +4 -6
  363. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -2
  364. data/test/rubygems/test_gem_commands_owner_command.rb +11 -5
  365. data/test/rubygems/test_gem_commands_pristine_command.rb +41 -10
  366. data/test/rubygems/test_gem_commands_push_command.rb +7 -4
  367. data/test/rubygems/test_gem_commands_query_command.rb +9 -9
  368. data/test/rubygems/test_gem_commands_search_command.rb +0 -2
  369. data/test/rubygems/test_gem_commands_server_command.rb +0 -2
  370. data/test/rubygems/test_gem_commands_setup_command.rb +210 -118
  371. data/test/rubygems/test_gem_commands_signin_command.rb +6 -6
  372. data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
  373. data/test/rubygems/test_gem_commands_sources_command.rb +39 -3
  374. data/test/rubygems/test_gem_commands_specification_command.rb +18 -20
  375. data/test/rubygems/test_gem_commands_stale_command.rb +0 -2
  376. data/test/rubygems/test_gem_commands_uninstall_command.rb +2 -3
  377. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -2
  378. data/test/rubygems/test_gem_commands_update_command.rb +116 -7
  379. data/test/rubygems/test_gem_commands_which_command.rb +3 -5
  380. data/test/rubygems/test_gem_commands_yank_command.rb +14 -8
  381. data/test/rubygems/test_gem_config_file.rb +7 -12
  382. data/test/rubygems/test_gem_dependency.rb +0 -2
  383. data/test/rubygems/test_gem_dependency_installer.rb +54 -191
  384. data/test/rubygems/test_gem_dependency_list.rb +8 -10
  385. data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -3
  386. data/test/rubygems/test_gem_doctor.rb +28 -2
  387. data/test/rubygems/test_gem_ext_builder.rb +16 -33
  388. data/test/rubygems/test_gem_ext_cmake_builder.rb +13 -14
  389. data/test/rubygems/test_gem_ext_configure_builder.rb +1 -11
  390. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -3
  391. data/test/rubygems/test_gem_ext_rake_builder.rb +9 -11
  392. data/test/rubygems/test_gem_gem_runner.rb +43 -1
  393. data/test/rubygems/test_gem_gemcutter_utilities.rb +5 -2
  394. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -2
  395. data/test/rubygems/test_gem_indexer.rb +9 -15
  396. data/test/rubygems/test_gem_install_update_options.rb +0 -2
  397. data/test/rubygems/test_gem_installer.rb +192 -71
  398. data/test/rubygems/test_gem_local_remote_options.rb +0 -2
  399. data/test/rubygems/test_gem_name_tuple.rb +0 -2
  400. data/test/rubygems/test_gem_package.rb +33 -31
  401. data/test/rubygems/test_gem_package_old.rb +0 -2
  402. data/test/rubygems/test_gem_package_tar_header.rb +18 -1
  403. data/test/rubygems/test_gem_package_tar_reader.rb +0 -2
  404. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -2
  405. data/test/rubygems/test_gem_package_tar_writer.rb +8 -5
  406. data/test/rubygems/test_gem_package_task.rb +46 -13
  407. data/test/rubygems/test_gem_path_support.rb +0 -2
  408. data/test/rubygems/test_gem_platform.rb +0 -2
  409. data/test/rubygems/test_gem_rdoc.rb +0 -2
  410. data/test/rubygems/test_gem_remote_fetcher.rb +156 -195
  411. data/test/rubygems/test_gem_request.rb +11 -15
  412. data/test/rubygems/test_gem_request_connection_pools.rb +0 -4
  413. data/test/rubygems/test_gem_request_set.rb +72 -22
  414. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +3 -5
  415. data/test/rubygems/test_gem_request_set_lockfile.rb +0 -2
  416. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -11
  417. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -120
  418. data/test/rubygems/test_gem_requirement.rb +10 -4
  419. data/test/rubygems/test_gem_resolver.rb +6 -8
  420. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -2
  421. data/test/rubygems/test_gem_resolver_api_set.rb +3 -5
  422. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -2
  423. data/test/rubygems/test_gem_resolver_best_set.rb +2 -4
  424. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -2
  425. data/test/rubygems/test_gem_resolver_conflict.rb +0 -2
  426. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -2
  427. data/test/rubygems/test_gem_resolver_git_set.rb +0 -2
  428. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -2
  429. data/test/rubygems/test_gem_resolver_index_set.rb +2 -4
  430. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -2
  431. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -2
  432. data/test/rubygems/test_gem_resolver_installer_set.rb +7 -9
  433. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -2
  434. data/test/rubygems/test_gem_resolver_lock_set.rb +3 -5
  435. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -2
  436. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -2
  437. data/test/rubygems/test_gem_resolver_specification.rb +0 -4
  438. data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -2
  439. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -2
  440. data/test/rubygems/test_gem_security.rb +20 -22
  441. data/test/rubygems/test_gem_security_policy.rb +5 -10
  442. data/test/rubygems/test_gem_security_signer.rb +8 -10
  443. data/test/rubygems/test_gem_security_trust_dir.rb +2 -4
  444. data/test/rubygems/test_gem_server.rb +10 -14
  445. data/test/rubygems/test_gem_silent_ui.rb +0 -2
  446. data/test/rubygems/test_gem_source.rb +12 -16
  447. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -2
  448. data/test/rubygems/test_gem_source_git.rb +12 -13
  449. data/test/rubygems/test_gem_source_installed.rb +7 -9
  450. data/test/rubygems/test_gem_source_list.rb +1 -2
  451. data/test/rubygems/test_gem_source_local.rb +8 -10
  452. data/test/rubygems/test_gem_source_lock.rb +10 -12
  453. data/test/rubygems/test_gem_source_specific_file.rb +7 -9
  454. data/test/rubygems/test_gem_source_vendor.rb +7 -9
  455. data/test/rubygems/test_gem_spec_fetcher.rb +11 -4
  456. data/test/rubygems/test_gem_specification.rb +179 -129
  457. data/test/rubygems/test_gem_stream_ui.rb +3 -3
  458. data/test/rubygems/test_gem_stub_specification.rb +4 -7
  459. data/test/rubygems/test_gem_text.rb +1 -3
  460. data/test/rubygems/test_gem_uninstaller.rb +133 -11
  461. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -2
  462. data/test/rubygems/test_gem_uri_formatter.rb +0 -2
  463. data/test/rubygems/test_gem_util.rb +7 -7
  464. data/test/rubygems/test_gem_validator.rb +0 -2
  465. data/test/rubygems/test_gem_version.rb +1 -3
  466. data/test/rubygems/test_gem_version_option.rb +0 -2
  467. data/test/rubygems/test_kernel.rb +25 -10
  468. data/test/rubygems/test_project_sanity.rb +7 -2
  469. data/test/rubygems/test_remote_fetch_error.rb +0 -2
  470. data/test/rubygems/test_require.rb +241 -47
  471. metadata +59 -96
  472. data/.bundle/config +0 -2
  473. data/.rubocop.yml +0 -91
  474. data/Gemfile +0 -8
  475. data/Gemfile.lock +0 -43
  476. data/bundler/CODE_OF_CONDUCT.md +0 -136
  477. data/bundler/man/bundle-add.1.txt +0 -58
  478. data/bundler/man/bundle-binstubs.1.txt +0 -48
  479. data/bundler/man/bundle-cache.1.txt +0 -78
  480. data/bundler/man/bundle-check.1.txt +0 -33
  481. data/bundler/man/bundle-clean.1.txt +0 -26
  482. data/bundler/man/bundle-config.1.txt +0 -528
  483. data/bundler/man/bundle-doctor.1.txt +0 -44
  484. data/bundler/man/bundle-exec.1.txt +0 -178
  485. data/bundler/man/bundle-gem.1.txt +0 -91
  486. data/bundler/man/bundle-info.1.txt +0 -21
  487. data/bundler/man/bundle-init.1.txt +0 -34
  488. data/bundler/man/bundle-inject.1.txt +0 -32
  489. data/bundler/man/bundle-install.1.txt +0 -401
  490. data/bundler/man/bundle-list.1.txt +0 -43
  491. data/bundler/man/bundle-lock.1.txt +0 -93
  492. data/bundler/man/bundle-open.1.txt +0 -29
  493. data/bundler/man/bundle-outdated.1.txt +0 -131
  494. data/bundler/man/bundle-platform.1.txt +0 -57
  495. data/bundler/man/bundle-pristine.1.txt +0 -44
  496. data/bundler/man/bundle-remove.1.txt +0 -34
  497. data/bundler/man/bundle-show.1.txt +0 -27
  498. data/bundler/man/bundle-update.1.txt +0 -390
  499. data/bundler/man/bundle-viz.1.txt +0 -39
  500. data/bundler/man/bundle.1.txt +0 -116
  501. data/bundler/man/gemfile.5.txt +0 -649
  502. data/bundler/man/index.txt +0 -25
  503. data/lib/rubygems/source_local.rb +0 -7
  504. data/lib/rubygems/source_specific_file.rb +0 -6
  505. data/lib/ubygems.rb +0 -14
  506. data/tmp/.keep +0 -0
  507. data/util/CL2notes +0 -55
  508. data/util/bisect +0 -10
  509. data/util/ci.sh +0 -62
  510. data/util/cops/deprecations.rb +0 -52
  511. data/util/create_certs.rb +0 -171
  512. data/util/create_certs.sh +0 -27
  513. data/util/create_encrypted_key.rb +0 -16
  514. data/util/generate_spdx_license_list.rb +0 -63
  515. data/util/patch_with_prs.rb +0 -77
  516. data/util/rubocop +0 -8
  517. data/util/update_bundled_ca_certificates.rb +0 -139
  518. data/util/update_changelog.rb +0 -67
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/commands/list_command'
4
4
 
5
5
  class TestGemCommandsListCommand < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
9
8
 
@@ -30,5 +29,4 @@ class TestGemCommandsListCommand < Gem::TestCase
30
29
  assert_equal "true\n", @ui.output
31
30
  assert_equal '', @ui.error
32
31
  end
33
-
34
32
  end
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/commands/lock_command'
4
4
 
5
5
  class TestGemCommandsLockCommand < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
9
8
 
@@ -64,5 +63,4 @@ gem 'd', '= 1'
64
63
 
65
64
  assert_equal 'Could not find gem c-1, try using the full name', e.message
66
65
  end
67
-
68
66
  end
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/commands/mirror_command'
4
4
 
5
5
  class TestGemCommandsMirrorCommand < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
9
8
 
@@ -15,7 +14,6 @@ class TestGemCommandsMirrorCommand < Gem::TestCase
15
14
  @cmd.execute
16
15
  end
17
16
 
18
- assert_match %r%Install the rubygems-mirror%i, @ui.error
17
+ assert_match %r{Install the rubygems-mirror}i, @ui.error
19
18
  end
20
-
21
19
  end
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/commands/open_command'
4
4
 
5
5
  class TestGemCommandsOpenCommand < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
9
8
 
@@ -26,7 +25,7 @@ class TestGemCommandsOpenCommand < Gem::TestCase
26
25
 
27
26
  gem 'foo', '1.0.0'
28
27
  spec = gem 'foo', '1.0.1'
29
- mock = MiniTest::Mock.new
28
+ mock = Minitest::Mock.new
30
29
  mock.expect(:call, true, [spec.full_gem_path])
31
30
 
32
31
  Dir.stub(:chdir, mock) do
@@ -51,7 +50,7 @@ class TestGemCommandsOpenCommand < Gem::TestCase
51
50
  end
52
51
  end
53
52
 
54
- assert_match %r|Unable to find gem 'foo'|, @ui.output
53
+ assert_match %r{Unable to find gem 'foo'}, @ui.output
55
54
  assert_equal "", @ui.error
56
55
  end
57
56
 
@@ -64,7 +63,7 @@ class TestGemCommandsOpenCommand < Gem::TestCase
64
63
  end
65
64
  end
66
65
 
67
- assert_match %r|Unable to find gem 'foo'|, @ui.output
66
+ assert_match %r{Unable to find gem 'foo'}, @ui.output
68
67
  assert_equal "", @ui.error
69
68
  end
70
69
 
@@ -93,8 +92,7 @@ class TestGemCommandsOpenCommand < Gem::TestCase
93
92
  end
94
93
  end
95
94
 
96
- assert_match %r|'foo' is a default gem and can't be opened\.| , @ui.output
95
+ assert_match %r{'foo' is a default gem and can't be opened\.} , @ui.output
97
96
  assert_equal "", @ui.error
98
97
  end
99
-
100
98
  end
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/commands/outdated_command'
4
4
 
5
5
  class TestGemCommandsOutdatedCommand < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
9
8
 
@@ -29,5 +28,4 @@ class TestGemCommandsOutdatedCommand < Gem::TestCase
29
28
  assert_equal "foo (0.2 < 2.0)\n", @ui.output
30
29
  assert_equal "", @ui.error
31
30
  end
32
-
33
31
  end
@@ -3,10 +3,11 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/commands/owner_command'
4
4
 
5
5
  class TestGemCommandsOwnerCommand < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
9
8
 
9
+ credential_setup
10
+
10
11
  ENV["RUBYGEMS_HOST"] = nil
11
12
  @stub_ui = Gem::MockGemUi.new
12
13
  @stub_fetcher = Gem::FakeFetcher.new
@@ -17,6 +18,12 @@ class TestGemCommandsOwnerCommand < Gem::TestCase
17
18
  @cmd = Gem::Commands::OwnerCommand.new
18
19
  end
19
20
 
21
+ def teardown
22
+ credential_teardown
23
+
24
+ super
25
+ end
26
+
20
27
  def test_show_owners
21
28
  response = <<EOF
22
29
  ---
@@ -119,7 +126,7 @@ EOF
119
126
  end
120
127
  Gem.configuration.load_api_keys
121
128
 
122
- @cmd.handle_options %w(-k other)
129
+ @cmd.handle_options %w[-k other]
123
130
  @cmd.show_owners('freewill')
124
131
 
125
132
  assert_equal '701229f217cdf23b1344c7b4b54ca97', @stub_fetcher.last_request['Authorization']
@@ -177,7 +184,7 @@ EOF
177
184
  end
178
185
  Gem.configuration.load_api_keys
179
186
 
180
- @cmd.handle_options %w(-k other)
187
+ @cmd.handle_options %w[-k other]
181
188
  @cmd.add_owners('freewill', ['user-new1@example.com'])
182
189
 
183
190
  assert_equal '701229f217cdf23b1344c7b4b54ca97', @stub_fetcher.last_request['Authorization']
@@ -217,7 +224,7 @@ EOF
217
224
  end
218
225
  Gem.configuration.load_api_keys
219
226
 
220
- @cmd.handle_options %w(-k other)
227
+ @cmd.handle_options %w[-k other]
221
228
  @cmd.remove_owners('freewill', ['user-remove1@example.com'])
222
229
 
223
230
  assert_equal '701229f217cdf23b1344c7b4b54ca97', @stub_fetcher.last_request['Authorization']
@@ -268,5 +275,4 @@ EOF
268
275
  assert_match 'Code: ', @otp_ui.output
269
276
  assert_equal '111111', @stub_fetcher.last_request['OTP']
270
277
  end
271
-
272
278
  end
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/commands/pristine_command'
4
4
 
5
5
  class TestGemCommandsPristineCommand < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
9
8
  common_installer_setup
@@ -160,11 +159,9 @@ class TestGemCommandsPristineCommand < Gem::TestCase
160
159
 
161
160
  ruby_exec = sprintf Gem.default_exec_format, 'ruby'
162
161
 
163
- if win_platform?
164
- assert_match %r%\A#!\s*#{ruby_exec}%, File.read(gem_exec)
165
- else
166
- assert_match %r%\A#!\s*/usr/bin/env #{ruby_exec}%, File.read(gem_exec)
167
- end
162
+ bin_env = win_platform? ? "" : %w[/usr/bin/env /bin/env].find {|f| File.executable?(f) } + " "
163
+
164
+ assert_match %r{\A#!\s*#{bin_env}#{ruby_exec}}, File.read(gem_exec)
168
165
  end
169
166
 
170
167
  def test_execute_extensions_explicit
@@ -215,7 +212,6 @@ class TestGemCommandsPristineCommand < Gem::TestCase
215
212
  io.write "# extconf.rb\nrequire 'mkmf'; create_makefile 'a'"
216
213
  end
217
214
 
218
- util_build_gem a
219
215
  install_gem a
220
216
 
221
217
  @cmd.options[:args] = %w[a]
@@ -249,7 +245,7 @@ class TestGemCommandsPristineCommand < Gem::TestCase
249
245
  RUBY
250
246
  end
251
247
 
252
- build_args = %w!--with-awesome=true --sweet!
248
+ build_args = %w[--with-awesome=true --sweet]
253
249
 
254
250
  install_gem a, :build_args => build_args
255
251
 
@@ -458,7 +454,7 @@ class TestGemCommandsPristineCommand < Gem::TestCase
458
454
  end
459
455
  end
460
456
 
461
- assert_match %r|at least one gem name|, e.message
457
+ assert_match %r{at least one gem name}, e.message
462
458
  end
463
459
 
464
460
  def test_execute_only_executables
@@ -491,6 +487,42 @@ class TestGemCommandsPristineCommand < Gem::TestCase
491
487
  refute File.exist? gem_lib
492
488
  end
493
489
 
490
+ def test_execute_only_plugins
491
+ a = util_spec 'a' do |s|
492
+ s.executables = %w[foo]
493
+ s.files = %w[bin/foo lib/a.rb lib/rubygems_plugin.rb]
494
+ end
495
+ write_file File.join(@tempdir, 'lib', 'a.rb') do |fp|
496
+ fp.puts "puts __FILE__"
497
+ end
498
+ write_file File.join(@tempdir, 'lib', 'rubygems_plugin.rb') do |fp|
499
+ fp.puts "puts __FILE__"
500
+ end
501
+ write_file File.join(@tempdir, 'bin', 'foo') do |fp|
502
+ fp.puts "#!/usr/bin/ruby"
503
+ end
504
+
505
+ install_gem a
506
+
507
+ gem_lib = File.join @gemhome, 'gems', a.full_name, 'lib', 'a.rb'
508
+ gem_plugin = File.join @gemhome, 'plugins', 'a_plugin.rb'
509
+ gem_exec = File.join @gemhome, 'bin', 'foo'
510
+
511
+ FileUtils.rm gem_exec
512
+ FileUtils.rm gem_plugin
513
+ FileUtils.rm gem_lib
514
+
515
+ @cmd.handle_options %w[--all --only-plugins]
516
+
517
+ use_ui @ui do
518
+ @cmd.execute
519
+ end
520
+
521
+ refute File.exist? gem_exec
522
+ assert File.exist? gem_plugin
523
+ refute File.exist? gem_lib
524
+ end
525
+
494
526
  def test_execute_bindir
495
527
  a = util_spec 'a' do |s|
496
528
  s.name = "test_gem"
@@ -623,5 +655,4 @@ class TestGemCommandsPristineCommand < Gem::TestCase
623
655
  assert @cmd.options[:extensions]
624
656
  assert @cmd.options[:extensions_set]
625
657
  end
626
-
627
658
  end
@@ -3,9 +3,11 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/commands/push_command'
4
4
 
5
5
  class TestGemCommandsPushCommand < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
8
+
9
+ credential_setup
10
+
9
11
  ENV["RUBYGEMS_HOST"] = nil
10
12
  Gem.host = Gem::DEFAULT_HOST
11
13
  Gem.configuration.disable_default_gem_server = false
@@ -37,6 +39,8 @@ class TestGemCommandsPushCommand < Gem::TestCase
37
39
  end
38
40
 
39
41
  def teardown
42
+ credential_teardown
43
+
40
44
  super
41
45
 
42
46
  singleton_gem_class.class_eval do
@@ -246,7 +250,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
246
250
  spec.metadata['allowed_push_host'] = "https://privategemserver.example"
247
251
  end
248
252
 
249
- response = %{ERROR: "#{@host}" is not allowed by the gemspec, which only allows "https://privategemserver.example"}
253
+ response = %(ERROR: "#{@host}" is not allowed by the gemspec, which only allows "https://privategemserver.example")
250
254
 
251
255
  assert_raises Gem::MockGemUi::TermError do
252
256
  send_battery
@@ -355,7 +359,7 @@ class TestGemCommandsPushCommand < Gem::TestCase
355
359
  end
356
360
  Gem.configuration.load_api_keys
357
361
 
358
- @cmd.handle_options %w(-k other)
362
+ @cmd.handle_options %w[-k other]
359
363
  @cmd.instance_variable_set :@host, @host
360
364
  @cmd.send_gem(@path)
361
365
 
@@ -405,5 +409,4 @@ class TestGemCommandsPushCommand < Gem::TestCase
405
409
  def singleton_gem_class
406
410
  class << Gem; self; end
407
411
  end
408
-
409
412
  end
@@ -19,7 +19,6 @@ module TestGemCommandsQueryCommandSetup
19
19
  end
20
20
 
21
21
  class TestGemCommandsQueryCommandWithInstalledGems < Gem::TestCase
22
-
23
22
  include TestGemCommandsQueryCommandSetup
24
23
 
25
24
  def test_execute
@@ -580,8 +579,8 @@ pl (1 i386-linux)
580
579
  @cmd.execute
581
580
  end
582
581
 
583
- assert_match %r%^a %, @stub_ui.output
584
- assert_match %r%^pl %, @stub_ui.output
582
+ assert_match %r{^a }, @stub_ui.output
583
+ assert_match %r{^pl }, @stub_ui.output
585
584
  assert_equal '', @stub_ui.error
586
585
  end
587
586
 
@@ -593,8 +592,8 @@ pl (1 i386-linux)
593
592
  @cmd.send :show_gems, /a/i
594
593
  end
595
594
 
596
- assert_match %r%^a %, @stub_ui.output
597
- refute_match %r%^pl %, @stub_ui.output
595
+ assert_match %r{^a }, @stub_ui.output
596
+ refute_match %r{^pl }, @stub_ui.output
598
597
  assert_empty @stub_ui.error
599
598
  end
600
599
 
@@ -607,11 +606,9 @@ pl (1 i386-linux)
607
606
  fetcher.spec 'a', '3.a'
608
607
  end
609
608
  end
610
-
611
609
  end
612
610
 
613
611
  class TestGemCommandsQueryCommandWithoutInstalledGems < Gem::TestCase
614
-
615
612
  include TestGemCommandsQueryCommandSetup
616
613
 
617
614
  def test_execute_platform
@@ -644,7 +641,7 @@ a (2 universal-darwin, 1 ruby x86-linux)
644
641
  end
645
642
 
646
643
  def test_execute_show_default_gems
647
- spec_fetcher { |fetcher| fetcher.spec 'a', 2 }
644
+ spec_fetcher {|fetcher| fetcher.spec 'a', 2 }
648
645
 
649
646
  a1 = new_default_spec 'a', 1
650
647
  install_default_specs a1
@@ -844,6 +841,10 @@ othergem (1.2.3)
844
841
  assert_equal expected, @stub_ui.output
845
842
  end
846
843
 
844
+ def test_depprecated
845
+ assert @cmd.deprecated?
846
+ end
847
+
847
848
  private
848
849
 
849
850
  def add_gems_to_fetcher
@@ -853,5 +854,4 @@ othergem (1.2.3)
853
854
  fetcher.download 'a', '3.a'
854
855
  end
855
856
  end
856
-
857
857
  end
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/commands/search_command'
4
4
 
5
5
  class TestGemCommandsSearchCommand < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
9
8
 
@@ -13,5 +12,4 @@ class TestGemCommandsSearchCommand < Gem::TestCase
13
12
  def test_initialize
14
13
  assert_equal :remote, @cmd.defaults[:domain]
15
14
  end
16
-
17
15
  end
@@ -3,7 +3,6 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/commands/server_command'
4
4
 
5
5
  class TestGemCommandsServerCommand < Gem::TestCase
6
-
7
6
  def setup
8
7
  super
9
8
 
@@ -59,5 +58,4 @@ class TestGemCommandsServerCommand < Gem::TestCase
59
58
  assert_equal 'invalid argument: -p 65536: not a port number',
60
59
  e.message
61
60
  end
62
-
63
61
  end
@@ -1,11 +1,9 @@
1
- # coding: UTF-8
2
1
  # frozen_string_literal: true
3
2
 
4
3
  require 'rubygems/test_case'
5
4
  require 'rubygems/commands/setup_command'
6
5
 
7
6
  class TestGemCommandsSetupCommand < Gem::TestCase
8
-
9
7
  bundler_gemspec = File.expand_path("../../../bundler/lib/bundler/version.rb", __FILE__)
10
8
  if File.exist?(bundler_gemspec)
11
9
  BUNDLER_VERS = File.read(bundler_gemspec).match(/VERSION = "(#{Gem::Version::VERSION_PATTERN})"/)[1]
@@ -20,41 +18,23 @@ class TestGemCommandsSetupCommand < Gem::TestCase
20
18
  @cmd = Gem::Commands::SetupCommand.new
21
19
  @cmd.options[:prefix] = @install_dir
22
20
 
23
- FileUtils.mkdir_p 'bin'
24
- FileUtils.mkdir_p 'lib/rubygems/ssl_certs/rubygems.org'
25
-
26
- File.open 'bin/gem', 'w' do
27
- |io| io.puts '# gem'
28
- end
29
-
30
- File.open 'lib/rubygems.rb', 'w' do |io|
31
- io.puts '# rubygems.rb'
32
- end
33
-
34
- File.open 'lib/rubygems/test_case.rb', 'w' do |io|
35
- io.puts '# test_case.rb'
36
- end
37
-
38
- File.open 'lib/rubygems/ssl_certs/rubygems.org/foo.pem', 'w' do |io|
39
- io.puts 'PEM'
40
- end
41
-
42
- FileUtils.mkdir_p 'bundler/exe'
43
- FileUtils.mkdir_p 'bundler/lib/bundler'
44
-
45
- File.open 'bundler/exe/bundle', 'w' do |io|
46
- io.puts '# bundle'
47
- end
48
-
49
- File.open 'bundler/lib/bundler.rb', 'w' do |io|
50
- io.puts '# bundler.rb'
51
- end
52
-
53
- File.open 'bundler/lib/bundler/b.rb', 'w' do |io|
54
- io.puts '# b.rb'
55
- end
56
-
57
- FileUtils.mkdir_p 'default/gems'
21
+ filelist = %w[
22
+ bin/gem
23
+ lib/rubygems.rb
24
+ lib/rubygems/test_case.rb
25
+ lib/rubygems/ssl_certs/rubygems.org/foo.pem
26
+ bundler/exe/bundle
27
+ bundler/lib/bundler.rb
28
+ bundler/lib/bundler/b.rb
29
+ bundler/lib/bundler/templates/.circleci/config.yml
30
+ bundler/lib/bundler/templates/.travis.yml
31
+ bundler/man/bundle-b.1
32
+ bundler/man/bundle-b.1.ronn
33
+ bundler/man/gemfile.5
34
+ bundler/man/gemfile.5.ronn
35
+ ]
36
+
37
+ create_dummy_files(filelist)
58
38
 
59
39
  gemspec = Gem::Specification.new
60
40
  gemspec.author = "Us"
@@ -63,7 +43,7 @@ class TestGemCommandsSetupCommand < Gem::TestCase
63
43
  gemspec.bindir = "exe"
64
44
  gemspec.executables = ["bundle"]
65
45
 
66
- File.open 'bundler/bundler.gemspec', 'w' do |io|
46
+ File.open 'bundler/bundler.gemspec', 'w' do |io|
67
47
  io.puts gemspec.to_ruby
68
48
  end
69
49
 
@@ -72,30 +52,13 @@ class TestGemCommandsSetupCommand < Gem::TestCase
72
52
  io.puts gemspec.to_ruby
73
53
  end
74
54
 
75
- FileUtils.mkdir_p File.join(Gem.default_dir, "specifications")
55
+ spec_fetcher do |fetcher|
56
+ fetcher.download "bundler", "1.15.4"
76
57
 
77
- open(File.join(Gem.default_dir, "specifications", "bundler-#{BUNDLER_VERS}.gemspec"), 'w') do |io|
78
- io.puts "# bundler-#{BUNDLER_VERS}"
79
- end
80
-
81
- open(File.join(Gem.default_dir, "specifications", "bundler-audit-1.0.0.gemspec"), 'w') do |io|
82
- io.puts '# bundler-audit'
83
- end
84
-
85
- FileUtils.mkdir_p 'default/gems/bundler-1.15.4'
86
- FileUtils.mkdir_p 'default/gems/bundler-audit-1.0.0'
87
- end
58
+ fetcher.gem "bundler", BUNDLER_VERS
88
59
 
89
- def gem_install(name)
90
- gem = util_spec name do |s|
91
- s.executables = [name]
92
- s.files = %W[bin/#{name}]
93
- end
94
- write_file File.join @tempdir, 'bin', name do |f|
95
- f.puts '#!/usr/bin/ruby'
60
+ fetcher.gem "bundler-audit", "1.0.0"
96
61
  end
97
- install_gem gem
98
- File.join @gemhome, 'bin', name
99
62
  end
100
63
 
101
64
  def test_execute_regenerate_binstubs
@@ -123,6 +86,57 @@ class TestGemCommandsSetupCommand < Gem::TestCase
123
86
  assert_equal "I changed it!\n", File.read(gem_bin_path)
124
87
  end
125
88
 
89
+ def test_execute_regenerate_plugins
90
+ gem_plugin_path = gem_install_with_plugin 'a'
91
+ write_file gem_plugin_path do |io|
92
+ io.puts 'I changed it!'
93
+ end
94
+
95
+ @cmd.options[:document] = []
96
+ @cmd.execute
97
+
98
+ assert_match %r{\Arequire}, File.read(gem_plugin_path)
99
+ end
100
+
101
+ def test_execute_no_regenerate_plugins
102
+ gem_plugin_path = gem_install_with_plugin 'a'
103
+ write_file gem_plugin_path do |io|
104
+ io.puts 'I changed it!'
105
+ end
106
+
107
+ @cmd.options[:document] = []
108
+ @cmd.options[:regenerate_plugins] = false
109
+ @cmd.execute
110
+
111
+ assert_equal "I changed it!\n", File.read(gem_plugin_path)
112
+ end
113
+
114
+ def test_execute_regenerate_plugins_creates_plugins_dir_if_not_there
115
+ gem_plugin_path = gem_install_with_plugin 'a'
116
+
117
+ # Simulate gem installed with an older rubygems without a plugins layout
118
+ FileUtils.rm_rf Gem.plugindir
119
+
120
+ @cmd.options[:document] = []
121
+ @cmd.execute
122
+
123
+ assert_match %r{\Arequire}, File.read(gem_plugin_path)
124
+ end
125
+
126
+ def test_execute_informs_about_installed_executables
127
+ @cmd.options[:document] = []
128
+
129
+ use_ui @ui do
130
+ @cmd.execute
131
+ end
132
+
133
+ out = @ui.output.split "\n"
134
+
135
+ exec_line = out.shift until exec_line == "RubyGems installed the following executables:"
136
+ assert_equal "\t#{default_gem_bin_path}", out.shift
137
+ assert_equal "\t#{default_bundle_bin_path}", out.shift
138
+ end
139
+
126
140
  def test_env_shebang_flag
127
141
  gem_bin_path = gem_install 'a'
128
142
  write_file gem_bin_path do |io|
@@ -133,21 +147,12 @@ class TestGemCommandsSetupCommand < Gem::TestCase
133
147
  @cmd.options[:env_shebang] = true
134
148
  @cmd.execute
135
149
 
136
- gem_exec = sprintf Gem.default_exec_format, 'gem'
137
- default_gem_bin_path = File.join @install_dir, 'bin', gem_exec
138
- bundle_exec = sprintf Gem.default_exec_format, 'bundle'
139
- default_bundle_bin_path = File.join @install_dir, 'bin', bundle_exec
140
150
  ruby_exec = sprintf Gem.default_exec_format, 'ruby'
141
151
 
142
- if Gem.win_platform?
143
- assert_match %r%\A#!\s*#{ruby_exec}%, File.read(default_gem_bin_path)
144
- assert_match %r%\A#!\s*#{ruby_exec}%, File.read(default_bundle_bin_path)
145
- assert_match %r%\A#!\s*#{ruby_exec}%, File.read(gem_bin_path)
146
- else
147
- assert_match %r%\A#!/usr/bin/env #{ruby_exec}%, File.read(default_gem_bin_path)
148
- assert_match %r%\A#!/usr/bin/env #{ruby_exec}%, File.read(default_bundle_bin_path)
149
- assert_match %r%\A#!/usr/bin/env #{ruby_exec}%, File.read(gem_bin_path)
150
- end
152
+ bin_env = win_platform? ? "" : %w[/usr/bin/env /bin/env].find {|f| File.executable?(f) } + " "
153
+ assert_match %r{\A#!\s*#{bin_env}#{ruby_exec}}, File.read(default_gem_bin_path)
154
+ assert_match %r{\A#!\s*#{bin_env}#{ruby_exec}}, File.read(default_bundle_bin_path)
155
+ assert_match %r{\A#!\s*#{bin_env}#{ruby_exec}}, File.read(gem_bin_path)
151
156
  end
152
157
 
153
158
  def test_pem_files_in
@@ -160,6 +165,16 @@ class TestGemCommandsSetupCommand < Gem::TestCase
160
165
  @cmd.rb_files_in('lib').sort
161
166
  end
162
167
 
168
+ def test_bundler_man1_files_in
169
+ assert_equal %w[bundle-b.1 bundle-b.1.ronn],
170
+ @cmd.bundler_man1_files_in('bundler/man').sort
171
+ end
172
+
173
+ def test_bundler_man5_files_in
174
+ assert_equal %w[gemfile.5 gemfile.5.ronn],
175
+ @cmd.bundler_man5_files_in('bundler/man').sort
176
+ end
177
+
163
178
  def test_install_lib
164
179
  @cmd.extend FileUtils
165
180
 
@@ -171,6 +186,22 @@ class TestGemCommandsSetupCommand < Gem::TestCase
171
186
 
172
187
  assert_path_exists File.join(dir, 'bundler.rb')
173
188
  assert_path_exists File.join(dir, 'bundler/b.rb')
189
+
190
+ assert_path_exists File.join(dir, 'bundler/templates/.circleci/config.yml')
191
+ assert_path_exists File.join(dir, 'bundler/templates/.travis.yml')
192
+ end
193
+ end
194
+
195
+ def test_install_man
196
+ @cmd.extend FileUtils
197
+
198
+ Dir.mktmpdir 'man' do |dir|
199
+ @cmd.install_man dir
200
+
201
+ assert_path_exists File.join("#{dir}/man1", 'bundle-b.1')
202
+ assert_path_exists File.join("#{dir}/man1", 'bundle-b.1.ronn')
203
+ assert_path_exists File.join("#{dir}/man5", 'gemfile.5')
204
+ assert_path_exists File.join("#{dir}/man5", 'gemfile.5.ronn')
174
205
  end
175
206
  end
176
207
 
@@ -189,7 +220,7 @@ class TestGemCommandsSetupCommand < Gem::TestCase
189
220
  assert_path_exists File.join(bin_dir, "#{e}.bat")
190
221
  end
191
222
 
192
- assert_path_exists File.join bin_dir, Gem.default_exec_format % e
223
+ assert_path_exists File.join bin_dir, e
193
224
  end
194
225
 
195
226
  default_dir = Gem.default_specifications_dir
@@ -199,21 +230,45 @@ class TestGemCommandsSetupCommand < Gem::TestCase
199
230
  assert_path_exists File.join(default_dir, "bundler-#{BUNDLER_VERS}.gemspec")
200
231
 
201
232
  # expect to not remove bundler-* gemspecs.
202
- assert_path_exists File.join(Gem.default_dir, "specifications", "bundler-audit-1.0.0.gemspec")
233
+ assert_path_exists File.join(Gem.dir, "specifications", "bundler-audit-1.0.0.gemspec")
203
234
 
204
235
  # expect to remove normal gem that was same version. because it's promoted default gems.
205
- refute_path_exists File.join(Gem.default_dir, "specifications", "bundler-#{BUNDLER_VERS}.gemspec")
236
+ refute_path_exists File.join(Gem.dir, "specifications", "bundler-#{BUNDLER_VERS}.gemspec")
237
+
238
+ assert_path_exists "#{Gem.dir}/gems/bundler-#{BUNDLER_VERS}"
239
+ assert_path_exists "#{Gem.dir}/gems/bundler-1.15.4"
240
+ assert_path_exists "#{Gem.dir}/gems/bundler-audit-1.0.0"
241
+ end
242
+
243
+ def test_install_default_bundler_gem_with_force_flag
244
+ @cmd.extend FileUtils
245
+
246
+ bin_dir = File.join(@gemhome, 'bin')
247
+ bundle_bin = File.join(bin_dir, 'bundle')
248
+
249
+ write_file bundle_bin do |f|
250
+ f.puts '#!/usr/bin/ruby'
251
+ f.puts ''
252
+ f.puts 'echo "hello"'
253
+ end
206
254
 
207
- # expect to install default gems. It location was `site_ruby` directory on real world.
208
- assert_path_exists "default/gems/bundler-#{BUNDLER_VERS}"
255
+ bindir(bin_dir) do
256
+ @cmd.options[:force] = true
209
257
 
210
- # expect to not remove other versions of bundler on `site_ruby`
211
- assert_path_exists 'default/gems/bundler-1.15.4'
258
+ @cmd.install_default_bundler_gem bin_dir
212
259
 
213
- # TODO: We need to assert to remove same version of bundler on gem_dir directory(It's not site_ruby dir)
260
+ bundler_spec = Gem::Specification.load("bundler/bundler.gemspec")
261
+ default_spec_path = File.join(Gem.default_specifications_dir, "#{bundler_spec.full_name}.gemspec")
262
+ spec = Gem::Specification.load(default_spec_path)
214
263
 
215
- # expect to not remove bundler-* direcotyr.
216
- assert_path_exists 'default/gems/bundler-audit-1.0.0'
264
+ spec.executables.each do |e|
265
+ if Gem.win_platform?
266
+ assert_path_exists File.join(bin_dir, "#{e}.bat")
267
+ end
268
+
269
+ assert_path_exists File.join bin_dir, e
270
+ end
271
+ end
217
272
  end
218
273
 
219
274
  def test_remove_old_lib_files
@@ -221,52 +276,53 @@ class TestGemCommandsSetupCommand < Gem::TestCase
221
276
  lib_rubygems = File.join lib, 'rubygems'
222
277
  lib_bundler = File.join lib, 'bundler'
223
278
  lib_rubygems_defaults = File.join lib_rubygems, 'defaults'
279
+ lib_bundler_templates = File.join lib_bundler, 'templates'
224
280
 
225
281
  securerandom_rb = File.join lib, 'securerandom.rb'
226
282
 
227
283
  engine_defaults_rb = File.join lib_rubygems_defaults, 'jruby.rb'
228
284
  os_defaults_rb = File.join lib_rubygems_defaults, 'operating_system.rb'
229
285
 
286
+ old_gauntlet_rubygems_rb = File.join lib, 'gauntlet_rubygems.rb'
287
+
230
288
  old_builder_rb = File.join lib_rubygems, 'builder.rb'
231
289
  old_format_rb = File.join lib_rubygems, 'format.rb'
232
290
  old_bundler_c_rb = File.join lib_bundler, 'c.rb'
291
+ old_bundler_ci = File.join lib_bundler_templates, '.lecacy_ci', 'config.yml'
233
292
 
234
- FileUtils.mkdir_p lib_rubygems_defaults
235
- FileUtils.mkdir_p lib_bundler
293
+ files_that_go = [old_gauntlet_rubygems_rb, old_builder_rb, old_format_rb, old_bundler_c_rb, old_bundler_ci]
294
+ files_that_stay = [securerandom_rb, engine_defaults_rb, os_defaults_rb]
236
295
 
237
- File.open securerandom_rb, 'w' do |io|
238
- io.puts '# securerandom.rb'
239
- end
296
+ create_dummy_files(files_that_go + files_that_stay)
240
297
 
241
- File.open old_builder_rb, 'w' do |io|
242
- io.puts '# builder.rb'
243
- end
298
+ @cmd.remove_old_lib_files lib
244
299
 
245
- File.open old_format_rb, 'w' do |io|
246
- io.puts '# format.rb'
247
- end
300
+ files_that_go.each {|file| refute_path_exists file }
248
301
 
249
- File.open old_bundler_c_rb, 'w' do |io|
250
- io.puts '# c.rb'
251
- end
302
+ files_that_stay.each {|file| assert_path_exists file }
303
+ end
252
304
 
253
- File.open engine_defaults_rb, 'w' do |io|
254
- io.puts '# jruby.rb'
255
- end
305
+ def test_remove_old_man_files
306
+ man = File.join @install_dir, 'man'
256
307
 
257
- File.open os_defaults_rb, 'w' do |io|
258
- io.puts '# operating_system.rb'
259
- end
308
+ ruby_1 = File.join man, 'man1', 'ruby.1'
309
+ bundle_b_1 = File.join man, 'man1', 'bundle-b.1'
310
+ bundle_b_1_ronn = File.join man, 'man1', 'bundle-b.1.ronn'
311
+ bundle_b_1_txt = File.join man, 'man1', 'bundle-b.1.txt'
312
+ gemfile_5 = File.join man, 'man5', 'gemfile.5'
313
+ gemfile_5_ronn = File.join man, 'man5', 'gemfile.5.ronn'
314
+ gemfile_5_txt = File.join man, 'man5', 'gemfile.5.txt'
260
315
 
261
- @cmd.remove_old_lib_files lib
316
+ files_that_go = [bundle_b_1_txt, gemfile_5_txt]
317
+ files_that_stay = [ruby_1, bundle_b_1, bundle_b_1_ronn, gemfile_5, gemfile_5_ronn]
318
+
319
+ create_dummy_files(files_that_go + files_that_stay)
262
320
 
263
- refute_path_exists old_builder_rb
264
- refute_path_exists old_format_rb
265
- refute_path_exists old_bundler_c_rb
321
+ @cmd.remove_old_man_files man
266
322
 
267
- assert_path_exists securerandom_rb
268
- assert_path_exists engine_defaults_rb
269
- assert_path_exists os_defaults_rb
323
+ files_that_go.each {|file| refute_path_exists file }
324
+
325
+ files_that_stay.each {|file| assert_path_exists file }
270
326
  end
271
327
 
272
328
  def test_show_release_notes
@@ -276,9 +332,7 @@ class TestGemCommandsSetupCommand < Gem::TestCase
276
332
  @cmd.options[:previous_version] = Gem::Version.new '2.0.2'
277
333
 
278
334
  File.open 'History.txt', 'w' do |io|
279
- io.puts <<-History_txt
280
- # coding: UTF-8
281
-
335
+ io.puts <<-HISTORY_TXT
282
336
  === #{Gem::VERSION} / 2013-03-26
283
337
 
284
338
  * Bug fixes:
@@ -294,7 +348,7 @@ class TestGemCommandsSetupCommand < Gem::TestCase
294
348
 
295
349
  * Bug fixes:
296
350
  * Yet more bugs fixed
297
- History_txt
351
+ HISTORY_TXT
298
352
  end
299
353
 
300
354
  use_ui @ui do
@@ -308,11 +362,6 @@ class TestGemCommandsSetupCommand < Gem::TestCase
308
362
  * Fixed release note display for LANG=C when installing rubygems
309
363
  * π is tasty
310
364
 
311
- === 2.0.2 / 2013-03-06
312
-
313
- * Bug fixes:
314
- * Other bugs fixed
315
-
316
365
  EXPECTED
317
366
 
318
367
  output = @ui.output
@@ -323,4 +372,47 @@ class TestGemCommandsSetupCommand < Gem::TestCase
323
372
  @ui.outs.set_encoding @default_external if @default_external
324
373
  end
325
374
 
375
+ private
376
+
377
+ def create_dummy_files(list)
378
+ list.each do |file|
379
+ FileUtils.mkdir_p File.dirname(file)
380
+
381
+ File.open file, 'w' do |io|
382
+ io.puts "# #{File.basename(file)}"
383
+ end
384
+ end
385
+ end
386
+
387
+ def gem_install(name)
388
+ gem = util_spec name do |s|
389
+ s.executables = [name]
390
+ s.files = %W[bin/#{name}]
391
+ end
392
+ write_file File.join @tempdir, 'bin', name do |f|
393
+ f.puts '#!/usr/bin/ruby'
394
+ end
395
+ install_gem gem
396
+ File.join @gemhome, 'bin', name
397
+ end
398
+
399
+ def gem_install_with_plugin(name)
400
+ gem = util_spec name do |s|
401
+ s.files = %W[lib/rubygems_plugin.rb]
402
+ end
403
+ write_file File.join @tempdir, 'lib', 'rubygems_plugin.rb' do |f|
404
+ f.puts "require '#{gem.plugins.first}'"
405
+ end
406
+ install_gem gem
407
+
408
+ File.join Gem.plugindir, "#{name}_plugin.rb"
409
+ end
410
+
411
+ def default_gem_bin_path
412
+ File.join @install_dir, 'bin', 'gem'
413
+ end
414
+
415
+ def default_bundle_bin_path
416
+ File.join @install_dir, 'bin', 'bundle'
417
+ end
326
418
  end unless Gem.java_platform?