windows: fix XDG-related test failures on Windows

Make the "cache directory paths" test cross-platform by using
std.fs.path.join for expected values and a platform-appropriate
mock home path, since the function under test uses native path
separators.

Skip the two shell integration XDG_DATA_DIRS tests on Windows.
These tests use hardcoded Unix path separators (:) and Unix default
paths (/usr/local/share:/usr/share) which are not applicable on
Windows where the path delimiter is ; and XDG_DATA_DIRS is not a
standard concept.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Alessandro De Blasis
2026-03-23 13:03:25 +01:00
parent fa10237fb0
commit 5ef2da8127
2 changed files with 11 additions and 3 deletions

View File

@@ -132,7 +132,7 @@ test {
test "cache directory paths" {
const testing = std.testing;
const alloc = testing.allocator;
const mock_home = "/Users/test";
const mock_home = if (builtin.os.tag == .windows) "C:\\Users\\test" else "/Users/test";
// Test when XDG_CACHE_HOME is not set
{
@@ -140,7 +140,9 @@ test "cache directory paths" {
{
const cache_path = try cache(alloc, .{ .home = mock_home });
defer alloc.free(cache_path);
try testing.expectEqualStrings("/Users/test/.cache", cache_path);
const expected = try std.fs.path.join(alloc, &.{ mock_home, ".cache" });
defer alloc.free(expected);
try testing.expectEqualStrings(expected, cache_path);
}
// Test with subdir
@@ -150,7 +152,9 @@ test "cache directory paths" {
.subdir = "ghostty",
});
defer alloc.free(cache_path);
try testing.expectEqualStrings("/Users/test/.cache/ghostty", cache_path);
const expected = try std.fs.path.join(alloc, &.{ mock_home, ".cache", "ghostty" });
defer alloc.free(expected);
try testing.expectEqualStrings(expected, cache_path);
}
}
}

View File

@@ -670,6 +670,8 @@ fn setupXdgDataDirs(
}
test "xdg: empty XDG_DATA_DIRS" {
if (builtin.os.tag == .windows) return error.SkipZigTest;
const testing = std.testing;
var arena = ArenaAllocator.init(testing.allocator);
@@ -696,6 +698,8 @@ test "xdg: empty XDG_DATA_DIRS" {
}
test "xdg: existing XDG_DATA_DIRS" {
if (builtin.os.tag == .windows) return error.SkipZigTest;
const testing = std.testing;
var arena = ArenaAllocator.init(testing.allocator);