diff --git a/projects/ExtraTests/CMakeLists.txt b/projects/ExtraTests/CMakeLists.txt index 5a8dd79b..13b02870 100644 --- a/projects/ExtraTests/CMakeLists.txt +++ b/projects/ExtraTests/CMakeLists.txt @@ -126,6 +126,16 @@ set_tests_properties( PASS_REGULAR_EXPRESSION "benchmark name samples iterations estimated" ) +# This test touches windows.h, so it should only be compiled under msvc +if (MSVC) + # This test fails if it does not compile and succeeds otherwise + add_executable(WindowsHeader ${TESTS_DIR}/X90-WindowsHeaderInclusion.cpp) + set_property( TARGET WindowsHeader PROPERTY CXX_STANDARD 11 ) + set_property( TARGET WindowsHeader PROPERTY CXX_STANDARD_REQUIRED ON ) + set_property( TARGET WindowsHeader PROPERTY CXX_EXTENSIONS OFF ) + target_include_directories( WindowsHeader PRIVATE ${SINGLE_INCLUDE_PATH} ) + add_test(NAME WindowsHeader COMMAND WindowsHeader -r compact) +endif() set( EXTRA_TEST_BINARIES PrefixedMacros @@ -145,3 +155,4 @@ foreach( test ${EXTRA_TEST_BINARIES} ) target_include_directories( ${test} PRIVATE ${SINGLE_INCLUDE_PATH} ) endforeach() + diff --git a/projects/ExtraTests/X90-WindowsHeaderInclusion.cpp b/projects/ExtraTests/X90-WindowsHeaderInclusion.cpp new file mode 100644 index 00000000..2b7a074e --- /dev/null +++ b/projects/ExtraTests/X90-WindowsHeaderInclusion.cpp @@ -0,0 +1,12 @@ +// X90-WindowsHeaderInclusion.cpp +// Test that the Catch2 header compiles even after including windows.h +// without defining NOMINMAX first. As an FYI, if you do that, you are +// wrong. + +#include +#define CATCH_CONFIG_MAIN +#include + +TEST_CASE("Catch2 did survive compilation with windows.h", "[compile-test]") { + SUCCEED(); +}