diff --git a/test/unittest/encodedstreamtest.cpp b/test/unittest/encodedstreamtest.cpp index a29cb3b..3580608 100644 --- a/test/unittest/encodedstreamtest.cpp +++ b/test/unittest/encodedstreamtest.cpp @@ -158,9 +158,7 @@ protected: // Test FileWriteStream { char filename[L_tmpnam]; - TempFilename(filename); - - FILE *fp = fopen(filename, "wb"); + FILE* fp = TempFile(filename); char buffer[16]; FileWriteStream os(fp, buffer, sizeof(buffer)); EncodedOutputStream eos(os, putBOM); @@ -193,9 +191,8 @@ protected: // Test FileWriteStream { char filename[L_tmpnam]; - TempFilename(filename); + FILE* fp = TempFile(filename); - FILE *fp = fopen(filename, "wb"); char buffer[16]; FileWriteStream os(fp, buffer, sizeof(buffer)); AutoUTFOutputStream eos(os, type, putBOM); diff --git a/test/unittest/filestreamtest.cpp b/test/unittest/filestreamtest.cpp index c3217fa..b3f951a 100644 --- a/test/unittest/filestreamtest.cpp +++ b/test/unittest/filestreamtest.cpp @@ -98,9 +98,8 @@ TEST_F(FileStreamTest, FileReadStream) { TEST_F(FileStreamTest, FileWriteStream) { char filename[L_tmpnam]; - TempFilename(filename); + FILE* fp = TempFile(filename); - FILE *fp = fopen(filename, "wb"); char buffer[65536]; FileWriteStream os(fp, buffer, sizeof(buffer)); for (size_t i = 0; i < length_; i++) diff --git a/test/unittest/unittest.h b/test/unittest/unittest.h index 0330d73..a476db7 100644 --- a/test/unittest/unittest.h +++ b/test/unittest/unittest.h @@ -67,13 +67,21 @@ inline Ch* StrDup(const Ch* str) { return buffer; } -inline void TempFilename(char *filename) { +inline FILE* TempFile(char *filename) { +#if _MSC_VER filename = tmpnam(filename); // For Visual Studio, tmpnam() adds a backslash in front. Remove it. if (filename[0] == '\\') for (int i = 0; filename[i] != '\0'; i++) filename[i] = filename[i + 1]; + + return fopen(filename, "wb"); +#else + strcpy(filename, "/tmp/fileXXXXXX"); + int fd = mkstemp(filename); + return fdopen(fd, "w"); +#endif } // Use exception for catching assert