地圖 (Jido) is a lightweight Unix TUI file explorer designed for speed and simplicity.
1const std = @import("std");
2const testing = std.testing;
3const TestEnv = @import("test_helpers.zig").TestEnv;
4const Directories = @import("directories.zig");
5const environment = @import("environment.zig");
6
7test "FileOps: create new directory" {
8 var env = try TestEnv.init(testing.allocator);
9 defer env.deinit();
10
11 var dirs = try Directories.init(testing.allocator, env.tmp_path);
12 defer dirs.deinit();
13
14 try dirs.dir.makeDir("testdir");
15
16 var test_dir = dirs.dir.openDir("testdir", .{}) catch |err| {
17 std.debug.print("Failed to open created directory: {}\n", .{err});
18 return err;
19 };
20 test_dir.close();
21
22 try dirs.populateEntries("");
23 var found = false;
24 for (dirs.entries.all()) |entry| {
25 if (std.mem.eql(u8, entry.name, "testdir")) {
26 found = true;
27 try testing.expectEqual(std.fs.Dir.Entry.Kind.directory, entry.kind);
28 }
29 }
30 try testing.expect(found);
31}
32
33test "FileOps: create new file" {
34 var env = try TestEnv.init(testing.allocator);
35 defer env.deinit();
36
37 var dirs = try Directories.init(testing.allocator, env.tmp_path);
38 defer dirs.deinit();
39
40 const file = try dirs.dir.createFile("testfile.txt", .{});
41 file.close();
42
43 try testing.expect(environment.fileExists(dirs.dir, "testfile.txt"));
44
45 try dirs.populateEntries("");
46 var found = false;
47 for (dirs.entries.all()) |entry| {
48 if (std.mem.eql(u8, entry.name, "testfile.txt")) {
49 found = true;
50 try testing.expectEqual(std.fs.Dir.Entry.Kind.file, entry.kind);
51 }
52 }
53 try testing.expect(found);
54}
55
56test "FileOps: rename file" {
57 var env = try TestEnv.init(testing.allocator);
58 defer env.deinit();
59
60 try env.createFiles(&.{"oldname.txt"});
61
62 var dirs = try Directories.init(testing.allocator, env.tmp_path);
63 defer dirs.deinit();
64
65 try dirs.populateEntries("");
66
67 try testing.expect(environment.fileExists(dirs.dir, "oldname.txt"));
68 try dirs.dir.rename("oldname.txt", "newname.txt");
69 try testing.expect(!environment.fileExists(dirs.dir, "oldname.txt"));
70 try testing.expect(environment.fileExists(dirs.dir, "newname.txt"));
71
72 dirs.clearEntries();
73 try dirs.populateEntries("");
74
75 var found_old = false;
76 var found_new = false;
77 for (dirs.entries.all()) |entry| {
78 if (std.mem.eql(u8, entry.name, "oldname.txt")) found_old = true;
79 if (std.mem.eql(u8, entry.name, "newname.txt")) found_new = true;
80 }
81
82 try testing.expect(!found_old);
83 try testing.expect(found_new);
84}