@@ -806,6 +806,10 @@ func TestDirectories(t *testing.T) {
806806 Destination : "/etc/baz" ,
807807 Type : "dir" ,
808808 },
809+ {
810+ Destination : "/usr/lib/something/somethingelse" ,
811+ Type : "dir" ,
812+ },
809813 }
810814
811815 require .NoError (t , info .Validate ())
@@ -814,20 +818,38 @@ func TestDirectories(t *testing.T) {
814818 require .NoError (t , err )
815819 dataTarball := inflate (t , dataTarballName , deflatedDataTarball )
816820
821+ require .Equal (t , []string {
822+ "./etc/" ,
823+ "./etc/bar/" ,
824+ "./etc/baz/" ,
825+ "./usr/" ,
826+ "./usr/lib/" ,
827+ "./usr/lib/something/" ,
828+ "./usr/lib/something/somethingelse/" ,
829+ "./etc/bar/file" ,
830+ "./etc/foo/" ,
831+ "./etc/foo/file" ,
832+ }, getTree (t , dataTarball ))
833+
817834 // for debs all implicit or explicit directories are created in the tarball
818835 h := extractFileHeaderFromTar (t , dataTarball , "/etc" )
819- require .NoError (t , err )
820836 require .Equal (t , h .Typeflag , byte (tar .TypeDir ))
821837 h = extractFileHeaderFromTar (t , dataTarball , "/etc/foo" )
822- require .NoError (t , err )
823838 require .Equal (t , h .Typeflag , byte (tar .TypeDir ))
824839 h = extractFileHeaderFromTar (t , dataTarball , "/etc/bar" )
825- require .NoError (t , err )
826840 require .Equal (t , h .Typeflag , byte (tar .TypeDir ))
827841 require .Equal (t , h .Mode , int64 (0o700 ))
828842 require .Equal (t , h .Uname , "test" )
829843 h = extractFileHeaderFromTar (t , dataTarball , "/etc/baz" )
830- require .NoError (t , err )
844+ require .Equal (t , h .Typeflag , byte (tar .TypeDir ))
845+
846+ h = extractFileHeaderFromTar (t , dataTarball , "/usr" )
847+ require .Equal (t , h .Typeflag , byte (tar .TypeDir ))
848+ h = extractFileHeaderFromTar (t , dataTarball , "/usr/lib" )
849+ require .Equal (t , h .Typeflag , byte (tar .TypeDir ))
850+ h = extractFileHeaderFromTar (t , dataTarball , "/usr/lib/something" )
851+ require .Equal (t , h .Typeflag , byte (tar .TypeDir ))
852+ h = extractFileHeaderFromTar (t , dataTarball , "/usr/lib/something/somethingelse" )
831853 require .Equal (t , h .Typeflag , byte (tar .TypeDir ))
832854}
833855
@@ -1103,6 +1125,24 @@ func tarContents(tb testing.TB, tarFile []byte) []string {
11031125 return contents
11041126}
11051127
1128+ func getTree (tb testing.TB , tarFile []byte ) []string {
1129+ tb .Helper ()
1130+
1131+ var result []string
1132+ tr := tar .NewReader (bytes .NewReader (tarFile ))
1133+ for {
1134+ hdr , err := tr .Next ()
1135+ if errors .Is (err , io .EOF ) {
1136+ break // End of archive
1137+ }
1138+ require .NoError (tb , err )
1139+
1140+ result = append (result , hdr .Name )
1141+ }
1142+
1143+ return result
1144+ }
1145+
11061146func extractFileHeaderFromTar (tb testing.TB , tarFile []byte , filename string ) * tar.Header {
11071147 tb .Helper ()
11081148
0 commit comments