Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/onqtam/doctest.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSalvage <29021710+Saalvage@users.noreply.github.com>2022-01-12 02:52:38 +0300
committerSalvage <29021710+Saalvage@users.noreply.github.com>2022-01-12 02:52:38 +0300
commit860904d58644da1af6e08d57a7f47144536d2fb5 (patch)
treec2d42a43e8e15ea5cd2b5c08e02e78fa74f766fe /examples
parentaa120f0826f4bb2970656a0d2c865a50c43f3a06 (diff)
Hotfix asserts returning values with DOCTEST_CONFIG_DISABLE
Diffstat (limited to 'examples')
-rw-r--r--examples/all_features/CMakeLists.txt12
-rw-r--r--examples/all_features/assert_returns_disabled.cpp33
-rw-r--r--examples/all_features/assert_returns_disabled_evaluate.cpp4
-rw-r--r--examples/all_features/assertion_macros.cpp39
-rw-r--r--examples/all_features/test_output/assertion_macros.cpp.txt46
-rw-r--r--examples/all_features/test_output/assertion_macros.cpp_junit.txt34
-rw-r--r--examples/all_features/test_output/assertion_macros.cpp_xml.txt114
-rw-r--r--examples/all_features/test_output/disabled_but_evaluated.txt0
-rw-r--r--examples/all_features/test_output/disabled_junit.txt1
-rw-r--r--examples/all_features/test_output/disabled_xml.txt1
-rw-r--r--examples/all_features/test_output/filter_2.txt2
-rw-r--r--examples/all_features/test_output/filter_2_xml.txt5
12 files changed, 262 insertions, 29 deletions
diff --git a/examples/all_features/CMakeLists.txt b/examples/all_features/CMakeLists.txt
index d8b3cfbe..128676c0 100644
--- a/examples/all_features/CMakeLists.txt
+++ b/examples/all_features/CMakeLists.txt
@@ -97,6 +97,16 @@ doctest_add_test(NAME minimal ${common_args} -m -sf=*test_cases_and_suit
doctest_add_test(NAME minimal_no_fail ${common_args} -m -sf=*no_failures.cpp) # minimal
################################################################################
+## DOCTEST DISABLED - EXPRESSIONS STILL EVALUATE TO RETURN PROPER VALUES
+################################################################################
+
+add_executable(disabled_but_evaluated assert_returns_disabled.cpp assert_returns_disabled_evaluate.cpp)
+target_compile_definitions(disabled_but_evaluated PRIVATE DOCTEST_CONFIG_DISABLE)
+target_link_libraries(disabled_but_evaluated doctest ${CMAKE_THREAD_LIBS_INIT})
+
+doctest_add_test_impl(NAME disabled_but_evaluated COMMAND $<TARGET_FILE:disabled_but_evaluated>)
+
+################################################################################
## VARIATION OF THE BUILD WITH DOCTEST DISABLED - SHOULD STILL COMPILE
################################################################################
@@ -108,7 +118,7 @@ add_executable(disabled ${files_all})
target_compile_definitions(disabled PRIVATE DOCTEST_CONFIG_DISABLE)
target_link_libraries(disabled doctest ${CMAKE_THREAD_LIBS_INIT})
-doctest_add_test(NAME disabled COMMAND $<TARGET_FILE:disabled>)
+doctest_add_test_impl(NAME disabled COMMAND $<TARGET_FILE:disabled>)
# TODO: think about fixing these in a different way! - see issue #61 or commit 6b61e8aa3818c5ea100cedc1bb48a60ea10df6e8
if(MSVC)
diff --git a/examples/all_features/assert_returns_disabled.cpp b/examples/all_features/assert_returns_disabled.cpp
new file mode 100644
index 00000000..b53be00d
--- /dev/null
+++ b/examples/all_features/assert_returns_disabled.cpp
@@ -0,0 +1,33 @@
+#include <doctest/doctest.h>
+
+#ifdef _MSC_VER
+#define __STDC_WANT_SECURE_LIB__ 1
+#endif
+#include <iostream>
+#include <limits>
+
+
+#ifndef TEST_FLIP
+#define TEST_FLIP 0
+#endif
+
+#define TEST_FAIL() std::cout << "FAILED ON: " << __LINE__ \
+ << " (" << (TEST_FLIP ? "EVALUATED" : "DISABLED") << ")\n";
+
+static int test_disabled_var_ = [&] {
+ (void)&test_disabled_var_;
+ // none may return true
+ if (TEST_FLIP ^ CHECK(0 == 0)) { TEST_FAIL(); }
+ if (TEST_FLIP ^ CHECK_FALSE(0 != 0)) { TEST_FAIL(); }
+ if (TEST_FLIP ^ CHECK_EQ(0, 0)) { TEST_FAIL(); }
+ if (TEST_FLIP ^ CHECK_UNARY(true)) { TEST_FAIL(); }
+ if (TEST_FLIP ^ CHECK_UNARY_FALSE(false)) { TEST_FAIL(); }
+ if (TEST_FLIP ^ CHECK_THROWS([] { throw 2; }())) { TEST_FAIL(); }
+ if (TEST_FLIP ^ CHECK_THROWS_AS([] { throw 2; }(), int)) { TEST_FAIL(); }
+ if (TEST_FLIP ^ CHECK_NOTHROW([]{ }())) { TEST_FAIL(); }
+ if (CHECK_THROWS_WITH([] { throw 2; }(), "2")) { TEST_FAIL(); }
+ if (CHECK_NAN(std::numeric_limits<float>::quiet_NaN())) { TEST_FAIL(); }
+ if (CHECK_NOT_NAN(2'2.)) { TEST_FAIL(); }
+
+ return 0;
+}();
diff --git a/examples/all_features/assert_returns_disabled_evaluate.cpp b/examples/all_features/assert_returns_disabled_evaluate.cpp
new file mode 100644
index 00000000..722e9b43
--- /dev/null
+++ b/examples/all_features/assert_returns_disabled_evaluate.cpp
@@ -0,0 +1,4 @@
+#define DOCTEST_CONFIG_EVALUATE_ASSERTS_EVEN_WHEN_DISABLED
+#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
+#define TEST_FLIP 1
+#include "assert_returns_disabled.cpp"
diff --git a/examples/all_features/assertion_macros.cpp b/examples/all_features/assertion_macros.cpp
index 8dcebb94..6ad8287b 100644
--- a/examples/all_features/assertion_macros.cpp
+++ b/examples/all_features/assertion_macros.cpp
@@ -194,17 +194,34 @@ TEST_CASE("some asserts used in a function called by a test case") {
someAssertsInFunction();
}
-TEST_CASE("macro return values") {
- int a = 4;
- int b = 2;
- DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4702) // unreachable code
- if (CHECK(a == b)) { MESSAGE("should not be reached!"); }
- if (CHECK_FALSE(a != b)) { MESSAGE("should not be reached!"); }
- if (CHECK_EQ(a, b)) { MESSAGE("should not be reached!"); }
- if (CHECK_UNARY(a == b)) { MESSAGE("should not be reached!"); }
- if (CHECK_UNARY_FALSE(a != b)) { MESSAGE("should not be reached!"); }
- if (CHECK_THROWS([]{}())) { MESSAGE("should not be reached!"); }
- DOCTEST_MSVC_SUPPRESS_WARNING_POP
+inline DOCTEST_NOINLINE void comp(int a, int b) {
+ if (CHECK(a == b)) { MESSAGE(":D"); }
+ if (CHECK_FALSE(a != b)) { MESSAGE(":D"); }
+ if (CHECK_EQ(a, b)) { MESSAGE(":D"); }
+ if (CHECK_UNARY(a == b)) { MESSAGE(":D"); }
+ if (CHECK_UNARY_FALSE(a != b)) { MESSAGE(":D"); }
+}
+
+TEST_CASE("check return values") {
+ comp(0, 0);
+
+ if (CHECK_THROWS([] { throw 2; }())) { MESSAGE(":D"); }
+ if (CHECK_THROWS_AS([] { throw 2; }(), int)) { MESSAGE(":D"); }
+ if (CHECK_NOTHROW([] { }())) { MESSAGE(":D"); }
+ if (CHECK_THROWS_WITH([] { throw 2; }(), "2")) { MESSAGE(":D"); }
+ if (CHECK_NAN(std::numeric_limits<float>::quiet_NaN())) { MESSAGE(":D"); }
+ if (CHECK_NOT_NAN(2'2.)) { MESSAGE(":D"); }
+}
+
+TEST_CASE("check return values no print") {
+ comp(4, 2);
+
+ if (CHECK_THROWS([] { }())) { MESSAGE(":D"); }
+ if (CHECK_THROWS_AS([] { throw 2; }(), doctest::Approx)) { MESSAGE(":D"); }
+ if (CHECK_NOTHROW([] { throw 2; }())) { MESSAGE(":D"); }
+ if (CHECK_THROWS_WITH([] { throw 2; }(), "1")) { MESSAGE(":D"); }
+ if (CHECK_NAN(0.)) { MESSAGE(":D"); }
+ if (CHECK_NOT_NAN(std::numeric_limits<long double>::signaling_NaN())) { MESSAGE(":D"); }
}
TEST_CASE("nan") {
diff --git a/examples/all_features/test_output/assertion_macros.cpp.txt b/examples/all_features/test_output/assertion_macros.cpp.txt
index 03660105..ecdad447 100644
--- a/examples/all_features/test_output/assertion_macros.cpp.txt
+++ b/examples/all_features/test_output/assertion_macros.cpp.txt
@@ -199,7 +199,33 @@ assertion_macros.cpp(0): ERROR: CHECK_THROWS_WITH_AS( throw_if(true, false), "un
===============================================================================
assertion_macros.cpp(0):
-TEST CASE: macro return values
+TEST CASE: check return values
+
+assertion_macros.cpp(0): MESSAGE: :D
+
+assertion_macros.cpp(0): MESSAGE: :D
+
+assertion_macros.cpp(0): MESSAGE: :D
+
+assertion_macros.cpp(0): MESSAGE: :D
+
+assertion_macros.cpp(0): MESSAGE: :D
+
+assertion_macros.cpp(0): MESSAGE: :D
+
+assertion_macros.cpp(0): MESSAGE: :D
+
+assertion_macros.cpp(0): MESSAGE: :D
+
+assertion_macros.cpp(0): MESSAGE: :D
+
+assertion_macros.cpp(0): MESSAGE: :D
+
+assertion_macros.cpp(0): MESSAGE: :D
+
+===============================================================================
+assertion_macros.cpp(0):
+TEST CASE: check return values no print
assertion_macros.cpp(0): ERROR: CHECK( a == b ) is NOT correct!
values: CHECK( 4 == 2 )
@@ -216,7 +242,19 @@ assertion_macros.cpp(0): ERROR: CHECK_UNARY( a == b ) is NOT correct!
assertion_macros.cpp(0): ERROR: CHECK_UNARY_FALSE( a != b ) is NOT correct!
values: CHECK_UNARY_FALSE( true )
-assertion_macros.cpp(0): ERROR: CHECK_THROWS( []{}() ) did NOT throw at all!
+assertion_macros.cpp(0): ERROR: CHECK_THROWS( [] { }() ) did NOT throw at all!
+
+assertion_macros.cpp(0): ERROR: CHECK_THROWS_AS( [] { throw 2; }(), doctest::Approx ) threw a DIFFERENT exception: "2"
+
+assertion_macros.cpp(0): ERROR: CHECK_NOTHROW( [] { throw 2; }() ) THREW exception: "2"
+
+assertion_macros.cpp(0): ERROR: CHECK_THROWS_WITH( [] { throw 2; }(), "1" ) threw a DIFFERENT exception: "2"
+
+assertion_macros.cpp(0): ERROR: CHECK_NAN( 0. ) is NOT correct!
+ values: CHECK_NAN( 0.0 )
+
+assertion_macros.cpp(0): ERROR: CHECK_NOT_NAN( std::numeric_limits<long double>::signaling_NaN() ) is NOT correct!
+ values: CHECK_NOT_NAN( nan )
===============================================================================
assertion_macros.cpp(0):
@@ -229,7 +267,7 @@ assertion_macros.cpp(0): WARNING: WARN_NOT_NAN( std::numeric_limits<float>::quie
values: WARN_NOT_NAN( nanf )
===============================================================================
-[doctest] test cases: 23 | 3 passed | 20 failed |
-[doctest] assertions: 84 | 38 passed | 46 failed |
+[doctest] test cases: 24 | 4 passed | 20 failed |
+[doctest] assertions: 100 | 49 passed | 51 failed |
[doctest] Status: FAILURE!
Program code.
diff --git a/examples/all_features/test_output/assertion_macros.cpp_junit.txt b/examples/all_features/test_output/assertion_macros.cpp_junit.txt
index 904841df..aba023d7 100644
--- a/examples/all_features/test_output/assertion_macros.cpp_junit.txt
+++ b/examples/all_features/test_output/assertion_macros.cpp_junit.txt
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<testsuites>
- <testsuite name="all_features" errors="0" failures="60" tests="84">
+ <testsuite name="all_features" errors="0" failures="65" tests="100">
<testcase classname="assertion_macros.cpp" name="normal macros" status="run">
<failure type="CHECK">
assertion_macros.cpp(0):
@@ -317,7 +317,8 @@ CHECK_THROWS_WITH_AS( throw_if(true, false), "unknown exception", int ) threw a
</failure>
</testcase>
- <testcase classname="assertion_macros.cpp" name="macro return values" status="run">
+ <testcase classname="assertion_macros.cpp" name="check return values" status="run"/>
+ <testcase classname="assertion_macros.cpp" name="check return values no print" status="run">
<failure message="4 == 2" type="CHECK">
assertion_macros.cpp(0):
CHECK( a == b ) is NOT correct!
@@ -350,7 +351,34 @@ CHECK_UNARY_FALSE( a != b ) is NOT correct!
</failure>
<failure type="CHECK_THROWS">
assertion_macros.cpp(0):
-CHECK_THROWS( []{}() ) did NOT throw at all!
+CHECK_THROWS( [] { }() ) did NOT throw at all!
+
+ </failure>
+ <failure type="CHECK_THROWS_AS">
+assertion_macros.cpp(0):
+CHECK_THROWS_AS( [] { throw 2; }(), doctest::Approx ) threw a DIFFERENT exception: "2"
+
+ </failure>
+ <failure type="CHECK_NOTHROW">
+assertion_macros.cpp(0):
+CHECK_NOTHROW( [] { throw 2; }() ) THREW exception: "2"
+
+ </failure>
+ <failure type="CHECK_THROWS_WITH">
+assertion_macros.cpp(0):
+CHECK_THROWS_WITH( [] { throw 2; }(), "1" ) threw a DIFFERENT exception: "2"
+
+ </failure>
+ <failure message="0.0" type="CHECK_NAN">
+assertion_macros.cpp(0):
+CHECK_NAN( 0. ) is NOT correct!
+ values: CHECK_NAN( 0.0 )
+
+ </failure>
+ <failure message="nan" type="CHECK_NOT_NAN">
+assertion_macros.cpp(0):
+CHECK_NOT_NAN( std::numeric_limits&lt;long double>::signaling_NaN() ) is NOT correct!
+ values: CHECK_NOT_NAN( nan )
</failure>
</testcase>
diff --git a/examples/all_features/test_output/assertion_macros.cpp_xml.txt b/examples/all_features/test_output/assertion_macros.cpp_xml.txt
index 65245d91..48784043 100644
--- a/examples/all_features/test_output/assertion_macros.cpp_xml.txt
+++ b/examples/all_features/test_output/assertion_macros.cpp_xml.txt
@@ -532,7 +532,65 @@
</Expression>
<OverallResultsAsserts successes="9" failures="1" test_case_success="false"/>
</TestCase>
- <TestCase name="macro return values" filename="assertion_macros.cpp" line="0">
+ <TestCase name="check return values" filename="assertion_macros.cpp" line="0">
+ <Message type="WARNING" filename="assertion_macros.cpp" line="0">
+ <Text>
+ :D
+ </Text>
+ </Message>
+ <Message type="WARNING" filename="assertion_macros.cpp" line="0">
+ <Text>
+ :D
+ </Text>
+ </Message>
+ <Message type="WARNING" filename="assertion_macros.cpp" line="0">
+ <Text>
+ :D
+ </Text>
+ </Message>
+ <Message type="WARNING" filename="assertion_macros.cpp" line="0">
+ <Text>
+ :D
+ </Text>
+ </Message>
+ <Message type="WARNING" filename="assertion_macros.cpp" line="0">
+ <Text>
+ :D
+ </Text>
+ </Message>
+ <Message type="WARNING" filename="assertion_macros.cpp" line="0">
+ <Text>
+ :D
+ </Text>
+ </Message>
+ <Message type="WARNING" filename="assertion_macros.cpp" line="0">
+ <Text>
+ :D
+ </Text>
+ </Message>
+ <Message type="WARNING" filename="assertion_macros.cpp" line="0">
+ <Text>
+ :D
+ </Text>
+ </Message>
+ <Message type="WARNING" filename="assertion_macros.cpp" line="0">
+ <Text>
+ :D
+ </Text>
+ </Message>
+ <Message type="WARNING" filename="assertion_macros.cpp" line="0">
+ <Text>
+ :D
+ </Text>
+ </Message>
+ <Message type="WARNING" filename="assertion_macros.cpp" line="0">
+ <Text>
+ :D
+ </Text>
+ </Message>
+ <OverallResultsAsserts successes="11" failures="0" test_case_success="true"/>
+ </TestCase>
+ <TestCase name="check return values no print" filename="assertion_macros.cpp" line="0">
<Expression success="false" type="CHECK" filename="assertion_macros.cpp" line="0">
<Original>
a == b
@@ -575,10 +633,56 @@
</Expression>
<Expression success="false" type="CHECK_THROWS" filename="assertion_macros.cpp" line="0">
<Original>
- []{}()
+ [] { }()
+ </Original>
+ </Expression>
+ <Expression success="false" type="CHECK_THROWS_AS" filename="assertion_macros.cpp" line="0">
+ <Original>
+ [] { throw 2; }()
+ </Original>
+ <Exception>
+ "2"
+ </Exception>
+ <ExpectedException>
+ doctest::Approx
+ </ExpectedException>
+ </Expression>
+ <Expression success="false" type="CHECK_NOTHROW" filename="assertion_macros.cpp" line="0">
+ <Original>
+ [] { throw 2; }()
+ </Original>
+ <Exception>
+ "2"
+ </Exception>
+ </Expression>
+ <Expression success="false" type="CHECK_THROWS_WITH" filename="assertion_macros.cpp" line="0">
+ <Original>
+ [] { throw 2; }()
+ </Original>
+ <Exception>
+ "2"
+ </Exception>
+ <ExpectedExceptionString>
+ 1
+ </ExpectedExceptionString>
+ </Expression>
+ <Expression success="false" type="CHECK_NAN" filename="assertion_macros.cpp" line="0">
+ <Original>
+ 0.
+ </Original>
+ <Expanded>
+ 0.0
+ </Expanded>
+ </Expression>
+ <Expression success="false" type="CHECK_NOT_NAN" filename="assertion_macros.cpp" line="0">
+ <Original>
+ std::numeric_limits&lt;long double>::signaling_NaN()
</Original>
+ <Expanded>
+ nan
+ </Expanded>
</Expression>
- <OverallResultsAsserts successes="0" failures="6" test_case_success="false"/>
+ <OverallResultsAsserts successes="0" failures="11" test_case_success="false"/>
</TestCase>
<TestCase name="nan" filename="assertion_macros.cpp" line="0">
<Expression success="false" type="CHECK_NAN" filename="assertion_macros.cpp" line="0">
@@ -600,7 +704,7 @@
<OverallResultsAsserts successes="3" failures="1" test_case_success="false"/>
</TestCase>
</TestSuite>
- <OverallResultsAsserts successes="38" failures="46"/>
- <OverallResultsTestCases successes="3" failures="20"/>
+ <OverallResultsAsserts successes="49" failures="51"/>
+ <OverallResultsTestCases successes="4" failures="20"/>
</doctest>
Program code.
diff --git a/examples/all_features/test_output/disabled_but_evaluated.txt b/examples/all_features/test_output/disabled_but_evaluated.txt
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/examples/all_features/test_output/disabled_but_evaluated.txt
diff --git a/examples/all_features/test_output/disabled_junit.txt b/examples/all_features/test_output/disabled_junit.txt
deleted file mode 100644
index fd6c04e6..00000000
--- a/examples/all_features/test_output/disabled_junit.txt
+++ /dev/null
@@ -1 +0,0 @@
-Program code.
diff --git a/examples/all_features/test_output/disabled_xml.txt b/examples/all_features/test_output/disabled_xml.txt
deleted file mode 100644
index fd6c04e6..00000000
--- a/examples/all_features/test_output/disabled_xml.txt
+++ /dev/null
@@ -1 +0,0 @@
-Program code.
diff --git a/examples/all_features/test_output/filter_2.txt b/examples/all_features/test_output/filter_2.txt
index 662a7e29..86182761 100644
--- a/examples/all_features/test_output/filter_2.txt
+++ b/examples/all_features/test_output/filter_2.txt
@@ -1,6 +1,6 @@
[doctest] run with "--help" for options
===============================================================================
-[doctest] test cases: 0 | 0 passed | 0 failed | 96 skipped
+[doctest] test cases: 0 | 0 passed | 0 failed | 97 skipped
[doctest] assertions: 0 | 0 passed | 0 failed |
[doctest] Status: SUCCESS!
Program code.
diff --git a/examples/all_features/test_output/filter_2_xml.txt b/examples/all_features/test_output/filter_2_xml.txt
index 57a62a05..bb6bd653 100644
--- a/examples/all_features/test_output/filter_2_xml.txt
+++ b/examples/all_features/test_output/filter_2_xml.txt
@@ -28,6 +28,8 @@
<TestCase name="all binary assertions" filename="assertion_macros.cpp" line="0" skipped="true"/>
<TestCase name="an empty test that will succeed - not part of a test suite" filename="test_cases_and_suites.cpp" line="0" skipped="true"/>
<TestCase name="bad stringification of type pair&lt;int_pair>" filename="templated_test_cases.cpp" line="0" skipped="true"/>
+ <TestCase name="check return values" filename="assertion_macros.cpp" line="0" skipped="true"/>
+ <TestCase name="check return values no print" filename="assertion_macros.cpp" line="0" skipped="true"/>
<TestCase name="custom macros" filename="alternative_macros.cpp" line="0" skipped="true"/>
<TestCase name="default construction&lt;char>" filename="templated_test_cases.cpp" line="0" skipped="true"/>
<TestCase name="default construction&lt;double>" filename="templated_test_cases.cpp" line="0" skipped="true"/>
@@ -75,7 +77,6 @@
<TestSuite>
<TestCase name="logging the counter of a loop" filename="logging.cpp" line="0" skipped="true"/>
<TestCase name="lots of nested subcases" filename="subcases.cpp" line="0" skipped="true"/>
- <TestCase name="macro return values" filename="assertion_macros.cpp" line="0" skipped="true"/>
<TestCase name="multiple types&lt;>" filename="templated_test_cases.cpp" line="0" skipped="true"/>
<TestCase name="multiple types&lt;>" filename="templated_test_cases.cpp" line="0" skipped="true"/>
<TestCase name="multiple types&lt;>" filename="templated_test_cases.cpp" line="0" skipped="true"/>
@@ -136,6 +137,6 @@
<TestCase name="will end from an unknown exception" filename="coverage_maxout.cpp" line="0" skipped="true"/>
</TestSuite>
<OverallResultsAsserts successes="0" failures="0"/>
- <OverallResultsTestCases successes="0" failures="0" skipped="96"/>
+ <OverallResultsTestCases successes="0" failures="0" skipped="97"/>
</doctest>
Program code.