diff --git a/lang/c++/test/StreamTests.cc b/lang/c++/test/StreamTests.cc index d14558ecd28..71f889469a1 100644 --- a/lang/c++/test/StreamTests.cc +++ b/lang/c++/test/StreamTests.cc @@ -21,6 +21,7 @@ #include #include +#include #include namespace avro { @@ -134,36 +135,34 @@ void testNonEmpty2(const TestData &td) { Verify1()(*is, td.dataSize); } -static const char filename[] = "test_str.bin"; - -struct FileRemover { - const std::filesystem::path file; - explicit FileRemover(const char *fn) : file(fn) {} - ~FileRemover() { std::filesystem::remove(file); } +struct FileGuard { + const std::filesystem::path path{ std::tmpnam(nullptr) }; + ~FileGuard() { std::filesystem::remove(path); } + const char* filename() const { return path.c_str(); } }; template void testEmpty_fileStream() { - FileRemover fr(filename); + FileGuard fg; { - std::unique_ptr os = fileOutputStream(filename); + std::unique_ptr os = fileOutputStream(fg.filename()); } - std::unique_ptr is = fileInputStream(filename); + std::unique_ptr is = fileInputStream(fg.filename()); V() (*is); } template void testNonEmpty_fileStream(const TestData &td) { - FileRemover fr(filename); + FileGuard fg; { - std::unique_ptr os = fileOutputStream(filename, + std::unique_ptr os = fileOutputStream(fg.filename(), td.chunkSize); F() (*os, td.dataSize); } - std::unique_ptr is = fileInputStream(filename, td.chunkSize); + std::unique_ptr is = fileInputStream(fg.filename(), td.chunkSize); V() (*is, td.dataSize); }