blob: 07dfb6db18e72f9ce7e62580acbc9760c99f1e1e [file] [log] [blame]
William A. Kennington III953de362022-07-13 17:32:55 -07001#include <fmt/format.h>
2
3#include <filesystem>
4#include <stdplus/gtest/tmp.hpp>
5
6namespace stdplus
7{
8namespace gtest
9{
10
11TestWithTmp::TestWithTmp() :
12 casedir(fmt::format(
13 "{}/{}", SuiteTmpDir(),
14 ::testing::UnitTest::GetInstance()->current_test_info()->name()))
15{
16 std::filesystem::create_directory(CaseTmpDir());
17}
18
19TestWithTmp::~TestWithTmp()
20{
21 std::filesystem::remove_all(CaseTmpDir());
22}
23
24void TestWithTmp::SetUpTestSuite()
25{
26 std::filesystem::create_directory(SuiteTmpDir());
27}
28
29void TestWithTmp::TearDownTestSuite()
30{
31 std::filesystem::remove_all(SuiteTmpDir());
32}
33
34std::string TestWithTmp::SuiteTmpDir()
35{
36 const char* dir = getenv("TMPDIR");
37 if (dir == nullptr)
38 {
39 dir = "/tmp";
40 }
41 return fmt::format(
42 "{}/{}-{}", dir,
43 ::testing::UnitTest::GetInstance()->current_test_suite()->name(),
44 getpid());
45}
46
47} // namespace gtest
48} // namespace stdplus