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)
|
if (recursive)
|
||||||
{
|
{
|
||||||
deleted |= (DeleteEmptyDirs(p), recursive);
|
deleted |= (DeleteEmptyFilesAndDirs(p, recursive));
|
||||||
}
|
}
|
||||||
if (fs::is_empty(p))
|
if (fs::is_empty(p))
|
||||||
{
|
{
|
||||||
@@ -50,7 +50,7 @@ namespace OpenVulkano
|
|||||||
{
|
{
|
||||||
if (recursive)
|
if (recursive)
|
||||||
{
|
{
|
||||||
deleted |= (DeleteEmptyDirs(p), recursive);
|
deleted |= (DeleteEmptyDirs(p, recursive));
|
||||||
}
|
}
|
||||||
if (fs::is_empty(p))
|
if (fs::is_empty(p))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ namespace OpenVulkano
|
|||||||
{
|
{
|
||||||
struct FsCount
|
struct FsCount
|
||||||
{
|
{
|
||||||
size_t fileCount, dirCount;
|
size_t fileCount = 0, dirCount = 0;
|
||||||
|
|
||||||
size_t GetTotalEntryCount() const { return fileCount + dirCount; }
|
size_t GetTotalEntryCount() const { return fileCount + dirCount; }
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,15 @@
|
|||||||
|
|
||||||
using namespace OpenVulkano;
|
using namespace OpenVulkano;
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
void touch(const std::filesystem::path& file)
|
||||||
|
{
|
||||||
|
std::ofstream foo(file);
|
||||||
|
foo.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TEST_CASE("DeleteEmptyDirs", "[FsUtils]")
|
TEST_CASE("DeleteEmptyDirs", "[FsUtils]")
|
||||||
{
|
{
|
||||||
Logger::SetupLogger("", "tests.log");
|
Logger::SetupLogger("", "tests.log");
|
||||||
@@ -97,6 +106,7 @@ TEST_CASE("GetDirSize", "[FsUtils]")
|
|||||||
|
|
||||||
TEST_CASE("ToValidFileName", "[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");
|
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<>");
|
||||||
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