summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/file_test_utilities.hpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/include/file_test_utilities.hpp b/include/file_test_utilities.hpp
new file mode 100644
index 0000000000..bd11a90d8d
--- /dev/null
+++ b/include/file_test_utilities.hpp
@@ -0,0 +1,37 @@
+#pragma once
+#include <filesystem>
+#include <string>
+#include <string_view>
+
+#include <gtest/gtest.h>
+
+struct TemporaryFileHandle
+{
+ 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);
+ }
+};