| ... | @@ -5,6 +5,7 @@ const fs = std.fs; | ... | @@ -5,6 +5,7 @@ const fs = std.fs; |
| 5 | const mem = std.mem; | 5 | const mem = std.mem; |
| 6 | const wasi = std.os.wasi; | 6 | const wasi = std.os.wasi; |
| 7 | | 7 | |
| | 8 | const ArenaAllocator = std.heap.ArenaAllocator; |
| 8 | const Dir = std.fs.Dir; | 9 | const Dir = std.fs.Dir; |
| 9 | const File = std.fs.File; | 10 | const File = std.fs.File; |
| 10 | const tmpDir = testing.tmpDir; | 11 | const tmpDir = testing.tmpDir; |
| ... | @@ -19,13 +20,18 @@ test "Dir.Iterator" { | ... | @@ -19,13 +20,18 @@ test "Dir.Iterator" { |
| 19 | | 20 | |
| 20 | try tmp_dir.dir.makeDir("some_dir"); | 21 | try tmp_dir.dir.makeDir("some_dir"); |
| 21 | | 22 | |
| | 23 | var arena = ArenaAllocator.init(testing.allocator); |
| | 24 | defer arena.deinit(); |
| | 25 | |
| | 26 | var entries = std.ArrayList(Dir.Entry).init(&arena.allocator); |
| | 27 | |
| 22 | // Create iterator. | 28 | // Create iterator. |
| 23 | var iter = tmp_dir.dir.iterate(); | 29 | var iter = tmp_dir.dir.iterate(); |
| 24 | var entries = std.ArrayList(Dir.Entry).init(testing.allocator); | | |
| 25 | defer entries.deinit(); | | |
| 26 | | | |
| 27 | while (try iter.next()) |entry| { | 30 | while (try iter.next()) |entry| { |
| 28 | try entries.append(entry); | 31 | // We cannot just store `entry` as on Windows, we're re-using the name buffer |
| | 32 | // which means we'll actually share the `name` pointer between entries! |
| | 33 | const name = try mem.dupe(&arena.allocator, u8, entry.name); |
| | 34 | try entries.append(Dir.Entry{ .name = name, .kind = entry.kind }); |
| 29 | } | 35 | } |
| 30 | | 36 | |
| 31 | testing.expect(entries.items.len == 2); // note that the Iterator skips '.' and '..' | 37 | testing.expect(entries.items.len == 2); // note that the Iterator skips '.' and '..' |