Author: ericwf Date: Sun May 7 16:41:58 2017 New Revision: 302382 URL: http://llvm.org/viewvc/llvm-project?rev=302382&view=rev Log: 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. Modified: libcxx/trunk/test/std/input.output/file.streams/fstreams/fstream.assign/member_swap.pass.cpp libcxx/trunk/test/std/input.output/file.streams/fstreams/fstream.assign/nonmember_swap.pass.cpp libcxx/trunk/test/std/input.output/file.streams/fstreams/ofstream.assign/member_swap.pass.cpp libcxx/trunk/test/std/input.output/file.streams/fstreams/ofstream.assign/nonmember_swap.pass.cpp Modified: libcxx/trunk/test/std/input.output/file.streams/fstreams/fstream.assign/member_swap.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/input.output/file.streams/fstreams/fstream.assign/member_swap.pass.cpp?rev=302382&r1=302381&r2=302382&view=diff ============================================================================== --- libcxx/trunk/test/std/input.output/file.streams/fstreams/fstream.assign/member_swap.pass.cpp (original) +++ libcxx/trunk/test/std/input.output/file.streams/fstreams/fstream.assign/member_swap.pass.cpp Sun May 7 16:41:58 2017 @@ -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); Modified: libcxx/trunk/test/std/input.output/file.streams/fstreams/fstream.assign/nonmember_swap.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/input.output/file.streams/fstreams/fstream.assign/nonmember_swap.pass.cpp?rev=302382&r1=302381&r2=302382&view=diff ============================================================================== --- libcxx/trunk/test/std/input.output/file.streams/fstreams/fstream.assign/nonmember_swap.pass.cpp (original) +++ libcxx/trunk/test/std/input.output/file.streams/fstreams/fstream.assign/nonmember_swap.pass.cpp Sun May 7 16:41:58 2017 @@ -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); Modified: libcxx/trunk/test/std/input.output/file.streams/fstreams/ofstream.assign/member_swap.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/input.output/file.streams/fstreams/ofstream.assign/member_swap.pass.cpp?rev=302382&r1=302381&r2=302382&view=diff ============================================================================== --- libcxx/trunk/test/std/input.output/file.streams/fstreams/ofstream.assign/member_swap.pass.cpp (original) +++ libcxx/trunk/test/std/input.output/file.streams/fstreams/ofstream.assign/member_swap.pass.cpp Sun May 7 16:41:58 2017 @@ -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()); Modified: libcxx/trunk/test/std/input.output/file.streams/fstreams/ofstream.assign/nonmember_swap.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/input.output/file.streams/fstreams/ofstream.assign/nonmember_swap.pass.cpp?rev=302382&r1=302381&r2=302382&view=diff ============================================================================== --- libcxx/trunk/test/std/input.output/file.streams/fstreams/ofstream.assign/nonmember_swap.pass.cpp (original) +++ libcxx/trunk/test/std/input.output/file.streams/fstreams/ofstream.assign/nonmember_swap.pass.cpp Sun May 7 16:41:58 2017 @@ -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()); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits