| ... | @@ -701,7 +701,11 @@ const TestCase = struct { | ... | @@ -701,7 +701,11 @@ const TestCase = struct { |
| 701 | }; | 701 | }; |
| 702 | | 702 | |
| 703 | test "tar: Go test cases" { | 703 | test "tar: Go test cases" { |
| 704 | const test_dir = try std.fs.openDirAbsolute("/usr/local/go/src/archive/tar/testdata", .{}); | 704 | const test_dir = if (std.os.getenv("GO_TAR_TESTDATA_PATH")) |path| |
| | 705 | try std.fs.openDirAbsolute(path, .{}) |
| | 706 | else |
| | 707 | return error.SkipZigTest; |
| | 708 | |
| 705 | const cases = [_]TestCase{ | 709 | const cases = [_]TestCase{ |
| 706 | .{ | 710 | .{ |
| 707 | .path = "gnu.tar", | 711 | .path = "gnu.tar", |
| ... | @@ -781,12 +785,6 @@ test "tar: Go test cases" { | ... | @@ -781,12 +785,6 @@ test "tar: Go test cases" { |
| 781 | .path = "pax-bad-hdr-file.tar", | 785 | .path = "pax-bad-hdr-file.tar", |
| 782 | .err = error.InvalidPaxAttribute, | 786 | .err = error.InvalidPaxAttribute, |
| 783 | }, | 787 | }, |
| 784 | // | | |
| 785 | // .{ | | |
| 786 | // .path = "pax-bad-mtime-file.tar", | | |
| 787 | // .err = error.TarBadHeader, | | |
| 788 | // }, | | |
| 789 | // | | |
| 790 | .{ | 788 | .{ |
| 791 | // size is in pax attribute | 789 | // size is in pax attribute |
| 792 | .path = "pax-pos-size-file.tar", | 790 | .path = "pax-pos-size-file.tar", |
| ... | @@ -987,8 +985,6 @@ test "tar: Go test cases" { | ... | @@ -987,8 +985,6 @@ test "tar: Go test cases" { |
| 987 | }; | 985 | }; |
| 988 | | 986 | |
| 989 | for (cases) |case| { | 987 | for (cases) |case| { |
| 990 | //if (!std.mem.eql(u8, case.path, "pax-pos-size-file.tar")) continue; | | |
| 991 | | | |
| 992 | var fs_file = try test_dir.openFile(case.path, .{}); | 988 | var fs_file = try test_dir.openFile(case.path, .{}); |
| 993 | defer fs_file.close(); | 989 | defer fs_file.close(); |
| 994 | | 990 | |
| ... | @@ -1001,7 +997,7 @@ test "tar: Go test cases" { | ... | @@ -1001,7 +997,7 @@ test "tar: Go test cases" { |
| 1001 | } else { | 997 | } else { |
| 1002 | return err; | 998 | return err; |
| 1003 | } | 999 | } |
| 1004 | }) |actual| { | 1000 | }) |actual| : (i += 1) { |
| 1005 | const expected = case.files[i]; | 1001 | const expected = case.files[i]; |
| 1006 | try std.testing.expectEqualStrings(expected.name, actual.name); | 1002 | try std.testing.expectEqualStrings(expected.name, actual.name); |
| 1007 | try std.testing.expectEqual(expected.size, actual.size); | 1003 | try std.testing.expectEqual(expected.size, actual.size); |
| ... | @@ -1012,7 +1008,6 @@ test "tar: Go test cases" { | ... | @@ -1012,7 +1008,6 @@ test "tar: Go test cases" { |
| 1012 | var md5writer = Md5Writer{}; | 1008 | var md5writer = Md5Writer{}; |
| 1013 | try actual.write(&md5writer); | 1009 | try actual.write(&md5writer); |
| 1014 | const chksum = md5writer.chksum(); | 1010 | const chksum = md5writer.chksum(); |
| 1015 | // std.debug.print("actual chksum: {s}\n", .{chksum}); | | |
| 1016 | try std.testing.expectEqualStrings(case.chksums[i], &chksum); | 1011 | try std.testing.expectEqualStrings(case.chksums[i], &chksum); |
| 1017 | } else { | 1012 | } else { |
| 1018 | if (!expected.truncated) try actual.skip(); // skip file content | 1013 | if (!expected.truncated) try actual.skip(); // skip file content |