summaryrefslogtreecommitdiff
path: root/test/http/file_test_utilities.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/http/file_test_utilities.hpp')
-rw-r--r--test/http/file_test_utilities.hpp40
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);
+ }
+};