rubygems-update 3.3.26 → 3.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (272) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +35 -0
  3. data/CONTRIBUTING.md +24 -1
  4. data/Manifest.txt +30 -27
  5. data/POLICIES.md +10 -8
  6. data/README.md +2 -2
  7. data/bin/gem +1 -4
  8. data/bin/update_rubygems +1 -1
  9. data/bundler/CHANGELOG.md +59 -0
  10. data/bundler/README.md +2 -2
  11. data/bundler/bundler.gemspec +2 -2
  12. data/bundler/exe/bundle +1 -4
  13. data/bundler/lib/bundler/build_metadata.rb +2 -2
  14. data/bundler/lib/bundler/cli/add.rb +1 -1
  15. data/bundler/lib/bundler/cli/check.rb +1 -1
  16. data/bundler/lib/bundler/cli/common.rb +1 -0
  17. data/bundler/lib/bundler/cli/console.rb +2 -2
  18. data/bundler/lib/bundler/cli/doctor.rb +4 -6
  19. data/bundler/lib/bundler/cli/gem.rb +62 -40
  20. data/bundler/lib/bundler/cli/install.rb +2 -3
  21. data/bundler/lib/bundler/cli/lock.rb +8 -5
  22. data/bundler/lib/bundler/cli/outdated.rb +1 -3
  23. data/bundler/lib/bundler/cli/viz.rb +1 -1
  24. data/bundler/lib/bundler/cli.rb +43 -2
  25. data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
  26. data/bundler/lib/bundler/compact_index_client/updater.rb +40 -39
  27. data/bundler/lib/bundler/constants.rb +1 -1
  28. data/bundler/lib/bundler/definition.rb +61 -31
  29. data/bundler/lib/bundler/dependency.rb +12 -11
  30. data/bundler/lib/bundler/digest.rb +1 -1
  31. data/bundler/lib/bundler/dsl.rb +1 -1
  32. data/bundler/lib/bundler/env.rb +1 -1
  33. data/bundler/lib/bundler/environment_preserver.rb +1 -0
  34. data/bundler/lib/bundler/errors.rb +1 -11
  35. data/bundler/lib/bundler/fetcher/compact_index.rb +9 -11
  36. data/bundler/lib/bundler/fetcher/dependency.rb +1 -1
  37. data/bundler/lib/bundler/fetcher/downloader.rb +2 -5
  38. data/bundler/lib/bundler/fetcher.rb +2 -6
  39. data/bundler/lib/bundler/force_platform.rb +18 -0
  40. data/bundler/lib/bundler/friendly_errors.rb +0 -3
  41. data/bundler/lib/bundler/gem_version_promoter.rb +52 -86
  42. data/bundler/lib/bundler/graph.rb +3 -3
  43. data/bundler/lib/bundler/index.rb +5 -13
  44. data/bundler/lib/bundler/injector.rb +1 -1
  45. data/bundler/lib/bundler/inline.rb +2 -2
  46. data/bundler/lib/bundler/installer/parallel_installer.rb +0 -31
  47. data/bundler/lib/bundler/installer.rb +6 -16
  48. data/bundler/lib/bundler/lazy_specification.rb +5 -1
  49. data/bundler/lib/bundler/lockfile_parser.rb +5 -5
  50. data/bundler/lib/bundler/man/bundle-add.1 +1 -1
  51. data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
  52. data/bundler/lib/bundler/man/bundle-cache.1 +1 -1
  53. data/bundler/lib/bundler/man/bundle-check.1 +1 -1
  54. data/bundler/lib/bundler/man/bundle-clean.1 +1 -1
  55. data/bundler/lib/bundler/man/bundle-config.1 +1 -1
  56. data/bundler/lib/bundler/man/bundle-console.1 +1 -1
  57. data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
  58. data/bundler/lib/bundler/man/bundle-exec.1 +1 -1
  59. data/bundler/lib/bundler/man/bundle-gem.1 +27 -37
  60. data/bundler/lib/bundler/man/bundle-gem.1.ronn +5 -5
  61. data/bundler/lib/bundler/man/bundle-help.1 +1 -1
  62. data/bundler/lib/bundler/man/bundle-info.1 +1 -1
  63. data/bundler/lib/bundler/man/bundle-init.1 +1 -1
  64. data/bundler/lib/bundler/man/bundle-inject.1 +1 -1
  65. data/bundler/lib/bundler/man/bundle-install.1 +1 -30
  66. data/bundler/lib/bundler/man/bundle-install.1.ronn +0 -29
  67. data/bundler/lib/bundler/man/bundle-list.1 +1 -1
  68. data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
  69. data/bundler/lib/bundler/man/bundle-open.1 +1 -1
  70. data/bundler/lib/bundler/man/bundle-outdated.1 +1 -1
  71. data/bundler/lib/bundler/man/bundle-platform.1 +2 -2
  72. data/bundler/lib/bundler/man/bundle-platform.1.ronn +1 -1
  73. data/bundler/lib/bundler/man/bundle-plugin.1 +1 -1
  74. data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
  75. data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
  76. data/bundler/lib/bundler/man/bundle-show.1 +1 -1
  77. data/bundler/lib/bundler/man/bundle-update.1 +1 -1
  78. data/bundler/lib/bundler/man/bundle-version.1 +1 -1
  79. data/bundler/lib/bundler/man/bundle-viz.1 +1 -1
  80. data/bundler/lib/bundler/man/bundle.1 +1 -1
  81. data/bundler/lib/bundler/man/gemfile.5 +1 -1
  82. data/bundler/lib/bundler/mirror.rb +5 -7
  83. data/bundler/lib/bundler/plugin/index.rb +4 -4
  84. data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -4
  85. data/bundler/lib/bundler/resolver/base.rb +7 -11
  86. data/bundler/lib/bundler/resolver/candidate.rb +92 -0
  87. data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
  88. data/bundler/lib/bundler/resolver/package.rb +63 -0
  89. data/bundler/lib/bundler/resolver/root.rb +25 -0
  90. data/bundler/lib/bundler/resolver/spec_group.rb +26 -36
  91. data/bundler/lib/bundler/resolver.rb +294 -277
  92. data/bundler/lib/bundler/rubygems_ext.rb +11 -6
  93. data/bundler/lib/bundler/rubygems_gem_installer.rb +4 -2
  94. data/bundler/lib/bundler/rubygems_integration.rb +1 -9
  95. data/bundler/lib/bundler/runtime.rb +1 -5
  96. data/bundler/lib/bundler/settings.rb +0 -6
  97. data/bundler/lib/bundler/shared_helpers.rb +1 -0
  98. data/bundler/lib/bundler/source/git/git_proxy.rb +193 -67
  99. data/bundler/lib/bundler/source/git.rb +15 -17
  100. data/bundler/lib/bundler/source/metadata.rb +0 -1
  101. data/bundler/lib/bundler/source/path/installer.rb +1 -22
  102. data/bundler/lib/bundler/source/path.rb +5 -5
  103. data/bundler/lib/bundler/source/rubygems.rb +13 -67
  104. data/bundler/lib/bundler/source_list.rb +8 -2
  105. data/bundler/lib/bundler/spec_set.rb +7 -9
  106. data/bundler/lib/bundler/templates/Executable +1 -1
  107. data/bundler/lib/bundler/templates/Executable.bundler +4 -9
  108. data/bundler/lib/bundler/templates/Executable.standalone +2 -0
  109. data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
  110. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +3 -0
  111. data/bundler/lib/bundler/templates/newgem/README.md.tt +6 -4
  112. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +2 -1
  113. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
  114. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
  115. data/bundler/lib/bundler/templates/newgem/ext/newgem/{extconf.rb.tt → extconf-c.rb.tt} +0 -0
  116. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
  117. data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
  118. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +10 -0
  119. data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
  120. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +8 -0
  121. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +8 -2
  122. data/bundler/lib/bundler/ui/shell.rb +35 -12
  123. data/bundler/lib/bundler/ui/silent.rb +21 -5
  124. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
  125. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
  126. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
  127. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1350 -408
  128. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
  129. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
  130. data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
  131. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
  132. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
  133. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
  134. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +151 -0
  135. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
  136. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
  137. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
  138. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
  139. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +53 -0
  140. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
  141. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
  142. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +124 -0
  143. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +409 -0
  144. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +240 -0
  145. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
  146. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
  147. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +1 -1
  148. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +64 -16
  149. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
  150. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -1
  151. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +27 -7
  152. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -2
  153. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -1
  154. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
  155. data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
  156. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -2
  157. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +13 -7
  158. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +10 -5
  159. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  160. data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +1 -2
  161. data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +2 -1
  162. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -2
  163. data/bundler/lib/bundler/vendored_persistent.rb +1 -33
  164. data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_pub_grub.rb} +1 -1
  165. data/bundler/lib/bundler/version.rb +5 -1
  166. data/bundler/lib/bundler/worker.rb +5 -7
  167. data/bundler/lib/bundler.rb +20 -64
  168. data/lib/rubygems/command_manager.rb +2 -2
  169. data/lib/rubygems/commands/fetch_command.rb +1 -1
  170. data/lib/rubygems/commands/install_command.rb +7 -3
  171. data/lib/rubygems/commands/rdoc_command.rb +3 -2
  172. data/lib/rubygems/commands/setup_command.rb +2 -2
  173. data/lib/rubygems/commands/unpack_command.rb +1 -1
  174. data/lib/rubygems/commands/update_command.rb +1 -7
  175. data/lib/rubygems/config_file.rb +33 -0
  176. data/lib/rubygems/core_ext/kernel_warn.rb +1 -2
  177. data/lib/rubygems/defaults.rb +15 -1
  178. data/lib/rubygems/dependency.rb +4 -1
  179. data/lib/rubygems/dependency_installer.rb +24 -24
  180. data/lib/rubygems/exceptions.rb +1 -3
  181. data/lib/rubygems/ext/builder.rb +3 -3
  182. data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +9 -5
  183. data/lib/rubygems/ext/cargo_builder.rb +15 -20
  184. data/lib/rubygems/ext/ext_conf_builder.rb +2 -0
  185. data/lib/rubygems/indexer.rb +1 -1
  186. data/lib/rubygems/installer.rb +5 -5
  187. data/lib/rubygems/optparse/lib/optparse.rb +20 -15
  188. data/lib/rubygems/package/tar_header.rb +11 -11
  189. data/lib/rubygems/platform.rb +0 -2
  190. data/lib/rubygems/request_set/gem_dependency_api.rb +104 -104
  191. data/lib/rubygems/requirement.rb +7 -7
  192. data/lib/rubygems/resolver/installer_set.rb +1 -1
  193. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +1 -1
  194. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
  195. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  196. data/lib/rubygems/security/policies.rb +40 -40
  197. data/lib/rubygems/security/trust_dir.rb +1 -1
  198. data/lib/rubygems/security.rb +3 -16
  199. data/lib/rubygems/source.rb +2 -2
  200. data/lib/rubygems/specification.rb +37 -49
  201. data/lib/rubygems/specification_policy.rb +14 -0
  202. data/lib/rubygems/stub_specification.rb +2 -2
  203. data/lib/rubygems/text.rb +1 -1
  204. data/lib/rubygems/tsort/lib/tsort.rb +308 -310
  205. data/lib/rubygems/update_suggestion.rb +69 -0
  206. data/lib/rubygems/util.rb +1 -5
  207. data/lib/rubygems/validator.rb +1 -1
  208. data/lib/rubygems.rb +8 -3
  209. data/rubygems-update.gemspec +2 -2
  210. data/test/rubygems/helper.rb +7 -3
  211. data/test/rubygems/test_bundled_ca.rb +1 -1
  212. data/test/rubygems/test_exit.rb +6 -0
  213. data/test/rubygems/test_gem.rb +4 -9
  214. data/test/rubygems/test_gem_bundler_version_finder.rb +2 -1
  215. data/test/rubygems/test_gem_command_manager.rb +1 -1
  216. data/test/rubygems/test_gem_commands_install_command.rb +19 -0
  217. data/test/rubygems/test_gem_commands_setup_command.rb +1 -8
  218. data/test/rubygems/test_gem_commands_update_command.rb +6 -6
  219. data/test/rubygems/test_gem_config_file.rb +1 -1
  220. data/test/rubygems/test_gem_dependency.rb +2 -0
  221. data/test/rubygems/test_gem_ext_builder.rb +3 -3
  222. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.lock +22 -32
  223. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.toml +1 -1
  224. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +22 -32
  225. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +1 -1
  226. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +12 -0
  227. data/test/rubygems/test_gem_ext_cargo_builder.rb +22 -27
  228. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +16 -16
  229. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +0 -10
  230. data/test/rubygems/test_gem_indexer.rb +39 -20
  231. data/test/rubygems/test_gem_installer.rb +68 -2
  232. data/test/rubygems/test_gem_package_tar_header.rb +13 -13
  233. data/test/rubygems/test_gem_platform.rb +59 -60
  234. data/test/rubygems/test_gem_remote_fetcher.rb +4 -4
  235. data/test/rubygems/test_gem_request_set.rb +2 -2
  236. data/test/rubygems/test_gem_requirement.rb +1 -1
  237. data/test/rubygems/test_gem_resolver_api_set.rb +12 -12
  238. data/test/rubygems/test_gem_resolver_api_specification.rb +19 -19
  239. data/test/rubygems/test_gem_resolver_git_specification.rb +1 -1
  240. data/test/rubygems/test_gem_security_policy.rb +10 -10
  241. data/test/rubygems/test_gem_security_trust_dir.rb +2 -2
  242. data/test/rubygems/test_gem_specification.rb +50 -37
  243. data/test/rubygems/test_gem_uninstaller.rb +1 -1
  244. data/test/rubygems/test_gem_update_suggestion.rb +208 -0
  245. data/test/rubygems/test_kernel.rb +10 -8
  246. data/test/rubygems/test_require.rb +70 -55
  247. metadata +34 -31
  248. data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
  249. data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
  250. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
  251. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
  252. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
  253. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
  254. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
  255. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
  256. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
  257. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
  258. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
  259. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
  260. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
  261. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
  262. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -149
  263. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
  264. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
  265. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
  266. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
  267. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
  268. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
  269. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
  270. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
  271. data/bundler/lib/bundler/vendored_molinillo.rb +0 -4
  272. data/bundler/lib/bundler/version_ranges.rb +0 -122
@@ -4,9 +4,9 @@ version = 3
4
4
 
5
5
  [[package]]
6
6
  name = "aho-corasick"
7
- version = "0.7.18"
7
+ version = "0.7.20"
8
8
  source = "registry+https://github.com/rust-lang/crates.io-index"
9
- checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
9
+ checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac"
10
10
  dependencies = [
11
11
  "memchr",
12
12
  ]
@@ -53,9 +53,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
53
53
 
54
54
  [[package]]
55
55
  name = "clang-sys"
56
- version = "1.3.3"
56
+ version = "1.4.0"
57
57
  source = "registry+https://github.com/rust-lang/crates.io-index"
58
- checksum = "5a050e2153c5be08febd6734e29298e844fdb0fa21aeddd63b4eb7baa106c69b"
58
+ checksum = "fa2e27ae6ab525c3d369ded447057bca5438d86dc3a68f6faafb8269ba82ebf3"
59
59
  dependencies = [
60
60
  "glob",
61
61
  "libc",
@@ -82,29 +82,20 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
82
82
 
83
83
  [[package]]
84
84
  name = "libc"
85
- version = "0.2.126"
85
+ version = "0.2.138"
86
86
  source = "registry+https://github.com/rust-lang/crates.io-index"
87
- checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836"
87
+ checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8"
88
88
 
89
89
  [[package]]
90
90
  name = "libloading"
91
- version = "0.7.3"
91
+ version = "0.7.4"
92
92
  source = "registry+https://github.com/rust-lang/crates.io-index"
93
- checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd"
93
+ checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f"
94
94
  dependencies = [
95
95
  "cfg-if",
96
96
  "winapi",
97
97
  ]
98
98
 
99
- [[package]]
100
- name = "linkify"
101
- version = "0.9.0"
102
- source = "registry+https://github.com/rust-lang/crates.io-index"
103
- checksum = "96dd5884008358112bc66093362197c7248ece00d46624e2cf71e50029f8cff5"
104
- dependencies = [
105
- "memchr",
106
- ]
107
-
108
99
  [[package]]
109
100
  name = "memchr"
110
101
  version = "2.5.0"
@@ -135,48 +126,47 @@ checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
135
126
 
136
127
  [[package]]
137
128
  name = "proc-macro2"
138
- version = "1.0.40"
129
+ version = "1.0.47"
139
130
  source = "registry+https://github.com/rust-lang/crates.io-index"
140
- checksum = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7"
131
+ checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725"
141
132
  dependencies = [
142
133
  "unicode-ident",
143
134
  ]
144
135
 
145
136
  [[package]]
146
137
  name = "quote"
147
- version = "1.0.20"
138
+ version = "1.0.21"
148
139
  source = "registry+https://github.com/rust-lang/crates.io-index"
149
- checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804"
140
+ checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
150
141
  dependencies = [
151
142
  "proc-macro2",
152
143
  ]
153
144
 
154
145
  [[package]]
155
146
  name = "rb-sys"
156
- version = "0.9.37"
147
+ version = "0.9.52"
157
148
  source = "registry+https://github.com/rust-lang/crates.io-index"
158
- checksum = "5ba942b6777ea18ded013b267023a9c98994557e6539e43740de9e75084cb124"
149
+ checksum = "02fffdb0162fc4cc1b6509b2d9b32a75f7e7ed392f58bde639e0c33b23e74b97"
159
150
  dependencies = [
160
151
  "rb-sys-build",
161
152
  ]
162
153
 
163
154
  [[package]]
164
155
  name = "rb-sys-build"
165
- version = "0.9.37"
156
+ version = "0.9.52"
166
157
  source = "registry+https://github.com/rust-lang/crates.io-index"
167
- checksum = "d35109e1a11ef8d1a988db242ab2ba2e80170f9f5a28f88ab30184a2cea8e09b"
158
+ checksum = "85d1a236755f879fc155d16d9ba4cd3b1975fd52ef6a28113702ae3881b73c03"
168
159
  dependencies = [
169
160
  "bindgen",
170
- "linkify",
171
161
  "regex",
172
162
  "shell-words",
173
163
  ]
174
164
 
175
165
  [[package]]
176
166
  name = "regex"
177
- version = "1.5.6"
167
+ version = "1.7.0"
178
168
  source = "registry+https://github.com/rust-lang/crates.io-index"
179
- checksum = "d83f127d94bdbcda4c8cc2e50f6f84f4b611f69c902699ca385a39c3a75f9ff1"
169
+ checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a"
180
170
  dependencies = [
181
171
  "aho-corasick",
182
172
  "memchr",
@@ -185,9 +175,9 @@ dependencies = [
185
175
 
186
176
  [[package]]
187
177
  name = "regex-syntax"
188
- version = "0.6.26"
178
+ version = "0.6.28"
189
179
  source = "registry+https://github.com/rust-lang/crates.io-index"
190
- checksum = "49b3de9ec5dc0a3417da371aab17d729997c15010e7fd24ff707773a33bddb64"
180
+ checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848"
191
181
 
192
182
  [[package]]
193
183
  name = "rust_ruby_example"
@@ -216,9 +206,9 @@ checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3"
216
206
 
217
207
  [[package]]
218
208
  name = "unicode-ident"
219
- version = "1.0.1"
209
+ version = "1.0.5"
220
210
  source = "registry+https://github.com/rust-lang/crates.io-index"
221
- checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c"
211
+ checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3"
222
212
 
223
213
  [[package]]
224
214
  name = "winapi"
@@ -7,4 +7,4 @@ edition = "2021"
7
7
  crate-type = ["cdylib"]
8
8
 
9
9
  [dependencies]
10
- rb-sys = "0.9.37"
10
+ rb-sys = "0.9.52"
@@ -21,6 +21,18 @@ unsafe extern "C" fn pub_reverse(_klass: VALUE, mut input: VALUE) -> VALUE {
21
21
  rb_utf8_str_new(reversed_cstring.as_ptr(), size)
22
22
  }
23
23
 
24
+ #[cfg(rubygems)]
25
+ #[no_mangle]
26
+ pub extern "C" fn hello_from_rubygems() {}
27
+
28
+ #[cfg(rubygems_0_0_0)]
29
+ #[no_mangle]
30
+ pub extern "C" fn should_never_exist() {}
31
+
32
+ #[cfg(rubygems_x_x_x)]
33
+ #[no_mangle]
34
+ pub extern "C" fn hello_from_rubygems_version() {}
35
+
24
36
  #[allow(non_snake_case)]
25
37
  #[no_mangle]
26
38
  pub extern "C" fn Init_rust_ruby_example() {
@@ -2,6 +2,7 @@
2
2
 
3
3
  require_relative "helper"
4
4
  require "rubygems/ext"
5
+ require "open3"
5
6
 
6
7
  class TestGemExtCargoBuilder < Gem::TestCase
7
8
  def setup
@@ -22,25 +23,6 @@ class TestGemExtCargoBuilder < Gem::TestCase
22
23
  FileUtils.cp_r(@fixture_dir.to_s, @ext)
23
24
  end
24
25
 
25
- def test_build_staticlib
26
- skip_unsupported_platforms!
27
- setup_rust_gem "rust_ruby_example"
28
-
29
- content = @fixture_dir.join("Cargo.toml").read.gsub("cdylib", "staticlib")
30
- File.write(File.join(@ext, "Cargo.toml"), content)
31
-
32
- output = []
33
-
34
- Dir.chdir @ext do
35
- ENV.update(@rust_envs)
36
- spec = Gem::Specification.new "rust_ruby_example", "0.1.0"
37
- builder = Gem::Ext::CargoBuilder.new(spec)
38
- assert_raise(Gem::Ext::CargoBuilder::DylibNotFoundError) do
39
- builder.build nil, @dest_path, output
40
- end
41
- end
42
- end
43
-
44
26
  def test_build_cdylib
45
27
  skip_unsupported_platforms!
46
28
  setup_rust_gem "rust_ruby_example"
@@ -57,7 +39,8 @@ class TestGemExtCargoBuilder < Gem::TestCase
57
39
  output = output.join "\n"
58
40
  bundle = File.join(@dest_path, "release/rust_ruby_example.#{RbConfig::CONFIG['DLEXT']}")
59
41
 
60
- assert_match "Finished release [optimized] target(s)", output
42
+ assert_match(/Finished/, output)
43
+ assert_match(/release/, output)
61
44
  assert_ffi_handle bundle, "Init_rust_ruby_example"
62
45
  rescue Exception => e
63
46
  pp output if output
@@ -65,25 +48,27 @@ class TestGemExtCargoBuilder < Gem::TestCase
65
48
  raise(e)
66
49
  end
67
50
 
68
- def test_build_dev_profile
51
+ def test_rubygems_cfg_passed_to_rustc
69
52
  skip_unsupported_platforms!
70
53
  setup_rust_gem "rust_ruby_example"
71
-
54
+ version_slug = Gem::VERSION.tr(".", "_")
72
55
  output = []
73
56
 
57
+ replace_in_rust_file("src/lib.rs", "rubygems_x_x_x", "rubygems_#{version_slug}")
58
+
74
59
  Dir.chdir @ext do
75
60
  ENV.update(@rust_envs)
76
61
  spec = Gem::Specification.new "rust_ruby_example", "0.1.0"
77
62
  builder = Gem::Ext::CargoBuilder.new(spec)
78
- builder.profile = :dev
79
63
  builder.build nil, @dest_path, output
80
64
  end
81
65
 
82
66
  output = output.join "\n"
83
- bundle = File.join(@dest_path, "debug/rust_ruby_example.#{RbConfig::CONFIG['DLEXT']}")
67
+ bundle = File.join(@dest_path, "release/rust_ruby_example.#{RbConfig::CONFIG['DLEXT']}")
84
68
 
85
- assert_match "Finished dev [unoptimized + debuginfo] target(s)", output
86
- assert_ffi_handle bundle, "Init_rust_ruby_example"
69
+ assert_ffi_handle bundle, "hello_from_rubygems"
70
+ assert_ffi_handle bundle, "hello_from_rubygems_version"
71
+ refute_ffi_handle bundle, "should_never_exist"
87
72
  rescue Exception => e
88
73
  pp output if output
89
74
 
@@ -164,7 +149,6 @@ class TestGemExtCargoBuilder < Gem::TestCase
164
149
  def skip_unsupported_platforms!
165
150
  pend "jruby not supported" if java_platform?
166
151
  pend "truffleruby not supported (yet)" if RUBY_ENGINE == "truffleruby"
167
- pend "mswin not supported (yet)" if /mswin/ =~ RUBY_PLATFORM && ENV.key?("GITHUB_ACTIONS")
168
152
  system(@rust_envs, "cargo", "-V", out: IO::NULL, err: [:child, :out])
169
153
  pend "cargo not present" unless $?.success?
170
154
  pend "ruby.h is not provided by ruby repo" if ruby_repo?
@@ -175,4 +159,15 @@ class TestGemExtCargoBuilder < Gem::TestCase
175
159
  dylib_handle = Fiddle.dlopen bundle
176
160
  assert_nothing_raised { dylib_handle[name] }
177
161
  end
162
+
163
+ def refute_ffi_handle(bundle, name)
164
+ require "fiddle"
165
+ dylib_handle = Fiddle.dlopen bundle
166
+ assert_raise { dylib_handle[name] }
167
+ end
168
+
169
+ def replace_in_rust_file(name, from, to)
170
+ content = @fixture_dir.join(name).read.gsub(from, to)
171
+ File.write(File.join(@ext, name), content)
172
+ end
178
173
  end
@@ -5,22 +5,22 @@ require "rubygems/ext/cargo_builder/link_flag_converter"
5
5
 
6
6
  class TestGemExtCargoBuilderLinkFlagConverter < Gem::TestCase
7
7
  CASES = {
8
- test_search_path_basic: ["-L/usr/local/lib", ["-L", "native=/usr/local/lib"]],
9
- test_search_path_space: ["-L /usr/local/lib", ["-L", "native=/usr/local/lib"]],
10
- test_search_path_space_in_path: ["-L/usr/local/my\ lib", ["-L", "native=/usr/local/my\ lib"]],
11
- test_simple_lib: ["-lfoo", ["-l", "foo"]],
12
- test_lib_with_nonascii: ["-lws2_32", ["-l", "ws2_32"]],
13
- test_simple_lib_space: ["-l foo", ["-l", "foo"]],
14
- test_verbose_lib_space: ["--library=foo", ["-l", "foo"]],
15
- test_libstatic_with_colon: ["-l:libssp.a", ["-l", "static=ssp"]],
16
- test_libstatic_with_colon_space: ["-l :libssp.a", ["-l", "static=ssp"]],
17
- test_unconventional_lib_with_colon: ["-l:ssp.a", ["-C", "link_arg=-l:ssp.a"]],
18
- test_dylib_with_colon_space: ["-l :libssp.dylib", ["-l", "dylib=ssp"]],
19
- test_so_with_colon_space: ["-l :libssp.so", ["-l", "dylib=ssp"]],
20
- test_dll_with_colon_space: ["-l :libssp.dll", ["-l", "dylib=ssp"]],
21
- test_framework: ["-F/some/path", ["-l", "framework=/some/path"]],
22
- test_framework_space: ["-F /some/path", ["-l", "framework=/some/path"]],
23
- test_non_lib_dash_l: ["test_rubygems_20220413-976-lemgf9/prefix", ["-C", "link_arg=test_rubygems_20220413-976-lemgf9/prefix"]],
8
+ test_search_path_basic: ["-L/usr/local/lib", ["-L", "native=/usr/local/lib"]],
9
+ test_search_path_space: ["-L /usr/local/lib", ["-L", "native=/usr/local/lib"]],
10
+ test_search_path_space_in_path: ["-L/usr/local/my\ lib", ["-L", "native=/usr/local/my\ lib"]],
11
+ test_simple_lib: ["-lfoo", ["-l", "foo"]],
12
+ test_lib_with_nonascii: ["-lws2_32", ["-l", "ws2_32"]],
13
+ test_simple_lib_space: ["-l foo", ["-l", "foo"]],
14
+ test_verbose_lib_space: ["--library=foo", ["-l", "foo"]],
15
+ test_libstatic_with_colon: ["-l:libssp.a", ["-C", "link-args=-l:libssp.a"]],
16
+ test_libstatic_with_colon_space: ["-l :libssp.a", ["-C", "link-args=-l :libssp.a"]],
17
+ test_unconventional_lib_with_colon: ["-l:ssp.a", ["-C", "link-args=-l:ssp.a"]],
18
+ test_dylib_with_colon_space: ["-l :libssp.dylib", ["-C", "link-args=-l :libssp.dylib"]],
19
+ test_so_with_colon_space: ["-l :libssp.so", ["-C", "link-args=-l :libssp.so"]],
20
+ test_dll_with_colon_space: ["-l :libssp.dll", ["-C", "link-args=-l :libssp.dll"]],
21
+ test_framework: ["-F/some/path", ["-l", "framework=/some/path"]],
22
+ test_framework_space: ["-F /some/path", ["-l", "framework=/some/path"]],
23
+ test_non_lib_dash_l: ["test_rubygems_20220413-976-lemgf9/prefix", ["-C", "link-args=test_rubygems_20220413-976-lemgf9/prefix"]],
24
24
  }.freeze
25
25
 
26
26
  CASES.each do |test_name, (arg, expected)|
@@ -23,16 +23,6 @@ class TestGemExtCargoBuilderUnit < Gem::TestCase
23
23
  assert_includes command, "--locked"
24
24
  end
25
25
 
26
- def test_cargo_command_does_not_lock_in_dev_profile
27
- skip_unsupported_platforms!
28
- spec = Gem::Specification.new "rust_ruby_example", "0.1.0"
29
- builder = Gem::Ext::CargoBuilder.new(spec)
30
- builder.profile = :dev
31
- command = builder.cargo_command(Dir.pwd, @tempdir)
32
-
33
- assert_not_includes command, "--locked"
34
- end
35
-
36
26
  def test_cargo_command_passes_respects_cargo_env_var
37
27
  skip_unsupported_platforms!
38
28
  old_cargo = ENV["CARGO"]
@@ -31,15 +31,33 @@ class TestGemIndexer < Gem::TestCase
31
31
  @indexer = Gem::Indexer.new(@indexerdir)
32
32
  end
33
33
 
34
+ def teardown
35
+ FileUtils.rm_rf(@indexer.directory)
36
+ ensure
37
+ super
38
+ end
39
+
40
+ def with_indexer(dir, **opts)
41
+ indexer = Gem::Indexer.new(dir, **opts)
42
+ build_directory = indexer.directory
43
+ yield indexer
44
+ ensure
45
+ FileUtils.rm_rf(build_directory) if build_directory
46
+ end
47
+
34
48
  def test_initialize
35
49
  assert_equal @indexerdir, @indexer.dest_directory
36
- assert_match %r{#{Dir.mktmpdir('gem_generate_index').match(/.*-/)}}, @indexer.directory
50
+ Dir.mktmpdir("gem_generate_index") do |tmpdir|
51
+ assert_match %r{#{tmpdir.match(/.*-/)}}, @indexer.directory
52
+ end
37
53
 
38
- indexer = Gem::Indexer.new @indexerdir
39
- assert indexer.build_modern
54
+ with_indexer(@indexerdir) do |indexer|
55
+ assert_predicate indexer, :build_modern
56
+ end
40
57
 
41
- indexer = Gem::Indexer.new @indexerdir, :build_modern => true
42
- assert indexer.build_modern
58
+ with_indexer(@indexerdir, :build_modern => true) do |indexer|
59
+ assert_predicate indexer, :build_modern
60
+ end
43
61
  end
44
62
 
45
63
  def test_build_indices
@@ -159,26 +177,27 @@ class TestGemIndexer < Gem::TestCase
159
177
  @indexer.generate_index
160
178
  end
161
179
 
162
- @indexer = Gem::Indexer.new @indexerdir
163
- @indexer.build_modern = true
180
+ with_indexer @indexerdir do |indexer|
181
+ indexer.build_modern = true
164
182
 
165
- use_ui @ui do
166
- @indexer.generate_index
167
- end
168
- quickdir = File.join @indexerdir, "quick"
169
- marshal_quickdir = File.join quickdir, "Marshal.#{@marshal_version}"
183
+ use_ui @ui do
184
+ indexer.generate_index
185
+ end
186
+ quickdir = File.join @indexerdir, "quick"
187
+ marshal_quickdir = File.join quickdir, "Marshal.#{@marshal_version}"
170
188
 
171
- assert_directory_exists quickdir
172
- assert_directory_exists marshal_quickdir
189
+ assert_directory_exists quickdir
190
+ assert_directory_exists marshal_quickdir
173
191
 
174
- assert_indexed marshal_quickdir, "#{File.basename(@a1.spec_file)}.rz"
175
- assert_indexed marshal_quickdir, "#{File.basename(@a2.spec_file)}.rz"
192
+ assert_indexed marshal_quickdir, "#{File.basename(@a1.spec_file)}.rz"
193
+ assert_indexed marshal_quickdir, "#{File.basename(@a2.spec_file)}.rz"
176
194
 
177
- assert_indexed @indexerdir, "specs.#{@marshal_version}"
178
- assert_indexed @indexerdir, "specs.#{@marshal_version}.gz"
195
+ assert_indexed @indexerdir, "specs.#{@marshal_version}"
196
+ assert_indexed @indexerdir, "specs.#{@marshal_version}.gz"
179
197
 
180
- assert_indexed @indexerdir, "latest_specs.#{@marshal_version}"
181
- assert_indexed @indexerdir, "latest_specs.#{@marshal_version}.gz"
198
+ assert_indexed @indexerdir, "latest_specs.#{@marshal_version}"
199
+ assert_indexed @indexerdir, "latest_specs.#{@marshal_version}.gz"
200
+ end
182
201
  end
183
202
 
184
203
  def test_generate_index_ui
@@ -1493,7 +1493,7 @@ gem 'other', version
1493
1493
 
1494
1494
  def test_install_extension_and_script
1495
1495
  pend "Makefile creation crashes on jruby" if Gem.java_platform?
1496
- 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
1497
1497
 
1498
1498
  @spec = setup_base_spec
1499
1499
  @spec.extensions << "extconf.rb"
@@ -1559,7 +1559,7 @@ gem 'other', version
1559
1559
  write_file File.join(@tempdir, file)
1560
1560
  end
1561
1561
 
1562
- so = File.join(@spec.gem_dir, "#{@spec.name}.#{RbConfig::CONFIG["DLEXT"]}")
1562
+ so = File.join(@spec.extension_dir, "#{@spec.name}.#{RbConfig::CONFIG["DLEXT"]}")
1563
1563
  assert_path_not_exist so
1564
1564
  use_ui @ui do
1565
1565
  path = Gem::Package.build @spec
@@ -1584,6 +1584,41 @@ gem 'other', version
1584
1584
  end
1585
1585
  end
1586
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
+
1587
1622
  def test_installation_satisfies_dependency_eh
1588
1623
  installer = setup_base_installer
1589
1624
 
@@ -2222,6 +2257,37 @@ gem 'other', version
2222
2257
  assert_equal @spec, eval(File.read(@spec.spec_file))
2223
2258
  end
2224
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
+
2225
2291
  def test_dir
2226
2292
  installer = setup_base_installer
2227
2293
 
@@ -7,19 +7,19 @@ class TestGemPackageTarHeader < Gem::Package::TarTestCase
7
7
  super
8
8
 
9
9
  header = {
10
- :name => "x",
11
- :mode => 0644,
12
- :uid => 1000,
13
- :gid => 10000,
14
- :size => 100,
15
- :mtime => 12345,
10
+ :name => "x",
11
+ :mode => 0644,
12
+ :uid => 1000,
13
+ :gid => 10000,
14
+ :size => 100,
15
+ :mtime => 12345,
16
16
  :typeflag => "0",
17
17
  :linkname => "link",
18
- :uname => "user",
19
- :gname => "group",
18
+ :uname => "user",
19
+ :gname => "group",
20
20
  :devmajor => 1,
21
21
  :devminor => 2,
22
- :prefix => "y",
22
+ :prefix => "y",
23
23
  }
24
24
 
25
25
  @tar_header = Gem::Package::TarHeader.new header
@@ -76,10 +76,10 @@ class TestGemPackageTarHeader < Gem::Package::TarTestCase
76
76
 
77
77
  def test_initialize_typeflag
78
78
  header = {
79
- :mode => "",
80
- :name => "",
81
- :prefix => "",
82
- :size => "",
79
+ :mode => "",
80
+ :name => "",
81
+ :prefix => "",
82
+ :size => "",
83
83
  :typeflag => "",
84
84
  }
85
85