diff options
| author | Eric Fiselier <eric@efcs.ca> | 2017-05-07 21:41:58 +0000 | 
|---|---|---|
| committer | Eric Fiselier <eric@efcs.ca> | 2017-05-07 21:41:58 +0000 | 
| commit | ea9dc4ae608a5d1956e9fa7bb59677660e4c9f2c (patch) | |
| tree | 9fa5459aa31b9905b8b94c3eed12d61cbdf6d0cc /libcxx/test/std/input.output/file.streams/fstreams/fstream.assign/member_swap.pass.cpp | |
| parent | 07c955c6ed700f71bf08db52e2b43420ea082a34 (diff) | |
| download | bcm5719-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/input.output/file.streams/fstreams/fstream.assign/member_swap.pass.cpp')
| -rw-r--r-- | libcxx/test/std/input.output/file.streams/fstreams/fstream.assign/member_swap.pass.cpp | 24 | 
1 files changed, 22 insertions, 2 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); | 

