rubygems-update 3.3.7 → 3.4.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (600) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1419 -1036
  3. data/CONTRIBUTING.md +30 -7
  4. data/Manifest.txt +63 -31
  5. data/POLICIES.md +53 -18
  6. data/README.md +3 -6
  7. data/bin/gem +2 -5
  8. data/bin/update_rubygems +5 -5
  9. data/bundler/CHANGELOG.md +457 -1
  10. data/bundler/README.md +3 -6
  11. data/bundler/UPGRADING.md +11 -4
  12. data/bundler/bundler.gemspec +8 -10
  13. data/bundler/exe/bundle +2 -5
  14. data/bundler/exe/bundler +1 -1
  15. data/bundler/lib/bundler/build_metadata.rb +3 -3
  16. data/bundler/lib/bundler/cli/add.rb +1 -1
  17. data/bundler/lib/bundler/cli/binstubs.rb +5 -1
  18. data/bundler/lib/bundler/cli/check.rb +1 -1
  19. data/bundler/lib/bundler/cli/common.rb +4 -2
  20. data/bundler/lib/bundler/cli/console.rb +2 -2
  21. data/bundler/lib/bundler/cli/doctor.rb +4 -6
  22. data/bundler/lib/bundler/cli/gem.rb +62 -40
  23. data/bundler/lib/bundler/cli/info.rb +1 -1
  24. data/bundler/lib/bundler/cli/init.rb +6 -2
  25. data/bundler/lib/bundler/cli/install.rb +7 -5
  26. data/bundler/lib/bundler/cli/lock.rb +8 -5
  27. data/bundler/lib/bundler/cli/open.rb +6 -4
  28. data/bundler/lib/bundler/cli/outdated.rb +13 -6
  29. data/bundler/lib/bundler/cli/platform.rb +1 -1
  30. data/bundler/lib/bundler/cli/show.rb +1 -1
  31. data/bundler/lib/bundler/cli/viz.rb +1 -1
  32. data/bundler/lib/bundler/cli.rb +55 -10
  33. data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
  34. data/bundler/lib/bundler/compact_index_client/updater.rb +53 -39
  35. data/bundler/lib/bundler/constants.rb +1 -1
  36. data/bundler/lib/bundler/current_ruby.rb +18 -6
  37. data/bundler/lib/bundler/definition.rb +206 -129
  38. data/bundler/lib/bundler/dependency.rb +21 -66
  39. data/bundler/lib/bundler/digest.rb +1 -1
  40. data/bundler/lib/bundler/dsl.rb +13 -18
  41. data/bundler/lib/bundler/endpoint_specification.rb +6 -10
  42. data/bundler/lib/bundler/env.rb +1 -1
  43. data/bundler/lib/bundler/environment_preserver.rb +3 -2
  44. data/bundler/lib/bundler/errors.rb +15 -15
  45. data/bundler/lib/bundler/feature_flag.rb +0 -1
  46. data/bundler/lib/bundler/fetcher/base.rb +6 -8
  47. data/bundler/lib/bundler/fetcher/compact_index.rb +9 -11
  48. data/bundler/lib/bundler/fetcher/dependency.rb +1 -1
  49. data/bundler/lib/bundler/fetcher/downloader.rb +2 -5
  50. data/bundler/lib/bundler/fetcher.rb +15 -14
  51. data/bundler/lib/bundler/force_platform.rb +18 -0
  52. data/bundler/lib/bundler/friendly_errors.rb +21 -7
  53. data/bundler/lib/bundler/gem_helpers.rb +9 -2
  54. data/bundler/lib/bundler/gem_version_promoter.rb +53 -98
  55. data/bundler/lib/bundler/graph.rb +3 -3
  56. data/bundler/lib/bundler/index.rb +13 -51
  57. data/bundler/lib/bundler/injector.rb +9 -4
  58. data/bundler/lib/bundler/inline.rb +9 -21
  59. data/bundler/lib/bundler/installer/gem_installer.rb +14 -1
  60. data/bundler/lib/bundler/installer/parallel_installer.rb +3 -33
  61. data/bundler/lib/bundler/installer/standalone.rb +42 -11
  62. data/bundler/lib/bundler/installer.rb +20 -41
  63. data/bundler/lib/bundler/lazy_specification.rb +53 -48
  64. data/bundler/lib/bundler/lockfile_generator.rb +2 -2
  65. data/bundler/lib/bundler/lockfile_parser.rb +18 -14
  66. data/bundler/lib/bundler/man/bundle-add.1 +13 -5
  67. data/bundler/lib/bundler/man/bundle-add.1.ronn +10 -4
  68. data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
  69. data/bundler/lib/bundler/man/bundle-cache.1 +7 -1
  70. data/bundler/lib/bundler/man/bundle-cache.1.ronn +7 -0
  71. data/bundler/lib/bundler/man/bundle-check.1 +1 -1
  72. data/bundler/lib/bundler/man/bundle-clean.1 +2 -2
  73. data/bundler/lib/bundler/man/bundle-clean.1.ronn +1 -1
  74. data/bundler/lib/bundler/man/bundle-config.1 +30 -11
  75. data/bundler/lib/bundler/man/bundle-config.1.ronn +26 -14
  76. data/bundler/lib/bundler/man/bundle-console.1 +53 -0
  77. data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
  78. data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
  79. data/bundler/lib/bundler/man/bundle-exec.1 +6 -6
  80. data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -6
  81. data/bundler/lib/bundler/man/bundle-gem.1 +27 -37
  82. data/bundler/lib/bundler/man/bundle-gem.1.ronn +5 -5
  83. data/bundler/lib/bundler/man/bundle-help.1 +13 -0
  84. data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
  85. data/bundler/lib/bundler/man/bundle-info.1 +1 -1
  86. data/bundler/lib/bundler/man/bundle-init.1 +5 -1
  87. data/bundler/lib/bundler/man/bundle-init.1.ronn +2 -0
  88. data/bundler/lib/bundler/man/bundle-inject.1 +5 -2
  89. data/bundler/lib/bundler/man/bundle-inject.1.ronn +3 -1
  90. data/bundler/lib/bundler/man/bundle-install.1 +5 -30
  91. data/bundler/lib/bundler/man/bundle-install.1.ronn +6 -29
  92. data/bundler/lib/bundler/man/bundle-list.1 +1 -1
  93. data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
  94. data/bundler/lib/bundler/man/bundle-open.1 +22 -2
  95. data/bundler/lib/bundler/man/bundle-open.1.ronn +9 -1
  96. data/bundler/lib/bundler/man/bundle-outdated.1 +3 -10
  97. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +1 -10
  98. data/bundler/lib/bundler/man/bundle-platform.1 +16 -6
  99. data/bundler/lib/bundler/man/bundle-platform.1.ronn +14 -7
  100. data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
  101. data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
  102. data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
  103. data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
  104. data/bundler/lib/bundler/man/bundle-show.1 +1 -1
  105. data/bundler/lib/bundler/man/bundle-update.1 +1 -1
  106. data/bundler/lib/bundler/man/bundle-version.1 +35 -0
  107. data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
  108. data/bundler/lib/bundler/man/bundle-viz.1 +4 -1
  109. data/bundler/lib/bundler/man/bundle-viz.1.ronn +2 -0
  110. data/bundler/lib/bundler/man/bundle.1 +15 -10
  111. data/bundler/lib/bundler/man/bundle.1.ronn +12 -7
  112. data/bundler/lib/bundler/man/gemfile.5 +92 -81
  113. data/bundler/lib/bundler/man/gemfile.5.ronn +98 -85
  114. data/bundler/lib/bundler/man/index.txt +4 -0
  115. data/bundler/lib/bundler/match_metadata.rb +13 -0
  116. data/bundler/lib/bundler/match_platform.rb +0 -1
  117. data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
  118. data/bundler/lib/bundler/mirror.rb +5 -7
  119. data/bundler/lib/bundler/plugin/api/source.rb +3 -9
  120. data/bundler/lib/bundler/plugin/index.rb +4 -4
  121. data/bundler/lib/bundler/plugin/installer/git.rb +0 -4
  122. data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -8
  123. data/bundler/lib/bundler/plugin.rb +3 -1
  124. data/bundler/lib/bundler/process_lock.rb +1 -1
  125. data/bundler/lib/bundler/remote_specification.rb +8 -9
  126. data/bundler/lib/bundler/resolver/base.rb +77 -0
  127. data/bundler/lib/bundler/resolver/candidate.rb +94 -0
  128. data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
  129. data/bundler/lib/bundler/resolver/package.rb +72 -0
  130. data/bundler/lib/bundler/resolver/root.rb +25 -0
  131. data/bundler/lib/bundler/resolver/spec_group.rb +42 -70
  132. data/bundler/lib/bundler/resolver.rb +328 -299
  133. data/bundler/lib/bundler/ruby_dsl.rb +1 -1
  134. data/bundler/lib/bundler/ruby_version.rb +5 -18
  135. data/bundler/lib/bundler/rubygems_ext.rb +131 -17
  136. data/bundler/lib/bundler/rubygems_gem_installer.rb +32 -20
  137. data/bundler/lib/bundler/rubygems_integration.rb +13 -35
  138. data/bundler/lib/bundler/runtime.rb +1 -6
  139. data/bundler/lib/bundler/settings.rb +2 -8
  140. data/bundler/lib/bundler/setup.rb +4 -1
  141. data/bundler/lib/bundler/shared_helpers.rb +12 -12
  142. data/bundler/lib/bundler/source/git/git_proxy.rb +209 -69
  143. data/bundler/lib/bundler/source/git.rb +22 -25
  144. data/bundler/lib/bundler/source/metadata.rb +2 -3
  145. data/bundler/lib/bundler/source/path/installer.rb +1 -22
  146. data/bundler/lib/bundler/source/path.rb +7 -7
  147. data/bundler/lib/bundler/source/rubygems.rb +75 -117
  148. data/bundler/lib/bundler/source.rb +3 -4
  149. data/bundler/lib/bundler/source_list.rb +12 -2
  150. data/bundler/lib/bundler/source_map.rb +15 -2
  151. data/bundler/lib/bundler/spec_set.rb +58 -34
  152. data/bundler/lib/bundler/stub_specification.rb +5 -3
  153. data/bundler/lib/bundler/templates/Executable +3 -5
  154. data/bundler/lib/bundler/templates/Executable.bundler +6 -11
  155. data/bundler/lib/bundler/templates/Executable.standalone +4 -4
  156. data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
  157. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +3 -0
  158. data/bundler/lib/bundler/templates/newgem/README.md.tt +7 -11
  159. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +2 -1
  160. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
  161. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
  162. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
  163. data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
  164. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +11 -1
  165. data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
  166. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +13 -4
  167. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +9 -3
  168. data/bundler/lib/bundler/ui/shell.rb +35 -12
  169. data/bundler/lib/bundler/ui/silent.rb +21 -5
  170. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
  171. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
  172. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
  173. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1350 -408
  174. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
  175. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
  176. data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
  177. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
  178. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
  179. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
  180. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +155 -0
  181. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
  182. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
  183. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
  184. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
  185. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
  186. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
  187. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
  188. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
  189. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
  190. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +243 -0
  191. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
  192. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
  193. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +1 -1
  194. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +318 -319
  195. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +64 -16
  196. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
  197. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -1
  198. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +27 -7
  199. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -2
  200. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -1
  201. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
  202. data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
  203. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -2
  204. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +13 -7
  205. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +10 -5
  206. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  207. data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +1 -2
  208. data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +2 -1
  209. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -2
  210. data/bundler/lib/bundler/vendored_persistent.rb +1 -33
  211. data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_pub_grub.rb} +1 -1
  212. data/bundler/lib/bundler/version.rb +5 -1
  213. data/bundler/lib/bundler/worker.rb +5 -7
  214. data/bundler/lib/bundler.rb +39 -73
  215. data/lib/rubygems/available_set.rb +3 -3
  216. data/lib/rubygems/basic_specification.rb +4 -4
  217. data/lib/rubygems/bundler_version_finder.rb +1 -1
  218. data/lib/rubygems/command.rb +40 -32
  219. data/lib/rubygems/command_manager.rb +33 -14
  220. data/lib/rubygems/commands/build_command.rb +11 -8
  221. data/lib/rubygems/commands/cert_command.rb +33 -33
  222. data/lib/rubygems/commands/check_command.rb +20 -20
  223. data/lib/rubygems/commands/cleanup_command.rb +17 -17
  224. data/lib/rubygems/commands/contents_command.rb +13 -13
  225. data/lib/rubygems/commands/dependency_command.rb +16 -16
  226. data/lib/rubygems/commands/environment_command.rb +10 -7
  227. data/lib/rubygems/commands/exec_command.rb +248 -0
  228. data/lib/rubygems/commands/fetch_command.rb +9 -9
  229. data/lib/rubygems/commands/generate_index_command.rb +17 -17
  230. data/lib/rubygems/commands/help_command.rb +6 -6
  231. data/lib/rubygems/commands/info_command.rb +3 -3
  232. data/lib/rubygems/commands/install_command.rb +28 -24
  233. data/lib/rubygems/commands/list_command.rb +3 -3
  234. data/lib/rubygems/commands/lock_command.rb +4 -4
  235. data/lib/rubygems/commands/mirror_command.rb +3 -3
  236. data/lib/rubygems/commands/open_command.rb +9 -9
  237. data/lib/rubygems/commands/outdated_command.rb +5 -5
  238. data/lib/rubygems/commands/owner_command.rb +17 -12
  239. data/lib/rubygems/commands/pristine_command.rb +37 -37
  240. data/lib/rubygems/commands/push_command.rb +8 -8
  241. data/lib/rubygems/commands/query_command.rb +8 -8
  242. data/lib/rubygems/commands/rdoc_command.rb +20 -19
  243. data/lib/rubygems/commands/search_command.rb +3 -3
  244. data/lib/rubygems/commands/server_command.rb +3 -3
  245. data/lib/rubygems/commands/setup_command.rb +99 -108
  246. data/lib/rubygems/commands/signin_command.rb +9 -9
  247. data/lib/rubygems/commands/signout_command.rb +7 -7
  248. data/lib/rubygems/commands/sources_command.rb +22 -22
  249. data/lib/rubygems/commands/specification_command.rb +14 -14
  250. data/lib/rubygems/commands/stale_command.rb +2 -2
  251. data/lib/rubygems/commands/uninstall_command.rb +40 -40
  252. data/lib/rubygems/commands/unpack_command.rb +13 -13
  253. data/lib/rubygems/commands/update_command.rb +49 -68
  254. data/lib/rubygems/commands/which_command.rb +7 -7
  255. data/lib/rubygems/commands/yank_command.rb +11 -11
  256. data/lib/rubygems/compatibility.rb +4 -2
  257. data/lib/rubygems/config_file.rb +54 -21
  258. data/lib/rubygems/core_ext/kernel_gem.rb +1 -6
  259. data/lib/rubygems/core_ext/kernel_require.rb +117 -114
  260. data/lib/rubygems/core_ext/kernel_warn.rb +33 -37
  261. data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
  262. data/lib/rubygems/defaults.rb +32 -18
  263. data/lib/rubygems/dependency.rb +14 -11
  264. data/lib/rubygems/dependency_installer.rb +37 -37
  265. data/lib/rubygems/dependency_list.rb +6 -6
  266. data/lib/rubygems/deprecate.rb +2 -2
  267. data/lib/rubygems/doctor.rb +18 -18
  268. data/lib/rubygems/errors.rb +3 -3
  269. data/lib/rubygems/exceptions.rb +6 -8
  270. data/lib/rubygems/ext/build_error.rb +1 -1
  271. data/lib/rubygems/ext/builder.rb +27 -18
  272. data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +27 -0
  273. data/lib/rubygems/ext/cargo_builder.rb +360 -0
  274. data/lib/rubygems/ext/cmake_builder.rb +2 -2
  275. data/lib/rubygems/ext/configure_builder.rb +1 -1
  276. data/lib/rubygems/ext/ext_conf_builder.rb +36 -59
  277. data/lib/rubygems/ext/rake_builder.rb +3 -3
  278. data/lib/rubygems/ext.rb +7 -6
  279. data/lib/rubygems/gem_runner.rb +8 -12
  280. data/lib/rubygems/gemcutter_utilities.rb +60 -21
  281. data/lib/rubygems/indexer.rb +30 -28
  282. data/lib/rubygems/install_default_message.rb +2 -2
  283. data/lib/rubygems/install_message.rb +2 -2
  284. data/lib/rubygems/install_update_options.rb +55 -55
  285. data/lib/rubygems/installer.rb +40 -50
  286. data/lib/rubygems/installer_uninstaller_utils.rb +2 -2
  287. data/lib/rubygems/local_remote_options.rb +19 -21
  288. data/lib/rubygems/mock_gem_ui.rb +2 -2
  289. data/lib/rubygems/name_tuple.rb +4 -4
  290. data/lib/rubygems/optparse/lib/optparse/ac.rb +1 -1
  291. data/lib/rubygems/optparse/lib/optparse/date.rb +1 -1
  292. data/lib/rubygems/optparse/lib/optparse/kwargs.rb +1 -1
  293. data/lib/rubygems/optparse/lib/optparse/shellwords.rb +1 -1
  294. data/lib/rubygems/optparse/lib/optparse/time.rb +1 -1
  295. data/lib/rubygems/optparse/lib/optparse/uri.rb +1 -1
  296. data/lib/rubygems/optparse/lib/optparse.rb +95 -17
  297. data/lib/rubygems/optparse.rb +1 -1
  298. data/lib/rubygems/package/file_source.rb +2 -2
  299. data/lib/rubygems/package/old.rb +8 -8
  300. data/lib/rubygems/package/tar_header.rb +61 -61
  301. data/lib/rubygems/package/tar_reader/entry.rb +90 -9
  302. data/lib/rubygems/package/tar_reader.rb +1 -29
  303. data/lib/rubygems/package/tar_writer.rb +7 -7
  304. data/lib/rubygems/package.rb +66 -49
  305. data/lib/rubygems/package_task.rb +4 -4
  306. data/lib/rubygems/platform.rb +80 -51
  307. data/lib/rubygems/psych_tree.rb +1 -1
  308. data/lib/rubygems/query_utils.rb +36 -36
  309. data/lib/rubygems/rdoc.rb +2 -2
  310. data/lib/rubygems/remote_fetcher.rb +22 -22
  311. data/lib/rubygems/request/connection_pools.rb +4 -4
  312. data/lib/rubygems/request/http_pool.rb +1 -1
  313. data/lib/rubygems/request.rb +24 -24
  314. data/lib/rubygems/request_set/gem_dependency_api.rb +122 -123
  315. data/lib/rubygems/request_set/lockfile/parser.rb +26 -26
  316. data/lib/rubygems/request_set/lockfile/tokenizer.rb +4 -4
  317. data/lib/rubygems/request_set/lockfile.rb +5 -5
  318. data/lib/rubygems/request_set.rb +17 -17
  319. data/lib/rubygems/requirement.rb +14 -14
  320. data/lib/rubygems/resolver/activation_request.rb +3 -3
  321. data/lib/rubygems/resolver/api_set.rb +4 -4
  322. data/lib/rubygems/resolver/api_specification.rb +6 -6
  323. data/lib/rubygems/resolver/best_set.rb +5 -5
  324. data/lib/rubygems/resolver/conflict.rb +10 -10
  325. data/lib/rubygems/resolver/dependency_request.rb +2 -2
  326. data/lib/rubygems/resolver/git_set.rb +2 -2
  327. data/lib/rubygems/resolver/git_specification.rb +6 -6
  328. data/lib/rubygems/resolver/index_set.rb +3 -3
  329. data/lib/rubygems/resolver/index_specification.rb +6 -5
  330. data/lib/rubygems/resolver/installed_specification.rb +4 -4
  331. data/lib/rubygems/resolver/installer_set.rb +11 -16
  332. data/lib/rubygems/resolver/local_specification.rb +2 -2
  333. data/lib/rubygems/resolver/lock_set.rb +4 -4
  334. data/lib/rubygems/resolver/lock_specification.rb +4 -4
  335. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +1 -1
  336. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
  337. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  338. data/lib/rubygems/resolver/molinillo.rb +1 -1
  339. data/lib/rubygems/resolver/specification.rb +1 -1
  340. data/lib/rubygems/resolver/stats.rb +1 -1
  341. data/lib/rubygems/resolver/vendor_set.rb +1 -1
  342. data/lib/rubygems/resolver/vendor_specification.rb +3 -3
  343. data/lib/rubygems/resolver.rb +40 -40
  344. data/lib/rubygems/s3_uri_signer.rb +6 -6
  345. data/lib/rubygems/safe_yaml.rb +2 -2
  346. data/lib/rubygems/security/policies.rb +47 -47
  347. data/lib/rubygems/security/policy.rb +18 -18
  348. data/lib/rubygems/security/signer.rb +5 -5
  349. data/lib/rubygems/security/trust_dir.rb +4 -4
  350. data/lib/rubygems/security.rb +29 -42
  351. data/lib/rubygems/security_option.rb +5 -5
  352. data/lib/rubygems/source/git.rb +25 -24
  353. data/lib/rubygems/source/installed.rb +1 -1
  354. data/lib/rubygems/source/local.rb +2 -2
  355. data/lib/rubygems/source/specific_file.rb +1 -1
  356. data/lib/rubygems/source.rb +18 -25
  357. data/lib/rubygems/source_list.rb +1 -5
  358. data/lib/rubygems/spec_fetcher.rb +11 -11
  359. data/lib/rubygems/specification.rb +175 -118
  360. data/lib/rubygems/specification_policy.rb +35 -16
  361. data/lib/rubygems/stub_specification.rb +8 -8
  362. data/lib/rubygems/text.rb +2 -2
  363. data/lib/rubygems/tsort/lib/tsort.rb +308 -310
  364. data/lib/rubygems/tsort.rb +1 -1
  365. data/lib/rubygems/uninstaller.rb +18 -18
  366. data/lib/rubygems/update_suggestion.rb +69 -0
  367. data/lib/rubygems/uri.rb +45 -30
  368. data/lib/rubygems/uri_formatter.rb +1 -1
  369. data/lib/rubygems/user_interaction.rb +33 -19
  370. data/lib/rubygems/util/licenses.rb +3 -3
  371. data/lib/rubygems/util.rb +12 -16
  372. data/lib/rubygems/validator.rb +6 -6
  373. data/lib/rubygems/version.rb +17 -11
  374. data/lib/rubygems/version_option.rb +3 -3
  375. data/lib/rubygems.rb +96 -77
  376. data/rubygems-update.gemspec +3 -3
  377. data/setup.rb +10 -10
  378. data/test/rubygems/alternate_cert.pem +14 -14
  379. data/test/rubygems/alternate_cert_32.pem +15 -15
  380. data/test/rubygems/alternate_key.pem +25 -25
  381. data/test/rubygems/bundler_test_gem.rb +419 -0
  382. data/test/rubygems/child_cert.pem +15 -16
  383. data/test/rubygems/child_cert_32.pem +15 -16
  384. data/test/rubygems/child_key.pem +25 -25
  385. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  386. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  387. data/test/rubygems/encrypted_private_key.pem +26 -26
  388. data/test/rubygems/expired_cert.pem +15 -15
  389. data/test/rubygems/future_cert.pem +15 -15
  390. data/test/rubygems/future_cert_32.pem +15 -15
  391. data/test/rubygems/grandchild_cert.pem +15 -16
  392. data/test/rubygems/grandchild_cert_32.pem +15 -16
  393. data/test/rubygems/grandchild_key.pem +25 -25
  394. data/test/rubygems/helper.rb +183 -163
  395. data/test/rubygems/installer_test_case.rb +13 -13
  396. data/test/rubygems/invalid_issuer_cert.pem +16 -16
  397. data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
  398. data/test/rubygems/invalid_key.pem +25 -25
  399. data/test/rubygems/invalid_signer_cert.pem +15 -15
  400. data/test/rubygems/invalid_signer_cert_32.pem +15 -15
  401. data/test/rubygems/invalidchild_cert.pem +15 -16
  402. data/test/rubygems/invalidchild_cert_32.pem +15 -16
  403. data/test/rubygems/invalidchild_key.pem +25 -25
  404. data/test/rubygems/package/tar_test_case.rb +52 -17
  405. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  406. data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
  407. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
  408. data/test/rubygems/private_key.pem +25 -25
  409. data/test/rubygems/public_cert.pem +16 -16
  410. data/test/rubygems/public_cert_32.pem +15 -15
  411. data/test/rubygems/public_key.pem +7 -7
  412. data/test/rubygems/rubygems_plugin.rb +2 -2
  413. data/test/rubygems/simple_gem.rb +1 -1
  414. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +4 -4
  415. data/test/rubygems/test_bundled_ca.rb +11 -11
  416. data/test/rubygems/test_config.rb +3 -3
  417. data/test/rubygems/test_deprecate.rb +3 -3
  418. data/test/rubygems/test_exit.rb +8 -2
  419. data/test/rubygems/test_gem.rb +327 -694
  420. data/test/rubygems/test_gem_available_set.rb +21 -21
  421. data/test/rubygems/test_gem_bundler_version_finder.rb +5 -4
  422. data/test/rubygems/test_gem_command.rb +44 -44
  423. data/test/rubygems/test_gem_command_manager.rb +102 -31
  424. data/test/rubygems/test_gem_commands_build_command.rb +73 -63
  425. data/test/rubygems/test_gem_commands_cert_command.rb +97 -99
  426. data/test/rubygems/test_gem_commands_check_command.rb +4 -4
  427. data/test/rubygems/test_gem_commands_cleanup_command.rb +40 -40
  428. data/test/rubygems/test_gem_commands_contents_command.rb +28 -28
  429. data/test/rubygems/test_gem_commands_dependency_command.rb +36 -36
  430. data/test/rubygems/test_gem_commands_environment_command.rb +38 -14
  431. data/test/rubygems/test_gem_commands_exec_command.rb +851 -0
  432. data/test/rubygems/test_gem_commands_fetch_command.rb +37 -37
  433. data/test/rubygems/test_gem_commands_generate_index_command.rb +7 -7
  434. data/test/rubygems/test_gem_commands_help_command.rb +13 -13
  435. data/test/rubygems/test_gem_commands_info_command.rb +28 -2
  436. data/test/rubygems/test_gem_commands_install_command.rb +153 -134
  437. data/test/rubygems/test_gem_commands_list_command.rb +4 -4
  438. data/test/rubygems/test_gem_commands_lock_command.rb +10 -10
  439. data/test/rubygems/test_gem_commands_mirror.rb +2 -2
  440. data/test/rubygems/test_gem_commands_open_command.rb +4 -4
  441. data/test/rubygems/test_gem_commands_outdated_command.rb +9 -9
  442. data/test/rubygems/test_gem_commands_owner_command.rb +126 -45
  443. data/test/rubygems/test_gem_commands_pristine_command.rb +93 -92
  444. data/test/rubygems/test_gem_commands_push_command.rb +85 -59
  445. data/test/rubygems/test_gem_commands_query_command.rb +73 -73
  446. data/test/rubygems/test_gem_commands_search_command.rb +2 -2
  447. data/test/rubygems/test_gem_commands_server_command.rb +2 -2
  448. data/test/rubygems/test_gem_commands_setup_command.rb +123 -94
  449. data/test/rubygems/test_gem_commands_signin_command.rb +153 -25
  450. data/test/rubygems/test_gem_commands_signout_command.rb +3 -3
  451. data/test/rubygems/test_gem_commands_sources_command.rb +74 -25
  452. data/test/rubygems/test_gem_commands_specification_command.rb +32 -32
  453. data/test/rubygems/test_gem_commands_stale_command.rb +4 -4
  454. data/test/rubygems/test_gem_commands_uninstall_command.rb +75 -75
  455. data/test/rubygems/test_gem_commands_unpack_command.rb +31 -31
  456. data/test/rubygems/test_gem_commands_update_command.rb +145 -93
  457. data/test/rubygems/test_gem_commands_which_command.rb +6 -6
  458. data/test/rubygems/test_gem_commands_yank_command.rb +42 -42
  459. data/test/rubygems/test_gem_config_file.rb +93 -81
  460. data/test/rubygems/test_gem_dependency.rb +75 -73
  461. data/test/rubygems/test_gem_dependency_installer.rb +165 -165
  462. data/test/rubygems/test_gem_dependency_list.rb +47 -47
  463. data/test/rubygems/test_gem_dependency_resolution_error.rb +4 -4
  464. data/test/rubygems/test_gem_doctor.rb +26 -26
  465. data/test/rubygems/test_gem_ext_builder.rb +60 -62
  466. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +1 -0
  467. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +8 -0
  468. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +233 -0
  469. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +10 -0
  470. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +27 -0
  471. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +1 -0
  472. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +1 -0
  473. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +247 -0
  474. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +10 -0
  475. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +8 -0
  476. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +51 -0
  477. data/test/rubygems/test_gem_ext_cargo_builder.rb +166 -0
  478. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +33 -0
  479. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +60 -0
  480. data/test/rubygems/test_gem_ext_cmake_builder.rb +17 -15
  481. data/test/rubygems/test_gem_ext_configure_builder.rb +13 -13
  482. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +51 -52
  483. data/test/rubygems/test_gem_ext_rake_builder.rb +15 -15
  484. data/test/rubygems/test_gem_gem_runner.rb +9 -9
  485. data/test/rubygems/test_gem_gemcutter_utilities.rb +71 -65
  486. data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -4
  487. data/test/rubygems/test_gem_indexer.rb +90 -67
  488. data/test/rubygems/test_gem_install_update_options.rb +16 -16
  489. data/test/rubygems/test_gem_installer.rb +371 -304
  490. data/test/rubygems/test_gem_local_remote_options.rb +10 -10
  491. data/test/rubygems/test_gem_name_tuple.rb +4 -4
  492. data/test/rubygems/test_gem_package.rb +244 -234
  493. data/test/rubygems/test_gem_package_old.rb +13 -13
  494. data/test/rubygems/test_gem_package_tar_header.rb +47 -47
  495. data/test/rubygems/test_gem_package_tar_reader.rb +55 -8
  496. data/test/rubygems/test_gem_package_tar_reader_entry.rb +161 -16
  497. data/test/rubygems/test_gem_package_tar_writer.rb +76 -76
  498. data/test/rubygems/test_gem_package_task.rb +18 -18
  499. data/test/rubygems/test_gem_path_support.rb +14 -14
  500. data/test/rubygems/test_gem_platform.rb +335 -214
  501. data/test/rubygems/test_gem_rdoc.rb +14 -14
  502. data/test/rubygems/test_gem_remote_fetcher.rb +157 -157
  503. data/test/rubygems/test_gem_request.rb +55 -55
  504. data/test/rubygems/test_gem_request_connection_pools.rb +29 -29
  505. data/test/rubygems/test_gem_request_set.rb +100 -100
  506. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +209 -211
  507. data/test/rubygems/test_gem_request_set_lockfile.rb +86 -86
  508. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +58 -58
  509. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +62 -62
  510. data/test/rubygems/test_gem_requirement.rb +47 -41
  511. data/test/rubygems/test_gem_resolver.rb +166 -99
  512. data/test/rubygems/test_gem_resolver_activation_request.rb +6 -6
  513. data/test/rubygems/test_gem_resolver_api_set.rb +33 -33
  514. data/test/rubygems/test_gem_resolver_api_specification.rb +47 -47
  515. data/test/rubygems/test_gem_resolver_best_set.rb +22 -22
  516. data/test/rubygems/test_gem_resolver_composed_set.rb +1 -1
  517. data/test/rubygems/test_gem_resolver_conflict.rb +12 -12
  518. data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -15
  519. data/test/rubygems/test_gem_resolver_git_set.rb +21 -21
  520. data/test/rubygems/test_gem_resolver_git_specification.rb +21 -21
  521. data/test/rubygems/test_gem_resolver_index_set.rb +12 -12
  522. data/test/rubygems/test_gem_resolver_index_specification.rb +16 -16
  523. data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -5
  524. data/test/rubygems/test_gem_resolver_installer_set.rb +79 -35
  525. data/test/rubygems/test_gem_resolver_local_specification.rb +7 -7
  526. data/test/rubygems/test_gem_resolver_lock_set.rb +12 -12
  527. data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -17
  528. data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -1
  529. data/test/rubygems/test_gem_resolver_specification.rb +8 -8
  530. data/test/rubygems/test_gem_resolver_vendor_set.rb +6 -6
  531. data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -10
  532. data/test/rubygems/test_gem_security.rb +68 -68
  533. data/test/rubygems/test_gem_security_policy.rb +72 -72
  534. data/test/rubygems/test_gem_security_signer.rb +34 -34
  535. data/test/rubygems/test_gem_security_trust_dir.rb +6 -6
  536. data/test/rubygems/test_gem_silent_ui.rb +38 -32
  537. data/test/rubygems/test_gem_source.rb +44 -44
  538. data/test/rubygems/test_gem_source_fetch_problem.rb +9 -9
  539. data/test/rubygems/test_gem_source_git.rb +69 -62
  540. data/test/rubygems/test_gem_source_installed.rb +16 -16
  541. data/test/rubygems/test_gem_source_list.rb +5 -5
  542. data/test/rubygems/test_gem_source_local.rb +14 -14
  543. data/test/rubygems/test_gem_source_lock.rb +31 -31
  544. data/test/rubygems/test_gem_source_specific_file.rb +17 -17
  545. data/test/rubygems/test_gem_source_subpath_problem.rb +7 -7
  546. data/test/rubygems/test_gem_source_vendor.rb +13 -13
  547. data/test/rubygems/test_gem_spec_fetcher.rb +72 -72
  548. data/test/rubygems/test_gem_specification.rb +539 -474
  549. data/test/rubygems/test_gem_stream_ui.rb +19 -19
  550. data/test/rubygems/test_gem_stub_specification.rb +32 -32
  551. data/test/rubygems/test_gem_text.rb +1 -1
  552. data/test/rubygems/test_gem_uninstaller.rb +113 -113
  553. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -3
  554. data/test/rubygems/test_gem_update_suggestion.rb +208 -0
  555. data/test/rubygems/test_gem_uri.rb +4 -4
  556. data/test/rubygems/test_gem_uri_formatter.rb +14 -14
  557. data/test/rubygems/test_gem_util.rb +23 -23
  558. data/test/rubygems/test_gem_validator.rb +8 -8
  559. data/test/rubygems/test_gem_version.rb +23 -16
  560. data/test/rubygems/test_gem_version_option.rb +15 -15
  561. data/test/rubygems/test_kernel.rb +41 -47
  562. data/test/rubygems/test_project_sanity.rb +1 -1
  563. data/test/rubygems/test_remote_fetch_error.rb +6 -6
  564. data/test/rubygems/test_require.rb +129 -119
  565. data/test/rubygems/test_rubygems.rb +19 -16
  566. data/test/rubygems/utilities.rb +55 -33
  567. data/test/rubygems/wrong_key_cert.pem +15 -15
  568. data/test/rubygems/wrong_key_cert_32.pem +15 -15
  569. data/test/test_changelog_generator.rb +1 -0
  570. metadata +67 -35
  571. data/bundler/lib/bundler/dep_proxy.rb +0 -55
  572. data/bundler/lib/bundler/templates/gems.rb +0 -5
  573. data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
  574. data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
  575. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
  576. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
  577. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
  578. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
  579. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
  580. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
  581. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
  582. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
  583. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
  584. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
  585. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
  586. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
  587. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -143
  588. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
  589. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
  590. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
  591. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
  592. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
  593. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
  594. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
  595. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
  596. data/bundler/lib/bundler/vendored_molinillo.rb +0 -4
  597. data/bundler/lib/bundler/version_ranges.rb +0 -122
  598. data/lib/rubygems/psych_additions.rb +0 -10
  599. data/test/rubygems/data/null-type.gemspec.rz +0 -0
  600. /data/bundler/lib/bundler/templates/newgem/ext/newgem/{extconf.rb.tt → extconf-c.rb.tt} +0 -0
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'installer_test_case'
2
+ require_relative "installer_test_case"
3
3
 
4
4
  class TestGemInstaller < Gem::InstallerTestCase
5
5
  def setup
@@ -21,7 +21,7 @@ class TestGemInstaller < Gem::InstallerTestCase
21
21
  load_relative "no" do
22
22
  installer = setup_base_installer
23
23
 
24
- util_make_exec @spec, ''
24
+ util_make_exec @spec, ""
25
25
 
26
26
  expected = <<-EOF
27
27
  #!#{Gem.ruby}
@@ -55,7 +55,7 @@ load Gem.bin_path("a", "executable", version)
55
55
  end
56
56
  EOF
57
57
 
58
- wrapper = installer.app_script_text 'executable'
58
+ wrapper = installer.app_script_text "executable"
59
59
  assert_equal expected, wrapper
60
60
  end
61
61
  end
@@ -66,12 +66,12 @@ end
66
66
  installer.generate_bin
67
67
 
68
68
  @spec = Gem::Specification.new do |s|
69
- s.files = ['lib/code.rb']
69
+ s.files = ["lib/code.rb"]
70
70
  s.name = "a"
71
71
  s.version = "3"
72
72
  s.summary = "summary"
73
73
  s.description = "desc"
74
- s.require_path = 'lib'
74
+ s.require_path = "lib"
75
75
  end
76
76
 
77
77
  util_make_exec
@@ -79,7 +79,7 @@ end
79
79
  installer.wrappers = true
80
80
  installer.generate_bin
81
81
 
82
- installed_exec = File.join util_inst_bindir, 'executable'
82
+ installed_exec = File.join util_inst_bindir, "executable"
83
83
  assert_path_exist installed_exec
84
84
 
85
85
  wrapper = File.read installed_exec
@@ -98,7 +98,7 @@ end
98
98
  installer.generate_bin
99
99
  end
100
100
 
101
- conflicted = File.join @gemhome, 'bin', 'executable'
101
+ conflicted = File.join @gemhome, "bin", "executable"
102
102
  assert_match %r{\A"executable" from a conflicts with (?:#{Regexp.quote(conflicted)}|installed executable from conflict)\z},
103
103
  e.message
104
104
  end
@@ -111,15 +111,15 @@ end
111
111
  installer.generate_bin
112
112
 
113
113
  @spec = Gem::Specification.new do |s|
114
- s.files = ['lib/code.rb']
114
+ s.files = ["lib/code.rb"]
115
115
  s.name = "a"
116
116
  s.version = "3"
117
117
  s.summary = "summary"
118
118
  s.description = "desc"
119
- s.require_path = 'lib'
119
+ s.require_path = "lib"
120
120
  end
121
121
 
122
- File.open File.join(util_inst_bindir, 'executable'), 'w' do |io|
122
+ File.open File.join(util_inst_bindir, "executable"), "w" do |io|
123
123
  io.write <<-EXEC
124
124
  #!/usr/local/bin/ruby
125
125
  #
@@ -130,14 +130,14 @@ gem 'other', version
130
130
  end
131
131
 
132
132
  util_make_exec
133
- Gem::Installer.exec_format = 'foo-%s-bar'
133
+ Gem::Installer.exec_format = "foo-%s-bar"
134
134
  installer.gem_dir = @spec.gem_dir
135
135
  installer.wrappers = true
136
136
  installer.format_executable = true
137
137
 
138
138
  installer.generate_bin # should not raise
139
139
 
140
- installed_exec = File.join util_inst_bindir, 'foo-executable-bar'
140
+ installed_exec = File.join util_inst_bindir, "foo-executable-bar"
141
141
  assert_path_exist installed_exec
142
142
 
143
143
  wrapper = File.read installed_exec
@@ -172,7 +172,7 @@ gem 'other', version
172
172
 
173
173
  installer.generate_bin
174
174
 
175
- installed_exec = File.join util_inst_bindir, 'executable'
175
+ installed_exec = File.join util_inst_bindir, "executable"
176
176
  assert_path_exist installed_exec
177
177
 
178
178
  wrapper = File.read installed_exec
@@ -187,7 +187,7 @@ gem 'other', version
187
187
 
188
188
  installer.generate_bin
189
189
 
190
- installed_exec = File.join util_inst_bindir, 'executable'
190
+ installed_exec = File.join util_inst_bindir, "executable"
191
191
  assert_path_exist installed_exec
192
192
 
193
193
  wrapper = File.read installed_exec
@@ -203,8 +203,8 @@ gem 'other', version
203
203
  bin_dir = bin_dir.downcase
204
204
  end
205
205
 
206
- orig_PATH, ENV['PATH'] =
207
- ENV['PATH'], [ENV['PATH'], bin_dir].join(File::PATH_SEPARATOR)
206
+ orig_PATH, ENV["PATH"] =
207
+ ENV["PATH"], [ENV["PATH"], bin_dir].join(File::PATH_SEPARATOR)
208
208
 
209
209
  use_ui @ui do
210
210
  installer.check_that_user_bin_dir_is_in_path
@@ -214,7 +214,7 @@ gem 'other', version
214
214
 
215
215
  return unless win_platform?
216
216
 
217
- ENV['PATH'] = [orig_PATH, bin_dir.tr(File::SEPARATOR, File::ALT_SEPARATOR)].join(File::PATH_SEPARATOR)
217
+ ENV["PATH"] = [orig_PATH, bin_dir.tr(File::SEPARATOR, File::ALT_SEPARATOR)].join(File::PATH_SEPARATOR)
218
218
 
219
219
  use_ui @ui do
220
220
  installer.check_that_user_bin_dir_is_in_path
@@ -222,17 +222,17 @@ gem 'other', version
222
222
 
223
223
  assert_empty @ui.error
224
224
  ensure
225
- ENV['PATH'] = orig_PATH
225
+ ENV["PATH"] = orig_PATH
226
226
  end
227
227
 
228
228
  def test_check_that_user_bin_dir_is_in_path_tilde
229
229
  pend "Tilde is PATH is not supported under MS Windows" if win_platform?
230
230
 
231
- orig_PATH, ENV['PATH'] =
232
- ENV['PATH'], [ENV['PATH'], '~/bin'].join(File::PATH_SEPARATOR)
231
+ orig_PATH, ENV["PATH"] =
232
+ ENV["PATH"], [ENV["PATH"], "~/bin"].join(File::PATH_SEPARATOR)
233
233
 
234
234
  installer = setup_base_installer
235
- installer.bin_dir.replace File.join @userhome, 'bin'
235
+ installer.bin_dir.replace File.join @userhome, "bin"
236
236
 
237
237
  use_ui @ui do
238
238
  installer.check_that_user_bin_dir_is_in_path
@@ -240,7 +240,7 @@ gem 'other', version
240
240
 
241
241
  assert_empty @ui.error
242
242
  ensure
243
- ENV['PATH'] = orig_PATH unless win_platform?
243
+ ENV["PATH"] = orig_PATH unless win_platform?
244
244
  end
245
245
 
246
246
  def test_check_that_user_bin_dir_is_in_path_not_in_path
@@ -262,22 +262,22 @@ gem 'other', version
262
262
  def test_ensure_dependency
263
263
  installer = setup_base_installer
264
264
 
265
- util_spec 'a'
265
+ util_spec "a"
266
266
 
267
- dep = Gem::Dependency.new 'a', '>= 2'
267
+ dep = Gem::Dependency.new "a", ">= 2"
268
268
  assert installer.ensure_dependency(@spec, dep)
269
269
 
270
- dep = Gem::Dependency.new 'b', '> 2'
270
+ dep = Gem::Dependency.new "b", "> 2"
271
271
  e = assert_raise Gem::InstallError do
272
272
  installer.ensure_dependency @spec, dep
273
273
  end
274
274
 
275
- assert_equal 'a requires b (> 2)', e.message
275
+ assert_equal "a requires b (> 2)", e.message
276
276
  end
277
277
 
278
278
  def test_ensure_loadable_spec
279
- a, a_gem = util_gem 'a', 2 do |s|
280
- s.add_dependency 'garbage ~> 5'
279
+ a, a_gem = util_gem "a", 2 do |s|
280
+ s.add_dependency "garbage ~> 5"
281
281
  end
282
282
 
283
283
  installer = Gem::Installer.at a_gem
@@ -291,10 +291,10 @@ gem 'other', version
291
291
  end
292
292
 
293
293
  def test_ensure_loadable_spec_security_policy
294
- pend 'openssl is missing' unless Gem::HAVE_OPENSSL
294
+ pend "openssl is missing" unless Gem::HAVE_OPENSSL
295
295
 
296
- _, a_gem = util_gem 'a', 2 do |s|
297
- s.add_dependency 'garbage ~> 5'
296
+ _, a_gem = util_gem "a", 2 do |s|
297
+ s.add_dependency "garbage ~> 5"
298
298
  end
299
299
 
300
300
  policy = Gem::Security::HighSecurity
@@ -310,7 +310,7 @@ gem 'other', version
310
310
 
311
311
  installer.extract_files
312
312
 
313
- assert_path_exist File.join @spec.gem_dir, 'bin/executable'
313
+ assert_path_exist File.join @spec.gem_dir, "bin/executable"
314
314
  end
315
315
 
316
316
  def test_generate_bin_bindir
@@ -319,12 +319,12 @@ gem 'other', version
319
319
  installer.wrappers = true
320
320
 
321
321
  @spec.executables = %w[executable]
322
- @spec.bindir = 'bin'
322
+ @spec.bindir = "bin"
323
323
 
324
- exec_file = installer.formatted_program_filename 'executable'
324
+ exec_file = installer.formatted_program_filename "executable"
325
325
  exec_path = File.join @spec.gem_dir, exec_file
326
- File.open exec_path, 'w' do |f|
327
- f.puts '#!/usr/bin/ruby'
326
+ File.open exec_path, "w" do |f|
327
+ f.puts "#!/usr/bin/ruby"
328
328
  end
329
329
 
330
330
  installer.gem_dir = @spec.gem_dir
@@ -332,7 +332,7 @@ gem 'other', version
332
332
  installer.generate_bin
333
333
 
334
334
  assert_directory_exists util_inst_bindir
335
- installed_exec = File.join(util_inst_bindir, 'executable')
335
+ installed_exec = File.join(util_inst_bindir, "executable")
336
336
  assert_path_exist installed_exec
337
337
  assert_equal mask, File.stat(installed_exec).mode unless win_platform?
338
338
 
@@ -352,7 +352,7 @@ gem 'other', version
352
352
  :install_dir => "/non/existent",
353
353
  }
354
354
 
355
- inst = Gem::Installer.at '', options
355
+ inst = Gem::Installer.at "", options
356
356
 
357
357
  Gem::Installer.path_warning = false
358
358
 
@@ -375,7 +375,7 @@ gem 'other', version
375
375
 
376
376
  installer.generate_bin
377
377
  assert_directory_exists util_inst_bindir
378
- installed_exec = File.join util_inst_bindir, 'executable'
378
+ installed_exec = File.join util_inst_bindir, "executable"
379
379
  assert_path_exist installed_exec
380
380
  assert_equal mask, File.stat(installed_exec).mode unless win_platform?
381
381
 
@@ -391,10 +391,10 @@ gem 'other', version
391
391
  util_make_exec
392
392
  installer.gem_dir = @spec.gem_dir
393
393
 
394
- Gem::Installer.exec_format = 'foo-%s-bar'
394
+ Gem::Installer.exec_format = "foo-%s-bar"
395
395
  installer.generate_bin
396
396
  assert_directory_exists util_inst_bindir
397
- installed_exec = File.join util_inst_bindir, 'foo-executable-bar'
397
+ installed_exec = File.join util_inst_bindir, "foo-executable-bar"
398
398
  assert_path_exist installed_exec
399
399
  ensure
400
400
  Gem::Installer.exec_format = nil
@@ -407,10 +407,10 @@ gem 'other', version
407
407
  util_make_exec
408
408
  installer.gem_dir = @spec.gem_dir
409
409
 
410
- Gem::Installer.exec_format = 'foo-%s-bar'
410
+ Gem::Installer.exec_format = "foo-%s-bar"
411
411
  installer.generate_bin
412
412
  assert_directory_exists util_inst_bindir
413
- installed_exec = File.join util_inst_bindir, 'executable'
413
+ installed_exec = File.join util_inst_bindir, "executable"
414
414
  assert_path_exist installed_exec
415
415
  ensure
416
416
  Gem::Installer.exec_format = nil
@@ -422,19 +422,19 @@ gem 'other', version
422
422
  installer.wrappers = true
423
423
 
424
424
  gem_dir = File.join("#{@gemhome}2", "gems", @spec.full_name)
425
- gem_bindir = File.join gem_dir, 'bin'
425
+ gem_bindir = File.join gem_dir, "bin"
426
426
  FileUtils.mkdir_p gem_bindir
427
- File.open File.join(gem_bindir, 'executable'), 'w' do |f|
427
+ File.open File.join(gem_bindir, "executable"), "w" do |f|
428
428
  f.puts "#!/bin/ruby"
429
429
  end
430
430
 
431
431
  installer.gem_home = "#{@gemhome}2"
432
432
  installer.gem_dir = gem_dir
433
- installer.bin_dir = File.join "#{@gemhome}2", 'bin'
433
+ installer.bin_dir = File.join "#{@gemhome}2", "bin"
434
434
 
435
435
  installer.generate_bin
436
436
 
437
- installed_exec = File.join("#{@gemhome}2", "bin", 'executable')
437
+ installed_exec = File.join("#{@gemhome}2", "bin", "executable")
438
438
  assert_path_exist installed_exec
439
439
  assert_equal mask, File.stat(installed_exec).mode unless win_platform?
440
440
 
@@ -450,7 +450,7 @@ gem 'other', version
450
450
  installer.wrappers = true
451
451
  installer.generate_bin
452
452
 
453
- assert_path_not_exist util_inst_bindir, 'bin dir was created when not needed'
453
+ assert_path_not_exist util_inst_bindir, "bin dir was created when not needed"
454
454
  end
455
455
 
456
456
  def test_generate_bin_script_no_perms
@@ -462,9 +462,9 @@ gem 'other', version
462
462
  Dir.mkdir util_inst_bindir
463
463
 
464
464
  if win_platform?
465
- pend('test_generate_bin_script_no_perms skipped on MS Windows')
465
+ pend("test_generate_bin_script_no_perms skipped on MS Windows")
466
466
  elsif Process.uid.zero?
467
- pend('test_generate_bin_script_no_perms skipped in root privilege')
467
+ pend("test_generate_bin_script_no_perms skipped in root privilege")
468
468
  else
469
469
  FileUtils.chmod 0000, util_inst_bindir
470
470
 
@@ -473,7 +473,7 @@ gem 'other', version
473
473
  end
474
474
  end
475
475
  ensure
476
- FileUtils.chmod 0755, util_inst_bindir unless ($DEBUG or win_platform?)
476
+ FileUtils.chmod 0755, util_inst_bindir unless ($DEBUG || win_platform?)
477
477
  end
478
478
 
479
479
  def test_generate_bin_script_no_shebang
@@ -482,16 +482,16 @@ gem 'other', version
482
482
  installer.wrappers = true
483
483
  @spec.executables = %w[executable]
484
484
 
485
- gem_dir = File.join @gemhome, 'gems', @spec.full_name
486
- gem_bindir = File.join gem_dir, 'bin'
485
+ gem_dir = File.join @gemhome, "gems", @spec.full_name
486
+ gem_bindir = File.join gem_dir, "bin"
487
487
  FileUtils.mkdir_p gem_bindir
488
- File.open File.join(gem_bindir, 'executable'), 'w' do |f|
488
+ File.open File.join(gem_bindir, "executable"), "w" do |f|
489
489
  f.puts "blah blah blah"
490
490
  end
491
491
 
492
492
  installer.generate_bin
493
493
 
494
- installed_exec = File.join @gemhome, 'bin', 'executable'
494
+ installed_exec = File.join @gemhome, "bin", "executable"
495
495
  assert_path_exist installed_exec
496
496
  assert_equal mask, File.stat(installed_exec).mode unless win_platform?
497
497
 
@@ -507,9 +507,9 @@ gem 'other', version
507
507
  installer.wrappers = true
508
508
  util_make_exec
509
509
  installer.gem_dir = @spec.gem_dir
510
- installed_exec = File.join(util_inst_bindir, 'executable')
510
+ installed_exec = File.join(util_inst_bindir, "executable")
511
511
 
512
- real_exec = File.join @spec.gem_dir, 'bin', 'executable'
512
+ real_exec = File.join @spec.gem_dir, "bin", "executable"
513
513
 
514
514
  # fake --no-wrappers for previous install
515
515
  unless Gem.win_platform?
@@ -525,7 +525,7 @@ gem 'other', version
525
525
  assert_match %r{generated by RubyGems}, File.read(installed_exec)
526
526
 
527
527
  refute_match %r{generated by RubyGems}, File.read(real_exec),
528
- 'real executable overwritten'
528
+ "real executable overwritten"
529
529
  end
530
530
 
531
531
  def test_generate_bin_symlink
@@ -539,9 +539,9 @@ gem 'other', version
539
539
 
540
540
  installer.generate_bin
541
541
  assert_directory_exists util_inst_bindir
542
- installed_exec = File.join util_inst_bindir, 'executable'
542
+ installed_exec = File.join util_inst_bindir, "executable"
543
543
  assert_equal true, File.symlink?(installed_exec)
544
- assert_equal(File.join(@spec.gem_dir, 'bin', 'executable'),
544
+ assert_equal(File.join(@spec.gem_dir, "bin", "executable"),
545
545
  File.readlink(installed_exec))
546
546
  end
547
547
 
@@ -566,9 +566,9 @@ gem 'other', version
566
566
  Dir.mkdir util_inst_bindir
567
567
 
568
568
  if win_platform?
569
- pend('test_generate_bin_symlink_no_perms skipped on MS Windows')
569
+ pend("test_generate_bin_symlink_no_perms skipped on MS Windows")
570
570
  elsif Process.uid.zero?
571
- pend('test_user_install_disabled_read_only test skipped in root privilege')
571
+ pend("test_user_install_disabled_read_only test skipped in root privilege")
572
572
  else
573
573
  FileUtils.chmod 0000, util_inst_bindir
574
574
 
@@ -577,7 +577,7 @@ gem 'other', version
577
577
  end
578
578
  end
579
579
  ensure
580
- FileUtils.chmod 0755, util_inst_bindir unless ($DEBUG or win_platform?)
580
+ FileUtils.chmod 0755, util_inst_bindir unless ($DEBUG || win_platform?)
581
581
  end
582
582
 
583
583
  def test_generate_bin_symlink_update_newer
@@ -590,24 +590,24 @@ gem 'other', version
590
590
  installer.gem_dir = @spec.gem_dir
591
591
 
592
592
  installer.generate_bin
593
- installed_exec = File.join(util_inst_bindir, 'executable')
594
- assert_equal(File.join(@spec.gem_dir, 'bin', 'executable'),
593
+ installed_exec = File.join(util_inst_bindir, "executable")
594
+ assert_equal(File.join(@spec.gem_dir, "bin", "executable"),
595
595
  File.readlink(installed_exec))
596
596
 
597
597
  @spec = Gem::Specification.new do |s|
598
- s.files = ['lib/code.rb']
598
+ s.files = ["lib/code.rb"]
599
599
  s.name = "a"
600
600
  s.version = "3"
601
601
  s.summary = "summary"
602
602
  s.description = "desc"
603
- s.require_path = 'lib'
603
+ s.require_path = "lib"
604
604
  end
605
605
 
606
606
  util_make_exec
607
607
  installer.gem_dir = @spec.gem_dir
608
608
  installer.generate_bin
609
- installed_exec = File.join(util_inst_bindir, 'executable')
610
- assert_equal(@spec.bin_file('executable'),
609
+ installed_exec = File.join(util_inst_bindir, "executable")
610
+ assert_equal(@spec.bin_file("executable"),
611
611
  File.readlink(installed_exec),
612
612
  "Ensure symlink moved to latest version")
613
613
  end
@@ -622,17 +622,17 @@ gem 'other', version
622
622
  installer.gem_dir = @spec.gem_dir
623
623
 
624
624
  installer.generate_bin
625
- installed_exec = File.join(util_inst_bindir, 'executable')
626
- assert_equal(File.join(@spec.gem_dir, 'bin', 'executable'),
625
+ installed_exec = File.join(util_inst_bindir, "executable")
626
+ assert_equal(File.join(@spec.gem_dir, "bin", "executable"),
627
627
  File.readlink(installed_exec))
628
628
 
629
629
  spec = Gem::Specification.new do |s|
630
- s.files = ['lib/code.rb']
630
+ s.files = ["lib/code.rb"]
631
631
  s.name = "a"
632
632
  s.version = "1"
633
633
  s.summary = "summary"
634
634
  s.description = "desc"
635
- s.require_path = 'lib'
635
+ s.require_path = "lib"
636
636
  end
637
637
 
638
638
  util_make_exec
@@ -643,8 +643,8 @@ gem 'other', version
643
643
 
644
644
  installer.generate_bin
645
645
 
646
- installed_exec = File.join util_inst_bindir, 'executable'
647
- expected = File.join @spec.gem_dir, 'bin', 'executable'
646
+ installed_exec = File.join util_inst_bindir, "executable"
647
+ expected = File.join @spec.gem_dir, "bin", "executable"
648
648
  assert_equal(expected,
649
649
  File.readlink(installed_exec),
650
650
  "Ensure symlink not moved")
@@ -661,16 +661,16 @@ gem 'other', version
661
661
 
662
662
  installer.generate_bin
663
663
 
664
- installed_exec = File.join util_inst_bindir, 'executable'
664
+ installed_exec = File.join util_inst_bindir, "executable"
665
665
  assert_path_exist installed_exec
666
666
 
667
667
  @spec = Gem::Specification.new do |s|
668
- s.files = ['lib/code.rb']
668
+ s.files = ["lib/code.rb"]
669
669
  s.name = "a"
670
670
  s.version = "3"
671
671
  s.summary = "summary"
672
672
  s.description = "desc"
673
- s.require_path = 'lib'
673
+ s.require_path = "lib"
674
674
  end
675
675
  util_make_exec
676
676
 
@@ -680,8 +680,8 @@ gem 'other', version
680
680
 
681
681
  installer.generate_bin
682
682
 
683
- installed_exec = File.join util_inst_bindir, 'executable'
684
- assert_equal(@spec.bin_file('executable'),
683
+ installed_exec = File.join util_inst_bindir, "executable"
684
+ assert_equal(@spec.bin_file("executable"),
685
685
  File.readlink(installed_exec),
686
686
  "Ensure symlink moved to latest version")
687
687
  end
@@ -691,7 +691,7 @@ gem 'other', version
691
691
  Gem.win_platform = true
692
692
  old_alt_separator = File::ALT_SEPARATOR
693
693
  File.__send__(:remove_const, :ALT_SEPARATOR)
694
- File.const_set(:ALT_SEPARATOR, '\\')
694
+ File.const_set(:ALT_SEPARATOR, "\\")
695
695
 
696
696
  installer = setup_base_installer
697
697
 
@@ -704,7 +704,7 @@ gem 'other', version
704
704
  end
705
705
 
706
706
  assert_directory_exists util_inst_bindir
707
- installed_exec = File.join(util_inst_bindir, 'executable')
707
+ installed_exec = File.join(util_inst_bindir, "executable")
708
708
  assert_path_exist installed_exec
709
709
 
710
710
  if symlink_supported?
@@ -726,7 +726,7 @@ gem 'other', version
726
726
  def test_generate_bin_uses_default_shebang
727
727
  pend "Symlinks not supported or not enabled" unless symlink_supported?
728
728
 
729
- load_relative 'no' do
729
+ load_relative "no" do
730
730
  installer = setup_base_installer
731
731
 
732
732
  installer.wrappers = true
@@ -756,13 +756,16 @@ gem 'other', version
756
756
  end
757
757
  end
758
758
 
759
- assert_match %r{bin/ascii_binder` is dangling symlink pointing to `bin/asciibinder`}, @ui.error
759
+ errors = @ui.error.split("\n")
760
+ assert_equal "WARNING: ascii_binder-0.1.10.1 ships with a dangling symlink named bin/ascii_binder pointing to missing bin/asciibinder file. Ignoring", errors.shift
761
+ assert_empty errors
762
+
760
763
  assert_empty @ui.output
761
764
  end
762
765
 
763
766
  def test_generate_plugins
764
767
  installer = util_setup_installer do |spec|
765
- write_file File.join(@tempdir, 'lib', 'rubygems_plugin.rb') do |io|
768
+ write_file File.join(@tempdir, "lib", "rubygems_plugin.rb") do |io|
766
769
  io.write "puts __FILE__"
767
770
  end
768
771
 
@@ -773,18 +776,18 @@ gem 'other', version
773
776
  installer.install
774
777
  end
775
778
 
776
- plugin_path = File.join Gem.plugindir, 'a_plugin.rb'
779
+ plugin_path = File.join Gem.plugindir, "a_plugin.rb"
777
780
 
778
781
  FileUtils.rm plugin_path
779
782
 
780
783
  installer.generate_plugins
781
784
 
782
- assert File.exist?(plugin_path), 'plugin not written'
785
+ assert File.exist?(plugin_path), "plugin not written"
783
786
  end
784
787
 
785
788
  def test_generate_plugins_with_install_dir
786
- spec = quick_gem 'a' do |s|
787
- write_file File.join(@tempdir, 'lib', 'rubygems_plugin.rb') do |io|
789
+ spec = quick_gem "a" do |s|
790
+ write_file File.join(@tempdir, "lib", "rubygems_plugin.rb") do |io|
788
791
  io.write "puts __FILE__"
789
792
  end
790
793
 
@@ -793,17 +796,17 @@ gem 'other', version
793
796
 
794
797
  util_build_gem spec
795
798
 
796
- plugin_path = File.join "#{@gemhome}2", 'plugins', 'a_plugin.rb'
799
+ plugin_path = File.join "#{@gemhome}2", "plugins", "a_plugin.rb"
797
800
  installer = util_installer spec, "#{@gemhome}2"
798
801
 
799
802
  assert_equal spec, installer.install
800
803
 
801
- assert File.exist?(plugin_path), 'plugin not written to install_dir'
804
+ assert File.exist?(plugin_path), "plugin not written to install_dir"
802
805
  end
803
806
 
804
807
  def test_generate_plugins_with_user_install
805
- spec = quick_gem 'a' do |s|
806
- write_file File.join(@tempdir, 'lib', 'rubygems_plugin.rb') do |io|
808
+ spec = quick_gem "a" do |s|
809
+ write_file File.join(@tempdir, "lib", "rubygems_plugin.rb") do |io|
807
810
  io.write "puts __FILE__"
808
811
  end
809
812
 
@@ -813,19 +816,19 @@ gem 'other', version
813
816
  util_build_gem spec
814
817
 
815
818
  File.chmod(0555, Gem.plugindir)
816
- system_path = File.join(Gem.plugindir, 'a_plugin.rb')
817
- user_path = File.join(Gem.plugindir(Gem.user_dir), 'a_plugin.rb')
819
+ system_path = File.join(Gem.plugindir, "a_plugin.rb")
820
+ user_path = File.join(Gem.plugindir(Gem.user_dir), "a_plugin.rb")
818
821
  installer = util_installer spec, Gem.dir, :user
819
822
 
820
823
  assert_equal spec, installer.install
821
824
 
822
- assert !File.exist?(system_path), 'plugin incorrectly written to system plugins_dir'
823
- assert File.exist?(user_path), 'plugin not written to user plugins_dir'
825
+ assert !File.exist?(system_path), "plugin incorrectly written to system plugins_dir"
826
+ assert File.exist?(user_path), "plugin not written to user plugins_dir"
824
827
  end
825
828
 
826
829
  def test_generate_plugins_with_build_root
827
- spec = quick_gem 'a' do |s|
828
- write_file File.join(@tempdir, 'lib', 'rubygems_plugin.rb') do |io|
830
+ spec = quick_gem "a" do |s|
831
+ write_file File.join(@tempdir, "lib", "rubygems_plugin.rb") do |io|
829
832
  io.write "puts __FILE__"
830
833
  end
831
834
 
@@ -835,17 +838,17 @@ gem 'other', version
835
838
  util_build_gem spec
836
839
 
837
840
  File.chmod(0555, Gem.plugindir)
838
- system_path = File.join(Gem.plugindir, 'a_plugin.rb')
841
+ system_path = File.join(Gem.plugindir, "a_plugin.rb")
839
842
 
840
- build_root = File.join(@tempdir, 'build_root')
841
- build_root_path = File.join(build_root, Gem.plugindir.gsub(/^[a-zA-Z]:/, ''), 'a_plugin.rb')
843
+ build_root = File.join(@tempdir, "build_root")
844
+ build_root_path = File.join(build_root, Gem.plugindir.gsub(/^[a-zA-Z]:/, ""), "a_plugin.rb")
842
845
 
843
846
  installer = Gem::Installer.at spec.cache_file, :build_root => build_root
844
847
 
845
848
  assert_equal spec, installer.install
846
849
 
847
- assert !File.exist?(system_path), 'plugin written incorrect written to system plugins_dir'
848
- assert File.exist?(build_root_path), 'plugin not written to build_root'
850
+ assert !File.exist?(system_path), "plugin written incorrect written to system plugins_dir"
851
+ assert File.exist?(build_root_path), "plugin not written to build_root"
849
852
 
850
853
  refute_includes File.read(build_root_path), build_root
851
854
  end
@@ -853,49 +856,49 @@ gem 'other', version
853
856
  def test_keeps_plugins_up_to_date
854
857
  # NOTE: version a-2 is already installed by setup hooks
855
858
 
856
- write_file File.join(@tempdir, 'lib', 'rubygems_plugin.rb') do |io|
859
+ write_file File.join(@tempdir, "lib", "rubygems_plugin.rb") do |io|
857
860
  io.write "puts __FILE__"
858
861
  end
859
862
 
860
863
  build_rake_in do
861
864
  util_setup_installer do |spec|
862
- spec.version = '1'
865
+ spec.version = "1"
863
866
  spec.files += %w[lib/rubygems_plugin.rb]
864
867
  end.install
865
868
 
866
- plugin_path = File.join Gem.plugindir, 'a_plugin.rb'
867
- refute File.exist?(plugin_path), 'old version installed while newer version without plugin also installed, but plugin written'
869
+ plugin_path = File.join Gem.plugindir, "a_plugin.rb"
870
+ refute File.exist?(plugin_path), "old version installed while newer version without plugin also installed, but plugin written"
868
871
 
869
872
  util_setup_installer do |spec|
870
- spec.version = '2'
873
+ spec.version = "2"
871
874
  spec.files += %w[lib/rubygems_plugin.rb]
872
875
  end.install
873
876
 
874
- plugin_path = File.join Gem.plugindir, 'a_plugin.rb'
875
- assert File.exist?(plugin_path), 'latest version reinstalled, but plugin not written'
876
- assert_match %r{\Arequire.*a-2/lib/rubygems_plugin\.rb}, File.read(plugin_path), 'written plugin has incorrect content'
877
+ plugin_path = File.join Gem.plugindir, "a_plugin.rb"
878
+ assert File.exist?(plugin_path), "latest version reinstalled, but plugin not written"
879
+ assert_match %r{\Arequire.*a-2/lib/rubygems_plugin\.rb}, File.read(plugin_path), "written plugin has incorrect content"
877
880
 
878
881
  util_setup_installer do |spec|
879
- spec.version = '3'
882
+ spec.version = "3"
880
883
  spec.files += %w[lib/rubygems_plugin.rb]
881
884
  end.install
882
885
 
883
- plugin_path = File.join Gem.plugindir, 'a_plugin.rb'
884
- assert File.exist?(plugin_path), 'latest version installed, but plugin removed'
885
- assert_match %r{\Arequire.*a-3/lib/rubygems_plugin\.rb}, File.read(plugin_path), 'written plugin has incorrect content'
886
+ plugin_path = File.join Gem.plugindir, "a_plugin.rb"
887
+ assert File.exist?(plugin_path), "latest version installed, but plugin removed"
888
+ assert_match %r{\Arequire.*a-3/lib/rubygems_plugin\.rb}, File.read(plugin_path), "written plugin has incorrect content"
886
889
 
887
890
  util_setup_installer do |spec|
888
- spec.version = '4'
891
+ spec.version = "4"
889
892
  end.install
890
893
 
891
- refute File.exist?(plugin_path), 'new version installed without a plugin while older version with a plugin installed, but plugin not removed'
894
+ refute File.exist?(plugin_path), "new version installed without a plugin while older version with a plugin installed, but plugin not removed"
892
895
  end
893
896
  end
894
897
 
895
898
  def test_generates_plugins_dir_under_install_dir_if_not_there
896
899
  Gem.use_paths "#{@gemhome}2" # Set GEM_HOME to an uninitialized repo
897
900
 
898
- @spec = util_spec 'a'
901
+ @spec = util_spec "a"
899
902
 
900
903
  path = Gem::Package.build @spec
901
904
 
@@ -904,8 +907,8 @@ gem 'other', version
904
907
  end
905
908
 
906
909
  def test_initialize
907
- spec = util_spec 'a' do |s|
908
- s.platform = Gem::Platform.new 'mswin32'
910
+ spec = util_spec "a" do |s|
911
+ s.platform = Gem::Platform.new "mswin32"
909
912
  end
910
913
 
911
914
  gem = File.join @tempdir, spec.file_name
@@ -916,8 +919,8 @@ gem 'other', version
916
919
 
917
920
  installer = Gem::Installer.at gem
918
921
 
919
- assert_equal File.join(@gemhome, 'gems', spec.full_name), installer.gem_dir
920
- assert_equal File.join(@gemhome, 'bin'), installer.bin_dir
922
+ assert_equal File.join(@gemhome, "gems", spec.full_name), installer.gem_dir
923
+ assert_equal File.join(@gemhome, "bin"), installer.bin_dir
921
924
  end
922
925
 
923
926
  def test_initialize_user_install
@@ -925,7 +928,7 @@ gem 'other', version
925
928
 
926
929
  installer = Gem::Installer.at @gem, :user_install => true
927
930
 
928
- assert_equal File.join(Gem.user_dir, 'gems', @spec.full_name),
931
+ assert_equal File.join(Gem.user_dir, "gems", @spec.full_name),
929
932
  installer.gem_dir
930
933
  assert_equal Gem.bindir(Gem.user_dir), installer.bin_dir
931
934
  end
@@ -936,7 +939,7 @@ gem 'other', version
936
939
  installer =
937
940
  Gem::Installer.at @gem, :user_install => true, :bin_dir => @tempdir
938
941
 
939
- assert_equal File.join(Gem.user_dir, 'gems', @spec.full_name),
942
+ assert_equal File.join(Gem.user_dir, "gems", @spec.full_name),
940
943
  installer.gem_dir
941
944
  assert_equal @tempdir, installer.bin_dir
942
945
  end
@@ -944,26 +947,26 @@ gem 'other', version
944
947
  def test_install
945
948
  installer = util_setup_installer
946
949
 
947
- gemdir = File.join @gemhome, 'gems', @spec.full_name
948
- cache_file = File.join @gemhome, 'cache', @spec.file_name
949
- stub_exe = File.join @gemhome, 'bin', 'executable'
950
- rakefile = File.join gemdir, 'ext', 'a', 'Rakefile'
951
- spec_file = File.join @gemhome, 'specifications', @spec.spec_name
950
+ gemdir = File.join @gemhome, "gems", @spec.full_name
951
+ cache_file = File.join @gemhome, "cache", @spec.file_name
952
+ stub_exe = File.join @gemhome, "bin", "executable"
953
+ rakefile = File.join gemdir, "ext", "a", "Rakefile"
954
+ spec_file = File.join @gemhome, "specifications", @spec.spec_name
952
955
 
953
956
  Gem.pre_install do
954
- assert_path_not_exist cache_file, 'cache file must not exist yet'
957
+ assert_path_not_exist cache_file, "cache file must not exist yet"
955
958
  true
956
959
  end
957
960
 
958
961
  Gem.post_build do
959
- assert_path_exist gemdir, 'gem install dir must exist'
960
- assert_path_exist rakefile, 'gem executable must exist'
961
- assert_path_not_exist stub_exe, 'gem executable must not exist'
962
+ assert_path_exist gemdir, "gem install dir must exist"
963
+ assert_path_exist rakefile, "gem executable must exist"
964
+ assert_path_not_exist stub_exe, "gem executable must not exist"
962
965
  true
963
966
  end
964
967
 
965
968
  Gem.post_install do
966
- assert_path_exist cache_file, 'cache file must exist'
969
+ assert_path_exist cache_file, "cache file must exist"
967
970
  end
968
971
 
969
972
  @newspec = nil
@@ -975,15 +978,15 @@ gem 'other', version
975
978
 
976
979
  assert_equal @spec, @newspec
977
980
  assert_path_exist gemdir
978
- assert_path_exist stub_exe, 'gem executable must exist'
981
+ assert_path_exist stub_exe, "gem executable must exist"
979
982
 
980
- exe = File.join gemdir, 'bin', 'executable'
983
+ exe = File.join gemdir, "bin", "executable"
981
984
  assert_path_exist exe
982
985
 
983
986
  exe_mode = File.stat(exe).mode & 0111
984
987
  assert_equal 0111, exe_mode, "0%o" % exe_mode unless win_platform?
985
988
 
986
- assert_path_exist File.join gemdir, 'lib', 'code.rb'
989
+ assert_path_exist File.join gemdir, "lib", "code.rb"
987
990
 
988
991
  assert_path_exist rakefile
989
992
 
@@ -1000,7 +1003,7 @@ gem 'other', version
1000
1003
 
1001
1004
  installer.wrappers = true
1002
1005
 
1003
- gemdir = File.join @gemhome, 'gems', @spec.full_name
1006
+ gemdir = File.join @gemhome, "gems", @spec.full_name
1004
1007
 
1005
1008
  @newspec = nil
1006
1009
  build_rake_in do
@@ -1009,7 +1012,7 @@ gem 'other', version
1009
1012
  end
1010
1013
  end
1011
1014
 
1012
- exe = File.join gemdir, 'bin', 'executable'
1015
+ exe = File.join gemdir, "bin", "executable"
1013
1016
 
1014
1017
  e = assert_raise RuntimeError do
1015
1018
  instance_eval File.read(exe)
@@ -1023,10 +1026,10 @@ gem 'other', version
1023
1026
 
1024
1027
  # build old version that has a bin file
1025
1028
  installer = util_setup_gem do |spec|
1026
- File.open File.join('bin', 'executable'), 'w' do |f|
1029
+ File.open File.join("bin", "executable"), "w" do |f|
1027
1030
  f.puts "require 'code'"
1028
1031
  end
1029
- File.open File.join('lib', 'code.rb'), 'w' do |f|
1032
+ File.open File.join("lib", "code.rb"), "w" do |f|
1030
1033
  f.puts 'raise "I have an executable"'
1031
1034
  end
1032
1035
  end
@@ -1038,15 +1041,15 @@ gem 'other', version
1038
1041
  end
1039
1042
  end
1040
1043
 
1041
- old_bin_file = File.join installer.bin_dir, 'executable'
1044
+ old_bin_file = File.join installer.bin_dir, "executable"
1042
1045
 
1043
1046
  # build new version that doesn't have a bin file
1044
1047
  installer = util_setup_gem do |spec|
1045
- FileUtils.rm File.join('bin', 'executable')
1046
- spec.files.delete File.join('bin', 'executable')
1047
- spec.executables.delete 'executable'
1048
+ FileUtils.rm File.join("bin", "executable")
1049
+ spec.files.delete File.join("bin", "executable")
1050
+ spec.executables.delete "executable"
1048
1051
  spec.version = @spec.version.bump
1049
- File.open File.join('lib', 'code.rb'), 'w' do |f|
1052
+ File.open File.join("lib", "code.rb"), "w" do |f|
1050
1053
  f.puts 'raise "I do not have an executable"'
1051
1054
  end
1052
1055
  end
@@ -1063,7 +1066,7 @@ gem 'other', version
1063
1066
 
1064
1067
  # We expect the bin stub to activate the version that actually contains
1065
1068
  # the binstub.
1066
- assert_match('I have an executable', e.message)
1069
+ assert_match("I have an executable", e.message)
1067
1070
  end
1068
1071
 
1069
1072
  def test_install_creates_binstub_that_understand_version
@@ -1078,7 +1081,7 @@ gem 'other', version
1078
1081
  end
1079
1082
  end
1080
1083
 
1081
- exe = File.join @gemhome, 'bin', 'executable'
1084
+ exe = File.join @gemhome, "bin", "executable"
1082
1085
 
1083
1086
  ARGV.unshift "_3.0_"
1084
1087
 
@@ -1096,17 +1099,17 @@ gem 'other', version
1096
1099
  end
1097
1100
 
1098
1101
  def test_install_creates_binstub_that_prefers_user_installed_gem_to_default
1099
- default_spec = new_default_spec('default', '2', nil, 'exe/executable')
1100
- default_spec.executables = 'executable'
1102
+ default_spec = new_default_spec("default", "2", nil, "exe/executable")
1103
+ default_spec.executables = "executable"
1101
1104
  install_default_gems default_spec
1102
1105
 
1103
- exe = File.join @gemhome, 'bin', 'executable'
1106
+ exe = File.join @gemhome, "bin", "executable"
1104
1107
 
1105
1108
  assert_path_exist exe, "default gem's executable not installed"
1106
1109
 
1107
1110
  installer = util_setup_installer do |spec|
1108
- spec.name = 'default'
1109
- spec.version = '2'
1111
+ spec.name = "default"
1112
+ spec.version = "2"
1110
1113
  end
1111
1114
 
1112
1115
  util_clear_gems
@@ -1139,7 +1142,7 @@ gem 'other', version
1139
1142
  end
1140
1143
  end
1141
1144
 
1142
- exe = File.join @gemhome, 'bin', 'executable'
1145
+ exe = File.join @gemhome, "bin", "executable"
1143
1146
 
1144
1147
  extra_arg = "\xE4pfel".dup.force_encoding("UTF-8")
1145
1148
  ARGV.unshift extra_arg
@@ -1166,16 +1169,16 @@ gem 'other', version
1166
1169
  end
1167
1170
  end
1168
1171
 
1169
- gemdir = File.join(@gemhome, 'gems', @spec.full_name)
1170
- assert_path_exist File.join gemdir, 'lib', 'code.rb'
1172
+ gemdir = File.join(@gemhome, "gems", @spec.full_name)
1173
+ assert_path_exist File.join gemdir, "lib", "code.rb"
1171
1174
 
1172
1175
  installer = util_setup_installer
1173
1176
 
1174
1177
  # Morph spec to have lib/other.rb instead of code.rb and recreate
1175
- @spec.files = File.join('lib', 'other.rb')
1178
+ @spec.files = File.join("lib", "other.rb")
1176
1179
  Dir.chdir @tempdir do
1177
- File.open File.join('lib', 'other.rb'), 'w' do |f|
1178
- f.puts '1'
1180
+ File.open File.join("lib", "other.rb"), "w" do |f|
1181
+ f.puts "1"
1179
1182
  end
1180
1183
 
1181
1184
  use_ui ui do
@@ -1190,14 +1193,14 @@ gem 'other', version
1190
1193
  end
1191
1194
  end
1192
1195
 
1193
- assert_path_exist File.join gemdir, 'lib', 'other.rb'
1194
- assert_path_not_exist File.join gemdir, 'lib', 'code.rb',
1196
+ assert_path_exist File.join gemdir, "lib", "other.rb"
1197
+ assert_path_not_exist File.join gemdir, "lib", "code.rb",
1195
1198
  "code.rb from prior install of same gem shouldn't remain here"
1196
1199
  end
1197
1200
 
1198
1201
  def test_install_force
1199
- _, missing_dep_gem = util_gem 'missing_dep', '1' do |s|
1200
- s.add_dependency 'doesnt_exist', '1'
1202
+ _, missing_dep_gem = util_gem "missing_dep", "1" do |s|
1203
+ s.add_dependency "doesnt_exist", "1"
1201
1204
  end
1202
1205
 
1203
1206
  use_ui @ui do
@@ -1205,12 +1208,12 @@ gem 'other', version
1205
1208
  installer.install
1206
1209
  end
1207
1210
 
1208
- gem_dir = File.join(@gemhome, 'gems', 'missing_dep-1')
1211
+ gem_dir = File.join(@gemhome, "gems", "missing_dep-1")
1209
1212
  assert_path_exist gem_dir
1210
1213
  end
1211
1214
 
1212
1215
  def test_install_build_root
1213
- build_root = File.join(@tempdir, 'build_root')
1216
+ build_root = File.join(@tempdir, "build_root")
1214
1217
 
1215
1218
  @gem = setup_base_gem
1216
1219
  installer = Gem::Installer.at @gem, :build_root => build_root
@@ -1221,24 +1224,22 @@ gem 'other', version
1221
1224
  def test_install_missing_dirs
1222
1225
  installer = setup_base_installer
1223
1226
 
1224
- FileUtils.rm_f File.join(Gem.dir, 'cache')
1225
- FileUtils.rm_f File.join(Gem.dir, 'doc')
1226
- FileUtils.rm_f File.join(Gem.dir, 'specifications')
1227
+ FileUtils.rm_rf File.join(Gem.dir, "doc")
1228
+ FileUtils.rm_rf File.join(Gem.dir, "specifications")
1227
1229
 
1228
1230
  use_ui @ui do
1229
1231
  installer.install
1230
1232
  end
1231
1233
 
1232
- assert_directory_exists File.join(Gem.dir, 'cache')
1233
- assert_directory_exists File.join(Gem.dir, 'doc')
1234
- assert_directory_exists File.join(Gem.dir, 'specifications')
1234
+ assert_directory_exists File.join(Gem.dir, "doc")
1235
+ assert_directory_exists File.join(Gem.dir, "specifications")
1235
1236
 
1236
- assert_path_exist File.join @gemhome, 'cache', @spec.file_name
1237
- assert_path_exist File.join @gemhome, 'specifications', @spec.spec_name
1237
+ assert_path_exist File.join @gemhome, "cache", @spec.file_name
1238
+ assert_path_exist File.join @gemhome, "specifications", @spec.spec_name
1238
1239
  end
1239
1240
 
1240
1241
  def test_install_post_build_false
1241
- @spec = util_spec 'a'
1242
+ @spec = util_spec "a"
1242
1243
 
1243
1244
  util_build_gem @spec
1244
1245
 
@@ -1258,10 +1259,10 @@ gem 'other', version
1258
1259
  assert_equal "post-build hook at #{location} failed for a-2", e.message
1259
1260
  end
1260
1261
 
1261
- spec_file = File.join @gemhome, 'specifications', @spec.spec_name
1262
+ spec_file = File.join @gemhome, "specifications", @spec.spec_name
1262
1263
  assert_path_not_exist spec_file
1263
1264
 
1264
- gem_dir = File.join @gemhome, 'gems', @spec.full_name
1265
+ gem_dir = File.join @gemhome, "gems", @spec.full_name
1265
1266
  assert_path_not_exist gem_dir
1266
1267
  end
1267
1268
 
@@ -1276,15 +1277,15 @@ gem 'other', version
1276
1277
  installer.install
1277
1278
  end
1278
1279
 
1279
- spec_file = File.join @gemhome, 'specifications', @spec.spec_name
1280
+ spec_file = File.join @gemhome, "specifications", @spec.spec_name
1280
1281
  assert_path_exist spec_file
1281
1282
 
1282
- gem_dir = File.join @gemhome, 'gems', @spec.full_name
1283
+ gem_dir = File.join @gemhome, "gems", @spec.full_name
1283
1284
  assert_path_exist gem_dir
1284
1285
  end
1285
1286
 
1286
1287
  def test_install_pre_install_false
1287
- @spec = util_spec 'a'
1288
+ @spec = util_spec "a"
1288
1289
 
1289
1290
  util_build_gem @spec
1290
1291
 
@@ -1304,7 +1305,7 @@ gem 'other', version
1304
1305
  assert_equal "pre-install hook at #{location} failed for a-2", e.message
1305
1306
  end
1306
1307
 
1307
- spec_file = File.join @gemhome, 'specifications', @spec.spec_name
1308
+ spec_file = File.join @gemhome, "specifications", @spec.spec_name
1308
1309
  assert_path_not_exist spec_file
1309
1310
  end
1310
1311
 
@@ -1319,13 +1320,13 @@ gem 'other', version
1319
1320
  installer.install
1320
1321
  end
1321
1322
 
1322
- spec_file = File.join @gemhome, 'specifications', @spec.spec_name
1323
+ spec_file = File.join @gemhome, "specifications", @spec.spec_name
1323
1324
  assert_path_exist spec_file
1324
1325
  end
1325
1326
 
1326
1327
  def test_install_with_message
1327
1328
  @spec = setup_base_spec
1328
- @spec.post_install_message = 'I am a shiny gem!'
1329
+ @spec.post_install_message = "I am a shiny gem!"
1329
1330
 
1330
1331
  use_ui @ui do
1331
1332
  path = Gem::Package.build @spec
@@ -1339,7 +1340,7 @@ gem 'other', version
1339
1340
 
1340
1341
  def test_install_with_skipped_message
1341
1342
  @spec = setup_base_spec
1342
- @spec.post_install_message = 'I am a shiny gem!'
1343
+ @spec.post_install_message = "I am a shiny gem!"
1343
1344
 
1344
1345
  use_ui @ui do
1345
1346
  path = Gem::Package.build @spec
@@ -1372,7 +1373,7 @@ gem 'other', version
1372
1373
  installer.install
1373
1374
  end
1374
1375
 
1375
- expected_makefile = File.join gemhome2, 'gems', @spec.full_name, 'Makefile'
1376
+ expected_makefile = File.join gemhome2, "gems", @spec.full_name, "Makefile"
1376
1377
 
1377
1378
  assert_path_exist expected_makefile
1378
1379
  end
@@ -1437,11 +1438,11 @@ gem 'other', version
1437
1438
  installer.install
1438
1439
  end
1439
1440
 
1440
- expected_makefile = File.join Gem.user_dir, 'gems', @spec.full_name, 'Makefile'
1441
+ expected_makefile = File.join Gem.user_dir, "gems", @spec.full_name, "Makefile"
1441
1442
 
1442
1443
  assert_path_exist expected_makefile
1443
1444
  assert_path_exist expected_extension_dir
1444
- assert_path_not_exist File.join expected_extension_dir, 'gem_make.out'
1445
+ assert_path_not_exist File.join expected_extension_dir, "gem_make.out"
1445
1446
  end
1446
1447
 
1447
1448
  def test_find_lib_file_after_install
@@ -1471,7 +1472,7 @@ gem 'other', version
1471
1472
  end
1472
1473
 
1473
1474
  Dir.mkdir File.join(@tempdir, "lib")
1474
- write_file File.join(@tempdir, 'lib', "b.rb") do |io|
1475
+ write_file File.join(@tempdir, "lib", "b.rb") do |io|
1475
1476
  io.write "# b.rb"
1476
1477
  end
1477
1478
 
@@ -1485,14 +1486,14 @@ gem 'other', version
1485
1486
  end
1486
1487
 
1487
1488
  expected = File.join @spec.full_require_paths.find {|path|
1488
- File.exist? File.join path, 'b.rb'
1489
- }, 'b.rb'
1490
- assert_equal expected, @spec.matches_for_glob('b.rb').first
1489
+ File.exist? File.join path, "b.rb"
1490
+ }, "b.rb"
1491
+ assert_equal expected, @spec.matches_for_glob("b.rb").first
1491
1492
  end
1492
1493
 
1493
1494
  def test_install_extension_and_script
1494
1495
  pend "Makefile creation crashes on jruby" if Gem.java_platform?
1495
- pend if /mswin/ =~ RUBY_PLATFORM && ENV.key?('GITHUB_ACTIONS') # not working from the beginning
1496
+ pend if RUBY_PLATFORM.include?("mswin") && ENV.key?("GITHUB_ACTIONS") # not working from the beginning
1496
1497
 
1497
1498
  @spec = setup_base_spec
1498
1499
  @spec.extensions << "extconf.rb"
@@ -1558,7 +1559,7 @@ gem 'other', version
1558
1559
  write_file File.join(@tempdir, file)
1559
1560
  end
1560
1561
 
1561
- so = File.join(@spec.gem_dir, "#{@spec.name}.#{RbConfig::CONFIG["DLEXT"]}")
1562
+ so = File.join(@spec.extension_dir, "#{@spec.name}.#{RbConfig::CONFIG["DLEXT"]}")
1562
1563
  assert_path_not_exist so
1563
1564
  use_ui @ui do
1564
1565
  path = Gem::Package.build @spec
@@ -1568,30 +1569,65 @@ gem 'other', version
1568
1569
  end
1569
1570
  assert_path_exist so
1570
1571
  rescue
1571
- puts '-' * 78
1572
- puts File.read File.join(@gemhome, 'gems', 'a-2', 'Makefile')
1573
- puts '-' * 78
1572
+ puts "-" * 78
1573
+ puts File.read File.join(@gemhome, "gems", "a-2", "Makefile")
1574
+ puts "-" * 78
1574
1575
 
1575
- path = File.join(@gemhome, 'gems', 'a-2', 'gem_make.out')
1576
+ path = File.join(@gemhome, "gems", "a-2", "gem_make.out")
1576
1577
 
1577
1578
  if File.exist?(path)
1578
1579
  puts File.read(path)
1579
- puts '-' * 78
1580
+ puts "-" * 78
1580
1581
  end
1581
1582
 
1582
1583
  raise
1583
1584
  end
1584
1585
  end
1585
1586
 
1587
+ def test_install_extension_clean_intermediate_files
1588
+ pend "extensions don't quite work on jruby" if Gem.java_platform?
1589
+ @spec = setup_base_spec
1590
+ @spec.require_paths = ["."]
1591
+ @spec.extensions << "extconf.rb"
1592
+
1593
+ File.write File.join(@tempdir, "extconf.rb"), <<-RUBY
1594
+ require "mkmf"
1595
+ CONFIG['CC'] = '$(TOUCH) $@ ||'
1596
+ CONFIG['LDSHARED'] = '$(TOUCH) $@ ||'
1597
+ $ruby = '#{Gem.ruby}'
1598
+ create_makefile("#{@spec.name}")
1599
+ RUBY
1600
+
1601
+ # empty depend file for no auto dependencies
1602
+ @spec.files += %W[depend #{@spec.name}.c].each do |file|
1603
+ write_file File.join(@tempdir, file)
1604
+ end
1605
+
1606
+ shared_object = "#{@spec.name}.#{RbConfig::CONFIG["DLEXT"]}"
1607
+ extension_file = File.join @spec.extension_dir, shared_object
1608
+ intermediate_file = File.join @spec.gem_dir, shared_object
1609
+
1610
+ assert_path_not_exist extension_file, "no before installing"
1611
+ use_ui @ui do
1612
+ path = Gem::Package.build @spec
1613
+
1614
+ installer = Gem::Installer.at path
1615
+ installer.install
1616
+ end
1617
+
1618
+ assert_path_exist extension_file, "installed"
1619
+ assert_path_not_exist intermediate_file
1620
+ end
1621
+
1586
1622
  def test_installation_satisfies_dependency_eh
1587
1623
  installer = setup_base_installer
1588
1624
 
1589
- util_spec 'a'
1625
+ util_spec "a"
1590
1626
 
1591
- dep = Gem::Dependency.new 'a', '>= 2'
1627
+ dep = Gem::Dependency.new "a", ">= 2"
1592
1628
  assert installer.installation_satisfies_dependency?(dep)
1593
1629
 
1594
- dep = Gem::Dependency.new 'a', '> 2'
1630
+ dep = Gem::Dependency.new "a", "> 2"
1595
1631
  refute installer.installation_satisfies_dependency?(dep)
1596
1632
  end
1597
1633
 
@@ -1600,15 +1636,15 @@ gem 'other', version
1600
1636
  installer.options[:development] = true
1601
1637
  installer.options[:dev_shallow] = true
1602
1638
 
1603
- util_spec 'a'
1639
+ util_spec "a"
1604
1640
 
1605
- dep = Gem::Dependency.new 'a', :development
1641
+ dep = Gem::Dependency.new "a", :development
1606
1642
  assert installer.installation_satisfies_dependency?(dep)
1607
1643
  end
1608
1644
 
1609
1645
  def test_pre_install_checks_dependencies
1610
1646
  installer = setup_base_installer
1611
- @spec.add_dependency 'b', '> 5'
1647
+ @spec.add_dependency "b", "> 5"
1612
1648
  installer = util_setup_gem
1613
1649
  installer.force = false
1614
1650
 
@@ -1621,7 +1657,7 @@ gem 'other', version
1621
1657
 
1622
1658
  def test_pre_install_checks_dependencies_ignore
1623
1659
  installer = util_setup_installer
1624
- @spec.add_dependency 'b', '> 5'
1660
+ @spec.add_dependency "b", "> 5"
1625
1661
  installer.ignore_dependencies = true
1626
1662
 
1627
1663
  build_rake_in do
@@ -1635,16 +1671,16 @@ gem 'other', version
1635
1671
  gemhome2 = "#{@gemhome}2"
1636
1672
 
1637
1673
  @gem = setup_base_gem
1638
- @spec.add_dependency 'd'
1674
+ @spec.add_dependency "d"
1639
1675
 
1640
- quick_gem 'd', 2
1676
+ quick_gem "d", 2
1641
1677
 
1642
1678
  gem = File.join @gemhome, @spec.file_name
1643
1679
 
1644
1680
  FileUtils.mv @gemhome, gemhome2
1645
1681
  FileUtils.mkdir @gemhome
1646
1682
 
1647
- FileUtils.mv File.join(gemhome2, 'cache', @spec.file_name), gem
1683
+ FileUtils.mv File.join(gemhome2, "cache", @spec.file_name), gem
1648
1684
 
1649
1685
  # Don't leak any already activated gems into the installer, require
1650
1686
  # that it work everything out on it's own.
@@ -1660,7 +1696,7 @@ gem 'other', version
1660
1696
  end
1661
1697
 
1662
1698
  def test_pre_install_checks_malicious_name
1663
- spec = util_spec '../malicious', '1'
1699
+ spec = util_spec "../malicious", "1"
1664
1700
  def spec.full_name # so the spec is buildable
1665
1701
  "malicious-1"
1666
1702
  end
@@ -1668,19 +1704,19 @@ gem 'other', version
1668
1704
 
1669
1705
  util_build_gem spec
1670
1706
 
1671
- gem = File.join(@gemhome, 'cache', spec.file_name)
1707
+ gem = File.join(@gemhome, "cache", spec.file_name)
1672
1708
 
1673
1709
  use_ui @ui do
1674
1710
  installer = Gem::Installer.at gem
1675
1711
  e = assert_raise Gem::InstallError do
1676
1712
  installer.pre_install_checks
1677
1713
  end
1678
- assert_equal '#<Gem::Specification name=../malicious version=1> has an invalid name', e.message
1714
+ assert_equal "#<Gem::Specification name=../malicious version=1> has an invalid name", e.message
1679
1715
  end
1680
1716
  end
1681
1717
 
1682
1718
  def test_pre_install_checks_malicious_name_before_eval
1683
- spec = util_spec "malicious\n::Object.const_set(:FROM_EVAL, true)#", '1'
1719
+ spec = util_spec "malicious\n::Object.const_set(:FROM_EVAL, true)#", "1"
1684
1720
  def spec.full_name # so the spec is buildable
1685
1721
  "malicious-1"
1686
1722
  end
@@ -1688,7 +1724,7 @@ gem 'other', version
1688
1724
 
1689
1725
  util_build_gem spec
1690
1726
 
1691
- gem = File.join(@gemhome, 'cache', spec.file_name)
1727
+ gem = File.join(@gemhome, "cache", spec.file_name)
1692
1728
 
1693
1729
  use_ui @ui do
1694
1730
  installer = Gem::Installer.at gem
@@ -1701,7 +1737,7 @@ gem 'other', version
1701
1737
  end
1702
1738
 
1703
1739
  def test_pre_install_checks_malicious_require_paths_before_eval
1704
- spec = util_spec "malicious", '1'
1740
+ spec = util_spec "malicious", "1"
1705
1741
  def spec.full_name # so the spec is buildable
1706
1742
  "malicious-1"
1707
1743
  end
@@ -1710,7 +1746,7 @@ gem 'other', version
1710
1746
 
1711
1747
  util_build_gem spec
1712
1748
 
1713
- gem = File.join(@gemhome, 'cache', spec.file_name)
1749
+ gem = File.join(@gemhome, "cache", spec.file_name)
1714
1750
 
1715
1751
  use_ui @ui do
1716
1752
  installer = Gem::Installer.at gem
@@ -1724,7 +1760,7 @@ gem 'other', version
1724
1760
  def test_pre_install_checks_malicious_extensions_before_eval
1725
1761
  pend "mswin environment disallow to create file contained the carriage return code." if Gem.win_platform?
1726
1762
 
1727
- spec = util_spec "malicious", '1'
1763
+ spec = util_spec "malicious", "1"
1728
1764
  def spec.full_name # so the spec is buildable
1729
1765
  "malicious-1"
1730
1766
  end
@@ -1733,7 +1769,7 @@ gem 'other', version
1733
1769
 
1734
1770
  util_build_gem spec
1735
1771
 
1736
- gem = File.join(@gemhome, 'cache', spec.file_name)
1772
+ gem = File.join(@gemhome, "cache", spec.file_name)
1737
1773
 
1738
1774
  use_ui @ui do
1739
1775
  installer = Gem::Installer.at gem
@@ -1745,7 +1781,7 @@ gem 'other', version
1745
1781
  end
1746
1782
 
1747
1783
  def test_pre_install_checks_malicious_specification_version_before_eval
1748
- spec = util_spec "malicious", '1'
1784
+ spec = util_spec "malicious", "1"
1749
1785
  def spec.full_name # so the spec is buildable
1750
1786
  "malicious-1"
1751
1787
  end
@@ -1754,7 +1790,7 @@ gem 'other', version
1754
1790
 
1755
1791
  util_build_gem spec
1756
1792
 
1757
- gem = File.join(@gemhome, 'cache', spec.file_name)
1793
+ gem = File.join(@gemhome, "cache", spec.file_name)
1758
1794
 
1759
1795
  use_ui @ui do
1760
1796
  installer = Gem::Installer.at gem
@@ -1766,16 +1802,16 @@ gem 'other', version
1766
1802
  end
1767
1803
 
1768
1804
  def test_pre_install_checks_malicious_dependencies_before_eval
1769
- spec = util_spec "malicious", '1'
1805
+ spec = util_spec "malicious", "1"
1770
1806
  def spec.full_name # so the spec is buildable
1771
1807
  "malicious-1"
1772
1808
  end
1773
1809
  def spec.validate(*args); end
1774
- spec.add_dependency "b\nfoo", '> 5'
1810
+ spec.add_dependency "b\nfoo", "> 5"
1775
1811
 
1776
1812
  util_build_gem spec
1777
1813
 
1778
- gem = File.join(@gemhome, 'cache', spec.file_name)
1814
+ gem = File.join(@gemhome, "cache", spec.file_name)
1779
1815
 
1780
1816
  use_ui @ui do
1781
1817
  installer = Gem::Installer.at gem
@@ -1792,7 +1828,7 @@ gem 'other', version
1792
1828
 
1793
1829
  installer = Gem::Installer.at(
1794
1830
  gem_with_ill_formated_platform,
1795
- :install_dir => @gem_home,
1831
+ :install_dir => @gemhome,
1796
1832
  :user_install => false,
1797
1833
  :force => true
1798
1834
  )
@@ -1813,7 +1849,7 @@ gem 'other', version
1813
1849
 
1814
1850
  util_make_exec @spec, "#!/usr/bin/ruby"
1815
1851
 
1816
- shebang = installer.shebang 'executable'
1852
+ shebang = installer.shebang "executable"
1817
1853
 
1818
1854
  assert_equal "#!#{Gem.ruby}", shebang
1819
1855
  end
@@ -1823,15 +1859,15 @@ gem 'other', version
1823
1859
  installer = setup_base_installer
1824
1860
 
1825
1861
  assert_nil installer.build_root
1826
- assert_equal File.join(@gemhome, 'bin'), installer.bin_dir
1862
+ assert_equal File.join(@gemhome, "bin"), installer.bin_dir
1827
1863
  assert_equal @gemhome, installer.gem_home
1828
1864
  end
1829
1865
 
1830
1866
  def test_process_options_build_root
1831
- build_root = File.join @tempdir, 'build_root'
1832
- bin_dir = File.join(build_root, @gemhome.gsub(/^[a-zA-Z]:/, ''), 'bin')
1833
- gem_home = File.join(build_root, @gemhome.gsub(/^[a-zA-Z]:/, ''))
1834
- plugins_dir = File.join(build_root, @gemhome.gsub(/^[a-zA-Z]:/, ''), 'plugins')
1867
+ build_root = File.join @tempdir, "build_root"
1868
+ bin_dir = File.join(build_root, @gemhome.gsub(/^[a-zA-Z]:/, ""), "bin")
1869
+ gem_home = File.join(build_root, @gemhome.gsub(/^[a-zA-Z]:/, ""))
1870
+ plugins_dir = File.join(build_root, @gemhome.gsub(/^[a-zA-Z]:/, ""), "plugins")
1835
1871
 
1836
1872
  @gem = setup_base_gem
1837
1873
  installer = use_ui(@ui) { Gem::Installer.at @gem, :build_root => build_root }
@@ -1850,24 +1886,24 @@ gem 'other', version
1850
1886
  end
1851
1887
 
1852
1888
  def test_shebang_arguments
1853
- load_relative 'no' do
1889
+ load_relative "no" do
1854
1890
  installer = setup_base_installer
1855
1891
 
1856
1892
  util_make_exec @spec, "#!/usr/bin/ruby -ws"
1857
1893
 
1858
- shebang = installer.shebang 'executable'
1894
+ shebang = installer.shebang "executable"
1859
1895
 
1860
1896
  assert_equal "#!#{Gem.ruby} -ws", shebang
1861
1897
  end
1862
1898
  end
1863
1899
 
1864
1900
  def test_shebang_arguments_with_load_relative
1865
- load_relative 'yes' do
1901
+ load_relative "yes" do
1866
1902
  installer = setup_base_installer
1867
1903
 
1868
1904
  util_make_exec @spec, "#!/usr/bin/ruby -ws"
1869
1905
 
1870
- shebang = installer.shebang 'executable'
1906
+ shebang = installer.shebang "executable"
1871
1907
 
1872
1908
  shebang_lines = shebang.split "\n"
1873
1909
 
@@ -1877,47 +1913,47 @@ gem 'other', version
1877
1913
  end
1878
1914
 
1879
1915
  def test_shebang_empty
1880
- load_relative 'no' do
1916
+ load_relative "no" do
1881
1917
  installer = setup_base_installer
1882
1918
 
1883
- util_make_exec @spec, ''
1919
+ util_make_exec @spec, ""
1884
1920
 
1885
- shebang = installer.shebang 'executable'
1921
+ shebang = installer.shebang "executable"
1886
1922
  assert_equal "#!#{Gem.ruby}", shebang
1887
1923
  end
1888
1924
  end
1889
1925
 
1890
1926
  def test_shebang_env
1891
- load_relative 'no' do
1927
+ load_relative "no" do
1892
1928
  installer = setup_base_installer
1893
1929
 
1894
1930
  util_make_exec @spec, "#!/usr/bin/env ruby"
1895
1931
 
1896
- shebang = installer.shebang 'executable'
1932
+ shebang = installer.shebang "executable"
1897
1933
 
1898
1934
  assert_equal "#!#{Gem.ruby}", shebang
1899
1935
  end
1900
1936
  end
1901
1937
 
1902
1938
  def test_shebang_env_arguments
1903
- load_relative 'no' do
1939
+ load_relative "no" do
1904
1940
  installer = setup_base_installer
1905
1941
 
1906
1942
  util_make_exec @spec, "#!/usr/bin/env ruby -ws"
1907
1943
 
1908
- shebang = installer.shebang 'executable'
1944
+ shebang = installer.shebang "executable"
1909
1945
 
1910
1946
  assert_equal "#!#{Gem.ruby} -ws", shebang
1911
1947
  end
1912
1948
  end
1913
1949
 
1914
1950
  def test_shebang_env_arguments_with_load_relative
1915
- load_relative 'yes' do
1951
+ load_relative "yes" do
1916
1952
  installer = setup_base_installer
1917
1953
 
1918
1954
  util_make_exec @spec, "#!/usr/bin/env ruby -ws"
1919
1955
 
1920
- shebang = installer.shebang 'executable'
1956
+ shebang = installer.shebang "executable"
1921
1957
 
1922
1958
  shebang_lines = shebang.split "\n"
1923
1959
 
@@ -1929,10 +1965,10 @@ gem 'other', version
1929
1965
  def test_shebang_env_shebang
1930
1966
  installer = setup_base_installer
1931
1967
 
1932
- util_make_exec @spec, ''
1968
+ util_make_exec @spec, ""
1933
1969
  installer.env_shebang = true
1934
1970
 
1935
- shebang = installer.shebang 'executable'
1971
+ shebang = installer.shebang "executable"
1936
1972
 
1937
1973
  bin_env = get_bin_env
1938
1974
 
@@ -1941,36 +1977,36 @@ gem 'other', version
1941
1977
  end
1942
1978
 
1943
1979
  def test_shebang_nested
1944
- load_relative 'no' do
1980
+ load_relative "no" do
1945
1981
  installer = setup_base_installer
1946
1982
 
1947
1983
  util_make_exec @spec, "#!/opt/local/ruby/bin/ruby"
1948
1984
 
1949
- shebang = installer.shebang 'executable'
1985
+ shebang = installer.shebang "executable"
1950
1986
 
1951
1987
  assert_equal "#!#{Gem.ruby}", shebang
1952
1988
  end
1953
1989
  end
1954
1990
 
1955
1991
  def test_shebang_nested_arguments
1956
- load_relative 'no' do
1992
+ load_relative "no" do
1957
1993
  installer = setup_base_installer
1958
1994
 
1959
1995
  util_make_exec @spec, "#!/opt/local/ruby/bin/ruby -ws"
1960
1996
 
1961
- shebang = installer.shebang 'executable'
1997
+ shebang = installer.shebang "executable"
1962
1998
 
1963
1999
  assert_equal "#!#{Gem.ruby} -ws", shebang
1964
2000
  end
1965
2001
  end
1966
2002
 
1967
2003
  def test_shebang_nested_arguments_with_load_relative
1968
- load_relative 'yes' do
2004
+ load_relative "yes" do
1969
2005
  installer = setup_base_installer
1970
2006
 
1971
2007
  util_make_exec @spec, "#!/opt/local/ruby/bin/ruby -ws"
1972
2008
 
1973
- shebang = installer.shebang 'executable'
2009
+ shebang = installer.shebang "executable"
1974
2010
 
1975
2011
  shebang_lines = shebang.split "\n"
1976
2012
 
@@ -1980,36 +2016,36 @@ gem 'other', version
1980
2016
  end
1981
2017
 
1982
2018
  def test_shebang_version
1983
- load_relative 'no' do
2019
+ load_relative "no" do
1984
2020
  installer = setup_base_installer
1985
2021
 
1986
2022
  util_make_exec @spec, "#!/usr/bin/ruby18"
1987
2023
 
1988
- shebang = installer.shebang 'executable'
2024
+ shebang = installer.shebang "executable"
1989
2025
 
1990
2026
  assert_equal "#!#{Gem.ruby}", shebang
1991
2027
  end
1992
2028
  end
1993
2029
 
1994
2030
  def test_shebang_version_arguments
1995
- load_relative 'no' do
2031
+ load_relative "no" do
1996
2032
  installer = setup_base_installer
1997
2033
 
1998
2034
  util_make_exec @spec, "#!/usr/bin/ruby18 -ws"
1999
2035
 
2000
- shebang = installer.shebang 'executable'
2036
+ shebang = installer.shebang "executable"
2001
2037
 
2002
2038
  assert_equal "#!#{Gem.ruby} -ws", shebang
2003
2039
  end
2004
2040
  end
2005
2041
 
2006
2042
  def test_shebang_version_arguments_with_load_relative
2007
- load_relative 'yes' do
2043
+ load_relative "yes" do
2008
2044
  installer = setup_base_installer
2009
2045
 
2010
2046
  util_make_exec @spec, "#!/usr/bin/ruby18 -ws"
2011
2047
 
2012
- shebang = installer.shebang 'executable'
2048
+ shebang = installer.shebang "executable"
2013
2049
 
2014
2050
  shebang_lines = shebang.split "\n"
2015
2051
 
@@ -2019,36 +2055,36 @@ gem 'other', version
2019
2055
  end
2020
2056
 
2021
2057
  def test_shebang_version_env
2022
- load_relative 'no' do
2058
+ load_relative "no" do
2023
2059
  installer = setup_base_installer
2024
2060
 
2025
2061
  util_make_exec @spec, "#!/usr/bin/env ruby18"
2026
2062
 
2027
- shebang = installer.shebang 'executable'
2063
+ shebang = installer.shebang "executable"
2028
2064
 
2029
2065
  assert_equal "#!#{Gem.ruby}", shebang
2030
2066
  end
2031
2067
  end
2032
2068
 
2033
2069
  def test_shebang_version_env_arguments
2034
- load_relative 'no' do
2070
+ load_relative "no" do
2035
2071
  installer = setup_base_installer
2036
2072
 
2037
2073
  util_make_exec @spec, "#!/usr/bin/env ruby18 -ws"
2038
2074
 
2039
- shebang = installer.shebang 'executable'
2075
+ shebang = installer.shebang "executable"
2040
2076
 
2041
2077
  assert_equal "#!#{Gem.ruby} -ws", shebang
2042
2078
  end
2043
2079
  end
2044
2080
 
2045
2081
  def test_shebang_version_env_arguments_with_load_relative
2046
- load_relative 'yes' do
2082
+ load_relative "yes" do
2047
2083
  installer = setup_base_installer
2048
2084
 
2049
2085
  util_make_exec @spec, "#!/usr/bin/env ruby18 -ws"
2050
2086
 
2051
- shebang = installer.shebang 'executable'
2087
+ shebang = installer.shebang "executable"
2052
2088
 
2053
2089
  shebang_lines = shebang.split "\n"
2054
2090
 
@@ -2061,13 +2097,13 @@ gem 'other', version
2061
2097
  installer = setup_base_installer
2062
2098
 
2063
2099
  conf = Gem::ConfigFile.new []
2064
- conf[:custom_shebang] = 'test'
2100
+ conf[:custom_shebang] = "test"
2065
2101
 
2066
2102
  Gem.configuration = conf
2067
2103
 
2068
2104
  util_make_exec @spec, "#!/usr/bin/ruby"
2069
2105
 
2070
- shebang = installer.shebang 'executable'
2106
+ shebang = installer.shebang "executable"
2071
2107
 
2072
2108
  assert_equal "#!test", shebang
2073
2109
  end
@@ -2085,13 +2121,13 @@ gem 'other', version
2085
2121
 
2086
2122
  bin_env = get_bin_env
2087
2123
  conf = Gem::ConfigFile.new []
2088
- conf[:custom_shebang] = '1 $env 2 $ruby 3 $exec 4 $name'
2124
+ conf[:custom_shebang] = "1 $env 2 $ruby 3 $exec 4 $name"
2089
2125
 
2090
2126
  Gem.configuration = conf
2091
2127
 
2092
2128
  util_make_exec @spec, "#!/usr/bin/ruby"
2093
2129
 
2094
- shebang = installer.shebang 'executable'
2130
+ shebang = installer.shebang "executable"
2095
2131
 
2096
2132
  assert_equal "#!1 #{bin_env} 2 #{Gem.ruby} 3 executable 4 a", shebang
2097
2133
  end
@@ -2101,13 +2137,13 @@ gem 'other', version
2101
2137
 
2102
2138
  bin_env = get_bin_env
2103
2139
  conf = Gem::ConfigFile.new []
2104
- conf[:custom_shebang] = '1 $env 2 $ruby 3 $exec'
2140
+ conf[:custom_shebang] = "1 $env 2 $ruby 3 $exec"
2105
2141
 
2106
2142
  Gem.configuration = conf
2107
2143
 
2108
2144
  util_make_exec @spec, "#!/usr/bin/ruby -ws"
2109
2145
 
2110
- shebang = installer.shebang 'executable'
2146
+ shebang = installer.shebang "executable"
2111
2147
 
2112
2148
  assert_equal "#!1 #{bin_env} 2 #{Gem.ruby} -ws 3 executable", shebang
2113
2149
  end
@@ -2115,14 +2151,14 @@ gem 'other', version
2115
2151
  def test_unpack
2116
2152
  installer = util_setup_installer
2117
2153
 
2118
- dest = File.join @gemhome, 'gems', @spec.full_name
2154
+ dest = File.join @gemhome, "gems", @spec.full_name
2119
2155
 
2120
2156
  Gem::Deprecate.skip_during do
2121
2157
  installer.unpack dest
2122
2158
  end
2123
2159
 
2124
- assert_path_exist File.join dest, 'lib', 'code.rb'
2125
- assert_path_exist File.join dest, 'bin', 'executable'
2160
+ assert_path_exist File.join dest, "lib", "code.rb"
2161
+ assert_path_exist File.join dest, "bin", "executable"
2126
2162
  end
2127
2163
 
2128
2164
  def test_write_build_info_file
@@ -2165,12 +2201,12 @@ gem 'other', version
2165
2201
 
2166
2202
  assert_path_not_exist @spec.build_info_file
2167
2203
  assert_path_exist \
2168
- File.join("#{@gemhome}2", 'build_info', "#{@spec.full_name}.info")
2204
+ File.join("#{@gemhome}2", "build_info", "#{@spec.full_name}.info")
2169
2205
  end
2170
2206
 
2171
2207
  def test_write_cache_file
2172
2208
  @gem = setup_base_gem
2173
- cache_file = File.join @gemhome, 'cache', @spec.file_name
2209
+ cache_file = File.join @gemhome, "cache", @spec.file_name
2174
2210
  gem = File.join @gemhome, @spec.file_name
2175
2211
 
2176
2212
  FileUtils.mv cache_file, gem
@@ -2221,6 +2257,37 @@ gem 'other', version
2221
2257
  assert_equal @spec, eval(File.read(@spec.spec_file))
2222
2258
  end
2223
2259
 
2260
+ def test_leaves_no_empty_cached_spec_when_no_more_disk_space
2261
+ @spec = setup_base_spec
2262
+ FileUtils.rm @spec.spec_file
2263
+ assert_path_not_exist @spec.spec_file
2264
+
2265
+ @spec.files = %w[a.rb b.rb c.rb]
2266
+
2267
+ installer = Gem::Installer.for_spec @spec
2268
+ installer.gem_home = @gemhome
2269
+
2270
+ File.class_eval do
2271
+ alias_method :original_write, :write
2272
+
2273
+ def write(data)
2274
+ raise Errno::ENOSPC
2275
+ end
2276
+ end
2277
+
2278
+ assert_raise Errno::ENOSPC do
2279
+ installer.write_spec
2280
+ end
2281
+
2282
+ assert_path_not_exist @spec.spec_file
2283
+ ensure
2284
+ File.class_eval do
2285
+ remove_method :write
2286
+ alias_method :write, :original_write # rubocop:disable Lint/DuplicateMethods
2287
+ remove_method :original_write
2288
+ end
2289
+ end
2290
+
2224
2291
  def test_dir
2225
2292
  installer = setup_base_installer
2226
2293
 
@@ -2228,7 +2295,7 @@ gem 'other', version
2228
2295
  end
2229
2296
 
2230
2297
  def test_default_gem_loaded_from
2231
- spec = util_spec 'a'
2298
+ spec = util_spec "a"
2232
2299
  installer = Gem::Installer.for_spec spec, :install_as_default => true
2233
2300
  installer.install
2234
2301
  assert_predicate spec, :default_gem?
@@ -2237,7 +2304,7 @@ gem 'other', version
2237
2304
  def test_default_gem_without_wrappers
2238
2305
  installer = setup_base_installer
2239
2306
 
2240
- FileUtils.rm_f File.join(Gem.dir, 'specifications')
2307
+ FileUtils.rm_rf File.join(Gem.default_dir, "specifications")
2241
2308
 
2242
2309
  installer.wrappers = false
2243
2310
  installer.options[:install_as_default] = true
@@ -2247,20 +2314,20 @@ gem 'other', version
2247
2314
  installer.install
2248
2315
  end
2249
2316
 
2250
- assert_directory_exists File.join(@spec.gem_dir, 'bin')
2251
- installed_exec = File.join @spec.gem_dir, 'bin', 'executable'
2317
+ assert_directory_exists File.join(@spec.gem_dir, "bin")
2318
+ installed_exec = File.join @spec.gem_dir, "bin", "executable"
2252
2319
  assert_path_exist installed_exec
2253
2320
 
2254
- assert_directory_exists File.join(Gem.default_dir, 'specifications')
2255
- assert_directory_exists File.join(Gem.default_dir, 'specifications', 'default')
2321
+ assert_directory_exists File.join(Gem.default_dir, "specifications")
2322
+ assert_directory_exists File.join(Gem.default_dir, "specifications", "default")
2256
2323
 
2257
- default_spec = eval File.read File.join(Gem.default_dir, 'specifications', 'default', 'a-2.gemspec')
2324
+ default_spec = eval File.read File.join(Gem.default_dir, "specifications", "default", "a-2.gemspec")
2258
2325
  assert_equal Gem::Version.new("2"), default_spec.version
2259
- assert_equal ['bin/executable'], default_spec.files
2326
+ assert_equal ["bin/executable"], default_spec.files
2260
2327
 
2261
2328
  assert_directory_exists util_inst_bindir
2262
2329
 
2263
- installed_exec = File.join util_inst_bindir, 'executable'
2330
+ installed_exec = File.join util_inst_bindir, "executable"
2264
2331
  assert_path_exist installed_exec
2265
2332
 
2266
2333
  wrapper = File.read installed_exec
@@ -2286,7 +2353,7 @@ gem 'other', version
2286
2353
 
2287
2354
  assert_directory_exists util_inst_bindir
2288
2355
 
2289
- installed_exec = File.join util_inst_bindir, 'executable'
2356
+ installed_exec = File.join util_inst_bindir, "executable"
2290
2357
  assert_path_exist installed_exec
2291
2358
 
2292
2359
  wrapper = File.read installed_exec
@@ -2294,8 +2361,8 @@ gem 'other', version
2294
2361
  end
2295
2362
 
2296
2363
  def test_default_gem_with_exe_as_bindir
2297
- @spec = quick_gem 'c' do |spec|
2298
- util_make_exec spec, '#!/usr/bin/ruby', 'exe'
2364
+ @spec = quick_gem "c" do |spec|
2365
+ util_make_exec spec, "#!/usr/bin/ruby", "exe"
2299
2366
  end
2300
2367
 
2301
2368
  util_build_gem @spec
@@ -2311,16 +2378,16 @@ gem 'other', version
2311
2378
  installer.install
2312
2379
  end
2313
2380
 
2314
- assert_directory_exists File.join(@spec.gem_dir, 'exe')
2315
- installed_exec = File.join @spec.gem_dir, 'exe', 'executable'
2381
+ assert_directory_exists File.join(@spec.gem_dir, "exe")
2382
+ installed_exec = File.join @spec.gem_dir, "exe", "executable"
2316
2383
  assert_path_exist installed_exec
2317
2384
 
2318
- assert_directory_exists File.join(Gem.default_dir, 'specifications')
2319
- assert_directory_exists File.join(Gem.default_dir, 'specifications', 'default')
2385
+ assert_directory_exists File.join(Gem.default_dir, "specifications")
2386
+ assert_directory_exists File.join(Gem.default_dir, "specifications", "default")
2320
2387
 
2321
- default_spec = eval File.read File.join(Gem.default_dir, 'specifications', 'default', 'c-2.gemspec')
2388
+ default_spec = eval File.read File.join(Gem.default_dir, "specifications", "default", "c-2.gemspec")
2322
2389
  assert_equal Gem::Version.new("2"), default_spec.version
2323
- assert_equal ['exe/executable'], default_spec.files
2390
+ assert_equal ["exe/executable"], default_spec.files
2324
2391
  end
2325
2392
 
2326
2393
  def test_default_gem_to_specific_install_dir
@@ -2332,17 +2399,17 @@ gem 'other', version
2332
2399
  installer.install
2333
2400
  end
2334
2401
 
2335
- assert_directory_exists File.join("#{@gemhome}2", 'specifications')
2336
- assert_directory_exists File.join("#{@gemhome}2", 'specifications', 'default')
2402
+ assert_directory_exists File.join("#{@gemhome}2", "specifications")
2403
+ assert_directory_exists File.join("#{@gemhome}2", "specifications", "default")
2337
2404
 
2338
- default_spec = eval File.read File.join("#{@gemhome}2", 'specifications', 'default', 'a-2.gemspec')
2405
+ default_spec = eval File.read File.join("#{@gemhome}2", "specifications", "default", "a-2.gemspec")
2339
2406
  assert_equal Gem::Version.new("2"), default_spec.version
2340
- assert_equal ['bin/executable'], default_spec.files
2407
+ assert_equal ["bin/executable"], default_spec.files
2341
2408
  end
2342
2409
 
2343
2410
  def test_package_attribute
2344
- gem = quick_gem 'c' do |spec|
2345
- util_make_exec spec, '#!/usr/bin/ruby', 'exe'
2411
+ gem = quick_gem "c" do |spec|
2412
+ util_make_exec spec, "#!/usr/bin/ruby", "exe"
2346
2413
  end
2347
2414
 
2348
2415
  installer = util_installer(gem, @gemhome)
@@ -2351,8 +2418,8 @@ gem 'other', version
2351
2418
  end
2352
2419
 
2353
2420
  def test_gem_attribute
2354
- gem = quick_gem 'c' do |spec|
2355
- util_make_exec spec, '#!/usr/bin/ruby', 'exe'
2421
+ gem = quick_gem "c" do |spec|
2422
+ util_make_exec spec, "#!/usr/bin/ruby", "exe"
2356
2423
  end
2357
2424
 
2358
2425
  installer = util_installer(gem, @gemhome)
@@ -2363,14 +2430,14 @@ gem 'other', version
2363
2430
  private
2364
2431
 
2365
2432
  def util_execless
2366
- @spec = util_spec 'z'
2433
+ @spec = util_spec "z"
2367
2434
  util_build_gem @spec
2368
2435
 
2369
2436
  util_installer @spec, @gemhome
2370
2437
  end
2371
2438
 
2372
2439
  def util_conflict_executable(wrappers)
2373
- conflict = quick_gem 'conflict' do |spec|
2440
+ conflict = quick_gem "conflict" do |spec|
2374
2441
  util_make_exec spec
2375
2442
  end
2376
2443
 
@@ -2386,11 +2453,11 @@ gem 'other', version
2386
2453
  end
2387
2454
 
2388
2455
  def load_relative(value)
2389
- orig_LIBRUBY_RELATIVE = RbConfig::CONFIG['LIBRUBY_RELATIVE']
2390
- RbConfig::CONFIG['LIBRUBY_RELATIVE'] = value
2456
+ orig_LIBRUBY_RELATIVE = RbConfig::CONFIG["LIBRUBY_RELATIVE"]
2457
+ RbConfig::CONFIG["LIBRUBY_RELATIVE"] = value
2391
2458
 
2392
2459
  yield
2393
2460
  ensure
2394
- RbConfig::CONFIG['LIBRUBY_RELATIVE'] = orig_LIBRUBY_RELATIVE
2461
+ RbConfig::CONFIG["LIBRUBY_RELATIVE"] = orig_LIBRUBY_RELATIVE
2395
2462
  end
2396
2463
  end