std.tar: fix path testing on windows

Fixing ci error: error:

'tar.test.test.pipeToFileSystem' failed: slices differ. first difference occurs at index 2 (0x2)

============ expected this output: =============  len: 9 (0x9)

2E 2E 2F 61 2F 66 69 6C  65                       ../a/file

============= instead found this: ==============  len: 9 (0x9)

2E 2E 5C 61 5C 66 69 6C  65                       ..\a\file

After #19136 dir.symlink changes path separtors to \ on windows.
This commit is contained in:
Igor Anić 2024-03-03 10:58:16 +01:00
parent 67336ca8c6
commit 8cc35a0255

View File

@ -539,5 +539,16 @@ test "pipeToFileSystem" {
try testing.expect((try root.dir.statFile("b/symlink")).kind == .file); // statFile follows symlink
var buf: [32]u8 = undefined;
try testing.expectEqualSlices(u8, "../a/file", try root.dir.readLink("b/symlink", &buf));
try testing.expectEqualSlices(
u8,
"../a/file",
normalizePath(try root.dir.readLink("b/symlink", &buf)),
);
}
fn normalizePath(bytes: []u8) []u8 {
const canonical_sep = std.fs.path.sep_posix;
if (std.fs.path.sep == canonical_sep) return bytes;
std.mem.replaceScalar(u8, bytes, std.fs.path.sep, canonical_sep);
return bytes;
}