summaryrefslogtreecommitdiff
path: root/lib/rubygems/package/tar_test_case.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rubygems/package/tar_test_case.rb')
-rw-r--r--lib/rubygems/package/tar_test_case.rb15
1 files changed, 12 insertions, 3 deletions
diff --git a/lib/rubygems/package/tar_test_case.rb b/lib/rubygems/package/tar_test_case.rb
index 5253e32f36..b2d6f4ea77 100644
--- a/lib/rubygems/package/tar_test_case.rb
+++ b/lib/rubygems/package/tar_test_case.rb
@@ -71,7 +71,7 @@ class Gem::Package::TarTestCase < Gem::TestCase
SP(Z(to_oct(sum, 6)))
end
- def header(type, fname, dname, length, mode, mtime, checksum = nil)
+ def header(type, fname, dname, length, mode, mtime, checksum = nil, linkname = "")
checksum ||= " " * 8
arr = [ # struct tarfile_entry_posix
@@ -83,7 +83,7 @@ class Gem::Package::TarTestCase < Gem::TestCase
Z(to_oct(mtime, 11)), # char mtime[12]; 0 padded, octal, null
checksum, # char checksum[8]; 0 padded, octal, null, space
type, # char typeflag[1]; file: "0" dir: "5"
- "\0" * 100, # char linkname[100]; ASCII + (Z unless filled)
+ ASCIIZ(linkname, 100), # char linkname[100]; ASCII + (Z unless filled)
"ustar\0", # char magic[6]; "ustar\0"
"00", # char version[2]; "00"
ASCIIZ("wheel", 32), # char uname[32]; ASCIIZ
@@ -117,6 +117,12 @@ class Gem::Package::TarTestCase < Gem::TestCase
header("0", fname, dname, length, mode, mtime, checksum)
end
+ def tar_symlink_header(fname, prefix, mode, mtime, linkname)
+ h = header("2", fname, prefix, 0, mode, mtime, nil, linkname)
+ checksum = calc_checksum(h)
+ header("2", fname, prefix, 0, mode, mtime, checksum, linkname)
+ end
+
def to_oct(n, pad_size)
"%0#{pad_size}o" % n
end
@@ -133,5 +139,8 @@ class Gem::Package::TarTestCase < Gem::TestCase
util_entry tar_dir_header("foo", "bar", 0, Time.now)
end
-end
+ def util_symlink_entry
+ util_entry tar_symlink_header("foo", "bar", 0, Time.now, "link")
+ end
+end