Provide 1 .hpp + 1 .cpp distribution of Catch2

This commits also adds a script that does the amalgamation of headers
and .cpp files into the distributable version, removes the old
`generateSingleHeader` script, and also adds a very simple compilation
test for the amalgamated distribution.
This commit is contained in:
Martin Hořeňovský
2020-09-08 15:53:08 +02:00
parent 8b89a60bf6
commit 60dfec559f
8 changed files with 20556 additions and 129 deletions

View File

@@ -203,3 +203,24 @@ endforeach()
list(FILTER EXTRA_TEST_BINARIES EXCLUDE REGEX "DisabledExceptions.*")
list(APPEND CATCH_WARNING_TARGETS ${EXTRA_TEST_BINARIES})
set(CATCH_WARNING_TARGETS ${CATCH_WARNING_TARGETS} PARENT_SCOPE)
# This sets up a one-off executable that compiles against the amalgamated
# files, and then runs it for a super simple check that the amalgamated
# files are usable.
add_executable(AmalgamatedTestCompilation
${TESTS_DIR}/X91-AmalgamatedCatch.cpp
${CATCH_DIR}/extras/catch_amalgamated.hpp
${CATCH_DIR}/extras/catch_amalgamated.cpp
)
target_include_directories(AmalgamatedTestCompilation PRIVATE ${CATCH_DIR}/extras)
set_property( TARGET AmalgamatedTestCompilation PROPERTY CXX_STANDARD 14 )
set_property( TARGET AmalgamatedTestCompilation PROPERTY CXX_STANDARD_REQUIRED ON )
set_property( TARGET AmalgamatedTestCompilation PROPERTY CXX_EXTENSIONS OFF )
add_test(NAME AmalgamatedFileTest COMMAND AmalgamatedTestCompilation)
set_tests_properties(
AmalgamatedFileTest
PROPERTIES
PASS_REGULAR_EXPRESSION "All tests passed \\(14 assertions in 3 test cases\\)"
)

View File

@@ -0,0 +1,31 @@
/**\file
*
* This file serves as a simple compilation test against the amalgamated
* version of Catch2.
*/
#include "catch_amalgamated.hpp"
TEST_CASE("Just a dummy test") {
auto i = GENERATE(1, 2, 3);
SECTION("a") {
REQUIRE(1 != 4);
}
SECTION("b") {
CHECK(1 != 5);
}
REQUIRE_THAT(1,
Catch::Matchers::Predicate<int>([](int i) {
return i % 2 == 1;
}));
}
TEMPLATE_TEST_CASE("Trivial template test case", "", char, short) {
STATIC_REQUIRE(sizeof(TestType) <= sizeof(int));
}
TEST_CASE("Benchmark test", "[!benchmark]") {
BENCHMARK("Allocation benchmark") {
return std::vector<int>(10);
};
}