forked from OSchip/llvm-project
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
This commit is contained in:
parent
07c955c6ed
commit
ea9dc4ae60
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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());
|
||||
|
|
Loading…
Reference in New Issue