blob: d5e2ab247324f0e6b17b64a39ca2ad6de75cef34 [file] [log] [blame]
#include <stdplus/gtest/tmp.hpp>
#include <filesystem>
#include <format>
namespace stdplus
{
namespace gtest
{
TestWithTmp::TestWithTmp() :
casedir(std::format(
"{}/{}", SuiteTmpDir(),
::testing::UnitTest::GetInstance()->current_test_info()->name()))
{
std::filesystem::create_directory(CaseTmpDir());
}
TestWithTmp::~TestWithTmp()
{
std::filesystem::remove_all(CaseTmpDir());
}
void TestWithTmp::SetUpTestSuite()
{
std::filesystem::create_directory(SuiteTmpDir());
}
void TestWithTmp::TearDownTestSuite()
{
std::filesystem::remove_all(SuiteTmpDir());
}
std::string TestWithTmp::SuiteTmpDir()
{
const char* dir = getenv("TMPDIR");
if (dir == nullptr)
{
dir = "/tmp";
}
return std::format(
"{}/{}-{}", dir,
::testing::UnitTest::GetInstance()->current_test_suite()->name(),
getpid());
}
} // namespace gtest
} // namespace stdplus