From 1e1fd53209805d96581fd685cee07e426c3d7a03 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Sun, 16 Nov 2025 18:51:14 +0300 Subject: [PATCH] fix MemoryDevice::list & update filesystem tests --- dev/tests/filesystem.lua | 12 ++++++++++++ dev/tests/memory_filesystem.lua | 14 ++++++++++++++ src/io/devices/MemoryDevice.cpp | 3 ++- 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/dev/tests/filesystem.lua b/dev/tests/filesystem.lua index 9301728c..38e7c4a0 100644 --- a/dev/tests/filesystem.lua +++ b/dev/tests/filesystem.lua @@ -4,6 +4,7 @@ assert(file.exists("config:")) debug.log("write text file") assert(file.write("config:text.txt", "example, пример")) assert(file.exists("config:text.txt")) +assert(file.isfile("config:text.txt")) debug.log("read text file") assert(file.read("config:text.txt") == "example, пример") @@ -24,6 +25,17 @@ debug.log("create directories") file.mkdirs("config:dir/subdir/other") assert(file.isdir("config:dir/subdir/other")) +debug.log("list directory") +file.write("config:dir/subdir/a.txt", "helloworld") +file.write("config:dir/subdir/b.txt", "gfgsfhs") + +local entries = file.list("config:dir/subdir") +assert(#entries == 3) +table.sort(entries) +assert(entries[1] == "config:dir/subdir/a.txt") +assert(entries[2] == "config:dir/subdir/b.txt") +assert(entries[3] == "config:dir/subdir/other") + debug.log("remove tree") file.remove_tree("config:dir") assert(not file.isdir("config:dir")) diff --git a/dev/tests/memory_filesystem.lua b/dev/tests/memory_filesystem.lua index 7950a415..e246279a 100644 --- a/dev/tests/memory_filesystem.lua +++ b/dev/tests/memory_filesystem.lua @@ -1,12 +1,15 @@ app.create_memory_device("memtest") +local tmp = file.create_memory_device() debug.log("check initial state") assert(file.exists("memtest:")) assert(file.is_writeable("memtest:")) +assert(file.is_writeable(tmp..":")) debug.log("write text file") assert(file.write("memtest:text.txt", "example, пример")) assert(file.exists("memtest:text.txt")) +assert(file.isfile("memtest:text.txt")) debug.log("read text file") assert(file.read("memtest:text.txt") == "example, пример") @@ -27,6 +30,17 @@ debug.log("create directories") file.mkdirs("memtest:dir/subdir/other") assert(file.isdir("memtest:dir/subdir/other")) +debug.log("list directory") +file.write("memtest:dir/subdir/a.txt", "helloworld") +file.write("memtest:dir/subdir/b.txt", "gfgsfhs") + +local entries = file.list("memtest:dir/subdir") +assert(#entries == 3) +table.sort(entries) +assert(entries[1] == "memtest:dir/subdir/a.txt") +assert(entries[2] == "memtest:dir/subdir/b.txt") +assert(entries[3] == "memtest:dir/subdir/other") + debug.log("remove tree") file.remove_tree("memtest:dir") assert(not file.isdir("memtest:dir")) diff --git a/src/io/devices/MemoryDevice.cpp b/src/io/devices/MemoryDevice.cpp index fac50e57..f9f4760e 100644 --- a/src/io/devices/MemoryDevice.cpp +++ b/src/io/devices/MemoryDevice.cpp @@ -139,7 +139,8 @@ uint64_t io::MemoryDevice::removeAll(std::string_view path) { uint64_t count = 0; if (found->second.holds_alternative()) { auto dir = found->second.get_if(); - for (const auto& name : dir->content) { + auto files = dir->content; + for (const auto& name : files) { io::path subPath = filePath / name; count += removeAll(subPath.string()); }