1require 'rubygems/package/tar_test_case'
2require 'rubygems/package'
3
4class TestGemPackageTarHeader < Gem::Package::TarTestCase
5
6  def setup
7    super
8
9    header = {
10      :name     => 'x',
11      :mode     => 0644,
12      :uid      => 1000,
13      :gid      => 10000,
14      :size     => 100,
15      :mtime    => 12345,
16      :typeflag => '0',
17      :linkname => 'link',
18      :uname    => 'user',
19      :gname    => 'group',
20      :devmajor => 1,
21      :devminor => 2,
22      :prefix   => 'y',
23    }
24
25    @tar_header = Gem::Package::TarHeader.new header
26  end
27
28  def test_self_from
29    io = TempIO.new @tar_header.to_s
30
31    new_header = Gem::Package::TarHeader.from io
32
33    assert_headers_equal @tar_header, new_header
34  end
35
36  def test_initialize
37    assert_equal '',      @tar_header.checksum, 'checksum'
38    assert_equal 1,       @tar_header.devmajor, 'devmajor'
39    assert_equal 2,       @tar_header.devminor, 'devminor'
40    assert_equal 10000,   @tar_header.gid,      'gid'
41    assert_equal 'group', @tar_header.gname,    'gname'
42    assert_equal 'link',  @tar_header.linkname, 'linkname'
43    assert_equal 'ustar', @tar_header.magic,    'magic'
44    assert_equal 0644,    @tar_header.mode,     'mode'
45    assert_equal 12345,   @tar_header.mtime,    'mtime'
46    assert_equal 'x',     @tar_header.name,     'name'
47    assert_equal 'y',     @tar_header.prefix,   'prefix'
48    assert_equal 100,     @tar_header.size,     'size'
49    assert_equal '0',     @tar_header.typeflag, 'typeflag'
50    assert_equal 1000,    @tar_header.uid,      'uid'
51    assert_equal 'user',  @tar_header.uname,    'uname'
52    assert_equal '00',    @tar_header.version,  'version'
53
54    refute_empty @tar_header, 'empty'
55  end
56
57  def test_initialize_bad
58    assert_raises ArgumentError do
59      Gem::Package::TarHeader.new :name => '', :size => '', :mode => ''
60    end
61
62    assert_raises ArgumentError do
63      Gem::Package::TarHeader.new :name => '', :size => '', :prefix => ''
64    end
65
66    assert_raises ArgumentError do
67      Gem::Package::TarHeader.new :name => '', :prefix => '', :mode => ''
68    end
69
70    assert_raises ArgumentError do
71      Gem::Package::TarHeader.new :prefix => '', :size => '', :mode => ''
72    end
73  end
74
75  def test_empty_eh
76    refute_empty @tar_header
77
78    @tar_header = Gem::Package::TarHeader.new :name => 'x', :prefix => '',
79                                              :mode => 0, :size => 0,
80                                              :empty => true
81
82    assert_empty @tar_header
83  end
84
85  def test_equals2
86    assert_equal @tar_header, @tar_header
87    assert_equal @tar_header, @tar_header.dup
88  end
89
90  def test_to_s
91    expected = <<-EOF.split("\n").join
92x\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000
93\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000
94\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000
95\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000
96\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000
97\000\000\000\0000000644\0000001750\0000023420\00000000000144\00000000030071
98\000012467\000 0link\000\000\000\000\000\000\000\000\000\000\000\000\000\000
99\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000
100\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000
101\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000
102\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000
103\000\000\000\000\000\000ustar\00000user\000\000\000\000\000\000\000\000\000
104\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000
105group\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000
106\000\000\000\000\000\000\000\000\0000000001\0000000002\000y\000\000\000\000
107\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000
108\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000
109\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000
110\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000
111\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000
112\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000
113\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000
114\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000
115\000\000\000\000\000\000\000\000\000\000
116    EOF
117
118    assert_headers_equal expected, @tar_header
119  end
120
121  def test_update_checksum
122    assert_equal '', @tar_header.checksum
123
124    @tar_header.update_checksum
125
126    assert_equal '012467', @tar_header.checksum
127  end
128
129end
130
131