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