#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;
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