authorgravatar for squeek502@hotmail.comRyan Liptak <squeek502@hotmail.com> 2025-12-18 16:25:57-08:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-12-23 22:15:10-08:00
log1edae601a1d35caa78eddc4b18f7d613c4af70f9
treee4df3a2cb9e052e173c907c614377b40b2e3cee1
parent3466056478d2ad988b117a89d7cbe3cc1557425a

Test Dir.Reader.min_buffer_len via "max file name component lengths" test


1 files changed, 18 insertions(+), 2 deletions(-)

lib/std/fs/test.zig+18-2
...@@ -1368,13 +1368,29 @@ test "makepath ignores '.'" {...@@ -1368,13 +1368,29 @@ test "makepath ignores '.'" {
1368}1368}
13691369
1370fn testFilenameLimits(io: Io, iterable_dir: Dir, maxed_filename: []const u8) !void {1370fn testFilenameLimits(io: Io, iterable_dir: Dir, maxed_filename: []const u8) !void {
1371 // setup, create a dir and a nested file both with maxed filenames, and walk the dir1371 // create a file, a dir, and a nested file all with maxed filenames
1372 {1372 {
1373 try iterable_dir.writeFile(io, .{ .sub_path = maxed_filename, .data = "" });
1374
1373 var maxed_dir = try iterable_dir.makeOpenPath(io, maxed_filename, .{});1375 var maxed_dir = try iterable_dir.makeOpenPath(io, maxed_filename, .{});
1374 defer maxed_dir.close(io);1376 defer maxed_dir.close(io);
13751377
1376 try maxed_dir.writeFile(io, .{ .sub_path = maxed_filename, .data = "" });1378 try maxed_dir.writeFile(io, .{ .sub_path = maxed_filename, .data = "" });
1379 }
1380 // Low level API with minimum buffer length
1381 {
1382 var reader_buf: [Dir.Reader.min_buffer_len]u8 align(@alignOf(usize)) = undefined;
1383 var reader: Dir.Reader = .init(iterable_dir, &reader_buf);
13771384
1385 var count: usize = 0;
1386 while (try reader.next(io)) |entry| {
1387 try expectEqualStrings(maxed_filename, entry.name);
1388 count += 1;
1389 }
1390 try expectEqual(@as(usize, 2), count);
1391 }
1392 // High level walk API
1393 {
1378 var walker = try iterable_dir.walk(testing.allocator);1394 var walker = try iterable_dir.walk(testing.allocator);
1379 defer walker.deinit();1395 defer walker.deinit();
13801396
...@@ -1383,7 +1399,7 @@ fn testFilenameLimits(io: Io, iterable_dir: Dir, maxed_filename: []const u8) !vo...@@ -1383,7 +1399,7 @@ fn testFilenameLimits(io: Io, iterable_dir: Dir, maxed_filename: []const u8) !vo
1383 try expectEqualStrings(maxed_filename, entry.basename);1399 try expectEqualStrings(maxed_filename, entry.basename);
1384 count += 1;1400 count += 1;
1385 }1401 }
1386 try expectEqual(@as(usize, 2), count);1402 try expectEqual(@as(usize, 3), count);
1387 }1403 }
13881404
1389 // ensure that we can delete the tree1405 // ensure that we can delete the tree