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
@@ -134,6 +134,7 @@ install:
134
134
 
135
135
  def test_build_extensions_install_ext_only
136
136
  class << Gem
137
+
137
138
  alias orig_install_extension_in_lib install_extension_in_lib
138
139
 
139
140
  remove_method :install_extension_in_lib
@@ -141,6 +142,7 @@ install:
141
142
  def Gem.install_extension_in_lib
142
143
  false
143
144
  end
145
+
144
146
  end
145
147
 
146
148
  @spec.extensions << 'ext/extconf.rb'
@@ -177,9 +179,11 @@ install:
177
179
  refute_path_exists File.join @spec.gem_dir, 'lib', 'a', 'b.rb'
178
180
  ensure
179
181
  class << Gem
182
+
180
183
  remove_method :install_extension_in_lib
181
184
 
182
185
  alias install_extension_in_lib orig_install_extension_in_lib
186
+
183
187
  end
184
188
  end
185
189
 
@@ -325,4 +329,4 @@ install:
325
329
  assert_equal %w[--with-foo-dir=/nonexistent], builder.build_args
326
330
  end
327
331
 
328
- end
332
+ end unless Gem.java_platform?
@@ -10,6 +10,8 @@ class TestGemExtCmakeBuilder < Gem::TestCase
10
10
  # Details: https://github.com/rubygems/rubygems/issues/1270#issuecomment-177368340
11
11
  skip "CmakeBuilder doesn't work on Windows." if Gem.win_platform?
12
12
 
13
+ skip "CmakeBuilder doesn't work on JRuby." if Gem.java_platform? && ENV["CI"]
14
+
13
15
  system('cmake', out: IO::NULL, err: [:child, :out])
14
16
 
15
17
  skip 'cmake not present' unless $?.success?
@@ -18,6 +18,10 @@ class TestGemExtConfigureBuilder < Gem::TestCase
18
18
  end
19
19
 
20
20
  def test_self_build
21
+ if java_platform? && ENV["CI"]
22
+ skip("failing on jruby")
23
+ end
24
+
21
25
  skip("test_self_build skipped on MS Windows (VC++)") if vc_windows?
22
26
 
23
27
  File.open File.join(@ext, './configure'), 'w' do |configure|
@@ -45,6 +49,10 @@ class TestGemExtConfigureBuilder < Gem::TestCase
45
49
  end
46
50
 
47
51
  def test_self_build_fail
52
+ if java_platform? && ENV["CI"]
53
+ skip("failing on jruby")
54
+ end
55
+
48
56
  skip("test_self_build_fail skipped on MS Windows (VC++)") if vc_windows?
49
57
  output = []
50
58
 
@@ -17,6 +17,10 @@ class TestGemExtExtConfBuilder < Gem::TestCase
17
17
  end
18
18
 
19
19
  def test_class_build
20
+ if java_platform? && ENV["CI"]
21
+ skip("failing on jruby")
22
+ end
23
+
20
24
  if vc_windows? && !nmake_found?
21
25
  skip("test_class_build skipped - nmake not found")
22
26
  end
@@ -45,6 +49,10 @@ class TestGemExtExtConfBuilder < Gem::TestCase
45
49
  end
46
50
 
47
51
  def test_class_build_rbconfig_make_prog
52
+ if java_platform? && ENV["CI"]
53
+ skip("failing on jruby")
54
+ end
55
+
48
56
  configure_args do
49
57
 
50
58
  File.open File.join(@ext, 'extconf.rb'), 'w' do |extconf|
@@ -68,6 +76,10 @@ class TestGemExtExtConfBuilder < Gem::TestCase
68
76
  env_make = ENV.delete 'MAKE'
69
77
  ENV['MAKE'] = 'anothermake'
70
78
 
79
+ if java_platform? && ENV["CI"]
80
+ skip("failing on jruby")
81
+ end
82
+
71
83
  configure_args '' do
72
84
  File.open File.join(@ext, 'extconf.rb'), 'w' do |extconf|
73
85
  extconf.puts "require 'mkmf'\ncreate_makefile 'foo'"
@@ -3,6 +3,7 @@ require 'rubygems/test_case'
3
3
  require 'rubygems/ext'
4
4
 
5
5
  class TestGemExtRakeBuilder < Gem::TestCase
6
+
6
7
  def setup
7
8
  super
8
9
 
@@ -90,4 +91,5 @@ class TestGemExtRakeBuilder < Gem::TestCase
90
91
  EO_MKRF
91
92
  end
92
93
  end
94
+
93
95
  end
@@ -90,7 +90,7 @@ class TestGemGemcutterUtilities < Gem::TestCase
90
90
  end
91
91
 
92
92
  def test_sign_in
93
- api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
93
+ api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
94
94
  util_sign_in [api_key, 200, 'OK']
95
95
 
96
96
  assert_match %r{Enter your RubyGems.org credentials.}, @sign_in_ui.output
@@ -102,7 +102,7 @@ class TestGemGemcutterUtilities < Gem::TestCase
102
102
  end
103
103
 
104
104
  def test_sign_in_with_host
105
- api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
105
+ api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
106
106
 
107
107
  util_sign_in [api_key, 200, 'OK'], 'http://example.com', ['http://example.com']
108
108
 
@@ -116,7 +116,7 @@ class TestGemGemcutterUtilities < Gem::TestCase
116
116
  end
117
117
 
118
118
  def test_sign_in_with_host_nil
119
- api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
119
+ api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
120
120
 
121
121
  util_sign_in [api_key, 200, 'OK'], nil, [nil]
122
122
 
@@ -130,7 +130,7 @@ class TestGemGemcutterUtilities < Gem::TestCase
130
130
  end
131
131
 
132
132
  def test_sign_in_with_host_ENV
133
- api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
133
+ api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
134
134
  util_sign_in [api_key, 200, 'OK'], 'http://example.com'
135
135
 
136
136
  assert_match "Enter your http://example.com credentials.",
@@ -143,7 +143,7 @@ class TestGemGemcutterUtilities < Gem::TestCase
143
143
  end
144
144
 
145
145
  def test_sign_in_skips_with_existing_credentials
146
- api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
146
+ api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
147
147
  Gem.configuration.rubygems_api_key = api_key
148
148
 
149
149
  util_sign_in [api_key, 200, 'OK']
@@ -152,8 +152,8 @@ class TestGemGemcutterUtilities < Gem::TestCase
152
152
  end
153
153
 
154
154
  def test_sign_in_skips_with_key_override
155
- api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
156
- Gem.configuration.api_keys[:KEY] = 'other'
155
+ api_key = 'a5fdbb6ba150cbb83aad2bb2fede64cf040453903'
156
+ Gem.configuration.api_keys[:KEY] = 'other'
157
157
  @cmd.options[:key] = :KEY
158
158
  util_sign_in [api_key, 200, 'OK']
159
159
 
@@ -173,7 +173,7 @@ class TestGemGemcutterUtilities < Gem::TestCase
173
173
  assert_match %r{Enter your RubyGems.org credentials.}, @sign_in_ui.output
174
174
  assert_match %r{Signed in.}, @sign_in_ui.output
175
175
 
176
- credentials = YAML.load_file Gem.configuration.credentials_path
176
+ credentials = YAML.load_file Gem.configuration.credentials_path
177
177
  assert_equal api_key, credentials[:rubygems_api_key]
178
178
  assert_equal other_api_key, credentials[:other_api_key]
179
179
  end
@@ -11,7 +11,6 @@ class TestGemIndexer < Gem::TestCase
11
11
  def setup
12
12
  super
13
13
 
14
- util_clear_gems
15
14
  util_make_gems
16
15
 
17
16
  @d2_0 = util_spec 'd', '2.0' do |s|
@@ -28,30 +27,23 @@ class TestGemIndexer < Gem::TestCase
28
27
  @default = new_default_spec 'default', 2
29
28
  install_default_gems @default
30
29
 
31
- @tempdir = File.join(@tempdir, 'indexer')
30
+ @indexerdir = File.join(@tempdir, 'indexer')
32
31
 
33
- gems = File.join(@tempdir, 'gems')
32
+ gems = File.join(@indexerdir, 'gems')
34
33
  FileUtils.mkdir_p gems
35
34
  FileUtils.mv Dir[File.join(@gemhome, "cache", '*.gem')], gems
36
35
 
37
- @indexer = Gem::Indexer.new(@tempdir)
38
- end
39
-
40
- def teardown
41
- super
42
-
43
- util_clear_gems
44
- util_clear_default_gems
36
+ @indexer = Gem::Indexer.new(@indexerdir)
45
37
  end
46
38
 
47
39
  def test_initialize
48
- assert_equal @tempdir, @indexer.dest_directory
40
+ assert_equal @indexerdir, @indexer.dest_directory
49
41
  assert_match %r{#{Dir.mktmpdir('gem_generate_index').match(/.*-/)}}, @indexer.directory
50
42
 
51
- indexer = Gem::Indexer.new @tempdir
43
+ indexer = Gem::Indexer.new @indexerdir
52
44
  assert indexer.build_modern
53
45
 
54
- indexer = Gem::Indexer.new @tempdir, :build_modern => true
46
+ indexer = Gem::Indexer.new @indexerdir, :build_modern => true
55
47
  assert indexer.build_modern
56
48
  end
57
49
 
@@ -100,7 +92,7 @@ class TestGemIndexer < Gem::TestCase
100
92
  @indexer.generate_index
101
93
  end
102
94
 
103
- quickdir = File.join @tempdir, 'quick'
95
+ quickdir = File.join @indexerdir, 'quick'
104
96
  marshal_quickdir = File.join quickdir, "Marshal.#{@marshal_version}"
105
97
 
106
98
  assert_directory_exists quickdir
@@ -111,11 +103,11 @@ class TestGemIndexer < Gem::TestCase
111
103
 
112
104
  refute_indexed marshal_quickdir, File.basename(@c1_2.spec_file)
113
105
 
114
- assert_indexed @tempdir, "specs.#{@marshal_version}"
115
- assert_indexed @tempdir, "specs.#{@marshal_version}.gz"
106
+ assert_indexed @indexerdir, "specs.#{@marshal_version}"
107
+ assert_indexed @indexerdir, "specs.#{@marshal_version}.gz"
116
108
 
117
- assert_indexed @tempdir, "latest_specs.#{@marshal_version}"
118
- assert_indexed @tempdir, "latest_specs.#{@marshal_version}.gz"
109
+ assert_indexed @indexerdir, "latest_specs.#{@marshal_version}"
110
+ assert_indexed @indexerdir, "latest_specs.#{@marshal_version}.gz"
119
111
  end
120
112
 
121
113
  def test_generate_index_modern
@@ -125,12 +117,12 @@ class TestGemIndexer < Gem::TestCase
125
117
  @indexer.generate_index
126
118
  end
127
119
 
128
- refute_indexed @tempdir, 'yaml'
129
- refute_indexed @tempdir, 'yaml.Z'
130
- refute_indexed @tempdir, "Marshal.#{@marshal_version}"
131
- refute_indexed @tempdir, "Marshal.#{@marshal_version}.Z"
120
+ refute_indexed @indexerdir, 'yaml'
121
+ refute_indexed @indexerdir, 'yaml.Z'
122
+ refute_indexed @indexerdir, "Marshal.#{@marshal_version}"
123
+ refute_indexed @indexerdir, "Marshal.#{@marshal_version}.Z"
132
124
 
133
- quickdir = File.join @tempdir, 'quick'
125
+ quickdir = File.join @indexerdir, 'quick'
134
126
  marshal_quickdir = File.join quickdir, "Marshal.#{@marshal_version}"
135
127
 
136
128
  assert_directory_exists quickdir, 'quickdir should be directory'
@@ -156,11 +148,11 @@ class TestGemIndexer < Gem::TestCase
156
148
  refute_indexed quickdir, "#{File.basename(@c1_2.spec_file)}"
157
149
  refute_indexed marshal_quickdir, "#{File.basename(@c1_2.spec_file)}"
158
150
 
159
- assert_indexed @tempdir, "specs.#{@marshal_version}"
160
- assert_indexed @tempdir, "specs.#{@marshal_version}.gz"
151
+ assert_indexed @indexerdir, "specs.#{@marshal_version}"
152
+ assert_indexed @indexerdir, "specs.#{@marshal_version}.gz"
161
153
 
162
- assert_indexed @tempdir, "latest_specs.#{@marshal_version}"
163
- assert_indexed @tempdir, "latest_specs.#{@marshal_version}.gz"
154
+ assert_indexed @indexerdir, "latest_specs.#{@marshal_version}"
155
+ assert_indexed @indexerdir, "latest_specs.#{@marshal_version}.gz"
164
156
  end
165
157
 
166
158
  def test_generate_index_modern_back_to_back
@@ -170,13 +162,13 @@ class TestGemIndexer < Gem::TestCase
170
162
  @indexer.generate_index
171
163
  end
172
164
 
173
- @indexer = Gem::Indexer.new @tempdir
165
+ @indexer = Gem::Indexer.new @indexerdir
174
166
  @indexer.build_modern = true
175
167
 
176
168
  use_ui @ui do
177
169
  @indexer.generate_index
178
170
  end
179
- quickdir = File.join @tempdir, 'quick'
171
+ quickdir = File.join @indexerdir, 'quick'
180
172
  marshal_quickdir = File.join quickdir, "Marshal.#{@marshal_version}"
181
173
 
182
174
  assert_directory_exists quickdir
@@ -185,11 +177,11 @@ class TestGemIndexer < Gem::TestCase
185
177
  assert_indexed marshal_quickdir, "#{File.basename(@a1.spec_file)}.rz"
186
178
  assert_indexed marshal_quickdir, "#{File.basename(@a2.spec_file)}.rz"
187
179
 
188
- assert_indexed @tempdir, "specs.#{@marshal_version}"
189
- assert_indexed @tempdir, "specs.#{@marshal_version}.gz"
180
+ assert_indexed @indexerdir, "specs.#{@marshal_version}"
181
+ assert_indexed @indexerdir, "specs.#{@marshal_version}.gz"
190
182
 
191
- assert_indexed @tempdir, "latest_specs.#{@marshal_version}"
192
- assert_indexed @tempdir, "latest_specs.#{@marshal_version}.gz"
183
+ assert_indexed @indexerdir, "latest_specs.#{@marshal_version}"
184
+ assert_indexed @indexerdir, "latest_specs.#{@marshal_version}.gz"
193
185
  end
194
186
 
195
187
  def test_generate_index_ui
@@ -215,7 +207,7 @@ class TestGemIndexer < Gem::TestCase
215
207
  @indexer.generate_index
216
208
  end
217
209
 
218
- specs_path = File.join @tempdir, "specs.#{@marshal_version}"
210
+ specs_path = File.join @indexerdir, "specs.#{@marshal_version}"
219
211
 
220
212
  specs_dump = Gem.read_binary specs_path
221
213
  specs = Marshal.load specs_dump
@@ -252,7 +244,7 @@ class TestGemIndexer < Gem::TestCase
252
244
  @indexer.generate_index
253
245
  end
254
246
 
255
- latest_specs_path = File.join @tempdir, "latest_specs.#{@marshal_version}"
247
+ latest_specs_path = File.join @indexerdir, "latest_specs.#{@marshal_version}"
256
248
 
257
249
  latest_specs_dump = Gem.read_binary latest_specs_path
258
250
  latest_specs = Marshal.load latest_specs_dump
@@ -282,7 +274,7 @@ class TestGemIndexer < Gem::TestCase
282
274
  @indexer.generate_index
283
275
  end
284
276
 
285
- prerelease_specs_path = File.join @tempdir, "prerelease_specs.#{@marshal_version}"
277
+ prerelease_specs_path = File.join @indexerdir, "prerelease_specs.#{@marshal_version}"
286
278
 
287
279
  prerelease_specs_dump = Gem.read_binary prerelease_specs_path
288
280
  prerelease_specs = Marshal.load prerelease_specs_dump
@@ -306,13 +298,12 @@ class TestGemIndexer < Gem::TestCase
306
298
  util_remove_gem sys_gem
307
299
  end
308
300
 
309
-
310
301
  def test_update_index
311
302
  use_ui @ui do
312
303
  @indexer.generate_index
313
304
  end
314
305
 
315
- quickdir = File.join @tempdir, 'quick'
306
+ quickdir = File.join @indexerdir, 'quick'
316
307
  marshal_quickdir = File.join quickdir, "Marshal.#{@marshal_version}"
317
308
 
318
309
  assert_directory_exists quickdir
@@ -326,7 +317,7 @@ class TestGemIndexer < Gem::TestCase
326
317
  util_build_gem @d2_1_a
327
318
  @d2_1_a_tuple = [@d2_1_a.name, @d2_1_a.version, @d2_1_a.original_platform]
328
319
 
329
- gems = File.join @tempdir, 'gems'
320
+ gems = File.join @indexerdir, 'gems'
330
321
 
331
322
  FileUtils.mv @d2_1.cache_file, gems
332
323
  FileUtils.mv @d2_1_a.cache_file, gems
@@ -26,10 +26,11 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
26
26
  -f
27
27
  -i /install_to
28
28
  -w
29
- --vendor
30
29
  --post-install-message
31
30
  ]
32
31
 
32
+ args.concat %w[--vendor] unless Gem.java_platform?
33
+
33
34
  args.concat %w[-P HighSecurity] if defined?(OpenSSL::SSL)
34
35
 
35
36
  assert @cmd.handles?(args)
@@ -111,6 +112,13 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
111
112
  end
112
113
 
113
114
  def test_user_install_enabled
115
+ @spec = quick_gem 'a' do |spec|
116
+ util_make_exec spec
117
+ end
118
+
119
+ util_build_gem @spec
120
+ @gem = @spec.cache_file
121
+
114
122
  @cmd.handle_options %w[--user-install]
115
123
 
116
124
  assert @cmd.options[:user_install]
@@ -122,6 +130,13 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
122
130
  end
123
131
 
124
132
  def test_user_install_disabled_read_only
133
+ @spec = quick_gem 'a' do |spec|
134
+ util_make_exec spec
135
+ end
136
+
137
+ util_build_gem @spec
138
+ @gem = @spec.cache_file
139
+
125
140
  if win_platform?
126
141
  skip('test_user_install_disabled_read_only test skipped on MS Windows')
127
142
  elsif Process.uid.zero?
@@ -145,28 +160,26 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
145
160
  end
146
161
 
147
162
  def test_vendor
148
- @cmd.handle_options %w[--vendor]
163
+ vendordir(File.join(@tempdir, 'vendor')) do
164
+ @cmd.handle_options %w[--vendor]
149
165
 
150
- assert @cmd.options[:vendor]
151
- assert_equal Gem.vendor_dir, @cmd.options[:install_dir]
166
+ assert @cmd.options[:vendor]
167
+ assert_equal Gem.vendor_dir, @cmd.options[:install_dir]
168
+ end
152
169
  end
153
170
 
154
171
  def test_vendor_missing
155
- orig_vendordir = RbConfig::CONFIG['vendordir']
156
- RbConfig::CONFIG.delete 'vendordir'
157
-
158
- e = assert_raises OptionParser::InvalidOption do
159
- @cmd.handle_options %w[--vendor]
160
- end
161
-
162
- assert_equal 'invalid option: --vendor your platform is not supported',
163
- e.message
172
+ vendordir(nil) do
173
+ e = assert_raises OptionParser::InvalidOption do
174
+ @cmd.handle_options %w[--vendor]
175
+ end
164
176
 
165
- refute @cmd.options[:vendor]
166
- refute @cmd.options[:install_dir]
177
+ assert_equal 'invalid option: --vendor your platform is not supported',
178
+ e.message
167
179
 
168
- ensure
169
- RbConfig::CONFIG['vendordir'] = orig_vendordir
180
+ refute @cmd.options[:vendor]
181
+ refute @cmd.options[:install_dir]
182
+ end
170
183
  end
171
184
 
172
185
  def test_post_install_message_no
@@ -180,4 +193,5 @@ class TestGemInstallUpdateOptions < Gem::InstallerTestCase
180
193
 
181
194
  assert_equal true, @cmd.options[:post_install_message]
182
195
  end
196
+
183
197
  end
@@ -2,6 +2,7 @@
2
2
  require 'rubygems/installer_test_case'
3
3
 
4
4
  class TestGemInstaller < Gem::InstallerTestCase
5
+
5
6
  @@symlink_supported = nil
6
7
 
7
8
  def symlink_supported?
@@ -21,11 +22,6 @@ class TestGemInstaller < Gem::InstallerTestCase
21
22
  super
22
23
  common_installer_setup
23
24
 
24
- if (self.class.method_defined?(:__name__) ? __name__ : name) =~ /\Atest_install(_|\Z)/
25
- FileUtils.rm_r @spec.gem_dir
26
- FileUtils.rm_r @user_spec.gem_dir
27
- end
28
-
29
25
  @config = Gem.configuration
30
26
  end
31
27
 
@@ -38,6 +34,8 @@ class TestGemInstaller < Gem::InstallerTestCase
38
34
  end
39
35
 
40
36
  def test_app_script_text
37
+ installer = setup_base_installer
38
+
41
39
  util_make_exec @spec, ''
42
40
 
43
41
  expected = <<-EOF
@@ -70,12 +68,14 @@ load Gem.bin_path("a", "executable", version)
70
68
  end
71
69
  EOF
72
70
 
73
- wrapper = @installer.app_script_text 'executable'
71
+ wrapper = installer.app_script_text 'executable'
74
72
  assert_equal expected, wrapper
75
73
  end
76
74
 
77
75
  def test_check_executable_overwrite
78
- @installer.generate_bin
76
+ installer = setup_base_installer
77
+
78
+ installer.generate_bin
79
79
 
80
80
  @spec = Gem::Specification.new do |s|
81
81
  s.files = ['lib/code.rb']
@@ -87,9 +87,9 @@ end
87
87
  end
88
88
 
89
89
  util_make_exec
90
- @installer.gem_dir = @spec.gem_dir
91
- @installer.wrappers = true
92
- @installer.generate_bin
90
+ installer.gem_dir = @spec.gem_dir
91
+ installer.wrappers = true
92
+ installer.generate_bin
93
93
 
94
94
  installed_exec = File.join util_inst_bindir, 'executable'
95
95
  assert_path_exists installed_exec
@@ -99,6 +99,8 @@ end
99
99
  end
100
100
 
101
101
  def test_check_executable_overwrite_default_bin_dir
102
+ installer = setup_base_installer
103
+
102
104
  if defined?(RUBY_FRAMEWORK_VERSION)
103
105
  orig_RUBY_FRAMEWORK_VERSION = RUBY_FRAMEWORK_VERSION
104
106
  Object.send :remove_const, :RUBY_FRAMEWORK_VERSION
@@ -111,7 +113,7 @@ end
111
113
  ui = Gem::MockGemUi.new "n\n"
112
114
  use_ui ui do
113
115
  e = assert_raises Gem::InstallError do
114
- @installer.generate_bin
116
+ installer.generate_bin
115
117
  end
116
118
 
117
119
  conflicted = File.join @gemhome, 'bin', 'executable'
@@ -129,7 +131,9 @@ end
129
131
  end
130
132
 
131
133
  def test_check_executable_overwrite_format_executable
132
- @installer.generate_bin
134
+ installer = setup_base_installer
135
+
136
+ installer.generate_bin
133
137
 
134
138
  @spec = Gem::Specification.new do |s|
135
139
  s.files = ['lib/code.rb']
@@ -152,11 +156,11 @@ gem 'other', version
152
156
 
153
157
  util_make_exec
154
158
  Gem::Installer.exec_format = 'foo-%s-bar'
155
- @installer.gem_dir = @spec.gem_dir
156
- @installer.wrappers = true
157
- @installer.format_executable = true
159
+ installer.gem_dir = @spec.gem_dir
160
+ installer.wrappers = true
161
+ installer.format_executable = true
158
162
 
159
- @installer.generate_bin # should not raise
163
+ installer.generate_bin # should not raise
160
164
 
161
165
  installed_exec = File.join util_inst_bindir, 'foo-executable-bar'
162
166
  assert_path_exists installed_exec
@@ -168,13 +172,15 @@ gem 'other', version
168
172
  end
169
173
 
170
174
  def test_check_executable_overwrite_other_gem
175
+ installer = setup_base_installer
176
+
171
177
  util_conflict_executable true
172
178
 
173
179
  ui = Gem::MockGemUi.new "n\n"
174
180
 
175
181
  use_ui ui do
176
182
  e = assert_raises Gem::InstallError do
177
- @installer.generate_bin
183
+ installer.generate_bin
178
184
  end
179
185
 
180
186
  assert_equal '"executable" from a conflicts with installed executable from conflict',
@@ -183,11 +189,13 @@ gem 'other', version
183
189
  end
184
190
 
185
191
  def test_check_executable_overwrite_other_gem_force
192
+ installer = setup_base_installer
193
+
186
194
  util_conflict_executable true
187
- @installer.wrappers = true
188
- @installer.force = true
195
+ installer.wrappers = true
196
+ installer.force = true
189
197
 
190
- @installer.generate_bin
198
+ installer.generate_bin
191
199
 
192
200
  installed_exec = File.join util_inst_bindir, 'executable'
193
201
  assert_path_exists installed_exec
@@ -197,10 +205,12 @@ gem 'other', version
197
205
  end
198
206
 
199
207
  def test_check_executable_overwrite_other_non_gem
208
+ installer = setup_base_installer
209
+
200
210
  util_conflict_executable false
201
- @installer.wrappers = true
211
+ installer.wrappers = true
202
212
 
203
- @installer.generate_bin
213
+ installer.generate_bin
204
214
 
205
215
  installed_exec = File.join util_inst_bindir, 'executable'
206
216
  assert_path_exists installed_exec
@@ -210,7 +220,9 @@ gem 'other', version
210
220
  end unless Gem.win_platform?
211
221
 
212
222
  def test_check_that_user_bin_dir_is_in_path
213
- bin_dir = @installer.bin_dir
223
+ installer = setup_base_installer
224
+
225
+ bin_dir = installer.bin_dir
214
226
 
215
227
  if Gem.win_platform?
216
228
  bin_dir = bin_dir.downcase.gsub(File::SEPARATOR, File::ALT_SEPARATOR)
@@ -220,7 +232,7 @@ gem 'other', version
220
232
  ENV['PATH'], [ENV['PATH'], bin_dir].join(File::PATH_SEPARATOR)
221
233
 
222
234
  use_ui @ui do
223
- @installer.check_that_user_bin_dir_is_in_path
235
+ installer.check_that_user_bin_dir_is_in_path
224
236
  end
225
237
 
226
238
  assert_empty @ui.error
@@ -234,10 +246,11 @@ gem 'other', version
234
246
  orig_PATH, ENV['PATH'] =
235
247
  ENV['PATH'], [ENV['PATH'], '~/bin'].join(File::PATH_SEPARATOR)
236
248
 
237
- @installer.bin_dir.replace File.join @userhome, 'bin'
249
+ installer = setup_base_installer
250
+ installer.bin_dir.replace File.join @userhome, 'bin'
238
251
 
239
252
  use_ui @ui do
240
- @installer.check_that_user_bin_dir_is_in_path
253
+ installer.check_that_user_bin_dir_is_in_path
241
254
  end
242
255
 
243
256
  assert_empty @ui.error
@@ -246,11 +259,13 @@ gem 'other', version
246
259
  end
247
260
 
248
261
  def test_check_that_user_bin_dir_is_in_path_not_in_path
262
+ installer = setup_base_installer
263
+
249
264
  use_ui @ui do
250
- @installer.check_that_user_bin_dir_is_in_path
265
+ installer.check_that_user_bin_dir_is_in_path
251
266
  end
252
267
 
253
- expected = @installer.bin_dir
268
+ expected = installer.bin_dir
254
269
 
255
270
  if Gem.win_platform?
256
271
  expected = expected.downcase.gsub(File::SEPARATOR, File::ALT_SEPARATOR)
@@ -260,14 +275,16 @@ gem 'other', version
260
275
  end
261
276
 
262
277
  def test_ensure_dependency
278
+ installer = setup_base_installer
279
+
263
280
  util_spec 'a'
264
281
 
265
282
  dep = Gem::Dependency.new 'a', '>= 2'
266
- assert @installer.ensure_dependency(@spec, dep)
283
+ assert installer.ensure_dependency(@spec, dep)
267
284
 
268
285
  dep = Gem::Dependency.new 'b', '> 2'
269
286
  e = assert_raises Gem::InstallError do
270
- @installer.ensure_dependency @spec, dep
287
+ installer.ensure_dependency @spec, dep
271
288
  end
272
289
 
273
290
  assert_equal 'a requires b (> 2)', e.message
@@ -304,28 +321,32 @@ gem 'other', version
304
321
  end
305
322
 
306
323
  def test_extract_files
307
- @installer.extract_files
324
+ installer = setup_base_installer
325
+
326
+ installer.extract_files
308
327
 
309
328
  assert_path_exists File.join @spec.gem_dir, 'bin/executable'
310
329
  end
311
330
 
312
331
  def test_generate_bin_bindir
313
- @installer.wrappers = true
332
+ installer = setup_base_installer
333
+
334
+ installer.wrappers = true
314
335
 
315
336
  @spec.executables = %w[executable]
316
337
  @spec.bindir = 'bin'
317
338
 
318
- exec_file = @installer.formatted_program_filename 'executable'
339
+ exec_file = installer.formatted_program_filename 'executable'
319
340
  exec_path = File.join @spec.gem_dir, exec_file
320
341
  File.open exec_path, 'w' do |f|
321
342
  f.puts '#!/usr/bin/ruby'
322
343
  end
323
344
 
324
- @installer.gem_dir = @spec.gem_dir
345
+ installer.gem_dir = @spec.gem_dir
325
346
 
326
- @installer.generate_bin
347
+ installer.generate_bin
327
348
 
328
- assert_directory_exists (util_inst_bindir)
349
+ assert_directory_exists util_inst_bindir
329
350
  installed_exec = File.join(util_inst_bindir, 'executable')
330
351
  assert_path_exists installed_exec
331
352
  assert_equal mask, File.stat(installed_exec).mode unless win_platform?
@@ -361,11 +382,13 @@ gem 'other', version
361
382
  end
362
383
 
363
384
  def test_generate_bin_script
364
- @installer.wrappers = true
385
+ installer = setup_base_installer
386
+
387
+ installer.wrappers = true
365
388
  util_make_exec
366
- @installer.gem_dir = @spec.gem_dir
389
+ installer.gem_dir = @spec.gem_dir
367
390
 
368
- @installer.generate_bin
391
+ installer.generate_bin
369
392
  assert_directory_exists util_inst_bindir
370
393
  installed_exec = File.join util_inst_bindir, 'executable'
371
394
  assert_path_exists installed_exec
@@ -376,13 +399,15 @@ gem 'other', version
376
399
  end
377
400
 
378
401
  def test_generate_bin_script_format
379
- @installer.format_executable = true
380
- @installer.wrappers = true
402
+ installer = setup_base_installer
403
+
404
+ installer.format_executable = true
405
+ installer.wrappers = true
381
406
  util_make_exec
382
- @installer.gem_dir = @spec.gem_dir
407
+ installer.gem_dir = @spec.gem_dir
383
408
 
384
409
  Gem::Installer.exec_format = 'foo-%s-bar'
385
- @installer.generate_bin
410
+ installer.generate_bin
386
411
  assert_directory_exists util_inst_bindir
387
412
  installed_exec = File.join util_inst_bindir, 'foo-executable-bar'
388
413
  assert_path_exists installed_exec
@@ -391,12 +416,14 @@ gem 'other', version
391
416
  end
392
417
 
393
418
  def test_generate_bin_script_format_disabled
394
- @installer.wrappers = true
419
+ installer = setup_base_installer
420
+
421
+ installer.wrappers = true
395
422
  util_make_exec
396
- @installer.gem_dir = @spec.gem_dir
423
+ installer.gem_dir = @spec.gem_dir
397
424
 
398
425
  Gem::Installer.exec_format = 'foo-%s-bar'
399
- @installer.generate_bin
426
+ installer.generate_bin
400
427
  assert_directory_exists util_inst_bindir
401
428
  installed_exec = File.join util_inst_bindir, 'executable'
402
429
  assert_path_exists installed_exec
@@ -405,7 +432,9 @@ gem 'other', version
405
432
  end
406
433
 
407
434
  def test_generate_bin_script_install_dir
408
- @installer.wrappers = true
435
+ installer = setup_base_installer
436
+
437
+ installer.wrappers = true
409
438
 
410
439
  gem_dir = File.join("#{@gemhome}2", "gems", @spec.full_name)
411
440
  gem_bindir = File.join gem_dir, 'bin'
@@ -414,11 +443,11 @@ gem 'other', version
414
443
  f.puts "#!/bin/ruby"
415
444
  end
416
445
 
417
- @installer.gem_home = "#{@gemhome}2"
418
- @installer.gem_dir = gem_dir
419
- @installer.bin_dir = File.join "#{@gemhome}2", 'bin'
446
+ installer.gem_home = "#{@gemhome}2"
447
+ installer.gem_dir = gem_dir
448
+ installer.bin_dir = File.join "#{@gemhome}2", 'bin'
420
449
 
421
- @installer.generate_bin
450
+ installer.generate_bin
422
451
 
423
452
  installed_exec = File.join("#{@gemhome}2", "bin", 'executable')
424
453
  assert_path_exists installed_exec
@@ -429,16 +458,20 @@ gem 'other', version
429
458
  end
430
459
 
431
460
  def test_generate_bin_script_no_execs
432
- util_execless
461
+ installer = setup_base_installer
462
+
463
+ installer = util_execless
433
464
 
434
- @installer.wrappers = true
435
- @installer.generate_bin
465
+ installer.wrappers = true
466
+ installer.generate_bin
436
467
 
437
468
  refute_path_exists util_inst_bindir, 'bin dir was created when not needed'
438
469
  end
439
470
 
440
471
  def test_generate_bin_script_no_perms
441
- @installer.wrappers = true
472
+ installer = setup_base_installer
473
+
474
+ installer.wrappers = true
442
475
  util_make_exec
443
476
 
444
477
  Dir.mkdir util_inst_bindir
@@ -451,7 +484,7 @@ gem 'other', version
451
484
  FileUtils.chmod 0000, util_inst_bindir
452
485
 
453
486
  assert_raises Gem::FilePermissionError do
454
- @installer.generate_bin
487
+ installer.generate_bin
455
488
  end
456
489
  end
457
490
  ensure
@@ -459,7 +492,9 @@ gem 'other', version
459
492
  end
460
493
 
461
494
  def test_generate_bin_script_no_shebang
462
- @installer.wrappers = true
495
+ installer = setup_base_installer
496
+
497
+ installer.wrappers = true
463
498
  @spec.executables = %w[executable]
464
499
 
465
500
  gem_dir = File.join @gemhome, 'gems', @spec.full_name
@@ -469,7 +504,7 @@ gem 'other', version
469
504
  f.puts "blah blah blah"
470
505
  end
471
506
 
472
- @installer.generate_bin
507
+ installer.generate_bin
473
508
 
474
509
  installed_exec = File.join @gemhome, 'bin', 'executable'
475
510
  assert_path_exists installed_exec
@@ -482,9 +517,11 @@ gem 'other', version
482
517
  end
483
518
 
484
519
  def test_generate_bin_script_wrappers
485
- @installer.wrappers = true
520
+ installer = setup_base_installer
521
+
522
+ installer.wrappers = true
486
523
  util_make_exec
487
- @installer.gem_dir = @spec.gem_dir
524
+ installer.gem_dir = @spec.gem_dir
488
525
  installed_exec = File.join(util_inst_bindir, 'executable')
489
526
 
490
527
  real_exec = File.join @spec.gem_dir, 'bin', 'executable'
@@ -495,7 +532,7 @@ gem 'other', version
495
532
  FileUtils.ln_s real_exec, installed_exec
496
533
  end
497
534
 
498
- @installer.generate_bin
535
+ installer.generate_bin
499
536
  assert_directory_exists util_inst_bindir
500
537
  assert_path_exists installed_exec
501
538
  assert_equal mask, File.stat(installed_exec).mode unless win_platform?
@@ -509,11 +546,13 @@ gem 'other', version
509
546
  def test_generate_bin_symlink
510
547
  return if win_platform? #Windows FS do not support symlinks
511
548
 
512
- @installer.wrappers = false
549
+ installer = setup_base_installer
550
+
551
+ installer.wrappers = false
513
552
  util_make_exec
514
- @installer.gem_dir = @spec.gem_dir
553
+ installer.gem_dir = @spec.gem_dir
515
554
 
516
- @installer.generate_bin
555
+ installer.generate_bin
517
556
  assert_directory_exists util_inst_bindir
518
557
  installed_exec = File.join util_inst_bindir, 'executable'
519
558
  assert_equal true, File.symlink?(installed_exec)
@@ -522,18 +561,22 @@ gem 'other', version
522
561
  end
523
562
 
524
563
  def test_generate_bin_symlink_no_execs
525
- util_execless
564
+ installer = setup_base_installer
565
+
566
+ installer = util_execless
526
567
 
527
- @installer.wrappers = false
528
- @installer.generate_bin
568
+ installer.wrappers = false
569
+ installer.generate_bin
529
570
 
530
571
  refute_path_exists util_inst_bindir
531
572
  end
532
573
 
533
574
  def test_generate_bin_symlink_no_perms
534
- @installer.wrappers = false
575
+ installer = setup_base_installer
576
+
577
+ installer.wrappers = false
535
578
  util_make_exec
536
- @installer.gem_dir = @spec.gem_dir
579
+ installer.gem_dir = @spec.gem_dir
537
580
 
538
581
  Dir.mkdir util_inst_bindir
539
582
 
@@ -545,7 +588,7 @@ gem 'other', version
545
588
  FileUtils.chmod 0000, util_inst_bindir
546
589
 
547
590
  assert_raises Gem::FilePermissionError do
548
- @installer.generate_bin
591
+ installer.generate_bin
549
592
  end
550
593
  end
551
594
  ensure
@@ -555,11 +598,13 @@ gem 'other', version
555
598
  def test_generate_bin_symlink_update_newer
556
599
  return if win_platform? #Windows FS do not support symlinks
557
600
 
558
- @installer.wrappers = false
601
+ installer = setup_base_installer
602
+
603
+ installer.wrappers = false
559
604
  util_make_exec
560
- @installer.gem_dir = @spec.gem_dir
605
+ installer.gem_dir = @spec.gem_dir
561
606
 
562
- @installer.generate_bin
607
+ installer.generate_bin
563
608
  installed_exec = File.join(util_inst_bindir, 'executable')
564
609
  assert_equal(File.join(@spec.gem_dir, 'bin', 'executable'),
565
610
  File.readlink(installed_exec))
@@ -574,8 +619,8 @@ gem 'other', version
574
619
  end
575
620
 
576
621
  util_make_exec
577
- @installer.gem_dir = @spec.gem_dir
578
- @installer.generate_bin
622
+ installer.gem_dir = @spec.gem_dir
623
+ installer.generate_bin
579
624
  installed_exec = File.join(util_inst_bindir, 'executable')
580
625
  assert_equal(@spec.bin_file('executable'),
581
626
  File.readlink(installed_exec),
@@ -585,11 +630,13 @@ gem 'other', version
585
630
  def test_generate_bin_symlink_update_older
586
631
  return if !symlink_supported?
587
632
 
588
- @installer.wrappers = false
633
+ installer = setup_base_installer
634
+
635
+ installer.wrappers = false
589
636
  util_make_exec
590
- @installer.gem_dir = @spec.gem_dir
637
+ installer.gem_dir = @spec.gem_dir
591
638
 
592
- @installer.generate_bin
639
+ installer.generate_bin
593
640
  installed_exec = File.join(util_inst_bindir, 'executable')
594
641
  assert_equal(File.join(@spec.gem_dir, 'bin', 'executable'),
595
642
  File.readlink(installed_exec))
@@ -606,10 +653,10 @@ gem 'other', version
606
653
  util_make_exec
607
654
  one = @spec.dup
608
655
  one.version = 1
609
- @installer = Gem::Installer.for_spec spec
610
- @installer.gem_dir = one.gem_dir
656
+ installer = Gem::Installer.for_spec spec
657
+ installer.gem_dir = one.gem_dir
611
658
 
612
- @installer.generate_bin
659
+ installer.generate_bin
613
660
 
614
661
  installed_exec = File.join util_inst_bindir, 'executable'
615
662
  expected = File.join @spec.gem_dir, 'bin', 'executable'
@@ -621,11 +668,13 @@ gem 'other', version
621
668
  def test_generate_bin_symlink_update_remove_wrapper
622
669
  return if !symlink_supported?
623
670
 
624
- @installer.wrappers = true
671
+ installer = setup_base_installer
672
+
673
+ installer.wrappers = true
625
674
  util_make_exec
626
- @installer.gem_dir = @spec.gem_dir
675
+ installer.gem_dir = @spec.gem_dir
627
676
 
628
- @installer.generate_bin
677
+ installer.generate_bin
629
678
 
630
679
  installed_exec = File.join util_inst_bindir, 'executable'
631
680
  assert_path_exists installed_exec
@@ -641,10 +690,10 @@ gem 'other', version
641
690
  util_make_exec
642
691
 
643
692
  util_installer @spec, @gemhome
644
- @installer.wrappers = false
645
- @installer.gem_dir = @spec.gem_dir
693
+ installer.wrappers = false
694
+ installer.gem_dir = @spec.gem_dir
646
695
 
647
- @installer.generate_bin
696
+ installer.generate_bin
648
697
 
649
698
  installed_exec = File.join util_inst_bindir, 'executable'
650
699
  assert_equal(@spec.bin_file('executable'),
@@ -658,12 +707,15 @@ gem 'other', version
658
707
  old_alt_separator = File::ALT_SEPARATOR
659
708
  File.__send__(:remove_const, :ALT_SEPARATOR)
660
709
  File.const_set(:ALT_SEPARATOR, '\\')
661
- @installer.wrappers = false
710
+
711
+ installer = setup_base_installer
712
+
713
+ installer.wrappers = false
662
714
  util_make_exec
663
- @installer.gem_dir = @spec.gem_dir
715
+ installer.gem_dir = @spec.gem_dir
664
716
 
665
717
  use_ui @ui do
666
- @installer.generate_bin
718
+ installer.generate_bin
667
719
  end
668
720
 
669
721
  assert_directory_exists util_inst_bindir
@@ -689,10 +741,12 @@ gem 'other', version
689
741
  def test_generate_bin_uses_default_shebang
690
742
  return if !symlink_supported?
691
743
 
692
- @installer.wrappers = true
744
+ installer = setup_base_installer
745
+
746
+ installer.wrappers = true
693
747
  util_make_exec
694
748
 
695
- @installer.generate_bin
749
+ installer.generate_bin
696
750
 
697
751
  default_shebang = Gem.ruby
698
752
  shebang_line = open("#{@gemhome}/bin/executable") { |f| f.readlines.first }
@@ -701,7 +755,10 @@ gem 'other', version
701
755
  end
702
756
 
703
757
  def test_initialize
704
- spec = util_spec 'a' do |s| s.platform = Gem::Platform.new 'mswin32' end
758
+ spec = util_spec 'a' do |s|
759
+ s.platform = Gem::Platform.new 'mswin32'
760
+ end
761
+
705
762
  gem = File.join @tempdir, spec.file_name
706
763
 
707
764
  Dir.mkdir util_inst_bindir
@@ -715,6 +772,8 @@ gem 'other', version
715
772
  end
716
773
 
717
774
  def test_initialize_user_install
775
+ @gem = setup_base_gem
776
+
718
777
  installer = Gem::Installer.at @gem, :user_install => true
719
778
 
720
779
  assert_equal File.join(Gem.user_dir, 'gems', @spec.full_name),
@@ -723,6 +782,8 @@ gem 'other', version
723
782
  end
724
783
 
725
784
  def test_initialize_user_install_bin_dir
785
+ @gem = setup_base_gem
786
+
726
787
  installer =
727
788
  Gem::Installer.at @gem, :user_install => true, :bin_dir => @tempdir
728
789
 
@@ -732,9 +793,7 @@ gem 'other', version
732
793
  end
733
794
 
734
795
  def test_install
735
- Dir.mkdir util_inst_bindir
736
- util_setup_gem
737
- util_clear_gems
796
+ installer = util_setup_installer
738
797
 
739
798
  gemdir = File.join @gemhome, 'gems', @spec.full_name
740
799
  cache_file = File.join @gemhome, 'cache', @spec.file_name
@@ -764,7 +823,7 @@ gem 'other', version
764
823
  @newspec = nil
765
824
  build_rake_in do
766
825
  use_ui @ui do
767
- @newspec = @installer.install
826
+ @newspec = installer.install
768
827
  end
769
828
  end
770
829
 
@@ -782,29 +841,25 @@ gem 'other', version
782
841
 
783
842
  assert_path_exists rakefile
784
843
 
785
- spec_file = File.join(@gemhome, 'specifications', @spec.spec_name)
786
-
787
844
  assert_equal spec_file, @newspec.loaded_from
788
845
  assert_path_exists spec_file
789
846
 
790
- assert_same @installer, @post_build_hook_arg
791
- assert_same @installer, @post_install_hook_arg
792
- assert_same @installer, @pre_install_hook_arg
847
+ assert_same installer, @post_build_hook_arg
848
+ assert_same installer, @post_install_hook_arg
849
+ assert_same installer, @pre_install_hook_arg
793
850
  end
794
851
 
795
852
  def test_install_creates_working_binstub
796
- Dir.mkdir util_inst_bindir
797
- util_setup_gem
798
- util_clear_gems
853
+ installer = util_setup_installer
799
854
 
800
- @installer.wrappers = true
855
+ installer.wrappers = true
801
856
 
802
857
  gemdir = File.join @gemhome, 'gems', @spec.full_name
803
858
 
804
859
  @newspec = nil
805
860
  build_rake_in do
806
861
  use_ui @ui do
807
- @newspec = @installer.install
862
+ @newspec = installer.install
808
863
  end
809
864
  end
810
865
 
@@ -818,11 +873,10 @@ gem 'other', version
818
873
  end
819
874
 
820
875
  def test_conflicting_binstubs
821
- Dir.mkdir util_inst_bindir
822
- util_clear_gems
876
+ @gem = setup_base_gem
823
877
 
824
878
  # build old version that has a bin file
825
- util_setup_gem do |spec|
879
+ installer = util_setup_gem do |spec|
826
880
  File.open File.join('bin', 'executable'), 'w' do |f|
827
881
  f.puts "require 'code'"
828
882
  end
@@ -831,17 +885,17 @@ gem 'other', version
831
885
  end
832
886
  end
833
887
 
834
- @installer.wrappers = true
888
+ installer.wrappers = true
835
889
  build_rake_in do
836
890
  use_ui @ui do
837
- @newspec = @installer.install
891
+ @newspec = installer.install
838
892
  end
839
893
  end
840
894
 
841
- old_bin_file = File.join @installer.bin_dir, 'executable'
895
+ old_bin_file = File.join installer.bin_dir, 'executable'
842
896
 
843
897
  # build new version that doesn't have a bin file
844
- util_setup_gem do |spec|
898
+ installer = util_setup_gem do |spec|
845
899
  FileUtils.rm File.join('bin', 'executable')
846
900
  spec.files.delete File.join('bin', 'executable')
847
901
  spec.executables.delete 'executable'
@@ -853,7 +907,7 @@ gem 'other', version
853
907
 
854
908
  build_rake_in do
855
909
  use_ui @ui do
856
- @newspec = @installer.install
910
+ @newspec = installer.install
857
911
  end
858
912
  end
859
913
 
@@ -867,16 +921,14 @@ gem 'other', version
867
921
  end
868
922
 
869
923
  def test_install_creates_binstub_that_understand_version
870
- Dir.mkdir util_inst_bindir
871
- util_setup_gem
872
- util_clear_gems
924
+ installer = util_setup_installer
873
925
 
874
- @installer.wrappers = true
926
+ installer.wrappers = true
875
927
 
876
928
  @newspec = nil
877
929
  build_rake_in do
878
930
  use_ui @ui do
879
- @newspec = @installer.install
931
+ @newspec = installer.install
880
932
  end
881
933
  end
882
934
 
@@ -897,17 +949,43 @@ gem 'other', version
897
949
  assert_includes(e.message, "can't find gem a (= 3.0)")
898
950
  end
899
951
 
900
- def test_install_creates_binstub_that_dont_trust_encoding
901
- Dir.mkdir util_inst_bindir
902
- util_setup_gem
952
+ def test_install_creates_binstub_that_prefers_user_installed_gem_to_default
953
+ install_default_gems new_default_spec('default', '2')
954
+
955
+ installer = util_setup_installer do |spec|
956
+ spec.name = 'default'
957
+ spec.version = '2'
958
+ end
959
+
903
960
  util_clear_gems
904
961
 
905
- @installer.wrappers = true
962
+ installer.wrappers = true
963
+
964
+ @newspec = nil
965
+ build_rake_in do
966
+ use_ui @ui do
967
+ @newspec = installer.install
968
+ end
969
+ end
970
+
971
+ exe = File.join @gemhome, 'bin', 'executable'
972
+
973
+ e = assert_raises RuntimeError do
974
+ instance_eval File.read(exe)
975
+ end
976
+
977
+ assert_equal(e.message, "ran executable")
978
+ end
979
+
980
+ def test_install_creates_binstub_that_dont_trust_encoding
981
+ installer = util_setup_installer
982
+
983
+ installer.wrappers = true
906
984
 
907
985
  @newspec = nil
908
986
  build_rake_in do
909
987
  use_ui @ui do
910
- @newspec = @installer.install
988
+ @newspec = installer.install
911
989
  end
912
990
  end
913
991
 
@@ -930,33 +1008,35 @@ gem 'other', version
930
1008
  end
931
1009
 
932
1010
  def test_install_with_no_prior_files
933
- Dir.mkdir util_inst_bindir
934
- util_clear_gems
1011
+ installer = util_setup_installer
935
1012
 
936
- util_setup_gem
937
1013
  build_rake_in do
938
1014
  use_ui @ui do
939
- assert_equal @spec, @installer.install
1015
+ assert_equal @spec, installer.install
940
1016
  end
941
1017
  end
942
1018
 
943
1019
  gemdir = File.join(@gemhome, 'gems', @spec.full_name)
944
1020
  assert_path_exists File.join gemdir, 'lib', 'code.rb'
945
1021
 
946
- util_setup_gem
1022
+ installer = util_setup_installer
1023
+
947
1024
  # Morph spec to have lib/other.rb instead of code.rb and recreate
948
1025
  @spec.files = File.join('lib', 'other.rb')
949
1026
  Dir.chdir @tempdir do
950
- File.open File.join('lib', 'other.rb'), 'w' do |f| f.puts '1' end
1027
+ File.open File.join('lib', 'other.rb'), 'w' do |f|
1028
+ f.puts '1'
1029
+ end
1030
+
951
1031
  use_ui ui do
952
1032
  FileUtils.rm @gem
953
1033
  Gem::Package.build @spec
954
1034
  end
955
1035
  end
956
- @installer = Gem::Installer.at @gem
1036
+ installer = Gem::Installer.at @gem
957
1037
  build_rake_in do
958
1038
  use_ui @ui do
959
- assert_equal @spec, @installer.install
1039
+ assert_equal @spec, installer.install
960
1040
  end
961
1041
  end
962
1042
 
@@ -976,12 +1056,14 @@ gem 'other', version
976
1056
  end
977
1057
 
978
1058
  def test_install_missing_dirs
1059
+ installer = setup_base_installer
1060
+
979
1061
  FileUtils.rm_f File.join(Gem.dir, 'cache')
980
1062
  FileUtils.rm_f File.join(Gem.dir, 'doc')
981
1063
  FileUtils.rm_f File.join(Gem.dir, 'specifications')
982
1064
 
983
1065
  use_ui @ui do
984
- @installer.install
1066
+ installer.install
985
1067
  end
986
1068
 
987
1069
  assert_directory_exists File.join(Gem.dir, 'cache')
@@ -993,7 +1075,7 @@ gem 'other', version
993
1075
  end
994
1076
 
995
1077
  def test_install_post_build_false
996
- util_clear_gems
1078
+ installer = setup_base_installer
997
1079
 
998
1080
  Gem.post_build do
999
1081
  false
@@ -1001,7 +1083,7 @@ gem 'other', version
1001
1083
 
1002
1084
  use_ui @ui do
1003
1085
  e = assert_raises Gem::InstallError do
1004
- @installer.install
1086
+ installer.install
1005
1087
  end
1006
1088
 
1007
1089
  location = "#{__FILE__}:#{__LINE__ - 9}"
@@ -1017,14 +1099,14 @@ gem 'other', version
1017
1099
  end
1018
1100
 
1019
1101
  def test_install_post_build_nil
1020
- util_clear_gems
1102
+ installer = setup_base_installer
1021
1103
 
1022
1104
  Gem.post_build do
1023
1105
  nil
1024
1106
  end
1025
1107
 
1026
1108
  use_ui @ui do
1027
- @installer.install
1109
+ installer.install
1028
1110
  end
1029
1111
 
1030
1112
  spec_file = File.join @gemhome, 'specifications', @spec.spec_name
@@ -1035,7 +1117,7 @@ gem 'other', version
1035
1117
  end
1036
1118
 
1037
1119
  def test_install_pre_install_false
1038
- util_clear_gems
1120
+ installer = setup_base_installer
1039
1121
 
1040
1122
  Gem.pre_install do
1041
1123
  false
@@ -1043,7 +1125,7 @@ gem 'other', version
1043
1125
 
1044
1126
  use_ui @ui do
1045
1127
  e = assert_raises Gem::InstallError do
1046
- @installer.install
1128
+ installer.install
1047
1129
  end
1048
1130
 
1049
1131
  location = "#{__FILE__}:#{__LINE__ - 9}"
@@ -1056,14 +1138,14 @@ gem 'other', version
1056
1138
  end
1057
1139
 
1058
1140
  def test_install_pre_install_nil
1059
- util_clear_gems
1141
+ installer = setup_base_installer
1060
1142
 
1061
1143
  Gem.pre_install do
1062
1144
  nil
1063
1145
  end
1064
1146
 
1065
1147
  use_ui @ui do
1066
- @installer.install
1148
+ installer.install
1067
1149
  end
1068
1150
 
1069
1151
  spec_file = File.join @gemhome, 'specifications', @spec.spec_name
@@ -1071,26 +1153,28 @@ gem 'other', version
1071
1153
  end
1072
1154
 
1073
1155
  def test_install_with_message
1156
+ @spec = setup_base_spec
1074
1157
  @spec.post_install_message = 'I am a shiny gem!'
1075
1158
 
1076
1159
  use_ui @ui do
1077
1160
  path = Gem::Package.build @spec
1078
1161
 
1079
- @installer = Gem::Installer.at path
1080
- @installer.install
1162
+ installer = Gem::Installer.at path
1163
+ installer.install
1081
1164
  end
1082
1165
 
1083
1166
  assert_match %r|I am a shiny gem!|, @ui.output
1084
1167
  end
1085
1168
 
1086
1169
  def test_install_with_skipped_message
1170
+ @spec = setup_base_spec
1087
1171
  @spec.post_install_message = 'I am a shiny gem!'
1088
1172
 
1089
1173
  use_ui @ui do
1090
1174
  path = Gem::Package.build @spec
1091
1175
 
1092
- @installer = Gem::Installer.at path, :post_install_message => false
1093
- @installer.install
1176
+ installer = Gem::Installer.at path, :post_install_message => false
1177
+ installer.install
1094
1178
  end
1095
1179
 
1096
1180
  refute_match %r|I am a shiny gem!|, @ui.output
@@ -1099,6 +1183,7 @@ gem 'other', version
1099
1183
  def test_install_extension_dir
1100
1184
  gemhome2 = "#{@gemhome}2"
1101
1185
 
1186
+ @spec = setup_base_spec
1102
1187
  @spec.extensions << "extconf.rb"
1103
1188
  write_file File.join(@tempdir, "extconf.rb") do |io|
1104
1189
  io.write <<-RUBY
@@ -1122,6 +1207,8 @@ gem 'other', version
1122
1207
  end
1123
1208
 
1124
1209
  def test_install_extension_dir_is_removed_on_reinstall
1210
+ @spec = setup_base_spec
1211
+
1125
1212
  @spec.extensions << "extconf.rb"
1126
1213
  write_file File.join(@tempdir, "extconf.rb") do |io|
1127
1214
  io.write <<-RUBY
@@ -1157,6 +1244,7 @@ gem 'other', version
1157
1244
  end
1158
1245
 
1159
1246
  def test_install_user_extension_dir
1247
+ @spec = setup_base_spec
1160
1248
  @spec.extensions << "extconf.rb"
1161
1249
  write_file File.join(@tempdir, "extconf.rb") do |io|
1162
1250
  io.write <<-RUBY
@@ -1186,6 +1274,9 @@ gem 'other', version
1186
1274
  end
1187
1275
 
1188
1276
  def test_find_lib_file_after_install
1277
+ skip "extensions don't quite work on jruby" if Gem.java_platform?
1278
+
1279
+ @spec = setup_base_spec
1189
1280
  @spec.extensions << "extconf.rb"
1190
1281
  write_file File.join(@tempdir, "extconf.rb") do |io|
1191
1282
  io.write <<-RUBY
@@ -1229,6 +1320,9 @@ gem 'other', version
1229
1320
  end
1230
1321
 
1231
1322
  def test_install_extension_and_script
1323
+ skip "Makefile creation crashes on jruby" if Gem.java_platform?
1324
+
1325
+ @spec = setup_base_spec
1232
1326
  @spec.extensions << "extconf.rb"
1233
1327
  write_file File.join(@tempdir, "extconf.rb") do |io|
1234
1328
  io.write <<-RUBY
@@ -1259,14 +1353,17 @@ gem 'other', version
1259
1353
  use_ui @ui do
1260
1354
  path = Gem::Package.build @spec
1261
1355
 
1262
- @installer = Gem::Installer.at path
1263
- @installer.install
1356
+ installer = Gem::Installer.at path
1357
+ installer.install
1264
1358
  end
1265
1359
  assert_path_exists File.join @spec.gem_dir, rb
1266
1360
  assert_path_exists File.join @spec.gem_dir, rb2
1267
1361
  end
1268
1362
 
1269
1363
  def test_install_extension_flat
1364
+ skip "extensions don't quite work on jruby" if Gem.java_platform?
1365
+
1366
+ @spec = setup_base_spec
1270
1367
  @spec.require_paths = ["."]
1271
1368
 
1272
1369
  @spec.extensions << "extconf.rb"
@@ -1284,17 +1381,17 @@ gem 'other', version
1284
1381
  end
1285
1382
 
1286
1383
  # empty depend file for no auto dependencies
1287
- @spec.files += %W"depend #{@spec.name}.c".each {|file|
1384
+ @spec.files += %W"depend #{@spec.name}.c".each do |file|
1288
1385
  write_file File.join(@tempdir, file)
1289
- }
1386
+ end
1290
1387
 
1291
1388
  so = File.join(@spec.gem_dir, "#{@spec.name}.#{RbConfig::CONFIG["DLEXT"]}")
1292
1389
  refute_path_exists so
1293
1390
  use_ui @ui do
1294
1391
  path = Gem::Package.build @spec
1295
1392
 
1296
- @installer = Gem::Installer.at path
1297
- @installer.install
1393
+ installer = Gem::Installer.at path
1394
+ installer.install
1298
1395
  end
1299
1396
  assert_path_exists so
1300
1397
  rescue
@@ -1313,49 +1410,56 @@ gem 'other', version
1313
1410
  end
1314
1411
 
1315
1412
  def test_installation_satisfies_dependency_eh
1413
+ installer = setup_base_installer
1414
+
1316
1415
  util_spec 'a'
1317
1416
 
1318
1417
  dep = Gem::Dependency.new 'a', '>= 2'
1319
- assert @installer.installation_satisfies_dependency?(dep)
1418
+ assert installer.installation_satisfies_dependency?(dep)
1320
1419
 
1321
1420
  dep = Gem::Dependency.new 'a', '> 2'
1322
- refute @installer.installation_satisfies_dependency?(dep)
1421
+ refute installer.installation_satisfies_dependency?(dep)
1323
1422
  end
1324
1423
 
1325
1424
  def test_installation_satisfies_dependency_eh_development
1326
- @installer.options[:development] = true
1327
- @installer.options[:dev_shallow] = true
1425
+ installer = setup_base_installer
1426
+ installer.options[:development] = true
1427
+ installer.options[:dev_shallow] = true
1328
1428
 
1329
1429
  util_spec 'a'
1330
1430
 
1331
1431
  dep = Gem::Dependency.new 'a', :development
1332
- assert @installer.installation_satisfies_dependency?(dep)
1432
+ assert installer.installation_satisfies_dependency?(dep)
1333
1433
  end
1334
1434
 
1335
1435
  def test_pre_install_checks_dependencies
1436
+ installer = setup_base_installer
1336
1437
  @spec.add_dependency 'b', '> 5'
1337
- util_setup_gem
1438
+ installer = util_setup_gem
1338
1439
 
1339
1440
  use_ui @ui do
1340
1441
  assert_raises Gem::InstallError do
1341
- @installer.install
1442
+ installer.install
1342
1443
  end
1343
1444
  end
1344
1445
  end
1345
1446
 
1346
1447
  def test_pre_install_checks_dependencies_ignore
1448
+ installer = util_setup_installer
1347
1449
  @spec.add_dependency 'b', '> 5'
1348
- @installer.ignore_dependencies = true
1450
+ installer.ignore_dependencies = true
1349
1451
 
1350
1452
  build_rake_in do
1351
1453
  use_ui @ui do
1352
- assert @installer.pre_install_checks
1454
+ assert installer.pre_install_checks
1353
1455
  end
1354
1456
  end
1355
1457
  end
1356
1458
 
1357
1459
  def test_pre_install_checks_dependencies_install_dir
1358
1460
  gemhome2 = "#{@gemhome}2"
1461
+
1462
+ @gem = setup_base_gem
1359
1463
  @spec.add_dependency 'd'
1360
1464
 
1361
1465
  quick_gem 'd', 2
@@ -1418,9 +1522,9 @@ gem 'other', version
1418
1522
  gem = File.join(@gemhome, 'cache', spec.file_name)
1419
1523
 
1420
1524
  use_ui @ui do
1421
- @installer = Gem::Installer.at gem
1525
+ installer = Gem::Installer.at gem
1422
1526
  e = assert_raises Gem::RuntimeRequirementNotMetError do
1423
- @installer.pre_install_checks
1527
+ installer.pre_install_checks
1424
1528
  end
1425
1529
  rgv = Gem::VERSION
1426
1530
  assert_equal "old_rubygems_required requires RubyGems version < 0. The current RubyGems version is #{rgv}. " +
@@ -1440,9 +1544,9 @@ gem 'other', version
1440
1544
  gem = File.join(@gemhome, 'cache', spec.file_name)
1441
1545
 
1442
1546
  use_ui @ui do
1443
- @installer = Gem::Installer.at gem
1547
+ installer = Gem::Installer.at gem
1444
1548
  e = assert_raises Gem::InstallError do
1445
- @installer.pre_install_checks
1549
+ installer.pre_install_checks
1446
1550
  end
1447
1551
  assert_equal '#<Gem::Specification name=../malicious version=1> has an invalid name', e.message
1448
1552
  end
@@ -1460,9 +1564,9 @@ gem 'other', version
1460
1564
  gem = File.join(@gemhome, 'cache', spec.file_name)
1461
1565
 
1462
1566
  use_ui @ui do
1463
- @installer = Gem::Installer.at gem
1567
+ installer = Gem::Installer.at gem
1464
1568
  e = assert_raises Gem::InstallError do
1465
- @installer.pre_install_checks
1569
+ installer.pre_install_checks
1466
1570
  end
1467
1571
  assert_equal "#<Gem::Specification name=malicious\n::Object.const_set(:FROM_EVAL, true)# version=1> has an invalid name", e.message
1468
1572
  end
@@ -1482,9 +1586,9 @@ gem 'other', version
1482
1586
  gem = File.join(@gemhome, 'cache', spec.file_name)
1483
1587
 
1484
1588
  use_ui @ui do
1485
- @installer = Gem::Installer.at gem
1589
+ installer = Gem::Installer.at gem
1486
1590
  e = assert_raises Gem::InstallError do
1487
- @installer.pre_install_checks
1591
+ installer.pre_install_checks
1488
1592
  end
1489
1593
  assert_equal "#<Gem::Specification name=malicious version=1> has an invalid require_paths", e.message
1490
1594
  end
@@ -1505,9 +1609,9 @@ gem 'other', version
1505
1609
  gem = File.join(@gemhome, 'cache', spec.file_name)
1506
1610
 
1507
1611
  use_ui @ui do
1508
- @installer = Gem::Installer.at gem
1612
+ installer = Gem::Installer.at gem
1509
1613
  e = assert_raises Gem::InstallError do
1510
- @installer.pre_install_checks
1614
+ installer.pre_install_checks
1511
1615
  end
1512
1616
  assert_equal "#<Gem::Specification name=malicious version=1> has an invalid extensions", e.message
1513
1617
  end
@@ -1526,9 +1630,9 @@ gem 'other', version
1526
1630
  gem = File.join(@gemhome, 'cache', spec.file_name)
1527
1631
 
1528
1632
  use_ui @ui do
1529
- @installer = Gem::Installer.at gem
1633
+ installer = Gem::Installer.at gem
1530
1634
  e = assert_raises Gem::InstallError do
1531
- @installer.pre_install_checks
1635
+ installer.pre_install_checks
1532
1636
  end
1533
1637
  assert_equal "#<Gem::Specification name=malicious version=1> has an invalid specification_version", e.message
1534
1638
  end
@@ -1547,75 +1651,90 @@ gem 'other', version
1547
1651
  gem = File.join(@gemhome, 'cache', spec.file_name)
1548
1652
 
1549
1653
  use_ui @ui do
1550
- @installer = Gem::Installer.at gem
1551
- @installer.ignore_dependencies = true
1654
+ installer = Gem::Installer.at gem
1655
+ installer.ignore_dependencies = true
1552
1656
  e = assert_raises Gem::InstallError do
1553
- @installer.pre_install_checks
1657
+ installer.pre_install_checks
1554
1658
  end
1555
1659
  assert_equal "#<Gem::Specification name=malicious version=1> has an invalid dependencies", e.message
1556
1660
  end
1557
1661
  end
1558
1662
 
1559
1663
  def test_shebang
1664
+ installer = setup_base_installer
1665
+
1560
1666
  util_make_exec @spec, "#!/usr/bin/ruby"
1561
1667
 
1562
- shebang = @installer.shebang 'executable'
1668
+ shebang = installer.shebang 'executable'
1563
1669
 
1564
1670
  assert_equal "#!#{Gem.ruby}", shebang
1565
1671
  end
1566
1672
 
1567
1673
  def test_process_options
1568
- assert_nil @installer.build_root
1569
- assert_equal File.join(@gemhome, 'bin'), @installer.bin_dir
1570
- assert_equal @gemhome, @installer.gem_home
1674
+ installer = setup_base_installer
1675
+
1676
+ assert_nil installer.build_root
1677
+ assert_equal File.join(@gemhome, 'bin'), installer.bin_dir
1678
+ assert_equal @gemhome, installer.gem_home
1571
1679
  end
1572
1680
 
1573
1681
  def test_process_options_build_root
1574
1682
  build_root = File.join @tempdir, 'build_root'
1575
1683
 
1576
- @installer = Gem::Installer.at @gem, :build_root => build_root
1684
+ @gem = setup_base_gem
1685
+ installer = Gem::Installer.at @gem, :build_root => build_root
1577
1686
 
1578
- assert_equal Pathname(build_root), @installer.build_root
1579
- assert_equal File.join(build_root, @gemhome, 'bin'), @installer.bin_dir
1580
- assert_equal File.join(build_root, @gemhome), @installer.gem_home
1687
+ assert_equal Pathname(build_root), installer.build_root
1688
+ assert_equal File.join(build_root, @gemhome, 'bin'), installer.bin_dir
1689
+ assert_equal File.join(build_root, @gemhome), installer.gem_home
1581
1690
  end
1582
1691
 
1583
1692
  def test_shebang_arguments
1693
+ installer = setup_base_installer
1694
+
1584
1695
  util_make_exec @spec, "#!/usr/bin/ruby -ws"
1585
1696
 
1586
- shebang = @installer.shebang 'executable'
1697
+ shebang = installer.shebang 'executable'
1587
1698
 
1588
1699
  assert_equal "#!#{Gem.ruby} -ws", shebang
1589
1700
  end
1590
1701
 
1591
1702
  def test_shebang_empty
1703
+ installer = setup_base_installer
1704
+
1592
1705
  util_make_exec @spec, ''
1593
1706
 
1594
- shebang = @installer.shebang 'executable'
1707
+ shebang = installer.shebang 'executable'
1595
1708
  assert_equal "#!#{Gem.ruby}", shebang
1596
1709
  end
1597
1710
 
1598
1711
  def test_shebang_env
1712
+ installer = setup_base_installer
1713
+
1599
1714
  util_make_exec @spec, "#!/usr/bin/env ruby"
1600
1715
 
1601
- shebang = @installer.shebang 'executable'
1716
+ shebang = installer.shebang 'executable'
1602
1717
 
1603
1718
  assert_equal "#!#{Gem.ruby}", shebang
1604
1719
  end
1605
1720
 
1606
1721
  def test_shebang_env_arguments
1722
+ installer = setup_base_installer
1723
+
1607
1724
  util_make_exec @spec, "#!/usr/bin/env ruby -ws"
1608
1725
 
1609
- shebang = @installer.shebang 'executable'
1726
+ shebang = installer.shebang 'executable'
1610
1727
 
1611
1728
  assert_equal "#!#{Gem.ruby} -ws", shebang
1612
1729
  end
1613
1730
 
1614
1731
  def test_shebang_env_shebang
1732
+ installer = setup_base_installer
1733
+
1615
1734
  util_make_exec @spec, ''
1616
- @installer.env_shebang = true
1735
+ installer.env_shebang = true
1617
1736
 
1618
- shebang = @installer.shebang 'executable'
1737
+ shebang = installer.shebang 'executable'
1619
1738
 
1620
1739
  env_shebang = "/usr/bin/env" unless Gem.win_platform?
1621
1740
 
@@ -1624,54 +1743,68 @@ gem 'other', version
1624
1743
  end
1625
1744
 
1626
1745
  def test_shebang_nested
1746
+ installer = setup_base_installer
1747
+
1627
1748
  util_make_exec @spec, "#!/opt/local/ruby/bin/ruby"
1628
1749
 
1629
- shebang = @installer.shebang 'executable'
1750
+ shebang = installer.shebang 'executable'
1630
1751
 
1631
1752
  assert_equal "#!#{Gem.ruby}", shebang
1632
1753
  end
1633
1754
 
1634
1755
  def test_shebang_nested_arguments
1756
+ installer = setup_base_installer
1757
+
1635
1758
  util_make_exec @spec, "#!/opt/local/ruby/bin/ruby -ws"
1636
1759
 
1637
- shebang = @installer.shebang 'executable'
1760
+ shebang = installer.shebang 'executable'
1638
1761
 
1639
1762
  assert_equal "#!#{Gem.ruby} -ws", shebang
1640
1763
  end
1641
1764
 
1642
1765
  def test_shebang_version
1766
+ installer = setup_base_installer
1767
+
1643
1768
  util_make_exec @spec, "#!/usr/bin/ruby18"
1644
1769
 
1645
- shebang = @installer.shebang 'executable'
1770
+ shebang = installer.shebang 'executable'
1646
1771
 
1647
1772
  assert_equal "#!#{Gem.ruby}", shebang
1648
1773
  end
1649
1774
 
1650
1775
  def test_shebang_version_arguments
1776
+ installer = setup_base_installer
1777
+
1651
1778
  util_make_exec @spec, "#!/usr/bin/ruby18 -ws"
1652
1779
 
1653
- shebang = @installer.shebang 'executable'
1780
+ shebang = installer.shebang 'executable'
1654
1781
 
1655
1782
  assert_equal "#!#{Gem.ruby} -ws", shebang
1656
1783
  end
1657
1784
 
1658
1785
  def test_shebang_version_env
1786
+ installer = setup_base_installer
1787
+
1659
1788
  util_make_exec @spec, "#!/usr/bin/env ruby18"
1660
1789
 
1661
- shebang = @installer.shebang 'executable'
1790
+ shebang = installer.shebang 'executable'
1662
1791
 
1663
1792
  assert_equal "#!#{Gem.ruby}", shebang
1664
1793
  end
1665
1794
 
1666
1795
  def test_shebang_version_env_arguments
1796
+ installer = setup_base_installer
1797
+
1667
1798
  util_make_exec @spec, "#!/usr/bin/env ruby18 -ws"
1668
1799
 
1669
- shebang = @installer.shebang 'executable'
1800
+ shebang = installer.shebang 'executable'
1670
1801
 
1671
1802
  assert_equal "#!#{Gem.ruby} -ws", shebang
1672
1803
  end
1673
1804
 
1674
1805
  def test_shebang_custom
1806
+ installer = setup_base_installer
1807
+
1675
1808
  conf = Gem::ConfigFile.new []
1676
1809
  conf[:custom_shebang] = 'test'
1677
1810
 
@@ -1679,12 +1812,14 @@ gem 'other', version
1679
1812
 
1680
1813
  util_make_exec @spec, "#!/usr/bin/ruby"
1681
1814
 
1682
- shebang = @installer.shebang 'executable'
1815
+ shebang = installer.shebang 'executable'
1683
1816
 
1684
1817
  assert_equal "#!test", shebang
1685
1818
  end
1686
1819
 
1687
1820
  def test_shebang_custom_with_expands
1821
+ installer = setup_base_installer
1822
+
1688
1823
  bin_env = win_platform? ? '' : '/usr/bin/env'
1689
1824
  conf = Gem::ConfigFile.new []
1690
1825
  conf[:custom_shebang] = '1 $env 2 $ruby 3 $exec 4 $name'
@@ -1693,12 +1828,14 @@ gem 'other', version
1693
1828
 
1694
1829
  util_make_exec @spec, "#!/usr/bin/ruby"
1695
1830
 
1696
- shebang = @installer.shebang 'executable'
1831
+ shebang = installer.shebang 'executable'
1697
1832
 
1698
1833
  assert_equal "#!1 #{bin_env} 2 #{Gem.ruby} 3 executable 4 a", shebang
1699
1834
  end
1700
1835
 
1701
1836
  def test_shebang_custom_with_expands_and_arguments
1837
+ installer = setup_base_installer
1838
+
1702
1839
  bin_env = win_platform? ? '' : '/usr/bin/env'
1703
1840
  conf = Gem::ConfigFile.new []
1704
1841
  conf[:custom_shebang] = '1 $env 2 $ruby 3 $exec'
@@ -1707,30 +1844,34 @@ gem 'other', version
1707
1844
 
1708
1845
  util_make_exec @spec, "#!/usr/bin/ruby -ws"
1709
1846
 
1710
- shebang = @installer.shebang 'executable'
1847
+ shebang = installer.shebang 'executable'
1711
1848
 
1712
1849
  assert_equal "#!1 #{bin_env} 2 #{Gem.ruby} -ws 3 executable", shebang
1713
1850
  end
1714
1851
 
1715
1852
  def test_unpack
1716
- util_setup_gem
1853
+ installer = util_setup_installer
1717
1854
 
1718
1855
  dest = File.join @gemhome, 'gems', @spec.full_name
1719
1856
 
1720
- @installer.unpack dest
1857
+ Gem::Deprecate.skip_during do
1858
+ installer.unpack dest
1859
+ end
1721
1860
 
1722
1861
  assert_path_exists File.join dest, 'lib', 'code.rb'
1723
1862
  assert_path_exists File.join dest, 'bin', 'executable'
1724
1863
  end
1725
1864
 
1726
1865
  def test_write_build_info_file
1866
+ installer = setup_base_installer
1867
+
1727
1868
  refute_path_exists @spec.build_info_file
1728
1869
 
1729
- @installer.build_args = %w[
1870
+ installer.build_args = %w[
1730
1871
  --with-libyaml-dir /usr/local/Cellar/libyaml/0.1.4
1731
1872
  ]
1732
1873
 
1733
- @installer.write_build_info_file
1874
+ installer.write_build_info_file
1734
1875
 
1735
1876
  assert_path_exists @spec.build_info_file
1736
1877
 
@@ -1740,14 +1881,17 @@ gem 'other', version
1740
1881
  end
1741
1882
 
1742
1883
  def test_write_build_info_file_empty
1884
+ installer = setup_base_installer
1885
+
1743
1886
  refute_path_exists @spec.build_info_file
1744
1887
 
1745
- @installer.write_build_info_file
1888
+ installer.write_build_info_file
1746
1889
 
1747
1890
  refute_path_exists @spec.build_info_file
1748
1891
  end
1749
1892
 
1750
1893
  def test_write_build_info_file_install_dir
1894
+ @gem = setup_base_gem
1751
1895
  installer = Gem::Installer.at @gem, :install_dir => "#{@gemhome}2"
1752
1896
 
1753
1897
  installer.build_args = %w[
@@ -1762,6 +1906,7 @@ gem 'other', version
1762
1906
  end
1763
1907
 
1764
1908
  def test_write_cache_file
1909
+ @gem = setup_base_gem
1765
1910
  cache_file = File.join @gemhome, 'cache', @spec.file_name
1766
1911
  gem = File.join @gemhome, @spec.file_name
1767
1912
 
@@ -1777,13 +1922,14 @@ gem 'other', version
1777
1922
  end
1778
1923
 
1779
1924
  def test_write_spec
1925
+ @spec = setup_base_spec
1780
1926
  FileUtils.rm @spec.spec_file
1781
1927
  refute_path_exists @spec.spec_file
1782
1928
 
1783
- @installer = Gem::Installer.for_spec @spec
1784
- @installer.gem_home = @gemhome
1929
+ installer = Gem::Installer.for_spec @spec
1930
+ installer.gem_home = @gemhome
1785
1931
 
1786
- @installer.write_spec
1932
+ installer.write_spec
1787
1933
 
1788
1934
  assert_path_exists @spec.spec_file
1789
1935
 
@@ -1795,15 +1941,16 @@ gem 'other', version
1795
1941
  end
1796
1942
 
1797
1943
  def test_write_spec_writes_cached_spec
1944
+ @spec = setup_base_spec
1798
1945
  FileUtils.rm @spec.spec_file
1799
1946
  refute_path_exists @spec.spec_file
1800
1947
 
1801
1948
  @spec.files = %w[a.rb b.rb c.rb]
1802
1949
 
1803
- @installer = Gem::Installer.for_spec @spec
1804
- @installer.gem_home = @gemhome
1950
+ installer = Gem::Installer.for_spec @spec
1951
+ installer.gem_home = @gemhome
1805
1952
 
1806
- @installer.write_spec
1953
+ installer.write_spec
1807
1954
 
1808
1955
  # cached specs have no file manifest:
1809
1956
  @spec.files = []
@@ -1812,7 +1959,9 @@ gem 'other', version
1812
1959
  end
1813
1960
 
1814
1961
  def test_dir
1815
- assert_match %r!/gemhome/gems/a-2$!, @installer.dir
1962
+ installer = setup_base_installer
1963
+
1964
+ assert_match %r!/gemhome/gems/a-2$!, installer.dir
1816
1965
  end
1817
1966
 
1818
1967
  def test_default_gem_loaded_from
@@ -1823,14 +1972,16 @@ gem 'other', version
1823
1972
  end
1824
1973
 
1825
1974
  def test_default_gem_without_wrappers
1975
+ installer = setup_base_installer
1976
+
1826
1977
  FileUtils.rm_f File.join(Gem.dir, 'specifications')
1827
1978
 
1828
- @installer.wrappers = false
1829
- @installer.options[:install_as_default] = true
1830
- @installer.gem_dir = @spec.gem_dir
1979
+ installer.wrappers = false
1980
+ installer.options[:install_as_default] = true
1981
+ installer.gem_dir = @spec.gem_dir
1831
1982
 
1832
1983
  use_ui @ui do
1833
- @installer.install
1984
+ installer.install
1834
1985
  end
1835
1986
 
1836
1987
  assert_directory_exists File.join(@spec.gem_dir, 'bin')
@@ -1854,14 +2005,14 @@ gem 'other', version
1854
2005
  end
1855
2006
 
1856
2007
  def test_default_gem_with_wrappers
1857
- FileUtils.rm_f File.join(Gem.dir, 'specifications')
2008
+ installer = setup_base_installer
1858
2009
 
1859
- @installer.wrappers = true
1860
- @installer.options[:install_as_default] = true
1861
- @installer.gem_dir = @spec.gem_dir
2010
+ installer.wrappers = true
2011
+ installer.options[:install_as_default] = true
2012
+ installer.gem_dir = @spec.gem_dir
1862
2013
 
1863
2014
  use_ui @ui do
1864
- @installer.install
2015
+ installer.install
1865
2016
  end
1866
2017
 
1867
2018
  assert_directory_exists util_inst_bindir
@@ -1874,8 +2025,6 @@ gem 'other', version
1874
2025
  end
1875
2026
 
1876
2027
  def test_default_gem_with_exe_as_bindir
1877
- FileUtils.rm_f File.join(Gem.dir, 'specifications')
1878
-
1879
2028
  @spec = quick_gem 'c' do |spec|
1880
2029
  util_make_exec spec, '#!/usr/bin/ruby', 'exe'
1881
2030
  end
@@ -1905,6 +2054,16 @@ gem 'other', version
1905
2054
  assert_equal ['exe/executable'], default_spec.files
1906
2055
  end
1907
2056
 
2057
+ def test_package_attribute
2058
+ gem = quick_gem 'c' do |spec|
2059
+ util_make_exec spec, '#!/usr/bin/ruby', 'exe'
2060
+ end
2061
+
2062
+ installer = util_installer(gem, @gemhome)
2063
+ assert_respond_to(installer, :package)
2064
+ assert_kind_of(Gem::Package, installer.package)
2065
+ end
2066
+
1908
2067
  def old_ruby_required(requirement)
1909
2068
  spec = util_spec 'old_ruby_required', '1' do |s|
1910
2069
  s.required_ruby_version = requirement
@@ -1919,7 +2078,7 @@ gem 'other', version
1919
2078
  @spec = util_spec 'z'
1920
2079
  util_build_gem @spec
1921
2080
 
1922
- @installer = util_installer @spec, @gemhome
2081
+ util_installer @spec, @gemhome
1923
2082
  end
1924
2083
 
1925
2084
  def util_conflict_executable(wrappers)
@@ -1937,4 +2096,5 @@ gem 'other', version
1937
2096
  def mask
1938
2097
  0100755 & (~File.umask)
1939
2098
  end
2099
+
1940
2100
  end