/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ #include #include "Base/Logger.hpp" #include "IO/FsUtils.hpp" #include "IO/AppFolders.hpp" #include #include using namespace OpenVulkano; TEST_CASE("DeleteEmptyDirs", "[FsUtils]") { Logger::SetupLogger("", "tests.log"); auto baseDir = AppFolders::GetAppTempDir() / "testEmptyDirs"; std::filesystem::create_directories(baseDir / "emptyDir"); std::filesystem::create_directories(baseDir / "nonEmptyDir"); std::ofstream(baseDir / "nonEmptyDir/file.txt").put('x'); REQUIRE(FsUtils::DeleteEmptyDirs(baseDir)); REQUIRE(!std::filesystem::exists(baseDir / "emptyDir")); REQUIRE(std::filesystem::exists(baseDir / "nonEmptyDir")); std::filesystem::create_directories(baseDir / "emptyDir"); REQUIRE(FsUtils::DeleteEmptyDirs(baseDir, false)); REQUIRE(!std::filesystem::exists(baseDir / "emptyDir")); std::filesystem::remove_all(baseDir); } TEST_CASE("DeleteEmptySubTrees", "[FsUtils]") { Logger::SetupLogger("", "tests.log"); auto baseDir = AppFolders::GetAppTempDir() / "testEmptySubtrees"; std::filesystem::create_directories(baseDir / "emptyTree" / "subDir1"); std::filesystem::create_directories(baseDir / "emptyTree" / "subDir2"); REQUIRE(FsUtils::DeleteEmptySubTrees(baseDir)); REQUIRE(!std::filesystem::exists(baseDir / "emptyTree")); std::filesystem::create_directories(baseDir / "partialTree" / "subDir1"); std::filesystem::create_directories(baseDir / "partialTree" / "subDir2"); std::ofstream(baseDir / "partialTree" / "subDir2/file.txt").put('x'); REQUIRE(FsUtils::DeleteEmptySubTrees(baseDir / "partialTree")); REQUIRE(!std::filesystem::exists(baseDir / "partialTree" / "subDir1")); REQUIRE(std::filesystem::exists(baseDir / "partialTree" / "subDir2")); REQUIRE(std::filesystem::exists(baseDir / "partialTree" / "subDir2/file.txt")); std::filesystem::remove(baseDir / "partialTree" / "subDir2/file.txt"); REQUIRE(!std::filesystem::exists(baseDir / "partialTree" / "subDir1")); REQUIRE(std::filesystem::exists(baseDir / "partialTree" / "subDir2")); REQUIRE(!std::filesystem::exists(baseDir / "partialTree" / "subDir2/file.txt")); REQUIRE(FsUtils::DeleteEmptySubTrees(baseDir / "partialTree")); REQUIRE(!std::filesystem::exists(baseDir / "partialTree" / "subDir1")); REQUIRE(!std::filesystem::exists(baseDir / "partialTree" / "subDir2")); std::filesystem::remove_all(baseDir); } TEST_CASE("IsTreeEmpty", "[FsUtils]") { Logger::SetupLogger("", "tests.log"); auto baseDir = AppFolders::GetAppTempDir() / "testTreeEmpty"; std::filesystem::create_directories(baseDir / "emptyDir"); std::filesystem::create_directories(baseDir / "nonEmptyDir"); std::ofstream(baseDir / "nonEmptyDir/file.txt").put('x'); REQUIRE(FsUtils::IsTreeEmpty(baseDir / "emptyDir")); REQUIRE(!FsUtils::IsTreeEmpty(baseDir / "nonEmptyDir")); std::filesystem::remove_all(baseDir); } TEST_CASE("GetDirSize", "[FsUtils]") { Logger::SetupLogger("", "tests.log"); auto baseDir = AppFolders::GetAppTempDir() / "testDirSize"; std::filesystem::create_directories(baseDir / "dir"); std::ofstream(baseDir / "dir/file1.txt").put('x'); std::ofstream(baseDir / "dir/file2.txt").put('y'); REQUIRE(FsUtils::GetDirSize(baseDir / "dir") == 2); std::filesystem::remove_all(baseDir); }