From e58fea8227828c0653d687b3baac785ae0564bcd Mon Sep 17 00:00:00 2001 From: Ryan Liptak Date: Sat, 7 Feb 2026 13:21:24 -0800 Subject: [PATCH] tar: Fix symlink test when symlinks can't be created on Windows --- lib/std/tar.zig | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/std/tar.zig b/lib/std/tar.zig index d108a03219..f6031f709d 100644 --- a/lib/std/tar.zig +++ b/lib/std/tar.zig @@ -16,6 +16,7 @@ //! pax reference: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/pax.html#tag_20_92_13 const std = @import("std"); +const builtin = @import("builtin"); const Io = std.Io; const assert = std.debug.assert; const testing = std.testing; @@ -885,10 +886,10 @@ test "create file and symlink" { file = try createDirAndFile(io, root.dir, "a/b/c/file2", .default_file); file.close(io); - createDirAndSymlink(io, root.dir, "a/b/c/file2", "symlink1") catch |err| { - // On Windows when developer mode is not enabled - if (err == error.AccessDenied) return error.SkipZigTest; - return err; + createDirAndSymlink(io, root.dir, "a/b/c/file2", "symlink1") catch |err| switch (err) { + // On Windows, symlinks require developer mode/admin privileges and the underlying filesystem must support symlinks + error.AccessDenied, error.PermissionDenied, error.FileSystem => if (builtin.os.tag == .windows) return error.SkipZigTest else return err, + else => return err, }; try createDirAndSymlink(io, root.dir, "../../../file1", "d/e/f/symlink2");