From d12e3c55b698e45ccfbdbc775da0f287081e45f5 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Tue, 16 Jun 2020 19:49:28 -0700 Subject: [PATCH 1/5] Print randomized test failures to stderr. --- .../test.cpp | 8 ++++---- .../test.cpp | 8 ++++---- tests/std/tests/P0067R5_charconv/test.cpp | 16 ++++++++-------- tests/std/tests/P0220R1_searchers/test.cpp | 8 ++++---- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/tests/std/tests/P0024R2_parallel_algorithms_set_difference/test.cpp b/tests/std/tests/P0024R2_parallel_algorithms_set_difference/test.cpp index ef70578528..adde199bb1 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_set_difference/test.cpp +++ b/tests/std/tests/P0024R2_parallel_algorithms_set_difference/test.cpp @@ -18,10 +18,10 @@ using namespace std::execution; template void assert_message_vector(const bool b, const char* const msg, const T seedValue) { if (!b) { - cout << msg << " failed for seed value: " << seedValue << "\n"; - cout << "This is a randomized test.\n"; - cout << "DO NOT IGNORE/RERUN THIS FAILURE.\n"; - cout << "You must report it to the STL maintainers.\n"; + cerr << msg << " failed for seed value: " << seedValue << "\n"; + cerr << "This is a randomized test.\n"; + cerr << "DO NOT IGNORE/RERUN THIS FAILURE.\n"; + cerr << "You must report it to the STL maintainers.\n"; abort(); } } diff --git a/tests/std/tests/P0024R2_parallel_algorithms_set_intersection/test.cpp b/tests/std/tests/P0024R2_parallel_algorithms_set_intersection/test.cpp index d8833906f5..397cd56b49 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_set_intersection/test.cpp +++ b/tests/std/tests/P0024R2_parallel_algorithms_set_intersection/test.cpp @@ -18,10 +18,10 @@ using namespace std::execution; template void assert_message_vector(const bool b, const char* const msg, const T seedValue) { if (!b) { - cout << msg << " failed for seed value: " << seedValue << "\n"; - cout << "This is a randomized test.\n"; - cout << "DO NOT IGNORE/RERUN THIS FAILURE.\n"; - cout << "You must report it to the STL maintainers.\n"; + cerr << msg << " failed for seed value: " << seedValue << "\n"; + cerr << "This is a randomized test.\n"; + cerr << "DO NOT IGNORE/RERUN THIS FAILURE.\n"; + cerr << "You must report it to the STL maintainers.\n"; abort(); } } diff --git a/tests/std/tests/P0067R5_charconv/test.cpp b/tests/std/tests/P0067R5_charconv/test.cpp index dd534d962b..c3fd84a880 100644 --- a/tests/std/tests/P0067R5_charconv/test.cpp +++ b/tests/std/tests/P0067R5_charconv/test.cpp @@ -564,20 +564,20 @@ void all_integer_tests() { void assert_message_bits(const bool b, const char* const msg, const uint32_t bits) { if (!b) { - printf("%s failed for 0x%08X\n", msg, bits); - puts("This is a randomized test."); - puts("DO NOT IGNORE/RERUN THIS FAILURE."); - puts("You must report it to the STL maintainers."); + fprintf(stderr, "%s failed for 0x%08X\n", msg, bits); + fprintf(stderr, "This is a randomized test.\n"); + fprintf(stderr, "DO NOT IGNORE/RERUN THIS FAILURE.\n"); + fprintf(stderr, "You must report it to the STL maintainers.\n"); abort(); } } void assert_message_bits(const bool b, const char* const msg, const uint64_t bits) { if (!b) { - printf("%s failed for 0x%016llX\n", msg, bits); - puts("This is a randomized test."); - puts("DO NOT IGNORE/RERUN THIS FAILURE."); - puts("You must report it to the STL maintainers."); + fprintf(stderr, "%s failed for 0x%016llX\n", msg, bits); + fprintf(stderr, "This is a randomized test.\n"); + fprintf(stderr, "DO NOT IGNORE/RERUN THIS FAILURE.\n"); + fprintf(stderr, "You must report it to the STL maintainers.\n"); abort(); } } diff --git a/tests/std/tests/P0220R1_searchers/test.cpp b/tests/std/tests/P0220R1_searchers/test.cpp index 18e8e3b36b..0551e3d647 100644 --- a/tests/std/tests/P0220R1_searchers/test.cpp +++ b/tests/std/tests/P0220R1_searchers/test.cpp @@ -358,10 +358,10 @@ void test_case_BM_unicode32() { } void report_randomized_failure(const string_view searcher, const string_view needle, const string_view haystack) { - cout << searcher << " failed for needle \"" << needle << "\" and haystack \"" << haystack << "\".\n"; - cout << "This is a randomized test.\n"; - cout << "DO NOT IGNORE/RERUN THIS FAILURE.\n"; - cout << "You must report it to the STL maintainers.\n"; + cerr << searcher << " failed for needle \"" << needle << "\" and haystack \"" << haystack << "\".\n"; + cerr << "This is a randomized test.\n"; + cerr << "DO NOT IGNORE/RERUN THIS FAILURE.\n"; + cerr << "You must report it to the STL maintainers.\n"; assert(false); } From 61af9d0789c2459209fdce5f2c140e95692988f7 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Tue, 16 Jun 2020 19:57:48 -0700 Subject: [PATCH 2/5] Change wcout to wcerr in P0218R1_filesystem. --- tests/std/tests/P0218R1_filesystem/test.cpp | 78 ++++++++++----------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/tests/std/tests/P0218R1_filesystem/test.cpp b/tests/std/tests/P0218R1_filesystem/test.cpp index 99c36cc394..5bf057a2ba 100644 --- a/tests/std/tests/P0218R1_filesystem/test.cpp +++ b/tests/std/tests/P0218R1_filesystem/test.cpp @@ -58,11 +58,11 @@ struct test_temp_directory { explicit test_temp_directory(const string_view testName) : directoryPath(get_new_test_directory(testName)) { remove_all(directoryPath, ec); if (ec) { - wcout << L"Warning, couldn't clean up " << directoryPath << L" before test.\n"; + wcerr << L"Warning, couldn't clean up " << directoryPath << L" before test.\n"; } else { create_directories(directoryPath, ec); if (ec) { - wcout << L"Warning, couldn't create test directory " << directoryPath << L" before test.\n"; + wcerr << L"Warning, couldn't create test directory " << directoryPath << L" before test.\n"; } } } @@ -70,7 +70,7 @@ struct test_temp_directory { ~test_temp_directory() noexcept { remove_all(directoryPath, ec); if (ec) { - wcout << L"Warning, couldn't clean up " << directoryPath << L" after test.\n"; + wcerr << L"Warning, couldn't clean up " << directoryPath << L" after test.\n"; } } }; @@ -79,7 +79,7 @@ bool pass = true; bool expect(const bool b, const char* const func, const int line, const char* const message) { if (!b) { - wcout << func << L" @ " << line << L": check failed: " << message << L'\n'; + wcerr << func << L" @ " << line << L": check failed: " << message << L'\n'; pass = false; } return b; @@ -90,12 +90,12 @@ bool expect(const bool b, const char* const func, const int line, const char* co bool good(const error_code& ec) { bool overall = true; if (ec.value() != 0) { - wcout << L"Unexpected error " << ec.value() << L" " << ec.message().c_str() << L"\n"; + wcerr << L"Unexpected error " << ec.value() << L" " << ec.message().c_str() << L"\n"; overall = false; } if (ec.category() != system_category()) { - wcout << L"Unexpected category " << ec.category().name() << L"\n"; + wcerr << L"Unexpected category " << ec.category().name() << L"\n"; overall = false; } @@ -362,7 +362,7 @@ bool run_decomp_test_case(const decomposition_test_case& testCase) { return true; } - wcout << L"Test failure:\n" << testCase << actual; + wcerr << L"Test failure:\n" << testCase << actual; return false; } @@ -406,7 +406,7 @@ bool run_stem_test_case(const stem_test_case& testCase) { return true; } - wcout << L"Expected " << p.native() << L" to have stem() " << testCase.stem << L" and extension() " + wcerr << L"Expected " << p.native() << L" to have stem() " << testCase.stem << L" and extension() " << testCase.extension << L", but it actually has stem() " << p.stem().native() << L" and extension() " << p.extension().native() << L"\n"; @@ -523,7 +523,7 @@ bool run_compare_test_case(const compare_test_case& testCase) { return true; } - wcout << L"Unexpected comparison result:\nLeft: " << testCase.left << L"\nRight: " << testCase.right + wcerr << L"Unexpected comparison result:\nLeft: " << testCase.left << L"\nRight: " << testCase.right << L"\nExpected: " << testCase.expected << L"\n Actual: " << actual << L"\n"; return false; @@ -564,7 +564,7 @@ bool run_slash_test_case(const slash_test_case& testCase) { return true; } - wcout << L"Expected " << testCase.a << L" / " << testCase.b << L" to be " << testCase.expected << L" but it was " + wcerr << L"Expected " << testCase.a << L" / " << testCase.b << L" to be " << testCase.expected << L" but it was " << p.native() << L"\n"; return false; } @@ -811,7 +811,7 @@ void test_remove_filename_and_sep() { path p{before}; p._Remove_filename_and_separator(); if (p.native() != after) { // look for exact match - wcout << L"_Remove_filename_and_separator('" << before << L"') => '" << p.native() << L"' expected '" + wcerr << L"_Remove_filename_and_separator('" << before << L"') => '" << p.native() << L"' expected '" << after << L"'\n"; pass = false; } @@ -879,7 +879,7 @@ void test_filesystem_error() { void test_file_status() { auto check = [](const file_status& x, file_type ft, perms p, const char* name) { if (x.type() != ft || x.permissions() != p) { - wcout << L"test_file_status failed: " << name << L'\n'; + wcerr << L"test_file_status failed: " << name << L'\n'; pass = false; } }; @@ -947,25 +947,25 @@ void test_file_status() { void check_symlink_permissions(const error_code& ec, const wchar_t* const function_id) { if (ec.category() != system_category()) { - wcout << L"Incorrect error category from " << function_id << L"\n"; + wcerr << L"Incorrect error category from " << function_id << L"\n"; pass = false; } #ifdef WINDOWS_XP if (ec.value() != 50) { - wcout << L"Expected ERROR_NOT_SUPPORTED from " << function_id << L" but it returned " << ec.message().c_str() + wcerr << L"Expected ERROR_NOT_SUPPORTED from " << function_id << L" but it returned " << ec.message().c_str() << L"\n"; pass = false; } #else // ^^^ WINDOWS_XP ^^^ // vvv !WINDOWS_XP vvv if (ec.value() != 1314) { - wcout << L"Expected ERROR_PRIVILEGE_NOT_HELD from " << function_id << L" but it returned " + wcerr << L"Expected ERROR_PRIVILEGE_NOT_HELD from " << function_id << L" but it returned " << ec.message().c_str() << L"\n"; pass = false; } #endif // WINDOWS_XP - wcout << L"Warning: could not test " << function_id + wcerr << L"Warning: could not test " << function_id << L" due to symlink creation failure, do you have admin rights?\n"; } @@ -1517,12 +1517,12 @@ void expect_absolute(const path& input, const wstring_view expected) { error_code ec(-1, generic_category()); const path actual = absolute(input, ec); if (actual.native() != expected || ec || ec.category() != system_category()) { - wcout << L"Expected absolute(" << input.native() << L") to be " << expected << L"\n"; + wcerr << L"Expected absolute(" << input.native() << L") to be " << expected << L"\n"; if (actual.native() != expected) { - wcout << L"Actual result: " << actual.native() << L"\n"; + wcerr << L"Actual result: " << actual.native() << L"\n"; } if (ec) { - wcout << L"The call failed.\n"; + wcerr << L"The call failed.\n"; } pass = false; @@ -1543,7 +1543,7 @@ void test_absolute() { EXPECT(throws_filesystem_error([&] { return absolute(longPath); }, "absolute"sv, longPath)); EXPECT(absolute(longPath, ec).empty()); if (ec.value() != 206) { - wcout << L"Warning: Expected absolute on a >32k long path to report ERROR_FILENAME_EXCED_RANGE, " + wcerr << L"Warning: Expected absolute on a >32k long path to report ERROR_FILENAME_EXCED_RANGE, " L"but it reported " << ec.value() << L"\n"; } @@ -2266,11 +2266,11 @@ void equivalent_failure_test_case(const path& left, const path& right) { error_code ec; if (equivalent(left, right, ec)) { - wcout << L"Expected equivalent(" << left << L", " << right << L") to fail but it returned true\n"; + wcerr << L"Expected equivalent(" << left << L", " << right << L") to fail but it returned true\n"; pass = false; } else if (!ec) { EXPECT(ec.category() == system_category()); - wcout << L"Expected equivalent(" << left << L", " << right + wcerr << L"Expected equivalent(" << left << L", " << right << L") to fail but it " L"returned no failure code\n"; pass = false; @@ -2282,7 +2282,7 @@ void equivalent_test_case(const path& left, const path& right, const bool expect const bool actual = equivalent(left, right, ec); EXPECT(good(ec)); if (expected != actual) { - wcout << boolalpha << L"Expected equivalent(" << left << L", " << right << L") to be " << expected + wcerr << boolalpha << L"Expected equivalent(" << left << L", " << right << L") to be " << expected << L" but it was " << actual << L"\n"; pass = false; } @@ -3789,7 +3789,7 @@ void test_file_time_type() { if (file_time_tick_count + tolerance < system_clock_tick_count || file_time_tick_count - tolerance > system_clock_tick_count) { - wcout << L"test_file_time_type failed: " << file_time_tick_count << L" ticks too different from " + wcerr << L"test_file_time_type failed: " << file_time_tick_count << L" ticks too different from " << system_clock_tick_count << L" ticks from system_clock\n"; pass = false; } @@ -3797,7 +3797,7 @@ void test_file_time_type() { template void interactive_dir_iter(wstring_view p) { - wcout << L"iterate over: \"" << p << L"\":\n"; + wcerr << L"iterate over: \"" << p << L"\":\n"; directory_options opts = {}; // ! => skip_permission_denied @@ -3816,9 +3816,9 @@ void interactive_dir_iter(wstring_view p) { } for (const auto& entry : DirIter(p, opts)) { - wcout << entry.path().native() << L'\n'; + wcerr << entry.path().native() << L'\n'; } - wcout << L"---- iteration complete -----\n"; + wcerr << L"---- iteration complete -----\n"; } template @@ -3874,32 +3874,32 @@ void run_interactive_tests(int argc, wchar_t* argv[]) { for (int i = 1; i < argc; ++i) { const wstring_view arg = argv[i]; if (arg == L"-?"sv) { - wcout << usage; + wcerr << usage; } else if (starts_with(arg, L"-recdir:"sv)) { interactive_dir_iter(the_rest); } else if (starts_with(arg, L"-dir:"sv)) { interactive_dir_iter(the_rest); } else if (starts_with(arg, L"-lstat:"sv)) { - wcout << quoted(arg) << L" => " << symlink_status(the_rest) << "\n"; + wcerr << quoted(arg) << L" => " << symlink_status(the_rest) << "\n"; } else if (starts_with(arg, L"-stat:"sv)) { - wcout << quoted(arg) << L" => " << status(the_rest) << "\n"; + wcerr << quoted(arg) << L" => " << status(the_rest) << "\n"; } else if (starts_with(arg, L"-de:"sv)) { - wcout << quoted(arg) << L" => " << directory_entry(the_rest) << "\n"; + wcerr << quoted(arg) << L" => " << directory_entry(the_rest) << "\n"; } else if (starts_with(arg, L"-mkdir:"sv)) { - wcout << L"create_directory => " << create_directory(the_rest) << "\n"; + wcerr << L"create_directory => " << create_directory(the_rest) << "\n"; } else if (starts_with(arg, L"-mkdirs:"sv)) { - wcout << L"create_directory => " << create_directories(the_rest) << "\n"; + wcerr << L"create_directory => " << create_directories(the_rest) << "\n"; } else if (starts_with(arg, L"-now"sv)) { - wcout << L" system_clock: " << system_clock::now().time_since_epoch().count() << L'\n'; - wcout << L"file_time_type::clock: " << file_time_type::clock::now().time_since_epoch().count() << L'\n'; + wcerr << L" system_clock: " << system_clock::now().time_since_epoch().count() << L'\n'; + wcerr << L"file_time_type::clock: " << file_time_type::clock::now().time_since_epoch().count() << L'\n'; } else if (starts_with(arg, L"-rm:"sv)) { - wcout << L"remove => " << remove(the_rest) << "\n"; + wcerr << L"remove => " << remove(the_rest) << "\n"; } else if (starts_with(arg, L"-rmall:"sv)) { - wcout << L"remove_all => " << remove_all(the_rest) << "\n"; + wcerr << L"remove_all => " << remove_all(the_rest) << "\n"; } else if (starts_with(arg, L"-sz:"sv)) { - wcout << L"file_size => " << file_size(the_rest) << "\n"; + wcerr << L"file_size => " << file_size(the_rest) << "\n"; } else { - wcout << usage; + wcerr << usage; } } } From ebe33b8917ab305a21c012b14018538a43a771ec Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Tue, 16 Jun 2020 20:18:05 -0700 Subject: [PATCH 3/5] Fix GH-781 (dialogs) and fix GH-789 (stdout). --- tests/std/include/force_include.hpp | 29 +++++++++++++++++++++++++++++ tests/std/tests/prefix.lst | 2 +- tests/tr1/lit.site.cfg.in | 2 +- tests/tr1/prefix.lst | 2 +- 4 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 tests/std/include/force_include.hpp diff --git a/tests/std/include/force_include.hpp b/tests/std/include/force_include.hpp new file mode 100644 index 0000000000..e7ded1d061 --- /dev/null +++ b/tests/std/include/force_include.hpp @@ -0,0 +1,29 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#pragma once + +#include +#include +#include + +struct TestEnvironmentPreparer { + TestEnvironmentPreparer() noexcept { + // avoid assertion dialog boxes; see GH-781 + _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE); + _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR); + _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE); + _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDERR); + _set_abort_behavior(0, _CALL_REPORTFAULT); + + // set stdout to be unbuffered; see GH-789 + setvbuf(stdout, nullptr, _IONBF, 0); + } +}; + +const TestEnvironmentPreparer test_environment_preparer{}; diff --git a/tests/std/tests/prefix.lst b/tests/std/tests/prefix.lst index e6a28d8c2c..423eeda95e 100644 --- a/tests/std/tests/prefix.lst +++ b/tests/std/tests/prefix.lst @@ -3,4 +3,4 @@ RUNALL_INCLUDE ..\..\universal_prefix.lst RUNALL_CROSSLIST -PM_CL="/w14365 /D_ENFORCE_FACET_SPECIALIZATIONS=1" +PM_CL="/FIforce_include.hpp /w14365 /D_ENFORCE_FACET_SPECIALIZATIONS=1" diff --git a/tests/tr1/lit.site.cfg.in b/tests/tr1/lit.site.cfg.in index 56b631e9d6..49c489910f 100644 --- a/tests/tr1/lit.site.cfg.in +++ b/tests/tr1/lit.site.cfg.in @@ -6,7 +6,7 @@ config.cxx_headers = "@STL_TESTED_HEADERS_DIR@" config.cxx_library_root = "@CMAKE_LIBRARY_OUTPUT_DIRECTORY@" config.cxx_runtime_root = "@CMAKE_RUNTIME_OUTPUT_DIRECTORY@" config.expected_results_list_path = "@TR1_EXPECTED_RESULTS@" -config.include_dirs = ["@STL_SOURCE_DIR@/tests/tr1/include"] +config.include_dirs = ["@STL_SOURCE_DIR@/tests/tr1/include", "@STL_SOURCE_DIR@/tests/std/include"] config.msvc_toolset_libs_root = "@TOOLSET_LIB@" config.stl_build_root = "@STL_BUILD_ROOT@" config.stl_src_root = "@STL_SOURCE_DIR@" diff --git a/tests/tr1/prefix.lst b/tests/tr1/prefix.lst index f45ee1a14a..21f8ed4eb3 100644 --- a/tests/tr1/prefix.lst +++ b/tests/tr1/prefix.lst @@ -3,4 +3,4 @@ RUNALL_INCLUDE ..\universal_prefix.lst RUNALL_CROSSLIST -PM_CL="/D_ENFORCE_FACET_SPECIALIZATIONS=1 /D_CRT_SECURE_NO_WARNINGS" +PM_CL="/FIforce_include.hpp /D_ENFORCE_FACET_SPECIALIZATIONS=1 /D_CRT_SECURE_NO_WARNINGS" From 36df0bbe4825b88f433c272962edef0ed7b7e4b7 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Wed, 17 Jun 2020 21:40:07 -0700 Subject: [PATCH 4/5] Update include_each_header_alone_matrix.lst. Test iso646.h, which is still part of the repo. Don't test CRT headers, which aren't part of the repo. --- .../include_each_header_alone_matrix.lst | 51 +------------------ 1 file changed, 1 insertion(+), 50 deletions(-) diff --git a/tests/std/tests/include_each_header_alone_matrix.lst b/tests/std/tests/include_each_header_alone_matrix.lst index c1ee9bf148..8d1a4b7e40 100644 --- a/tests/std/tests/include_each_header_alone_matrix.lst +++ b/tests/std/tests/include_each_header_alone_matrix.lst @@ -32,6 +32,7 @@ PM_CL="/DMEOW_HEADER=iomanip" PM_CL="/DMEOW_HEADER=ios" PM_CL="/DMEOW_HEADER=iosfwd" PM_CL="/DMEOW_HEADER=iostream" +PM_CL="/DMEOW_HEADER=iso646.h" PM_CL="/DMEOW_HEADER=istream" PM_CL="/DMEOW_HEADER=iterator" PM_CL="/DMEOW_HEADER=limits" @@ -110,56 +111,6 @@ PM_CL="/DMEOW_HEADER=ctime" PM_CL="/DMEOW_HEADER=cuchar" PM_CL="/DMEOW_HEADER=cwchar" PM_CL="/DMEOW_HEADER=cwctype" -PM_CL="/DMEOW_HEADER=assert.h" -PM_CL="/DMEOW_HEADER=complex.h" -PM_CL="/DMEOW_HEADER=concurrencysal.h" -PM_CL="/DMEOW_HEADER=conio.h" -PM_CL="/DMEOW_HEADER=crtdbg.h" -PM_CL="/DMEOW_HEADER=ctype.h" -PM_CL="/DMEOW_HEADER=direct.h" -PM_CL="/DMEOW_HEADER=dos.h" -PM_CL="/DMEOW_HEADER=eh.h" -PM_CL="/DMEOW_HEADER=errno.h" -PM_CL="/DMEOW_HEADER=excpt.h" -PM_CL="/DMEOW_HEADER=fcntl.h" -PM_CL="/DMEOW_HEADER=fenv.h" -PM_CL="/DMEOW_HEADER=float.h" -PM_CL="/DMEOW_HEADER=fpieee.h" -PM_CL="/DMEOW_HEADER=intrin.h" -PM_CL="/DMEOW_HEADER=inttypes.h" -PM_CL="/DMEOW_HEADER=io.h" -PM_CL="/DMEOW_HEADER=iso646.h" -PM_CL="/DMEOW_HEADER=limits.h" -PM_CL="/DMEOW_HEADER=locale.h" -PM_CL="/DMEOW_HEADER=malloc.h" -PM_CL="/DMEOW_HEADER=math.h" -PM_CL="/DMEOW_HEADER=mbctype.h" -PM_CL="/DMEOW_HEADER=mbstring.h" -PM_CL="/DMEOW_HEADER=memory.h" -PM_CL="/DMEOW_HEADER=minmax.h" -PM_CL="/DMEOW_HEADER=new.h" -PM_CL="/DMEOW_HEADER=process.h" -PM_CL="/DMEOW_HEADER=rtcapi.h" -PM_CL="/DMEOW_HEADER=safeint.h" -PM_CL="/DMEOW_HEADER=sal.h" -PM_CL="/DMEOW_HEADER=search.h" -PM_CL="/DMEOW_HEADER=setjmp.h" -PM_CL="/DMEOW_HEADER=setjmpex.h" -PM_CL="/DMEOW_HEADER=share.h" -PM_CL="/DMEOW_HEADER=signal.h" -PM_CL="/DMEOW_HEADER=stdarg.h" -PM_CL="/DMEOW_HEADER=stdbool.h" -PM_CL="/DMEOW_HEADER=stddef.h" -PM_CL="/DMEOW_HEADER=stdint.h" -PM_CL="/DMEOW_HEADER=stdio.h" -PM_CL="/DMEOW_HEADER=stdlib.h" -PM_CL="/DMEOW_HEADER=string.h" -PM_CL="/DMEOW_HEADER=tchar.h" -PM_CL="/DMEOW_HEADER=time.h" -PM_CL="/DMEOW_HEADER=uchar.h" -PM_CL="/DMEOW_HEADER=vadefs.h" -PM_CL="/DMEOW_HEADER=wchar.h" -PM_CL="/DMEOW_HEADER=wctype.h" PM_CL="/DMEOW_HEADER=hash_map /D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS" PM_CL="/DMEOW_HEADER=hash_set /D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS" PM_CL="/DMEOW_HEADER=experimental/filesystem /D_SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING" From 2b4a28c1723cb7937a4c48ecaa5cd916a5094e3c Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Wed, 17 Jun 2020 21:27:55 -0700 Subject: [PATCH 5/5] NO_TEST_ENVIRONMENT_PREPARER escape hatch. This makes Dev11_0000000_include_each_header_alone cleaner. --- tests/std/include/force_include.hpp | 4 ++++ tests/std/tests/include_each_header_alone_matrix.lst | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/std/include/force_include.hpp b/tests/std/include/force_include.hpp index e7ded1d061..a6b97782ff 100644 --- a/tests/std/include/force_include.hpp +++ b/tests/std/include/force_include.hpp @@ -8,6 +8,8 @@ #pragma once +#ifndef NO_TEST_ENVIRONMENT_PREPARER + #include #include #include @@ -27,3 +29,5 @@ struct TestEnvironmentPreparer { }; const TestEnvironmentPreparer test_environment_preparer{}; + +#endif // NO_TEST_ENVIRONMENT_PREPARER diff --git a/tests/std/tests/include_each_header_alone_matrix.lst b/tests/std/tests/include_each_header_alone_matrix.lst index 8d1a4b7e40..6958bccf59 100644 --- a/tests/std/tests/include_each_header_alone_matrix.lst +++ b/tests/std/tests/include_each_header_alone_matrix.lst @@ -3,7 +3,7 @@ RUNALL_INCLUDE .\prefix.lst RUNALL_CROSSLIST -PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing /EHsc /MTd /std:c++latest /fp:strict /w14640 /Zc:threadSafeInit-" +PM_COMPILER="clang-cl" PM_CL="/DNO_TEST_ENVIRONMENT_PREPARER -fno-ms-compatibility -fno-delayed-template-parsing /EHsc /MTd /std:c++latest /fp:strict /w14640 /Zc:threadSafeInit-" RUNALL_CROSSLIST PM_CL="/DMEOW_HEADER=algorithm" PM_CL="/DMEOW_HEADER=any"