diff options
Diffstat (limited to 'test/http/file_test_utilities.hpp')
-rw-r--r-- | test/http/file_test_utilities.hpp | 40 |
1 files changed, 29 insertions, 11 deletions
diff --git a/test/http/file_test_utilities.hpp b/test/http/file_test_utilities.hpp index 073a0747a4..bd11a90d8d 100644 --- a/test/http/file_test_utilities.hpp +++ b/test/http/file_test_utilities.hpp @@ -5,15 +5,33 @@ #include <gtest/gtest.h> -inline std::string makeFile(std::string_view sampleData) +struct TemporaryFileHandle { - std::filesystem::path path = std::filesystem::temp_directory_path(); - path /= "bmcweb_http_response_test_XXXXXXXXXXX"; - std::string stringPath = path.string(); - int fd = mkstemp(stringPath.data()); - EXPECT_GT(fd, 0); - EXPECT_EQ(write(fd, sampleData.data(), sampleData.size()), - sampleData.size()); - close(fd); - return stringPath; -} + std::filesystem::path path; + std::string stringPath; + + // Creates a temporary file with the contents provided, removes it on + // destruction. + explicit TemporaryFileHandle(std::string_view sampleData) : + path(std::filesystem::temp_directory_path() / + "bmcweb_http_response_test_XXXXXXXXXXX") + { + stringPath = path.string(); + + int fd = mkstemp(stringPath.data()); + EXPECT_GT(fd, 0); + EXPECT_EQ(write(fd, sampleData.data(), sampleData.size()), + sampleData.size()); + close(fd); + } + + TemporaryFileHandle(const TemporaryFileHandle&) = delete; + TemporaryFileHandle(TemporaryFileHandle&&) = delete; + TemporaryFileHandle& operator=(const TemporaryFileHandle&) = delete; + TemporaryFileHandle& operator=(TemporaryFileHandle&&) = delete; + + ~TemporaryFileHandle() + { + std::filesystem::remove(path); + } +}; |