summaryrefslogtreecommitdiffstats
path: root/libcxx/test/std
diff options
context:
space:
mode:
authorEric Fiselier <eric@efcs.ca>2017-05-07 21:41:58 +0000
committerEric Fiselier <eric@efcs.ca>2017-05-07 21:41:58 +0000
commitea9dc4ae608a5d1956e9fa7bb59677660e4c9f2c (patch)
tree9fa5459aa31b9905b8b94c3eed12d61cbdf6d0cc /libcxx/test/std
parent07c955c6ed700f71bf08db52e2b43420ea082a34 (diff)
downloadbcm5719-llvm-ea9dc4ae608a5d1956e9fa7bb59677660e4c9f2c.tar.gz
bcm5719-llvm-ea9dc4ae608a5d1956e9fa7bb59677660e4c9f2c.zip
Fix Windows test failures caused by identical temp file names.
This patch fixes test failures that occur on Windows because the tests attempt to generate two distinct temp file names but get the same name both time. The fix for this is to create the first temp file before requesting a second temporary file name. This ensures that the second name will be unique. llvm-svn: 302382
Diffstat (limited to 'libcxx/test/std')
-rw-r--r--libcxx/test/std/input.output/file.streams/fstreams/fstream.assign/member_swap.pass.cpp24
-rw-r--r--libcxx/test/std/input.output/file.streams/fstreams/fstream.assign/nonmember_swap.pass.cpp25
-rw-r--r--libcxx/test/std/input.output/file.streams/fstreams/ofstream.assign/member_swap.pass.cpp24
-rw-r--r--libcxx/test/std/input.output/file.streams/fstreams/ofstream.assign/nonmember_swap.pass.cpp24
4 files changed, 89 insertions, 8 deletions
diff --git a/libcxx/test/std/input.output/file.streams/fstreams/fstream.assign/member_swap.pass.cpp b/libcxx/test/std/input.output/file.streams/fstreams/fstream.assign/member_swap.pass.cpp
index fcc86a13ffa..949ea50d08a 100644
--- a/libcxx/test/std/input.output/file.streams/fstreams/fstream.assign/member_swap.pass.cpp
+++ b/libcxx/test/std/input.output/file.streams/fstreams/fstream.assign/member_swap.pass.cpp
@@ -15,13 +15,33 @@
// void swap(basic_fstream& rhs);
#include <fstream>
+#include <utility>
#include <cassert>
#include "platform_support.h"
+std::pair<std::string, std::string> get_temp_file_names() {
+ std::pair<std::string, std::string> names;
+ names.first = get_temp_file_name();
+
+ // Create the file so the next call to `get_temp_file_name()` doesn't
+ // return the same file.
+ std::FILE *fd1 = std::fopen(names.first.c_str(), "w");
+
+ names.second = get_temp_file_name();
+ assert(names.first != names.second);
+
+ std::fclose(fd1);
+ std::remove(names.first.c_str());
+
+ return names;
+}
+
int main()
{
- std::string temp1 = get_temp_file_name();
- std::string temp2 = get_temp_file_name();
+ std::pair<std::string, std::string> temp_files = get_temp_file_names();
+ std::string& temp1 = temp_files.first;
+ std::string& temp2 = temp_files.second;
+ assert(temp1 != temp2);
{
std::fstream fs1(temp1.c_str(), std::ios_base::in | std::ios_base::out
| std::ios_base::trunc);
diff --git a/libcxx/test/std/input.output/file.streams/fstreams/fstream.assign/nonmember_swap.pass.cpp b/libcxx/test/std/input.output/file.streams/fstreams/fstream.assign/nonmember_swap.pass.cpp
index 0a4f7240daa..4ff84f26cfa 100644
--- a/libcxx/test/std/input.output/file.streams/fstreams/fstream.assign/nonmember_swap.pass.cpp
+++ b/libcxx/test/std/input.output/file.streams/fstreams/fstream.assign/nonmember_swap.pass.cpp
@@ -16,13 +16,34 @@
// void swap(basic_fstream<charT, traits>& x, basic_fstream<charT, traits>& y);
#include <fstream>
+#include <utility>
#include <cassert>
#include "platform_support.h"
+
+std::pair<std::string, std::string> get_temp_file_names() {
+ std::pair<std::string, std::string> names;
+ names.first = get_temp_file_name();
+
+ // Create the file so the next call to `get_temp_file_name()` doesn't
+ // return the same file.
+ std::FILE *fd1 = std::fopen(names.first.c_str(), "w");
+
+ names.second = get_temp_file_name();
+ assert(names.first != names.second);
+
+ std::fclose(fd1);
+ std::remove(names.first.c_str());
+
+ return names;
+}
+
int main()
{
- std::string temp1 = get_temp_file_name();
- std::string temp2 = get_temp_file_name();
+ std::pair<std::string, std::string> temp_files = get_temp_file_names();
+ std::string& temp1 = temp_files.first;
+ std::string& temp2 = temp_files.second;
+ assert(temp1 != temp2);
{
std::fstream fs1(temp1.c_str(), std::ios_base::in | std::ios_base::out
| std::ios_base::trunc);
diff --git a/libcxx/test/std/input.output/file.streams/fstreams/ofstream.assign/member_swap.pass.cpp b/libcxx/test/std/input.output/file.streams/fstreams/ofstream.assign/member_swap.pass.cpp
index 519b84fb1ab..95224774c67 100644
--- a/libcxx/test/std/input.output/file.streams/fstreams/ofstream.assign/member_swap.pass.cpp
+++ b/libcxx/test/std/input.output/file.streams/fstreams/ofstream.assign/member_swap.pass.cpp
@@ -15,13 +15,33 @@
// void swap(basic_ofstream& rhs);
#include <fstream>
+#include <utility>
#include <cassert>
#include "platform_support.h"
+std::pair<std::string, std::string> get_temp_file_names() {
+ std::pair<std::string, std::string> names;
+ names.first = get_temp_file_name();
+
+ // Create the file so the next call to `get_temp_file_name()` doesn't
+ // return the same file.
+ std::FILE *fd1 = std::fopen(names.first.c_str(), "w");
+
+ names.second = get_temp_file_name();
+ assert(names.first != names.second);
+
+ std::fclose(fd1);
+ std::remove(names.first.c_str());
+
+ return names;
+}
+
int main()
{
- std::string temp1 = get_temp_file_name();
- std::string temp2 = get_temp_file_name();
+ std::pair<std::string, std::string> temp_files = get_temp_file_names();
+ std::string& temp1 = temp_files.first;
+ std::string& temp2 = temp_files.second;
+ assert(temp1 != temp2);
{
std::ofstream fs1(temp1.c_str());
std::ofstream fs2(temp2.c_str());
diff --git a/libcxx/test/std/input.output/file.streams/fstreams/ofstream.assign/nonmember_swap.pass.cpp b/libcxx/test/std/input.output/file.streams/fstreams/ofstream.assign/nonmember_swap.pass.cpp
index d58f5f25600..31f2153ebd4 100644
--- a/libcxx/test/std/input.output/file.streams/fstreams/ofstream.assign/nonmember_swap.pass.cpp
+++ b/libcxx/test/std/input.output/file.streams/fstreams/ofstream.assign/nonmember_swap.pass.cpp
@@ -16,13 +16,33 @@
// void swap(basic_ofstream<charT, traits>& x, basic_ofstream<charT, traits>& y);
#include <fstream>
+#include <utility>
#include <cassert>
#include "platform_support.h"
+std::pair<std::string, std::string> get_temp_file_names() {
+ std::pair<std::string, std::string> names;
+ names.first = get_temp_file_name();
+
+ // Create the file so the next call to `get_temp_file_name()` doesn't
+ // return the same file.
+ std::FILE *fd1 = std::fopen(names.first.c_str(), "w");
+
+ names.second = get_temp_file_name();
+ assert(names.first != names.second);
+
+ std::fclose(fd1);
+ std::remove(names.first.c_str());
+
+ return names;
+}
+
int main()
{
- std::string temp1 = get_temp_file_name();
- std::string temp2 = get_temp_file_name();
+ std::pair<std::string, std::string> temp_files = get_temp_file_names();
+ std::string& temp1 = temp_files.first;
+ std::string& temp2 = temp_files.second;
+ assert(temp1 != temp2);
{
std::ofstream fs1(temp1.c_str());
std::ofstream fs2(temp2.c_str());
OpenPOWER on IntegriCloud