Add test for including unguarded windows.h

If you do this, you are wrong, but apparently people expect libraries
to work around intrusive lower cased macros. Oh well.
This commit is contained in:
Martin Hořeňovský 2019-10-17 11:15:37 +02:00
parent 7c9f92bc1c
commit 91fa55303b
No known key found for this signature in database
GPG Key ID: DE48307B8B0D381A
2 changed files with 23 additions and 0 deletions

View File

@ -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()

View File

@ -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 <windows.h>
#define CATCH_CONFIG_MAIN
#include <catch2/catch.hpp>
TEST_CASE("Catch2 did survive compilation with windows.h", "[compile-test]") {
SUCCEED();
}