]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
refactor: fs::path-ify TestUtil
authorJoel Rosdahl <joel@rosdahl.net>
Sun, 31 Dec 2023 09:42:09 +0000 (10:42 +0100)
committerJoel Rosdahl <joel@rosdahl.net>
Sun, 31 Dec 2023 09:47:45 +0000 (10:47 +0100)
unittest/TestUtil.cpp
unittest/TestUtil.hpp

index 8f0c0a0b2629045542e4a938109d52003949f51a..3ef36543ba531ce47133c37a67e3bbf8c4c78d59 100644 (file)
 
 #include "TestUtil.hpp"
 
-#include "../src/Util.hpp"
-
 #include <core/exceptions.hpp>
+#include <util/expected.hpp>
 #include <util/filesystem.hpp>
 #include <util/fmtmacros.hpp>
-#include <util/path.hpp>
-#include <util/wincompat.hpp>
-
-#ifdef HAVE_UNISTD_H
-#  include <unistd.h>
-#endif
 
 namespace fs = util::filesystem;
 
@@ -36,24 +29,24 @@ namespace TestUtil {
 
 size_t TestContext::m_subdir_counter = 0;
 
-TestContext::TestContext() : m_test_dir(util::actual_cwd())
+TestContext::TestContext()
+  : m_test_dir(util::value_or_throw<core::Error>(
+    fs::current_path(), "Failed to retrieve current directory"))
 {
-  if (Util::base_name(Util::dir_name(m_test_dir)) != "testdir") {
+  if (m_test_dir.parent_path().filename() != "testdir") {
     throw core::Error("TestContext instantiated outside test directory");
   }
   ++m_subdir_counter;
-  std::string subtest_dir = FMT("{}/test_{}", m_test_dir, m_subdir_counter);
+  fs::path subtest_dir = m_test_dir / FMT("test_{}", m_subdir_counter);
   fs::create_directories(subtest_dir);
   if (!fs::current_path(subtest_dir)) {
-    abort();
+    throw core::Error(FMT("Failed to change directory to {}", subtest_dir));
   }
 }
 
 TestContext::~TestContext()
 {
-  if (!fs::current_path(m_test_dir)) {
-    abort();
-  }
+  fs::current_path(m_test_dir);
 }
 
 } // namespace TestUtil
index a3588a84117ce9401c60adcd142aa6a0a64b9bf1..9c4449000016444a813c48474a234f686caa7cf4 100644 (file)
@@ -19,7 +19,7 @@
 #pragma once
 
 #include <cstddef>
-#include <string>
+#include <filesystem>
 
 #ifdef _MSC_VER
 #  define DOCTEST_CONFIG_USE_STD_HEADERS
@@ -36,7 +36,7 @@ public:
   ~TestContext();
 
 private:
-  std::string m_test_dir;
+  std::filesystem::path m_test_dir;
   static size_t m_subdir_counter;
 };