aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2021-02-12 15:13:02 +0000
committerJonathan Wakely <jwakely@redhat.com>2021-02-12 15:13:02 +0000
commit4179ec107943bea360b8aa75e29e2c5ad9f13e9e (patch)
tree7b08c20a9e43e171d07017176dd9b38765f87732 /libstdc++-v3
parentd1a821b93c45bfe7606b5dee8d160c7172b37e3e (diff)
downloadgcc-4179ec107943bea360b8aa75e29e2c5ad9f13e9e.zip
gcc-4179ec107943bea360b8aa75e29e2c5ad9f13e9e.tar.gz
gcc-4179ec107943bea360b8aa75e29e2c5ad9f13e9e.tar.bz2
libstdc++: Make "nonexistent" paths less predictable in filesystem tests
The helper function for creating new paths doesn't work well on Windows, because the PID of a process started by Wine is very consistent and so the same path gets created each time. libstdc++-v3/ChangeLog: * testsuite/util/testsuite_fs.h (nonexistent_path): Add random number to the path.
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/testsuite/util/testsuite_fs.h13
1 files changed, 9 insertions, 4 deletions
diff --git a/libstdc++-v3/testsuite/util/testsuite_fs.h b/libstdc++-v3/testsuite/util/testsuite_fs.h
index 4cda0ee..e4d04dd 100644
--- a/libstdc++-v3/testsuite/util/testsuite_fs.h
+++ b/libstdc++-v3/testsuite/util/testsuite_fs.h
@@ -34,8 +34,13 @@ namespace test_fs = std::experimental::filesystem;
#include <fstream>
#include <string>
#include <cstdio>
-#include <stdlib.h>
-#include <unistd.h>
+
+#if defined(_GNU_SOURCE) || _XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200112L
+#include <stdlib.h> // mkstemp
+#include <unistd.h> // unlink, close
+#else
+#include <random> // std::random_device
+#endif
namespace __gnu_test
{
@@ -121,13 +126,13 @@ namespace __gnu_test
if (file.length() > 64)
file.resize(64);
char buf[128];
- static int counter;
+ static unsigned counter = std::random_device{}();
#if _GLIBCXX_USE_C99_STDIO
std::snprintf(buf, 128,
#else
std::sprintf(buf,
#endif
- "filesystem-test.%d.%lu-%s", counter++, (unsigned long) ::getpid(),
+ "filesystem-test.%u.%lu-%s", counter++, (unsigned long) ::getpid(),
file.c_str());
p = buf;
#endif