Commit f2e249e920

Ryan Liptak <squeek502@hotmail.com>
2024-02-02 20:52:42
fs tests: Make path type show up in stack traces of testWithAllSupportedPathTypes
This allows for easier debugging without the need to print out the path type to stderr. Context: 5a3ae38f3b79a69cb6f4ad28934a51165cae2ef1
1 parent 5e791e8
Changed files (1)
lib
std
lib/std/fs/test.zig
@@ -106,15 +106,18 @@ const TestContext = struct {
 /// and will be passed a TestContext that can transform a relative path into the path type under test.
 /// The TestContext will also create a tmp directory for you (and will clean it up for you too).
 fn testWithAllSupportedPathTypes(test_func: anytype) !void {
-    inline for (@typeInfo(PathType).Enum.fields) |enum_field| {
-        const path_type = @field(PathType, enum_field.name);
-        if (!(comptime path_type.isSupported(builtin.os))) continue;
+    try testWithPathTypeIfSupported(.relative, test_func);
+    try testWithPathTypeIfSupported(.absolute, test_func);
+    try testWithPathTypeIfSupported(.unc, test_func);
+}
 
-        var ctx = TestContext.init(path_type, testing.allocator, path_type.getTransformFn());
-        defer ctx.deinit();
+fn testWithPathTypeIfSupported(comptime path_type: PathType, test_func: anytype) !void {
+    if (!(comptime path_type.isSupported(builtin.os))) return;
 
-        try test_func(&ctx);
-    }
+    var ctx = TestContext.init(path_type, testing.allocator, path_type.getTransformFn());
+    defer ctx.deinit();
+
+    try test_func(&ctx);
 }
 
 // For use in test setup.  If the symlink creation fails on Windows with