rubygems-update 3.0.9 → 3.1.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (428) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +31 -8
  3. data/.travis.yml +9 -27
  4. data/CONTRIBUTING.md +13 -0
  5. data/History.txt +24 -28
  6. data/MAINTAINERS.txt +1 -6
  7. data/Manifest.txt +65 -15
  8. data/Rakefile +39 -23
  9. data/bin/gem +0 -6
  10. data/bundler/CHANGELOG.md +746 -570
  11. data/bundler/CODE_OF_CONDUCT.md +117 -23
  12. data/bundler/LICENSE.md +18 -19
  13. data/bundler/README.md +9 -8
  14. data/bundler/bundler.gemspec +8 -25
  15. data/bundler/exe/bundle +19 -3
  16. data/bundler/lib/bundler.rb +120 -67
  17. data/bundler/lib/bundler/build_metadata.rb +1 -3
  18. data/bundler/lib/bundler/capistrano.rb +4 -4
  19. data/bundler/lib/bundler/cli.rb +129 -121
  20. data/bundler/lib/bundler/cli/add.rb +27 -16
  21. data/bundler/lib/bundler/cli/common.rb +11 -12
  22. data/bundler/lib/bundler/cli/config.rb +161 -86
  23. data/bundler/lib/bundler/cli/console.rb +1 -1
  24. data/bundler/lib/bundler/cli/doctor.rb +4 -4
  25. data/bundler/lib/bundler/cli/exec.rb +4 -9
  26. data/bundler/lib/bundler/cli/gem.rb +5 -5
  27. data/bundler/lib/bundler/cli/info.rb +17 -5
  28. data/bundler/lib/bundler/cli/init.rb +1 -1
  29. data/bundler/lib/bundler/cli/install.rb +11 -10
  30. data/bundler/lib/bundler/cli/issue.rb +3 -3
  31. data/bundler/lib/bundler/cli/open.rb +10 -6
  32. data/bundler/lib/bundler/cli/outdated.rb +85 -81
  33. data/bundler/lib/bundler/cli/package.rb +8 -9
  34. data/bundler/lib/bundler/cli/plugin.rb +9 -2
  35. data/bundler/lib/bundler/cli/pristine.rb +1 -1
  36. data/bundler/lib/bundler/cli/show.rb +1 -1
  37. data/bundler/lib/bundler/cli/update.rb +31 -11
  38. data/bundler/lib/bundler/compact_index_client.rb +25 -9
  39. data/bundler/lib/bundler/compact_index_client/updater.rb +2 -6
  40. data/bundler/lib/bundler/current_ruby.rb +9 -7
  41. data/bundler/lib/bundler/definition.rb +35 -26
  42. data/bundler/lib/bundler/dependency.rb +16 -4
  43. data/bundler/lib/bundler/deployment.rb +1 -1
  44. data/bundler/lib/bundler/dsl.rb +15 -39
  45. data/bundler/lib/bundler/env.rb +8 -13
  46. data/bundler/lib/bundler/environment_preserver.rb +0 -1
  47. data/bundler/lib/bundler/feature_flag.rb +23 -34
  48. data/bundler/lib/bundler/fetcher.rb +14 -11
  49. data/bundler/lib/bundler/fetcher/compact_index.rb +26 -12
  50. data/bundler/lib/bundler/fetcher/dependency.rb +1 -1
  51. data/bundler/lib/bundler/fetcher/downloader.rb +4 -1
  52. data/bundler/lib/bundler/fetcher/index.rb +4 -2
  53. data/bundler/lib/bundler/friendly_errors.rb +4 -5
  54. data/bundler/lib/bundler/gem_helper.rb +39 -24
  55. data/bundler/lib/bundler/gem_helpers.rb +2 -4
  56. data/bundler/lib/bundler/gem_tasks.rb +1 -1
  57. data/bundler/lib/bundler/gem_version_promoter.rb +3 -3
  58. data/bundler/lib/bundler/graph.rb +2 -2
  59. data/bundler/lib/bundler/injector.rb +10 -8
  60. data/bundler/lib/bundler/inline.rb +19 -18
  61. data/bundler/lib/bundler/installer.rb +7 -14
  62. data/bundler/lib/bundler/installer/gem_installer.rb +5 -1
  63. data/bundler/lib/bundler/installer/parallel_installer.rb +4 -8
  64. data/bundler/lib/bundler/installer/standalone.rb +1 -2
  65. data/bundler/lib/bundler/lazy_specification.rb +2 -2
  66. data/bundler/lib/bundler/lockfile_parser.rb +13 -21
  67. data/bundler/lib/bundler/match_platform.rb +1 -1
  68. data/bundler/lib/bundler/plugin.rb +42 -29
  69. data/bundler/lib/bundler/plugin/api.rb +1 -1
  70. data/bundler/lib/bundler/plugin/api/source.rb +2 -2
  71. data/bundler/lib/bundler/plugin/index.rb +14 -3
  72. data/bundler/lib/bundler/plugin/installer.rb +28 -15
  73. data/bundler/lib/bundler/psyched_yaml.rb +1 -1
  74. data/bundler/lib/bundler/resolver.rb +72 -24
  75. data/bundler/lib/bundler/resolver/spec_group.rb +3 -2
  76. data/bundler/lib/bundler/retry.rb +2 -2
  77. data/bundler/lib/bundler/ruby_version.rb +4 -19
  78. data/bundler/lib/bundler/rubygems_ext.rb +10 -66
  79. data/bundler/lib/bundler/rubygems_gem_installer.rb +1 -8
  80. data/bundler/lib/bundler/rubygems_integration.rb +144 -395
  81. data/bundler/lib/bundler/runtime.rb +2 -9
  82. data/bundler/lib/bundler/settings.rb +15 -47
  83. data/bundler/lib/bundler/setup.rb +6 -5
  84. data/bundler/lib/bundler/shared_helpers.rb +58 -71
  85. data/bundler/lib/bundler/similarity_detector.rb +2 -2
  86. data/bundler/lib/bundler/source.rb +5 -5
  87. data/bundler/lib/bundler/source/git.rb +19 -12
  88. data/bundler/lib/bundler/source/git/git_proxy.rb +35 -39
  89. data/bundler/lib/bundler/source/metadata.rb +7 -2
  90. data/bundler/lib/bundler/source/path.rb +13 -8
  91. data/bundler/lib/bundler/source/rubygems.rb +11 -5
  92. data/bundler/lib/bundler/source/rubygems/remote.rb +1 -2
  93. data/bundler/lib/bundler/source_list.rb +9 -12
  94. data/bundler/lib/bundler/spec_set.rb +23 -12
  95. data/bundler/lib/bundler/stub_specification.rb +18 -30
  96. data/bundler/lib/bundler/templates/Executable.bundler +23 -14
  97. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +3 -3
  98. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +8 -2
  99. data/bundler/lib/bundler/templates/newgem/README.md.tt +4 -3
  100. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +6 -27
  101. data/bundler/lib/bundler/templates/newgem/test/test_helper.rb.tt +1 -1
  102. data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -1
  103. data/bundler/lib/bundler/ui.rb +3 -3
  104. data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
  105. data/bundler/lib/bundler/ui/shell.rb +4 -8
  106. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +161 -0
  107. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +66 -0
  108. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +176 -0
  109. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
  110. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +151 -48
  111. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils/version.rb +5 -0
  112. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +6 -6
  113. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +2 -2
  114. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
  115. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
  116. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
  117. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
  118. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +6 -6
  119. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
  120. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +1 -1
  121. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +30 -8
  122. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
  123. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +4 -4
  124. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +2 -2
  125. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +248 -279
  126. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +40 -0
  127. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +53 -0
  128. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
  129. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +7 -2
  130. data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +21 -11
  131. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +1 -1
  132. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +1 -1
  133. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +1 -1
  134. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +11 -2
  135. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -1
  136. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +16 -17
  137. data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +82 -0
  138. data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +3 -3
  139. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor.rb +2 -2
  140. data/bundler/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
  141. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +7 -2
  142. data/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +6 -6
  143. data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +4 -4
  144. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +52 -7
  145. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +1 -1
  146. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +1 -1
  147. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
  148. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  149. data/bundler/lib/bundler/vendored_fileutils.rb +1 -6
  150. data/bundler/lib/bundler/vendored_molinillo.rb +1 -1
  151. data/bundler/lib/bundler/vendored_persistent.rb +7 -5
  152. data/bundler/lib/bundler/vendored_thor.rb +2 -2
  153. data/bundler/lib/bundler/version.rb +1 -20
  154. data/bundler/lib/bundler/version_ranges.rb +51 -5
  155. data/bundler/lib/bundler/vlad.rb +2 -2
  156. data/bundler/lib/bundler/worker.rb +1 -3
  157. data/bundler/lib/bundler/yaml_serializer.rb +2 -3
  158. data/bundler/man/bundle-add.1 +66 -0
  159. data/bundler/man/bundle-add.1.txt +58 -0
  160. data/bundler/man/bundle-add.ronn +7 -1
  161. data/bundler/man/bundle-binstubs.1 +40 -0
  162. data/bundler/man/bundle-binstubs.1.txt +48 -0
  163. data/bundler/man/bundle-binstubs.ronn +1 -1
  164. data/bundler/man/bundle-check.1 +31 -0
  165. data/bundler/man/bundle-check.1.txt +33 -0
  166. data/bundler/man/bundle-clean.1 +24 -0
  167. data/bundler/man/bundle-clean.1.txt +26 -0
  168. data/bundler/man/bundle-config.1 +497 -0
  169. data/bundler/man/bundle-config.1.txt +528 -0
  170. data/bundler/man/bundle-config.ronn +42 -40
  171. data/bundler/man/bundle-doctor.1 +44 -0
  172. data/bundler/man/bundle-doctor.1.txt +44 -0
  173. data/bundler/man/bundle-exec.1 +165 -0
  174. data/bundler/man/bundle-exec.1.txt +178 -0
  175. data/bundler/man/bundle-exec.ronn +1 -1
  176. data/bundler/man/bundle-gem.1 +80 -0
  177. data/bundler/man/bundle-gem.1.txt +91 -0
  178. data/bundler/man/bundle-info.1 +20 -0
  179. data/bundler/man/bundle-info.1.txt +21 -0
  180. data/bundler/man/bundle-init.1 +25 -0
  181. data/bundler/man/bundle-init.1.txt +34 -0
  182. data/bundler/man/bundle-init.ronn +1 -1
  183. data/bundler/man/bundle-inject.1 +33 -0
  184. data/bundler/man/bundle-inject.1.txt +32 -0
  185. data/bundler/man/bundle-install.1 +311 -0
  186. data/bundler/man/bundle-install.1.txt +401 -0
  187. data/bundler/man/bundle-install.ronn +9 -4
  188. data/bundler/man/bundle-list.1 +50 -0
  189. data/bundler/man/bundle-list.1.txt +43 -0
  190. data/bundler/man/bundle-lock.1 +84 -0
  191. data/bundler/man/bundle-lock.1.txt +93 -0
  192. data/bundler/man/bundle-open.1 +32 -0
  193. data/bundler/man/bundle-open.1.txt +29 -0
  194. data/bundler/man/bundle-outdated.1 +155 -0
  195. data/bundler/man/bundle-outdated.1.txt +131 -0
  196. data/bundler/man/bundle-package.1 +55 -0
  197. data/bundler/man/bundle-package.1.txt +79 -0
  198. data/bundler/man/bundle-platform.1 +61 -0
  199. data/bundler/man/bundle-platform.1.txt +57 -0
  200. data/bundler/man/bundle-pristine.1 +34 -0
  201. data/bundler/man/bundle-pristine.1.txt +44 -0
  202. data/bundler/man/bundle-remove.1 +31 -0
  203. data/bundler/man/bundle-remove.1.txt +34 -0
  204. data/bundler/man/bundle-show.1 +23 -0
  205. data/bundler/man/bundle-show.1.txt +27 -0
  206. data/bundler/man/bundle-update.1 +394 -0
  207. data/bundler/man/bundle-update.1.txt +390 -0
  208. data/bundler/man/bundle-update.ronn +3 -3
  209. data/bundler/man/bundle-viz.1 +39 -0
  210. data/bundler/man/bundle-viz.1.txt +39 -0
  211. data/bundler/man/bundle.1 +136 -0
  212. data/bundler/man/bundle.1.txt +116 -0
  213. data/bundler/man/bundle.ronn +2 -2
  214. data/bundler/man/gemfile.5 +686 -0
  215. data/bundler/man/gemfile.5.ronn +14 -18
  216. data/bundler/man/gemfile.5.txt +649 -0
  217. data/bundler/man/index.txt +25 -0
  218. data/lib/rubygems.rb +80 -48
  219. data/lib/rubygems/available_set.rb +1 -0
  220. data/lib/rubygems/basic_specification.rb +17 -6
  221. data/lib/rubygems/bundler_version_finder.rb +5 -0
  222. data/lib/rubygems/command.rb +34 -5
  223. data/lib/rubygems/command_manager.rb +0 -6
  224. data/lib/rubygems/commands/build_command.rb +21 -8
  225. data/lib/rubygems/commands/cert_command.rb +0 -1
  226. data/lib/rubygems/commands/cleanup_command.rb +7 -7
  227. data/lib/rubygems/commands/contents_command.rb +3 -3
  228. data/lib/rubygems/commands/dependency_command.rb +4 -3
  229. data/lib/rubygems/commands/environment_command.rb +0 -3
  230. data/lib/rubygems/commands/info_command.rb +2 -0
  231. data/lib/rubygems/commands/install_command.rb +12 -52
  232. data/lib/rubygems/commands/lock_command.rb +2 -2
  233. data/lib/rubygems/commands/mirror_command.rb +1 -0
  234. data/lib/rubygems/commands/open_command.rb +2 -1
  235. data/lib/rubygems/commands/outdated_command.rb +1 -0
  236. data/lib/rubygems/commands/owner_command.rb +2 -7
  237. data/lib/rubygems/commands/pristine_command.rb +3 -0
  238. data/lib/rubygems/commands/push_command.rb +4 -6
  239. data/lib/rubygems/commands/query_command.rb +94 -80
  240. data/lib/rubygems/commands/rdoc_command.rb +1 -0
  241. data/lib/rubygems/commands/setup_command.rb +10 -8
  242. data/lib/rubygems/commands/signin_command.rb +1 -0
  243. data/lib/rubygems/commands/specification_command.rb +1 -0
  244. data/lib/rubygems/commands/stale_command.rb +2 -0
  245. data/lib/rubygems/commands/uninstall_command.rb +1 -0
  246. data/lib/rubygems/commands/unpack_command.rb +2 -29
  247. data/lib/rubygems/commands/update_command.rb +14 -14
  248. data/lib/rubygems/commands/which_command.rb +1 -0
  249. data/lib/rubygems/commands/yank_command.rb +8 -2
  250. data/lib/rubygems/compatibility.rb +4 -4
  251. data/lib/rubygems/config_file.rb +28 -23
  252. data/lib/rubygems/core_ext/kernel_gem.rb +2 -5
  253. data/lib/rubygems/core_ext/kernel_require.rb +29 -2
  254. data/lib/rubygems/core_ext/kernel_warn.rb +10 -4
  255. data/lib/rubygems/defaults.rb +10 -17
  256. data/lib/rubygems/dependency.rb +21 -6
  257. data/lib/rubygems/dependency_installer.rb +19 -102
  258. data/lib/rubygems/dependency_list.rb +11 -10
  259. data/lib/rubygems/deprecate.rb +5 -5
  260. data/lib/rubygems/errors.rb +11 -2
  261. data/lib/rubygems/exceptions.rb +9 -0
  262. data/lib/rubygems/ext/builder.rb +24 -43
  263. data/lib/rubygems/ext/cmake_builder.rb +2 -0
  264. data/lib/rubygems/ext/ext_conf_builder.rb +11 -9
  265. data/lib/rubygems/ext/rake_builder.rb +1 -1
  266. data/lib/rubygems/gemcutter_utilities.rb +19 -26
  267. data/lib/rubygems/indexer.rb +9 -5
  268. data/lib/rubygems/installer.rb +26 -13
  269. data/lib/rubygems/installer_test_case.rb +86 -38
  270. data/lib/rubygems/local_remote_options.rb +1 -1
  271. data/lib/rubygems/mock_gem_ui.rb +4 -1
  272. data/lib/rubygems/name_tuple.rb +1 -0
  273. data/lib/rubygems/package.rb +37 -9
  274. data/lib/rubygems/package/tar_writer.rb +4 -4
  275. data/lib/rubygems/path_support.rb +2 -0
  276. data/lib/rubygems/platform.rb +2 -1
  277. data/lib/rubygems/psych_tree.rb +2 -0
  278. data/lib/rubygems/remote_fetcher.rb +5 -1
  279. data/lib/rubygems/request.rb +5 -3
  280. data/lib/rubygems/request/connection_pools.rb +4 -4
  281. data/lib/rubygems/request/http_pool.rb +1 -0
  282. data/lib/rubygems/request/https_pool.rb +2 -0
  283. data/lib/rubygems/request_set.rb +2 -2
  284. data/lib/rubygems/request_set/gem_dependency_api.rb +2 -2
  285. data/lib/rubygems/request_set/lockfile.rb +5 -2
  286. data/lib/rubygems/request_set/lockfile/parser.rb +4 -2
  287. data/lib/rubygems/request_set/lockfile/tokenizer.rb +2 -0
  288. data/lib/rubygems/requirement.rb +20 -18
  289. data/lib/rubygems/resolver.rb +4 -5
  290. data/lib/rubygems/resolver/activation_request.rb +19 -49
  291. data/lib/rubygems/resolver/best_set.rb +2 -2
  292. data/lib/rubygems/resolver/conflict.rb +0 -5
  293. data/lib/rubygems/resolver/installer_set.rb +3 -3
  294. data/lib/rubygems/resolver/lock_set.rb +1 -1
  295. data/lib/rubygems/resolver/lock_specification.rb +2 -2
  296. data/lib/rubygems/resolver/requirement_list.rb +1 -0
  297. data/lib/rubygems/resolver/specification.rb +1 -0
  298. data/lib/rubygems/resolver/stats.rb +2 -0
  299. data/lib/rubygems/security/signer.rb +3 -2
  300. data/lib/rubygems/server.rb +5 -4
  301. data/lib/rubygems/source_list.rb +1 -0
  302. data/lib/rubygems/spec_fetcher.rb +3 -16
  303. data/lib/rubygems/specification.rb +69 -133
  304. data/lib/rubygems/specification_policy.rb +7 -2
  305. data/{bundler/lib/bundler → lib/rubygems}/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +0 -0
  306. data/{bundler/lib/bundler → lib/rubygems}/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -0
  307. data/{bundler/lib/bundler → lib/rubygems}/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -0
  308. data/lib/rubygems/stub_specification.rb +5 -2
  309. data/lib/rubygems/syck_hack.rb +2 -0
  310. data/lib/rubygems/test_case.rb +78 -227
  311. data/lib/rubygems/test_utilities.rb +17 -6
  312. data/lib/rubygems/text.rb +2 -3
  313. data/lib/rubygems/uninstaller.rb +15 -15
  314. data/lib/rubygems/user_interaction.rb +9 -1
  315. data/lib/rubygems/util.rb +5 -41
  316. data/lib/rubygems/util/licenses.rb +398 -396
  317. data/lib/rubygems/util/list.rb +2 -0
  318. data/lib/rubygems/validator.rb +9 -29
  319. data/lib/rubygems/version.rb +5 -3
  320. data/rubygems-update.gemspec +3 -3
  321. data/test/rubygems/plugin/load/rubygems_plugin.rb +2 -0
  322. data/test/rubygems/test_bundled_ca.rb +4 -7
  323. data/test/rubygems/test_deprecate.rb +3 -0
  324. data/test/rubygems/test_gem.rb +183 -176
  325. data/test/rubygems/test_gem_available_set.rb +3 -2
  326. data/test/rubygems/test_gem_bundler_version_finder.rb +3 -1
  327. data/test/rubygems/test_gem_command.rb +94 -5
  328. data/test/rubygems/test_gem_command_manager.rb +5 -13
  329. data/test/rubygems/test_gem_commands_build_command.rb +142 -4
  330. data/test/rubygems/test_gem_commands_cert_command.rb +15 -1
  331. data/test/rubygems/test_gem_commands_cleanup_command.rb +22 -6
  332. data/test/rubygems/test_gem_commands_dependency_command.rb +1 -1
  333. data/test/rubygems/test_gem_commands_environment_command.rb +1 -11
  334. data/test/rubygems/test_gem_commands_help_command.rb +2 -0
  335. data/test/rubygems/test_gem_commands_info_command.rb +1 -0
  336. data/test/rubygems/test_gem_commands_install_command.rb +207 -2
  337. data/test/rubygems/test_gem_commands_mirror.rb +1 -0
  338. data/test/rubygems/test_gem_commands_outdated_command.rb +1 -0
  339. data/test/rubygems/test_gem_commands_owner_command.rb +4 -5
  340. data/test/rubygems/test_gem_commands_pristine_command.rb +56 -4
  341. data/test/rubygems/test_gem_commands_push_command.rb +19 -14
  342. data/test/rubygems/test_gem_commands_query_command.rb +27 -2
  343. data/test/rubygems/test_gem_commands_setup_command.rb +62 -37
  344. data/test/rubygems/test_gem_commands_signin_command.rb +5 -4
  345. data/test/rubygems/test_gem_commands_sources_command.rb +20 -6
  346. data/test/rubygems/test_gem_commands_uninstall_command.rb +107 -50
  347. data/test/rubygems/test_gem_commands_update_command.rb +86 -23
  348. data/test/rubygems/test_gem_commands_yank_command.rb +46 -1
  349. data/test/rubygems/test_gem_config_file.rb +9 -2
  350. data/test/rubygems/test_gem_dependency.rb +6 -0
  351. data/test/rubygems/test_gem_dependency_installer.rb +67 -36
  352. data/test/rubygems/test_gem_dependency_list.rb +21 -14
  353. data/test/rubygems/test_gem_ext_builder.rb +5 -1
  354. data/test/rubygems/test_gem_ext_cmake_builder.rb +2 -0
  355. data/test/rubygems/test_gem_ext_configure_builder.rb +8 -0
  356. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +12 -0
  357. data/test/rubygems/test_gem_ext_rake_builder.rb +2 -0
  358. data/test/rubygems/test_gem_gemcutter_utilities.rb +8 -8
  359. data/test/rubygems/test_gem_indexer.rb +31 -40
  360. data/test/rubygems/test_gem_install_update_options.rb +31 -17
  361. data/test/rubygems/test_gem_installer.rb +383 -223
  362. data/test/rubygems/test_gem_package.rb +99 -14
  363. data/test/rubygems/test_gem_package_old.rb +57 -54
  364. data/test/rubygems/test_gem_package_tar_reader_entry.rb +6 -5
  365. data/test/rubygems/test_gem_package_tar_writer.rb +11 -6
  366. data/test/rubygems/test_gem_path_support.rb +19 -13
  367. data/test/rubygems/test_gem_platform.rb +4 -2
  368. data/test/rubygems/test_gem_rdoc.rb +1 -0
  369. data/test/rubygems/test_gem_remote_fetcher.rb +29 -16
  370. data/test/rubygems/test_gem_request.rb +19 -4
  371. data/test/rubygems/test_gem_request_connection_pools.rb +6 -2
  372. data/test/rubygems/test_gem_request_set.rb +33 -8
  373. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +1 -1
  374. data/test/rubygems/test_gem_request_set_lockfile.rb +1 -0
  375. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +2 -1
  376. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +2 -0
  377. data/test/rubygems/test_gem_requirement.rb +7 -1
  378. data/test/rubygems/test_gem_resolver.rb +67 -23
  379. data/test/rubygems/test_gem_resolver_activation_request.rb +3 -32
  380. data/test/rubygems/test_gem_resolver_conflict.rb +0 -4
  381. data/test/rubygems/test_gem_resolver_git_specification.rb +1 -0
  382. data/test/rubygems/test_gem_resolver_index_specification.rb +7 -2
  383. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -1
  384. data/test/rubygems/test_gem_resolver_installer_set.rb +3 -1
  385. data/test/rubygems/test_gem_resolver_specification.rb +2 -0
  386. data/test/rubygems/test_gem_security.rb +6 -2
  387. data/test/rubygems/test_gem_security_signer.rb +1 -0
  388. data/test/rubygems/test_gem_server.rb +7 -2
  389. data/test/rubygems/test_gem_silent_ui.rb +1 -0
  390. data/test/rubygems/test_gem_source.rb +7 -7
  391. data/test/rubygems/test_gem_source_fetch_problem.rb +1 -0
  392. data/test/rubygems/test_gem_source_git.rb +4 -9
  393. data/test/rubygems/test_gem_source_installed.rb +6 -6
  394. data/test/rubygems/test_gem_source_list.rb +1 -0
  395. data/test/rubygems/test_gem_source_local.rb +5 -4
  396. data/test/rubygems/test_gem_source_lock.rb +12 -12
  397. data/test/rubygems/test_gem_source_specific_file.rb +7 -6
  398. data/test/rubygems/test_gem_source_vendor.rb +4 -4
  399. data/test/rubygems/test_gem_specification.rb +75 -43
  400. data/test/rubygems/test_gem_stream_ui.rb +2 -0
  401. data/test/rubygems/test_gem_stub_specification.rb +3 -1
  402. data/test/rubygems/test_gem_text.rb +1 -0
  403. data/test/rubygems/test_gem_uninstaller.rb +31 -10
  404. data/test/rubygems/test_gem_util.rb +6 -4
  405. data/test/rubygems/test_gem_validator.rb +3 -4
  406. data/test/rubygems/test_gem_version.rb +16 -8
  407. data/test/rubygems/test_kernel.rb +1 -0
  408. data/test/rubygems/test_rake_package.rb +26 -0
  409. data/test/rubygems/test_remote_fetch_error.rb +1 -0
  410. data/test/rubygems/test_require.rb +107 -3
  411. data/util/bisect +31 -0
  412. data/util/ci.sh +50 -0
  413. data/util/generate_spdx_license_list.rb +4 -2
  414. data/util/rubocop +2 -2
  415. data/util/update_bundled_ca_certificates.rb +3 -1
  416. metadata +97 -25
  417. data/appveyor.yml +0 -43
  418. data/bundler/CONTRIBUTING.md +0 -17
  419. data/bundler/exe/bundle_ruby +0 -60
  420. data/bundler/lib/bundler/cli/cache.rb +0 -36
  421. data/bundler/lib/bundler/compatibility_guard.rb +0 -14
  422. data/bundler/lib/bundler/ssl_certs/.document +0 -1
  423. data/bundler/lib/bundler/ssl_certs/certificate_manager.rb +0 -66
  424. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb +0 -27
  425. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb +0 -129
  426. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA.pem +0 -21
  427. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +0 -21
  428. data/util/ci +0 -82
@@ -4,6 +4,7 @@ require 'rubygems/user_interaction'
4
4
  require 'timeout'
5
5
 
6
6
  class TestGemStreamUI < Gem::TestCase
7
+
7
8
  SHORT_TIMEOUT = (defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled?) ? 1.0 : 0.1 # increase timeout with MJIT for --jit-wait testing
8
9
 
9
10
  module IsTty
@@ -219,4 +220,5 @@ class TestGemStreamUI < Gem::TestCase
219
220
  reporter.fetch 'a.gem', 1024
220
221
  assert_equal "", @out.string
221
222
  end
223
+
222
224
  end
@@ -3,6 +3,7 @@ require "rubygems/test_case"
3
3
  require "rubygems/stub_specification"
4
4
 
5
5
  class TestStubSpecification < Gem::TestCase
6
+
6
7
  SPECIFICATIONS = File.expand_path(File.join("..", "specifications"), __FILE__)
7
8
  FOO = File.join SPECIFICATIONS, "foo-0.0.1-x86-mswin32.gemspec"
8
9
  BAR = File.join SPECIFICATIONS, "bar-0.0.2.gemspec"
@@ -66,6 +67,7 @@ class TestStubSpecification < Gem::TestCase
66
67
  end
67
68
 
68
69
  def test_contains_requirable_file_eh_extension
70
+ skip "I guess making the stub match the running platform should work" if Gem.java_platform?
69
71
  stub_with_extension do |stub|
70
72
  _, err = capture_io do
71
73
  refute stub.contains_requirable_file? 'nonexistent'
@@ -121,8 +123,8 @@ class TestStubSpecification < Gem::TestCase
121
123
  end
122
124
  end
123
125
 
124
-
125
126
  def test_missing_extensions_eh
127
+ skip "I guess making the stub match the running platform should work" if Gem.java_platform?
126
128
  stub = stub_with_extension do |s|
127
129
  extconf_rb = File.join s.gem_dir, s.extensions.first
128
130
  FileUtils.mkdir_p File.dirname extconf_rb
@@ -3,6 +3,7 @@ require 'rubygems/test_case'
3
3
  require "rubygems/text"
4
4
 
5
5
  class TestGemText < Gem::TestCase
6
+
6
7
  include Gem::Text
7
8
 
8
9
  def test_format_text
@@ -6,6 +6,8 @@ class TestGemUninstaller < Gem::InstallerTestCase
6
6
 
7
7
  def setup
8
8
  super
9
+ @installer = setup_base_installer
10
+ @user_installer = setup_base_user_installer
9
11
  common_installer_setup
10
12
 
11
13
  build_rake_in do
@@ -219,13 +221,13 @@ class TestGemUninstaller < Gem::InstallerTestCase
219
221
 
220
222
  uninstaller = Gem::Uninstaller.new spec.name, :executables => true
221
223
 
222
- e = assert_raises Gem::InstallError do
224
+ use_ui @ui do
223
225
  uninstaller.uninstall
224
226
  end
225
227
 
226
- assert_equal 'gem "default" cannot be uninstalled ' +
227
- 'because it is a default gem',
228
- e.message
228
+ lines = @ui.output.split("\n")
229
+
230
+ assert_equal 'Gem default-2 cannot be uninstalled because it is a default gem', lines.shift
229
231
  end
230
232
 
231
233
  def test_uninstall_default_gem_with_same_version
@@ -387,7 +389,10 @@ create_makefile '#{@spec.name}'
387
389
  end
388
390
 
389
391
  def test_uninstall_prompts_about_broken_deps
390
- quick_gem 'r', '1' do |s| s.add_dependency 'q', '= 1' end
392
+ quick_gem 'r', '1' do |s|
393
+ s.add_dependency 'q', '= 1'
394
+ end
395
+
391
396
  quick_gem 'q', '1'
392
397
 
393
398
  un = Gem::Uninstaller.new('q')
@@ -409,8 +414,14 @@ create_makefile '#{@spec.name}'
409
414
  end
410
415
 
411
416
  def test_uninstall_only_lists_unsatisfied_deps
412
- quick_gem 'r', '1' do |s| s.add_dependency 'q', '~> 1.0' end
413
- quick_gem 'x', '1' do |s| s.add_dependency 'q', '= 1.0' end
417
+ quick_gem 'r', '1' do |s|
418
+ s.add_dependency 'q', '~> 1.0'
419
+ end
420
+
421
+ quick_gem 'x', '1' do |s|
422
+ s.add_dependency 'q', '= 1.0'
423
+ end
424
+
414
425
  quick_gem 'q', '1.0'
415
426
  quick_gem 'q', '1.1'
416
427
 
@@ -433,7 +444,10 @@ create_makefile '#{@spec.name}'
433
444
  end
434
445
 
435
446
  def test_uninstall_doesnt_prompt_when_other_gem_satisfies_requirement
436
- quick_gem 'r', '1' do |s| s.add_dependency 'q', '~> 1.0' end
447
+ quick_gem 'r', '1' do |s|
448
+ s.add_dependency 'q', '~> 1.0'
449
+ end
450
+
437
451
  quick_gem 'q', '1.0'
438
452
  quick_gem 'q', '1.1'
439
453
 
@@ -450,7 +464,10 @@ create_makefile '#{@spec.name}'
450
464
  end
451
465
 
452
466
  def test_uninstall_doesnt_prompt_when_removing_a_dev_dep
453
- quick_gem 'r', '1' do |s| s.add_development_dependency 'q', '= 1.0' end
467
+ quick_gem 'r', '1' do |s|
468
+ s.add_development_dependency 'q', '= 1.0'
469
+ end
470
+
454
471
  quick_gem 'q', '1.0'
455
472
 
456
473
  un = Gem::Uninstaller.new('q', :version => "1.0")
@@ -466,7 +483,10 @@ create_makefile '#{@spec.name}'
466
483
  end
467
484
 
468
485
  def test_uninstall_doesnt_prompt_and_raises_when_abort_on_dependent_set
469
- quick_gem 'r', '1' do |s| s.add_dependency 'q', '= 1' end
486
+ quick_gem 'r', '1' do |s|
487
+ s.add_dependency 'q', '= 1'
488
+ end
489
+
470
490
  quick_gem 'q', '1'
471
491
 
472
492
  un = Gem::Uninstaller.new('q', :abort_on_dependent => true)
@@ -521,4 +541,5 @@ create_makefile '#{@spec.name}'
521
541
  end
522
542
  end
523
543
  end
544
+
524
545
  end
@@ -5,6 +5,7 @@ require 'rubygems/util'
5
5
  class TestGemUtil < Gem::TestCase
6
6
 
7
7
  def test_class_popen
8
+ skip "popen with a block does not behave well on jruby" if Gem.java_platform?
8
9
  assert_equal "0\n", Gem::Util.popen(Gem.ruby, '-I', File.expand_path('../../../lib', __FILE__), '-e', 'p 0')
9
10
 
10
11
  assert_raises Errno::ECHILD do
@@ -13,6 +14,7 @@ class TestGemUtil < Gem::TestCase
13
14
  end
14
15
 
15
16
  def test_silent_system
17
+ skip if Gem.java_platform?
16
18
  assert_silent do
17
19
  Gem::Util.silent_system Gem.ruby, '-I', File.expand_path('../../../lib', __FILE__), '-e', 'puts "hello"; warn "hello"'
18
20
  end
@@ -30,7 +32,7 @@ class TestGemUtil < Gem::TestCase
30
32
  end
31
33
 
32
34
  def test_traverse_parents_does_not_crash_on_permissions_error
33
- skip 'skipped on MS Windows (chmod has no effect)' if win_platform?
35
+ skip 'skipped on MS Windows (chmod has no effect)' if win_platform? || java_platform?
34
36
 
35
37
  FileUtils.mkdir_p 'd/e/f'
36
38
  # remove 'execute' permission from "e" directory and make it
@@ -47,13 +49,13 @@ class TestGemUtil < Gem::TestCase
47
49
  assert_equal File.realpath("..", Dir.tmpdir), paths[3]
48
50
  ensure
49
51
  # restore default permissions, allow the directory to be removed
50
- FileUtils.chmod(0775, 'd/e') unless win_platform?
52
+ FileUtils.chmod(0775, 'd/e') unless win_platform? || java_platform?
51
53
  end
52
54
 
53
55
  def test_linked_list_find
54
- list = [1,2,3,4,5].inject(Gem::List.new(0)) { |m,o|
56
+ list = [1,2,3,4,5].inject(Gem::List.new(0)) do |m,o|
55
57
  Gem::List.new o, m
56
- }
58
+ end
57
59
  assert_equal 5, list.find { |x| x == 5 }
58
60
  assert_equal 4, list.find { |x| x == 4 }
59
61
  end
@@ -1,14 +1,13 @@
1
1
  # frozen_string_literal: true
2
- require 'rubygems/test_case'
3
- require "rubygems/simple_gem"
4
- require 'rubygems/validator'
2
+
3
+ require "rubygems/test_case"
4
+ require "rubygems/validator"
5
5
 
6
6
  class TestGemValidator < Gem::TestCase
7
7
 
8
8
  def setup
9
9
  super
10
10
 
11
- @simple_gem = SIMPLE_GEM
12
11
  @validator = Gem::Validator.new
13
12
  end
14
13
 
@@ -148,14 +148,21 @@ class TestGemVersion < Gem::TestCase
148
148
  end
149
149
 
150
150
  def test_spaceship
151
- assert_equal( 0, v("1.0") <=> v("1.0.0"))
152
- assert_equal( 1, v("1.0") <=> v("1.0.a"))
153
- assert_equal( 1, v("1.8.2") <=> v("0.0.0"))
154
- assert_equal( 1, v("1.8.2") <=> v("1.8.2.a"))
155
- assert_equal( 1, v("1.8.2.b") <=> v("1.8.2.a"))
156
- assert_equal(-1, v("1.8.2.a") <=> v("1.8.2"))
157
- assert_equal( 1, v("1.8.2.a10") <=> v("1.8.2.a9"))
158
- assert_equal( 0, v("") <=> v("0"))
151
+ assert_equal(0, v("1.0") <=> v("1.0.0"))
152
+ assert_equal(1, v("1.0") <=> v("1.0.a"))
153
+ assert_equal(1, v("1.8.2") <=> v("0.0.0"))
154
+ assert_equal(1, v("1.8.2") <=> v("1.8.2.a"))
155
+ assert_equal(1, v("1.8.2.b") <=> v("1.8.2.a"))
156
+ assert_equal(-1, v("1.8.2.a") <=> v("1.8.2"))
157
+ assert_equal(1, v("1.8.2.a10") <=> v("1.8.2.a9"))
158
+ assert_equal(0, v("") <=> v("0"))
159
+
160
+ assert_equal(0, v("0.beta.1") <=> v("0.0.beta.1"))
161
+ assert_equal(-1, v("0.0.beta") <=> v("0.0.beta.1"))
162
+ assert_equal(-1, v("0.0.beta") <=> v("0.beta.1"))
163
+
164
+ assert_equal(-1, v("5.a") <=> v("5.0.0.rc2"))
165
+ assert_equal(1, v("5.x") <=> v("5.0.0.rc2"))
159
166
 
160
167
  assert_nil v("1.0") <=> "whatever"
161
168
  end
@@ -284,4 +291,5 @@ class TestGemVersion < Gem::TestCase
284
291
  def refute_version_equal(unexpected, actual)
285
292
  refute_equal v(unexpected), v(actual)
286
293
  end
294
+
287
295
  end
@@ -120,4 +120,5 @@ class TestKernel < Gem::TestCase
120
120
  assert $:.any? { |p| %r{bundler-1/lib} =~ p }
121
121
  end
122
122
  end
123
+
123
124
  end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rubygems/test_case"
4
+ require "open3"
5
+
6
+ class TestRakePackage < Minitest::Test
7
+
8
+ def test_builds_ok
9
+ skip unless File.exist?(File.expand_path("../../../Rakefile", __FILE__))
10
+
11
+ output, status = Open3.capture2e("rake package")
12
+
13
+ assert_equal true, status.success?, <<~MSG.chomp
14
+ Expected `rake package` to work, but got errors:
15
+
16
+ ```
17
+ #{output}
18
+ ```
19
+
20
+ If you have added or removed files, make sure you run `rake update_manifest` to update the `Manifest.txt` accordingly
21
+ MSG
22
+
23
+ FileUtils.rm_f "pkg"
24
+ end
25
+
26
+ end
@@ -17,4 +17,5 @@ class TestRemoteFetchError < Gem::TestCase
17
17
  error = Gem::RemoteFetcher::FetchError.new('There was an error fetching', 'https://gemsource.org')
18
18
  assert_equal error.to_s, 'There was an error fetching (https://gemsource.org)'
19
19
  end
20
+
20
21
  end
@@ -3,7 +3,9 @@ require 'rubygems/test_case'
3
3
  require 'rubygems'
4
4
 
5
5
  class TestGemRequire < Gem::TestCase
6
+
6
7
  class Latch
8
+
7
9
  def initialize(count = 1)
8
10
  @count = count
9
11
  @lock = Monitor.new
@@ -22,6 +24,7 @@ class TestGemRequire < Gem::TestCase
22
24
  @cv.wait_while { @count > 0 }
23
25
  end
24
26
  end
27
+
25
28
  end
26
29
 
27
30
  def setup
@@ -38,6 +41,10 @@ class TestGemRequire < Gem::TestCase
38
41
  assert require(path), "'#{path}' was already required"
39
42
  end
40
43
 
44
+ def refute_require(path)
45
+ refute require(path), "'#{path}' was not yet required"
46
+ end
47
+
41
48
  # Providing -I on the commandline should always beat gems
42
49
  def test_dash_i_beats_gems
43
50
  a1 = util_spec "a", "1", {"b" => "= 1"}, "lib/test_gem_require_a.rb"
@@ -63,6 +70,7 @@ class TestGemRequire < Gem::TestCase
63
70
  assert_require 'test_gem_require_a'
64
71
  assert_require 'b/c' # this should be required from -I
65
72
  assert_equal "world", ::Object::HELLO
73
+ assert_equal %w(a-1 b-1), loaded_spec_names
66
74
  ensure
67
75
  $LOAD_PATH.replace lp
68
76
  Object.send :remove_const, :HELLO if Object.const_defined? :HELLO
@@ -79,6 +87,39 @@ class TestGemRequire < Gem::TestCase
79
87
  end
80
88
  end
81
89
 
90
+ # Providing -I on the commandline should always beat gems
91
+ def test_dash_i_beats_default_gems
92
+ a1 = new_default_spec "a", "1", {"b" => "= 1"}, "test_gem_require_a.rb"
93
+ b1 = new_default_spec "b", "1", {"c" => "> 0"}, "b/c.rb"
94
+ c1 = new_default_spec "c", "1", nil, "c/c.rb"
95
+ c2 = new_default_spec "c", "2", nil, "c/c.rb"
96
+
97
+ install_default_specs c1, c2, b1, a1
98
+
99
+ dir = Dir.mktmpdir("test_require", @tempdir)
100
+ dash_i_arg = File.join dir, 'lib'
101
+
102
+ c_rb = File.join dash_i_arg, 'c', 'c.rb'
103
+
104
+ FileUtils.mkdir_p File.dirname c_rb
105
+ File.open(c_rb, 'w') { |f| f.write "class Object; HELLO = 'world' end" }
106
+
107
+ assert_require 'test_gem_require_a'
108
+
109
+ lp = $LOAD_PATH.dup
110
+
111
+ # Pretend to provide a commandline argument that overrides a file in gem b
112
+ $LOAD_PATH.unshift dash_i_arg
113
+
114
+ assert_require 'b/c'
115
+ assert_require 'c/c' # this should be required from -I
116
+ assert_equal "world", ::Object::HELLO
117
+ assert_equal %w(a-1 b-1), loaded_spec_names
118
+ ensure
119
+ $LOAD_PATH.replace lp
120
+ Object.send :remove_const, :HELLO if Object.const_defined? :HELLO
121
+ end
122
+
82
123
  def test_concurrent_require
83
124
  Object.const_set :FILE_ENTERED_LATCH, Latch.new(2)
84
125
  Object.const_set :FILE_EXIT_LATCH, Latch.new(1)
@@ -159,13 +200,25 @@ class TestGemRequire < Gem::TestCase
159
200
  end
160
201
 
161
202
  def test_activate_via_require_respects_loaded_files
203
+ skip "Not sure what's going on. If another spec creates a 'a' gem before
204
+ this test, somehow require will load the benchmark in b, and ignore that the
205
+ stdlib one is already in $LOADED_FEATURES?. Reproducible by running the
206
+ spaceship_specific_file test before this one" if java_platform?
207
+
208
+ lp = $LOAD_PATH.dup
209
+ lib_dir = File.expand_path(File.join(File.dirname(__FILE__), "../../lib"))
210
+ if File.exist?(lib_dir)
211
+ $LOAD_PATH.delete lib_dir
212
+ $LOAD_PATH.push lib_dir
213
+ end
214
+
162
215
  a1 = util_spec "a", "1", {"b" => ">= 1"}, "lib/test_gem_require_a.rb"
163
216
  b1 = util_spec "b", "1", nil, "lib/benchmark.rb"
164
217
  b2 = util_spec "b", "2", nil, "lib/benchmark.rb"
165
218
 
166
219
  install_specs b1, b2, a1
167
220
 
168
- require 'test_gem_require_a'
221
+ assert_require 'test_gem_require_a'
169
222
  assert_equal unresolved_names, ["b (>= 1)"]
170
223
 
171
224
  refute require('benchmark'), "benchmark should have already been loaded"
@@ -176,6 +229,8 @@ class TestGemRequire < Gem::TestCase
176
229
  # the same behavior as eager loading would have.
177
230
 
178
231
  assert_equal %w(a-1 b-2), loaded_spec_names
232
+ ensure
233
+ $LOAD_PATH.replace lp unless java_platform?
179
234
  end
180
235
 
181
236
  def test_already_activated_direct_conflict
@@ -293,6 +348,22 @@ class TestGemRequire < Gem::TestCase
293
348
  assert_equal %w(default-2.0.0.0), loaded_spec_names
294
349
  end
295
350
 
351
+ def test_default_gem_require_activates_just_once
352
+ default_gem_spec = new_default_spec("default", "2.0.0.0",
353
+ nil, "default/gem.rb")
354
+ install_default_specs(default_gem_spec)
355
+
356
+ assert_require "default/gem"
357
+
358
+ times_called = 0
359
+
360
+ Kernel.stub(:gem, ->(name, requirement) { times_called += 1 }) do
361
+ refute_require "default/gem"
362
+ end
363
+
364
+ assert_equal 0, times_called
365
+ end
366
+
296
367
  def test_realworld_default_gem
297
368
  begin
298
369
  gem 'json'
@@ -320,6 +391,19 @@ class TestGemRequire < Gem::TestCase
320
391
  assert_equal %w(default-3.0), loaded_spec_names
321
392
  end
322
393
 
394
+ def test_default_gem_prerelease
395
+ default_gem_spec = new_default_spec("default", "2.0.0",
396
+ nil, "default/gem.rb")
397
+ install_default_specs(default_gem_spec)
398
+
399
+ normal_gem_higher_prerelease_spec = util_spec("default", "3.0.0.rc2", nil,
400
+ "lib/default/gem.rb")
401
+ install_default_specs(normal_gem_higher_prerelease_spec)
402
+
403
+ assert_require "default/gem"
404
+ assert_equal %w(default-3.0.0.rc2), loaded_spec_names
405
+ end
406
+
323
407
  def loaded_spec_names
324
408
  Gem.loaded_specs.values.map(&:full_name).sort
325
409
  end
@@ -331,8 +415,10 @@ class TestGemRequire < Gem::TestCase
331
415
  def test_try_activate_error_unlocks_require_monitor
332
416
  silence_warnings do
333
417
  class << ::Gem
418
+
334
419
  alias old_try_activate try_activate
335
420
  def try_activate(*); raise 'raised from try_activate'; end
421
+
336
422
  end
337
423
  end
338
424
 
@@ -343,7 +429,9 @@ class TestGemRequire < Gem::TestCase
343
429
  ensure
344
430
  silence_warnings do
345
431
  class << ::Gem
432
+
346
433
  alias try_activate old_try_activate
434
+
347
435
  end
348
436
  end
349
437
  Kernel::RUBYGEMS_ACTIVATION_MONITOR.exit
@@ -374,7 +462,6 @@ class TestGemRequire < Gem::TestCase
374
462
  assert_equal %w(a-1), loaded_spec_names
375
463
  end
376
464
 
377
-
378
465
  def test_require_bundler
379
466
  b1 = util_spec('bundler', '1', nil, "lib/bundler/setup.rb")
380
467
  b2a = util_spec('bundler', '2.a', nil, "lib/bundler/setup.rb")
@@ -412,7 +499,8 @@ class TestGemRequire < Gem::TestCase
412
499
  end
413
500
  end
414
501
 
415
- if RUBY_VERSION >= "2.5"
502
+ # uplevel is 2.5+ only and jruby has some issues with it
503
+ if RUBY_VERSION >= "2.5" && !java_platform?
416
504
  def test_no_kernel_require_in_warn_with_uplevel
417
505
  lib = File.realpath("../../../lib", __FILE__)
418
506
  Dir.mktmpdir("warn_test") do |dir|
@@ -428,6 +516,21 @@ class TestGemRequire < Gem::TestCase
428
516
  assert_equal "main.rb:1: warning: uplevel\ntest\n", err
429
517
  end
430
518
  end
519
+
520
+ def test_no_other_behavioral_changes_with_kernel_warn
521
+ lib = File.realpath("../../../lib", __FILE__)
522
+ Dir.mktmpdir("warn_test") do |dir|
523
+ File.write(dir + "/main.rb", "warn({x:1}, {y:2}, [])\n")
524
+ _, err = capture_subprocess_io do
525
+ system(@@ruby, "-w", "-rpp", "--disable=gems", "-I", lib, "-C", dir, "-I.", "main.rb")
526
+ end
527
+ assert_equal "{:x=>1}\n{:y=>2}\n", err
528
+ _, err = capture_subprocess_io do
529
+ system(@@ruby, "-w", "-rpp", "--enable=gems", "-I", lib, "-C", dir, "-I.", "main.rb")
530
+ end
531
+ assert_equal "{:x=>1}\n{:y=>2}\n", err
532
+ end
533
+ end
431
534
  end
432
535
 
433
536
  def silence_warnings
@@ -436,4 +539,5 @@ class TestGemRequire < Gem::TestCase
436
539
  ensure
437
540
  $VERBOSE = old_verbose
438
541
  end
542
+
439
543
  end