Skip to content

Commit

Permalink
Add a test covering
Browse files Browse the repository at this point in the history
  • Loading branch information
segiddins committed Apr 30, 2024
1 parent cc89e1a commit f8d15c4
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 2 deletions.
11 changes: 9 additions & 2 deletions lib/rubygems/package/tar_header.rb
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ class Gem::Package::TarHeader

attr_reader(*FIELDS)

EMPTY_HEADER = ("\0" * 512).freeze # :nodoc:
EMPTY_HEADER = ("\0" * 512).b.freeze # :nodoc:

##
# Creates a tar header from IO +stream+
Expand Down Expand Up @@ -173,10 +173,17 @@ def initialize(vals)
end

EMPTY = new({ # :nodoc:
checksum: 0,
gname: "",
linkname: "",
magic: "",
mode: 0,
name: "",
prefix: "",
size: 0,
uname: "",
version: 0,

empty: true,
}).freeze
private_constant :EMPTY
Expand Down Expand Up @@ -250,7 +257,7 @@ def header(checksum = @checksum)

header = header.pack PACK_FORMAT

header << ("\0" * ((512 - header.size) % 512))
header.ljust 512, "\0"
end

def oct(num, len)
Expand Down
25 changes: 25 additions & 0 deletions test/rubygems/test_gem_package_tar_header.rb
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,31 @@ def test_empty_eh
assert_empty @tar_header
end

def test_empty
@tar_header = Gem::Package::TarHeader.from(StringIO.new(Gem::Package::TarHeader::EMPTY_HEADER))

assert_empty @tar_header
assert_equal Gem::Package::TarHeader.new(
checksum: 0,
devmajor: 0,
devminor: 0,
empty: true,
gid: 0,
gname: "",
linkname: "",
magic: "",
mode: 0,
mtime: 0,
name: "",
prefix: "",
size: 0,
typeflag: "0",
uid: 0,
uname: "",
version: 0,
), Gem::Package::TarHeader.const_get(:EMPTY)
end

def test_equals2
assert_equal @tar_header, @tar_header
assert_equal @tar_header, @tar_header.dup
Expand Down

0 comments on commit f8d15c4

Please sign in to comment.