Merge pull request 'Added tests for DeleteEmptyFilesAndDirs(), GetDirFileAndDirCount(), + bugfixes' (#141) from tests_fs_utils into master
Reviewed-on: https://git.madvoxel.net/OpenVulkano/OpenVulkano/pulls/141 Reviewed-by: Georg Hagen <georg.hagen@madvoxel.com>
This commit is contained in:
@@ -22,7 +22,7 @@ namespace OpenVulkano
|
||||
{
|
||||
if (recursive)
|
||||
{
|
||||
deleted |= (DeleteEmptyDirs(p), recursive);
|
||||
deleted |= (DeleteEmptyFilesAndDirs(p, recursive));
|
||||
}
|
||||
if (fs::is_empty(p))
|
||||
{
|
||||
@@ -50,7 +50,7 @@ namespace OpenVulkano
|
||||
{
|
||||
if (recursive)
|
||||
{
|
||||
deleted |= (DeleteEmptyDirs(p), recursive);
|
||||
deleted |= (DeleteEmptyDirs(p, recursive));
|
||||
}
|
||||
if (fs::is_empty(p))
|
||||
{
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace OpenVulkano
|
||||
{
|
||||
struct FsCount
|
||||
{
|
||||
size_t fileCount, dirCount;
|
||||
size_t fileCount = 0, dirCount = 0;
|
||||
|
||||
size_t GetTotalEntryCount() const { return fileCount + dirCount; }
|
||||
|
||||
|
||||
@@ -15,6 +15,15 @@
|
||||
|
||||
using namespace OpenVulkano;
|
||||
|
||||
namespace
|
||||
{
|
||||
void touch(const std::filesystem::path& file)
|
||||
{
|
||||
std::ofstream foo(file);
|
||||
foo.close();
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("DeleteEmptyDirs", "[FsUtils]")
|
||||
{
|
||||
Logger::SetupLogger("", "tests.log");
|
||||
@@ -97,6 +106,7 @@ TEST_CASE("GetDirSize", "[FsUtils]")
|
||||
|
||||
TEST_CASE("ToValidFileName", "[FsUtils]")
|
||||
{
|
||||
Logger::SetupLogger("", "tests.log");
|
||||
REQUIRE(FsUtils::ToValidFileName("file<name>") == "file<name>");
|
||||
REQUIRE(FsUtils::ToValidFileName("file:name") == "file꞉name");
|
||||
REQUIRE(FsUtils::ToValidFileName("file\"name\"") == "file"name"");
|
||||
@@ -135,3 +145,136 @@ TEST_CASE("ToValidFileName", "[FsUtils]")
|
||||
REQUIRE(FsUtils::ToValidFileName("file:name<>") == "file꞉name<>");
|
||||
REQUIRE(FsUtils::ToValidFileName(" file<name>?") == "file<name>?");
|
||||
}
|
||||
|
||||
TEST_CASE("DeleteEmptyFilesAndDirs", "[FsUtils]")
|
||||
{
|
||||
Logger::SetupLogger("", "tests.log");
|
||||
const auto testDir = AppFolders::GetAppTempDir() / "testDirectory";
|
||||
|
||||
{
|
||||
std::filesystem::create_directories(testDir);
|
||||
auto emptyFile = testDir / "empty_file.txt";
|
||||
auto emptyDir = testDir / "empty_dir";
|
||||
auto nonEmptyFile = testDir / "non_empty_file.txt";
|
||||
|
||||
std::filesystem::create_directory(emptyDir);
|
||||
std::ofstream(nonEmptyFile) << "non-empty content";
|
||||
touch(emptyFile);
|
||||
|
||||
REQUIRE(std::filesystem::exists(emptyFile));
|
||||
REQUIRE(std::filesystem::exists(emptyDir));
|
||||
REQUIRE(std::filesystem::exists(nonEmptyFile));
|
||||
|
||||
bool result = FsUtils::DeleteEmptyFilesAndDirs(testDir, false);
|
||||
|
||||
REQUIRE(result == true);
|
||||
REQUIRE(!std::filesystem::exists(emptyFile));
|
||||
REQUIRE(!std::filesystem::exists(emptyDir));
|
||||
REQUIRE(std::filesystem::exists(nonEmptyFile));
|
||||
|
||||
std::filesystem::remove_all(testDir);
|
||||
}
|
||||
|
||||
{
|
||||
std::filesystem::create_directories(testDir);
|
||||
auto nestedDir = testDir / "nested";
|
||||
auto nestedEmptyFile = nestedDir / "empty_file_nested.txt";
|
||||
auto nonEmptyFile = nestedDir / "non_empty_file_nested.txt";
|
||||
|
||||
std::filesystem::create_directories(nestedDir);
|
||||
touch(nestedEmptyFile);
|
||||
std::ofstream(nonEmptyFile) << "data";
|
||||
|
||||
REQUIRE(std::filesystem::exists(nestedDir));
|
||||
REQUIRE(std::filesystem::exists(nestedEmptyFile));
|
||||
REQUIRE(std::filesystem::exists(nonEmptyFile));
|
||||
|
||||
bool result = FsUtils::DeleteEmptyFilesAndDirs(testDir, true);
|
||||
|
||||
REQUIRE(result == true);
|
||||
REQUIRE(!std::filesystem::exists(nestedEmptyFile));
|
||||
REQUIRE(std::filesystem::exists(nonEmptyFile));
|
||||
REQUIRE(std::filesystem::exists(nestedDir));
|
||||
|
||||
std::filesystem::remove_all(testDir);
|
||||
}
|
||||
|
||||
{
|
||||
std::filesystem::create_directories(testDir);
|
||||
auto nonEmptyDir = testDir / "non_empty_dir";
|
||||
auto nonEmptyFile = nonEmptyDir / "non_empty_file.txt";
|
||||
|
||||
std::filesystem::create_directory(nonEmptyDir);
|
||||
std::ofstream(nonEmptyFile) << "data";
|
||||
|
||||
bool result = FsUtils::DeleteEmptyFilesAndDirs(testDir, false);
|
||||
|
||||
REQUIRE(result == false);
|
||||
REQUIRE(std::filesystem::exists(nonEmptyFile));
|
||||
REQUIRE(std::filesystem::exists(nonEmptyDir));
|
||||
|
||||
std::filesystem::remove_all(testDir);
|
||||
}
|
||||
|
||||
{
|
||||
std::filesystem::create_directories(testDir);
|
||||
auto emptyDir = testDir / "empty_dir";
|
||||
std::filesystem::create_directory(emptyDir);
|
||||
|
||||
REQUIRE(std::filesystem::exists(emptyDir));
|
||||
|
||||
bool result = FsUtils::DeleteEmptyFilesAndDirs(emptyDir, false);
|
||||
|
||||
REQUIRE(result == false);
|
||||
REQUIRE(std::filesystem::exists(emptyDir));
|
||||
|
||||
std::filesystem::remove_all(testDir);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("GetDirFileAndDirCount", "[FsUtils]")
|
||||
{
|
||||
Logger::SetupLogger("", "tests.log");
|
||||
const auto testDir = AppFolders::GetAppTempDir() / "count_test_directory";
|
||||
|
||||
{
|
||||
std::filesystem::create_directories(testDir);
|
||||
|
||||
auto file1 = testDir / "file1.txt";
|
||||
auto file2 = testDir / "file2.txt";
|
||||
auto dir1 = testDir / "dir1";
|
||||
auto dir2 = testDir / "dir2";
|
||||
std::filesystem::create_directories(dir1);
|
||||
std::filesystem::create_directories(dir2);
|
||||
touch(file1);
|
||||
touch(file2);
|
||||
|
||||
REQUIRE(std::filesystem::exists(file1));
|
||||
REQUIRE(std::filesystem::exists(file2));
|
||||
REQUIRE(std::filesystem::exists(dir1));
|
||||
REQUIRE(std::filesystem::exists(dir2));
|
||||
|
||||
FsCount count = FsUtils::GetDirFileAndDirCount(testDir);
|
||||
|
||||
REQUIRE(count.fileCount == 2);
|
||||
REQUIRE(count.dirCount == 2);
|
||||
|
||||
std::filesystem::remove_all(testDir);
|
||||
}
|
||||
|
||||
{
|
||||
std::filesystem::create_directories(testDir);
|
||||
|
||||
auto emptyDir = testDir / "empty_dir";
|
||||
std::filesystem::create_directory(emptyDir);
|
||||
|
||||
REQUIRE(std::filesystem::exists(emptyDir));
|
||||
|
||||
FsCount count = FsUtils::GetDirFileAndDirCount(testDir);
|
||||
|
||||
REQUIRE(count.fileCount == 0);
|
||||
REQUIRE(count.dirCount == 1);
|
||||
|
||||
std::filesystem::remove_all(testDir);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user