| ... | ... | @@ -3,10 +3,47 @@ const testing = std.testing; |
| 3 | 3 | const builtin = std.builtin; |
| 4 | 4 | const fs = std.fs; |
| 5 | 5 | const mem = std.mem; |
| 6 | const wasi = std.os.wasi; |
| 6 | 7 | |
| 8 | const Dir = std.fs.Dir; |
| 7 | 9 | const File = std.fs.File; |
| 8 | 10 | const tmpDir = testing.tmpDir; |
| 9 | 11 | |
| 12 | test "Dir.Iterator" { |
| 13 | var tmp_dir = tmpDir(.{ .iterate = true }); |
| 14 | defer tmp_dir.cleanup(); |
| 15 | |
| 16 | // First, create a couple of entries to iterate over. |
| 17 | const file = try tmp_dir.dir.createFile("some_file", .{}); |
| 18 | file.close(); |
| 19 | |
| 20 | try tmp_dir.dir.makeDir("some_dir"); |
| 21 | |
| 22 | // Create iterator. |
| 23 | 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| { |
| 28 | try entries.append(entry); |
| 29 | } |
| 30 | |
| 31 | testing.expect(entries.items.len == 2); // note that the Iterator skips '.' and '..' |
| 32 | testing.expect(contains(&entries, Dir.Entry{ .name = "some_file", .kind = Dir.Entry.Kind.File })); |
| 33 | testing.expect(contains(&entries, Dir.Entry{ .name = "some_dir", .kind = Dir.Entry.Kind.Directory })); |
| 34 | } |
| 35 | |
| 36 | fn entry_eql(lhs: Dir.Entry, rhs: Dir.Entry) bool { |
| 37 | return mem.eql(u8, lhs.name, rhs.name) and lhs.kind == rhs.kind; |
| 38 | } |
| 39 | |
| 40 | fn contains(entries: *const std.ArrayList(Dir.Entry), el: Dir.Entry) bool { |
| 41 | for (entries.items) |entry| { |
| 42 | if (entry_eql(entry, el)) return true; |
| 43 | } |
| 44 | return false; |
| 45 | } |
| 46 | |
| 10 | 47 | test "readAllAlloc" { |
| 11 | 48 | var tmp_dir = tmpDir(.{}); |
| 12 | 49 | defer tmp_dir.cleanup(); |
| ... | ... | @@ -237,7 +274,7 @@ test "fs.copyFile" { |
| 237 | 274 | try expectFileContents(tmp.dir, dest_file2, data); |
| 238 | 275 | } |
| 239 | 276 | |
| 240 | | fn expectFileContents(dir: fs.Dir, file_path: []const u8, data: []const u8) !void { |
| 277 | fn expectFileContents(dir: Dir, file_path: []const u8, data: []const u8) !void { |
| 241 | 278 | const contents = try dir.readFileAlloc(testing.allocator, file_path, 1000); |
| 242 | 279 | defer testing.allocator.free(contents); |
| 243 | 280 | |