mirror of
https://github.com/catchorg/Catch2.git
synced 2025-08-02 21:35:40 +02:00
Fix bad error reporting for nested exceptions in default configuration
Bad handling of `TestFailureException` when translating unexpected exceptions inside assertion macros led to the unexpected exceptions handling erroring out through throwing the same exception again. This was then backstopped by the machinery for handling uncaught exceptions from assertions, which is normally used by the `CATCH_CONFIG_FAST_COMPILE` machinery, where we assume that it can only be invoked because the assertion macros are not configured to catch assertions. Closes #1292
This commit is contained in:
@@ -52,6 +52,20 @@ TEST_CASE("failing test") {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Same applies for a `SKIP` nested inside an assertion:
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
static bool do_skip() {
|
||||||
|
SKIP();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("Another failing test") {
|
||||||
|
CHECK(do_skip());
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
### Interaction with Sections and Generators
|
### Interaction with Sections and Generators
|
||||||
|
|
||||||
Sections, nested sections as well as specific outputs from [generators](generators.md#top)
|
Sections, nested sections as well as specific outputs from [generators](generators.md#top)
|
||||||
|
@@ -86,9 +86,7 @@ namespace Catch {
|
|||||||
auto analysis = Detail::analyse(*cfg, samples.data(), samples.data() + samples.size());
|
auto analysis = Detail::analyse(*cfg, samples.data(), samples.data() + samples.size());
|
||||||
BenchmarkStats<> stats{ CATCH_MOVE(info), CATCH_MOVE(analysis.samples), analysis.mean, analysis.standard_deviation, analysis.outliers, analysis.outlier_variance };
|
BenchmarkStats<> stats{ CATCH_MOVE(info), CATCH_MOVE(analysis.samples), analysis.mean, analysis.standard_deviation, analysis.outliers, analysis.outlier_variance };
|
||||||
getResultCapture().benchmarkEnded(stats);
|
getResultCapture().benchmarkEnded(stats);
|
||||||
} CATCH_CATCH_ANON (TestFailureException const&) {
|
} CATCH_CATCH_ALL {
|
||||||
getResultCapture().benchmarkFailed("Benchmark failed due to failed assertion"_sr);
|
|
||||||
} CATCH_CATCH_ALL{
|
|
||||||
getResultCapture().benchmarkFailed(translateActiveException());
|
getResultCapture().benchmarkFailed(translateActiveException());
|
||||||
// We let the exception go further up so that the
|
// We let the exception go further up so that the
|
||||||
// test case is marked as failed.
|
// test case is marked as failed.
|
||||||
|
@@ -59,10 +59,10 @@ namespace Catch {
|
|||||||
// To avoid having to handle TFE explicitly everywhere, we just
|
// To avoid having to handle TFE explicitly everywhere, we just
|
||||||
// rethrow it so that it goes back up the caller.
|
// rethrow it so that it goes back up the caller.
|
||||||
catch( TestFailureException& ) {
|
catch( TestFailureException& ) {
|
||||||
std::rethrow_exception(std::current_exception());
|
return "{ nested assertion failed }";
|
||||||
}
|
}
|
||||||
catch( TestSkipException& ) {
|
catch( TestSkipException& ) {
|
||||||
std::rethrow_exception(std::current_exception());
|
return "{ nested SKIP() called }";
|
||||||
}
|
}
|
||||||
catch( std::exception const& ex ) {
|
catch( std::exception const& ex ) {
|
||||||
return ex.what();
|
return ex.what();
|
||||||
|
@@ -95,6 +95,8 @@ Nor would this
|
|||||||
:test-result: PASS Approximate comparisons with mixed numeric types
|
:test-result: PASS Approximate comparisons with mixed numeric types
|
||||||
:test-result: PASS Arbitrary predicate matcher
|
:test-result: PASS Arbitrary predicate matcher
|
||||||
:test-result: PASS Assertion macros support bit operators and bool conversions
|
:test-result: PASS Assertion macros support bit operators and bool conversions
|
||||||
|
:test-result: XFAIL Assertions can be nested - CHECK
|
||||||
|
:test-result: XFAIL Assertions can be nested - REQUIRE
|
||||||
:test-result: PASS Assertions then sections
|
:test-result: PASS Assertions then sections
|
||||||
:test-result: PASS Basic use of the Contains range matcher
|
:test-result: PASS Basic use of the Contains range matcher
|
||||||
:test-result: PASS Basic use of the Empty range matcher
|
:test-result: PASS Basic use of the Empty range matcher
|
||||||
@@ -153,6 +155,7 @@ Nor would this
|
|||||||
:test-result: PASS Exceptions matchers
|
:test-result: PASS Exceptions matchers
|
||||||
:test-result: FAIL Expected exceptions that don't throw or unexpected exceptions fail the test
|
:test-result: FAIL Expected exceptions that don't throw or unexpected exceptions fail the test
|
||||||
:test-result: FAIL FAIL aborts the test
|
:test-result: FAIL FAIL aborts the test
|
||||||
|
:test-result: XFAIL FAIL can be nested in assertion
|
||||||
:test-result: FAIL FAIL does not require an argument
|
:test-result: FAIL FAIL does not require an argument
|
||||||
:test-result: FAIL FAIL_CHECK does not abort the test
|
:test-result: FAIL FAIL_CHECK does not abort the test
|
||||||
:test-result: PASS Factorials are computed
|
:test-result: PASS Factorials are computed
|
||||||
|
@@ -93,6 +93,8 @@
|
|||||||
:test-result: PASS Approximate comparisons with mixed numeric types
|
:test-result: PASS Approximate comparisons with mixed numeric types
|
||||||
:test-result: PASS Arbitrary predicate matcher
|
:test-result: PASS Arbitrary predicate matcher
|
||||||
:test-result: PASS Assertion macros support bit operators and bool conversions
|
:test-result: PASS Assertion macros support bit operators and bool conversions
|
||||||
|
:test-result: XFAIL Assertions can be nested - CHECK
|
||||||
|
:test-result: XFAIL Assertions can be nested - REQUIRE
|
||||||
:test-result: PASS Assertions then sections
|
:test-result: PASS Assertions then sections
|
||||||
:test-result: PASS Basic use of the Contains range matcher
|
:test-result: PASS Basic use of the Contains range matcher
|
||||||
:test-result: PASS Basic use of the Empty range matcher
|
:test-result: PASS Basic use of the Empty range matcher
|
||||||
@@ -151,6 +153,7 @@
|
|||||||
:test-result: PASS Exceptions matchers
|
:test-result: PASS Exceptions matchers
|
||||||
:test-result: FAIL Expected exceptions that don't throw or unexpected exceptions fail the test
|
:test-result: FAIL Expected exceptions that don't throw or unexpected exceptions fail the test
|
||||||
:test-result: FAIL FAIL aborts the test
|
:test-result: FAIL FAIL aborts the test
|
||||||
|
:test-result: XFAIL FAIL can be nested in assertion
|
||||||
:test-result: FAIL FAIL does not require an argument
|
:test-result: FAIL FAIL does not require an argument
|
||||||
:test-result: FAIL FAIL_CHECK does not abort the test
|
:test-result: FAIL FAIL_CHECK does not abort the test
|
||||||
:test-result: PASS Factorials are computed
|
:test-result: PASS Factorials are computed
|
||||||
|
@@ -332,6 +332,11 @@ Compilation.tests.cpp:<line number>: passed: !(lhs & rhs) for: !(Val: 1 & Val: 2
|
|||||||
Compilation.tests.cpp:<line number>: passed: HasBitOperators{ 1 } & HasBitOperators{ 1 } for: Val: 1 & Val: 1
|
Compilation.tests.cpp:<line number>: passed: HasBitOperators{ 1 } & HasBitOperators{ 1 } for: Val: 1 & Val: 1
|
||||||
Compilation.tests.cpp:<line number>: passed: lhs ^ rhs for: Val: 1 ^ Val: 2
|
Compilation.tests.cpp:<line number>: passed: lhs ^ rhs for: Val: 1 ^ Val: 2
|
||||||
Compilation.tests.cpp:<line number>: passed: !(lhs ^ lhs) for: !(Val: 1 ^ Val: 1)
|
Compilation.tests.cpp:<line number>: passed: !(lhs ^ lhs) for: !(Val: 1 ^ Val: 1)
|
||||||
|
AssertionHandler.tests.cpp:<line number>: failed: i > 10 for: 2 > 10
|
||||||
|
AssertionHandler.tests.cpp:<line number>: failed: unexpected exception with message: '{ nested assertion failed }'; expression was: foo( 2 ) == 2
|
||||||
|
AssertionHandler.tests.cpp:<line number>: passed: true
|
||||||
|
AssertionHandler.tests.cpp:<line number>: failed: i > 10 for: 2 > 10
|
||||||
|
AssertionHandler.tests.cpp:<line number>: failed: unexpected exception with message: '{ nested assertion failed }'; expression was: foo( 2 ) == 2
|
||||||
Tricky.tests.cpp:<line number>: passed: true
|
Tricky.tests.cpp:<line number>: passed: true
|
||||||
Tricky.tests.cpp:<line number>: passed: true
|
Tricky.tests.cpp:<line number>: passed: true
|
||||||
Tricky.tests.cpp:<line number>: passed: true
|
Tricky.tests.cpp:<line number>: passed: true
|
||||||
@@ -636,6 +641,8 @@ Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'e
|
|||||||
Exception.tests.cpp:<line number>: failed: expected exception, got none; expression was: thisDoesntThrow(), std::domain_error
|
Exception.tests.cpp:<line number>: failed: expected exception, got none; expression was: thisDoesntThrow(), std::domain_error
|
||||||
Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'expected exception'; expression was: thisThrows()
|
Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'expected exception'; expression was: thisThrows()
|
||||||
Message.tests.cpp:<line number>: failed: explicitly with 1 message: 'This is a failure'
|
Message.tests.cpp:<line number>: failed: explicitly with 1 message: 'This is a failure'
|
||||||
|
AssertionHandler.tests.cpp:<line number>: failed: explicitly with 1 message: 'Throw a Catch::TestFailureException'
|
||||||
|
AssertionHandler.tests.cpp:<line number>: failed: unexpected exception with message: '{ nested assertion failed }'; expression was: do_fail()
|
||||||
Message.tests.cpp:<line number>: failed: explicitly
|
Message.tests.cpp:<line number>: failed: explicitly
|
||||||
Message.tests.cpp:<line number>: failed: explicitly with 1 message: 'This is a failure'
|
Message.tests.cpp:<line number>: failed: explicitly with 1 message: 'This is a failure'
|
||||||
Message.tests.cpp:<line number>: warning: 'This message appears in the output'
|
Message.tests.cpp:<line number>: warning: 'This message appears in the output'
|
||||||
@@ -2862,7 +2869,7 @@ InternalBenchmark.tests.cpp:<line number>: passed: med == 18. for: 18.0 == 18.0
|
|||||||
InternalBenchmark.tests.cpp:<line number>: passed: q3 == 23. for: 23.0 == 23.0
|
InternalBenchmark.tests.cpp:<line number>: passed: q3 == 23. for: 23.0 == 23.0
|
||||||
Misc.tests.cpp:<line number>: passed:
|
Misc.tests.cpp:<line number>: passed:
|
||||||
Misc.tests.cpp:<line number>: passed:
|
Misc.tests.cpp:<line number>: passed:
|
||||||
test cases: 428 | 313 passed | 95 failed | 6 skipped | 14 failed as expected
|
test cases: 431 | 313 passed | 95 failed | 6 skipped | 17 failed as expected
|
||||||
assertions: 2281 | 2089 passed | 157 failed | 35 failed as expected
|
assertions: 2288 | 2090 passed | 157 failed | 41 failed as expected
|
||||||
|
|
||||||
|
|
||||||
|
@@ -330,6 +330,11 @@ Compilation.tests.cpp:<line number>: passed: !(lhs & rhs) for: !(Val: 1 & Val: 2
|
|||||||
Compilation.tests.cpp:<line number>: passed: HasBitOperators{ 1 } & HasBitOperators{ 1 } for: Val: 1 & Val: 1
|
Compilation.tests.cpp:<line number>: passed: HasBitOperators{ 1 } & HasBitOperators{ 1 } for: Val: 1 & Val: 1
|
||||||
Compilation.tests.cpp:<line number>: passed: lhs ^ rhs for: Val: 1 ^ Val: 2
|
Compilation.tests.cpp:<line number>: passed: lhs ^ rhs for: Val: 1 ^ Val: 2
|
||||||
Compilation.tests.cpp:<line number>: passed: !(lhs ^ lhs) for: !(Val: 1 ^ Val: 1)
|
Compilation.tests.cpp:<line number>: passed: !(lhs ^ lhs) for: !(Val: 1 ^ Val: 1)
|
||||||
|
AssertionHandler.tests.cpp:<line number>: failed: i > 10 for: 2 > 10
|
||||||
|
AssertionHandler.tests.cpp:<line number>: failed: unexpected exception with message: '{ nested assertion failed }'; expression was: foo( 2 ) == 2
|
||||||
|
AssertionHandler.tests.cpp:<line number>: passed: true
|
||||||
|
AssertionHandler.tests.cpp:<line number>: failed: i > 10 for: 2 > 10
|
||||||
|
AssertionHandler.tests.cpp:<line number>: failed: unexpected exception with message: '{ nested assertion failed }'; expression was: foo( 2 ) == 2
|
||||||
Tricky.tests.cpp:<line number>: passed: true
|
Tricky.tests.cpp:<line number>: passed: true
|
||||||
Tricky.tests.cpp:<line number>: passed: true
|
Tricky.tests.cpp:<line number>: passed: true
|
||||||
Tricky.tests.cpp:<line number>: passed: true
|
Tricky.tests.cpp:<line number>: passed: true
|
||||||
@@ -634,6 +639,8 @@ Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'e
|
|||||||
Exception.tests.cpp:<line number>: failed: expected exception, got none; expression was: thisDoesntThrow(), std::domain_error
|
Exception.tests.cpp:<line number>: failed: expected exception, got none; expression was: thisDoesntThrow(), std::domain_error
|
||||||
Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'expected exception'; expression was: thisThrows()
|
Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'expected exception'; expression was: thisThrows()
|
||||||
Message.tests.cpp:<line number>: failed: explicitly with 1 message: 'This is a failure'
|
Message.tests.cpp:<line number>: failed: explicitly with 1 message: 'This is a failure'
|
||||||
|
AssertionHandler.tests.cpp:<line number>: failed: explicitly with 1 message: 'Throw a Catch::TestFailureException'
|
||||||
|
AssertionHandler.tests.cpp:<line number>: failed: unexpected exception with message: '{ nested assertion failed }'; expression was: do_fail()
|
||||||
Message.tests.cpp:<line number>: failed: explicitly
|
Message.tests.cpp:<line number>: failed: explicitly
|
||||||
Message.tests.cpp:<line number>: failed: explicitly with 1 message: 'This is a failure'
|
Message.tests.cpp:<line number>: failed: explicitly with 1 message: 'This is a failure'
|
||||||
Message.tests.cpp:<line number>: warning: 'This message appears in the output'
|
Message.tests.cpp:<line number>: warning: 'This message appears in the output'
|
||||||
@@ -2851,7 +2858,7 @@ InternalBenchmark.tests.cpp:<line number>: passed: med == 18. for: 18.0 == 18.0
|
|||||||
InternalBenchmark.tests.cpp:<line number>: passed: q3 == 23. for: 23.0 == 23.0
|
InternalBenchmark.tests.cpp:<line number>: passed: q3 == 23. for: 23.0 == 23.0
|
||||||
Misc.tests.cpp:<line number>: passed:
|
Misc.tests.cpp:<line number>: passed:
|
||||||
Misc.tests.cpp:<line number>: passed:
|
Misc.tests.cpp:<line number>: passed:
|
||||||
test cases: 428 | 313 passed | 95 failed | 6 skipped | 14 failed as expected
|
test cases: 431 | 313 passed | 95 failed | 6 skipped | 17 failed as expected
|
||||||
assertions: 2281 | 2089 passed | 157 failed | 35 failed as expected
|
assertions: 2288 | 2090 passed | 157 failed | 41 failed as expected
|
||||||
|
|
||||||
|
|
||||||
|
@@ -347,6 +347,38 @@ Exception.tests.cpp:<line number>: FAILED:
|
|||||||
due to unexpected exception with message:
|
due to unexpected exception with message:
|
||||||
unexpected exception
|
unexpected exception
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Assertions can be nested - CHECK
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
AssertionHandler.tests.cpp:<line number>
|
||||||
|
...............................................................................
|
||||||
|
|
||||||
|
AssertionHandler.tests.cpp:<line number>: FAILED:
|
||||||
|
REQUIRE( i > 10 )
|
||||||
|
with expansion:
|
||||||
|
2 > 10
|
||||||
|
|
||||||
|
AssertionHandler.tests.cpp:<line number>: FAILED:
|
||||||
|
CHECK( foo( 2 ) == 2 )
|
||||||
|
due to unexpected exception with message:
|
||||||
|
{ nested assertion failed }
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Assertions can be nested - REQUIRE
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
AssertionHandler.tests.cpp:<line number>
|
||||||
|
...............................................................................
|
||||||
|
|
||||||
|
AssertionHandler.tests.cpp:<line number>: FAILED:
|
||||||
|
REQUIRE( i > 10 )
|
||||||
|
with expansion:
|
||||||
|
2 > 10
|
||||||
|
|
||||||
|
AssertionHandler.tests.cpp:<line number>: FAILED:
|
||||||
|
REQUIRE( foo( 2 ) == 2 )
|
||||||
|
due to unexpected exception with message:
|
||||||
|
{ nested assertion failed }
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Captures do not leave block with an exception
|
Captures do not leave block with an exception
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
@@ -619,6 +651,21 @@ Message.tests.cpp:<line number>: FAILED:
|
|||||||
explicitly with message:
|
explicitly with message:
|
||||||
This is a failure
|
This is a failure
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
FAIL can be nested in assertion
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
AssertionHandler.tests.cpp:<line number>
|
||||||
|
...............................................................................
|
||||||
|
|
||||||
|
AssertionHandler.tests.cpp:<line number>: FAILED:
|
||||||
|
explicitly with message:
|
||||||
|
Throw a Catch::TestFailureException
|
||||||
|
|
||||||
|
AssertionHandler.tests.cpp:<line number>: FAILED:
|
||||||
|
CHECK_NOTHROW( do_fail() )
|
||||||
|
due to unexpected exception with message:
|
||||||
|
{ nested assertion failed }
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
FAIL does not require an argument
|
FAIL does not require an argument
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
@@ -1672,6 +1719,6 @@ due to unexpected exception with message:
|
|||||||
Why would you throw a std::string?
|
Why would you throw a std::string?
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
test cases: 428 | 331 passed | 76 failed | 7 skipped | 14 failed as expected
|
test cases: 431 | 331 passed | 76 failed | 7 skipped | 17 failed as expected
|
||||||
assertions: 2260 | 2089 passed | 136 failed | 35 failed as expected
|
assertions: 2267 | 2090 passed | 136 failed | 41 failed as expected
|
||||||
|
|
||||||
|
@@ -2566,6 +2566,41 @@ Compilation.tests.cpp:<line number>: PASSED:
|
|||||||
with expansion:
|
with expansion:
|
||||||
!(Val: 1 ^ Val: 1)
|
!(Val: 1 ^ Val: 1)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Assertions can be nested - CHECK
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
AssertionHandler.tests.cpp:<line number>
|
||||||
|
...............................................................................
|
||||||
|
|
||||||
|
AssertionHandler.tests.cpp:<line number>: FAILED:
|
||||||
|
REQUIRE( i > 10 )
|
||||||
|
with expansion:
|
||||||
|
2 > 10
|
||||||
|
|
||||||
|
AssertionHandler.tests.cpp:<line number>: FAILED:
|
||||||
|
CHECK( foo( 2 ) == 2 )
|
||||||
|
due to unexpected exception with message:
|
||||||
|
{ nested assertion failed }
|
||||||
|
|
||||||
|
AssertionHandler.tests.cpp:<line number>: PASSED:
|
||||||
|
CHECK( true )
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Assertions can be nested - REQUIRE
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
AssertionHandler.tests.cpp:<line number>
|
||||||
|
...............................................................................
|
||||||
|
|
||||||
|
AssertionHandler.tests.cpp:<line number>: FAILED:
|
||||||
|
REQUIRE( i > 10 )
|
||||||
|
with expansion:
|
||||||
|
2 > 10
|
||||||
|
|
||||||
|
AssertionHandler.tests.cpp:<line number>: FAILED:
|
||||||
|
REQUIRE( foo( 2 ) == 2 )
|
||||||
|
due to unexpected exception with message:
|
||||||
|
{ nested assertion failed }
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Assertions then sections
|
Assertions then sections
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
@@ -4561,6 +4596,21 @@ Message.tests.cpp:<line number>: FAILED:
|
|||||||
explicitly with message:
|
explicitly with message:
|
||||||
This is a failure
|
This is a failure
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
FAIL can be nested in assertion
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
AssertionHandler.tests.cpp:<line number>
|
||||||
|
...............................................................................
|
||||||
|
|
||||||
|
AssertionHandler.tests.cpp:<line number>: FAILED:
|
||||||
|
explicitly with message:
|
||||||
|
Throw a Catch::TestFailureException
|
||||||
|
|
||||||
|
AssertionHandler.tests.cpp:<line number>: FAILED:
|
||||||
|
CHECK_NOTHROW( do_fail() )
|
||||||
|
due to unexpected exception with message:
|
||||||
|
{ nested assertion failed }
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
FAIL does not require an argument
|
FAIL does not require an argument
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
@@ -19134,6 +19184,6 @@ Misc.tests.cpp:<line number>
|
|||||||
Misc.tests.cpp:<line number>: PASSED:
|
Misc.tests.cpp:<line number>: PASSED:
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
test cases: 428 | 313 passed | 95 failed | 6 skipped | 14 failed as expected
|
test cases: 431 | 313 passed | 95 failed | 6 skipped | 17 failed as expected
|
||||||
assertions: 2281 | 2089 passed | 157 failed | 35 failed as expected
|
assertions: 2288 | 2090 passed | 157 failed | 41 failed as expected
|
||||||
|
|
||||||
|
@@ -2564,6 +2564,41 @@ Compilation.tests.cpp:<line number>: PASSED:
|
|||||||
with expansion:
|
with expansion:
|
||||||
!(Val: 1 ^ Val: 1)
|
!(Val: 1 ^ Val: 1)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Assertions can be nested - CHECK
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
AssertionHandler.tests.cpp:<line number>
|
||||||
|
...............................................................................
|
||||||
|
|
||||||
|
AssertionHandler.tests.cpp:<line number>: FAILED:
|
||||||
|
REQUIRE( i > 10 )
|
||||||
|
with expansion:
|
||||||
|
2 > 10
|
||||||
|
|
||||||
|
AssertionHandler.tests.cpp:<line number>: FAILED:
|
||||||
|
CHECK( foo( 2 ) == 2 )
|
||||||
|
due to unexpected exception with message:
|
||||||
|
{ nested assertion failed }
|
||||||
|
|
||||||
|
AssertionHandler.tests.cpp:<line number>: PASSED:
|
||||||
|
CHECK( true )
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Assertions can be nested - REQUIRE
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
AssertionHandler.tests.cpp:<line number>
|
||||||
|
...............................................................................
|
||||||
|
|
||||||
|
AssertionHandler.tests.cpp:<line number>: FAILED:
|
||||||
|
REQUIRE( i > 10 )
|
||||||
|
with expansion:
|
||||||
|
2 > 10
|
||||||
|
|
||||||
|
AssertionHandler.tests.cpp:<line number>: FAILED:
|
||||||
|
REQUIRE( foo( 2 ) == 2 )
|
||||||
|
due to unexpected exception with message:
|
||||||
|
{ nested assertion failed }
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Assertions then sections
|
Assertions then sections
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
@@ -4559,6 +4594,21 @@ Message.tests.cpp:<line number>: FAILED:
|
|||||||
explicitly with message:
|
explicitly with message:
|
||||||
This is a failure
|
This is a failure
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
FAIL can be nested in assertion
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
AssertionHandler.tests.cpp:<line number>
|
||||||
|
...............................................................................
|
||||||
|
|
||||||
|
AssertionHandler.tests.cpp:<line number>: FAILED:
|
||||||
|
explicitly with message:
|
||||||
|
Throw a Catch::TestFailureException
|
||||||
|
|
||||||
|
AssertionHandler.tests.cpp:<line number>: FAILED:
|
||||||
|
CHECK_NOTHROW( do_fail() )
|
||||||
|
due to unexpected exception with message:
|
||||||
|
{ nested assertion failed }
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
FAIL does not require an argument
|
FAIL does not require an argument
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
@@ -19123,6 +19173,6 @@ Misc.tests.cpp:<line number>
|
|||||||
Misc.tests.cpp:<line number>: PASSED:
|
Misc.tests.cpp:<line number>: PASSED:
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
test cases: 428 | 313 passed | 95 failed | 6 skipped | 14 failed as expected
|
test cases: 431 | 313 passed | 95 failed | 6 skipped | 17 failed as expected
|
||||||
assertions: 2281 | 2089 passed | 157 failed | 35 failed as expected
|
assertions: 2288 | 2090 passed | 157 failed | 41 failed as expected
|
||||||
|
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<testsuitesloose text artifact
|
<testsuitesloose text artifact
|
||||||
>
|
>
|
||||||
<testsuite name="<exe-name>" errors="17" failures="140" skipped="12" tests="2293" hostname="tbd" time="{duration}" timestamp="{iso8601-timestamp}">
|
<testsuite name="<exe-name>" errors="17" failures="140" skipped="12" tests="2300" hostname="tbd" time="{duration}" timestamp="{iso8601-timestamp}">
|
||||||
<properties>
|
<properties>
|
||||||
<property name="random-seed" value="1"/>
|
<property name="random-seed" value="1"/>
|
||||||
<property name="filters" value=""*" ~[!nonportable] ~[!benchmark] ~[approvals]"/>
|
<property name="filters" value=""*" ~[!nonportable] ~[!benchmark] ~[approvals]"/>
|
||||||
@@ -390,6 +390,38 @@ at Exception.tests.cpp:<line number>
|
|||||||
<testcase classname="<exe-name>.global" name="Arbitrary predicate matcher/Function pointer" time="{duration}" status="run"/>
|
<testcase classname="<exe-name>.global" name="Arbitrary predicate matcher/Function pointer" time="{duration}" status="run"/>
|
||||||
<testcase classname="<exe-name>.global" name="Arbitrary predicate matcher/Lambdas + different type" time="{duration}" status="run"/>
|
<testcase classname="<exe-name>.global" name="Arbitrary predicate matcher/Lambdas + different type" time="{duration}" status="run"/>
|
||||||
<testcase classname="<exe-name>.global" name="Assertion macros support bit operators and bool conversions" time="{duration}" status="run"/>
|
<testcase classname="<exe-name>.global" name="Assertion macros support bit operators and bool conversions" time="{duration}" status="run"/>
|
||||||
|
<testcase classname="<exe-name>.global" name="Assertions can be nested - CHECK" time="{duration}" status="run">
|
||||||
|
<skipped message="TEST_CASE tagged with !mayfail"/>
|
||||||
|
<failure message="i > 10" type="REQUIRE">
|
||||||
|
FAILED:
|
||||||
|
REQUIRE( i > 10 )
|
||||||
|
with expansion:
|
||||||
|
2 > 10
|
||||||
|
at AssertionHandler.tests.cpp:<line number>
|
||||||
|
</failure>
|
||||||
|
<error message="foo( 2 ) == 2" type="CHECK">
|
||||||
|
FAILED:
|
||||||
|
CHECK( foo( 2 ) == 2 )
|
||||||
|
{ nested assertion failed }
|
||||||
|
at AssertionHandler.tests.cpp:<line number>
|
||||||
|
</error>
|
||||||
|
</testcase>
|
||||||
|
<testcase classname="<exe-name>.global" name="Assertions can be nested - REQUIRE" time="{duration}" status="run">
|
||||||
|
<skipped message="TEST_CASE tagged with !mayfail"/>
|
||||||
|
<failure message="i > 10" type="REQUIRE">
|
||||||
|
FAILED:
|
||||||
|
REQUIRE( i > 10 )
|
||||||
|
with expansion:
|
||||||
|
2 > 10
|
||||||
|
at AssertionHandler.tests.cpp:<line number>
|
||||||
|
</failure>
|
||||||
|
<error message="foo( 2 ) == 2" type="REQUIRE">
|
||||||
|
FAILED:
|
||||||
|
REQUIRE( foo( 2 ) == 2 )
|
||||||
|
{ nested assertion failed }
|
||||||
|
at AssertionHandler.tests.cpp:<line number>
|
||||||
|
</error>
|
||||||
|
</testcase>
|
||||||
<testcase classname="<exe-name>.global" name="Assertions then sections" time="{duration}" status="run"/>
|
<testcase classname="<exe-name>.global" name="Assertions then sections" time="{duration}" status="run"/>
|
||||||
<testcase classname="<exe-name>.global" name="Assertions then sections/A section" time="{duration}" status="run"/>
|
<testcase classname="<exe-name>.global" name="Assertions then sections/A section" time="{duration}" status="run"/>
|
||||||
<testcase classname="<exe-name>.global" name="Assertions then sections/A section/Another section" time="{duration}" status="run"/>
|
<testcase classname="<exe-name>.global" name="Assertions then sections/A section/Another section" time="{duration}" status="run"/>
|
||||||
@@ -738,6 +770,20 @@ This is a failure
|
|||||||
at Message.tests.cpp:<line number>
|
at Message.tests.cpp:<line number>
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
|
<testcase classname="<exe-name>.global" name="FAIL can be nested in assertion" time="{duration}" status="run">
|
||||||
|
<skipped message="TEST_CASE tagged with !mayfail"/>
|
||||||
|
<failure type="FAIL">
|
||||||
|
FAILED:
|
||||||
|
Throw a Catch::TestFailureException
|
||||||
|
at AssertionHandler.tests.cpp:<line number>
|
||||||
|
</failure>
|
||||||
|
<error message="do_fail()" type="CHECK_NOTHROW">
|
||||||
|
FAILED:
|
||||||
|
CHECK_NOTHROW( do_fail() )
|
||||||
|
{ nested assertion failed }
|
||||||
|
at AssertionHandler.tests.cpp:<line number>
|
||||||
|
</error>
|
||||||
|
</testcase>
|
||||||
<testcase classname="<exe-name>.global" name="FAIL does not require an argument" time="{duration}" status="run">
|
<testcase classname="<exe-name>.global" name="FAIL does not require an argument" time="{duration}" status="run">
|
||||||
<failure type="FAIL">
|
<failure type="FAIL">
|
||||||
FAILED:
|
FAILED:
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<testsuites>
|
<testsuites>
|
||||||
<testsuite name="<exe-name>" errors="17" failures="140" skipped="12" tests="2293" hostname="tbd" time="{duration}" timestamp="{iso8601-timestamp}">
|
<testsuite name="<exe-name>" errors="17" failures="140" skipped="12" tests="2300" hostname="tbd" time="{duration}" timestamp="{iso8601-timestamp}">
|
||||||
<properties>
|
<properties>
|
||||||
<property name="random-seed" value="1"/>
|
<property name="random-seed" value="1"/>
|
||||||
<property name="filters" value=""*" ~[!nonportable] ~[!benchmark] ~[approvals]"/>
|
<property name="filters" value=""*" ~[!nonportable] ~[!benchmark] ~[approvals]"/>
|
||||||
@@ -389,6 +389,38 @@ at Exception.tests.cpp:<line number>
|
|||||||
<testcase classname="<exe-name>.global" name="Arbitrary predicate matcher/Function pointer" time="{duration}" status="run"/>
|
<testcase classname="<exe-name>.global" name="Arbitrary predicate matcher/Function pointer" time="{duration}" status="run"/>
|
||||||
<testcase classname="<exe-name>.global" name="Arbitrary predicate matcher/Lambdas + different type" time="{duration}" status="run"/>
|
<testcase classname="<exe-name>.global" name="Arbitrary predicate matcher/Lambdas + different type" time="{duration}" status="run"/>
|
||||||
<testcase classname="<exe-name>.global" name="Assertion macros support bit operators and bool conversions" time="{duration}" status="run"/>
|
<testcase classname="<exe-name>.global" name="Assertion macros support bit operators and bool conversions" time="{duration}" status="run"/>
|
||||||
|
<testcase classname="<exe-name>.global" name="Assertions can be nested - CHECK" time="{duration}" status="run">
|
||||||
|
<skipped message="TEST_CASE tagged with !mayfail"/>
|
||||||
|
<failure message="i > 10" type="REQUIRE">
|
||||||
|
FAILED:
|
||||||
|
REQUIRE( i > 10 )
|
||||||
|
with expansion:
|
||||||
|
2 > 10
|
||||||
|
at AssertionHandler.tests.cpp:<line number>
|
||||||
|
</failure>
|
||||||
|
<error message="foo( 2 ) == 2" type="CHECK">
|
||||||
|
FAILED:
|
||||||
|
CHECK( foo( 2 ) == 2 )
|
||||||
|
{ nested assertion failed }
|
||||||
|
at AssertionHandler.tests.cpp:<line number>
|
||||||
|
</error>
|
||||||
|
</testcase>
|
||||||
|
<testcase classname="<exe-name>.global" name="Assertions can be nested - REQUIRE" time="{duration}" status="run">
|
||||||
|
<skipped message="TEST_CASE tagged with !mayfail"/>
|
||||||
|
<failure message="i > 10" type="REQUIRE">
|
||||||
|
FAILED:
|
||||||
|
REQUIRE( i > 10 )
|
||||||
|
with expansion:
|
||||||
|
2 > 10
|
||||||
|
at AssertionHandler.tests.cpp:<line number>
|
||||||
|
</failure>
|
||||||
|
<error message="foo( 2 ) == 2" type="REQUIRE">
|
||||||
|
FAILED:
|
||||||
|
REQUIRE( foo( 2 ) == 2 )
|
||||||
|
{ nested assertion failed }
|
||||||
|
at AssertionHandler.tests.cpp:<line number>
|
||||||
|
</error>
|
||||||
|
</testcase>
|
||||||
<testcase classname="<exe-name>.global" name="Assertions then sections" time="{duration}" status="run"/>
|
<testcase classname="<exe-name>.global" name="Assertions then sections" time="{duration}" status="run"/>
|
||||||
<testcase classname="<exe-name>.global" name="Assertions then sections/A section" time="{duration}" status="run"/>
|
<testcase classname="<exe-name>.global" name="Assertions then sections/A section" time="{duration}" status="run"/>
|
||||||
<testcase classname="<exe-name>.global" name="Assertions then sections/A section/Another section" time="{duration}" status="run"/>
|
<testcase classname="<exe-name>.global" name="Assertions then sections/A section/Another section" time="{duration}" status="run"/>
|
||||||
@@ -737,6 +769,20 @@ This is a failure
|
|||||||
at Message.tests.cpp:<line number>
|
at Message.tests.cpp:<line number>
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
|
<testcase classname="<exe-name>.global" name="FAIL can be nested in assertion" time="{duration}" status="run">
|
||||||
|
<skipped message="TEST_CASE tagged with !mayfail"/>
|
||||||
|
<failure type="FAIL">
|
||||||
|
FAILED:
|
||||||
|
Throw a Catch::TestFailureException
|
||||||
|
at AssertionHandler.tests.cpp:<line number>
|
||||||
|
</failure>
|
||||||
|
<error message="do_fail()" type="CHECK_NOTHROW">
|
||||||
|
FAILED:
|
||||||
|
CHECK_NOTHROW( do_fail() )
|
||||||
|
{ nested assertion failed }
|
||||||
|
at AssertionHandler.tests.cpp:<line number>
|
||||||
|
</error>
|
||||||
|
</testcase>
|
||||||
<testcase classname="<exe-name>.global" name="FAIL does not require an argument" time="{duration}" status="run">
|
<testcase classname="<exe-name>.global" name="FAIL does not require an argument" time="{duration}" status="run">
|
||||||
<failure type="FAIL">
|
<failure type="FAIL">
|
||||||
FAILED:
|
FAILED:
|
||||||
|
@@ -3,6 +3,49 @@
|
|||||||
<testExecutions version="1"loose text artifact
|
<testExecutions version="1"loose text artifact
|
||||||
>
|
>
|
||||||
<file path="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp">
|
<file path="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp">
|
||||||
|
<testCase name="Assertions can be nested - CHECK" duration="{duration}">
|
||||||
|
<skipped message="REQUIRE(i > 10)">
|
||||||
|
FAILED:
|
||||||
|
REQUIRE( i > 10 )
|
||||||
|
with expansion:
|
||||||
|
2 > 10
|
||||||
|
at AssertionHandler.tests.cpp:<line number>
|
||||||
|
</skipped>
|
||||||
|
<skipped message="CHECK(foo( 2 ) == 2)">
|
||||||
|
FAILED:
|
||||||
|
CHECK( foo( 2 ) == 2 )
|
||||||
|
{ nested assertion failed }
|
||||||
|
at AssertionHandler.tests.cpp:<line number>
|
||||||
|
</skipped>
|
||||||
|
</testCase>
|
||||||
|
<testCase name="Assertions can be nested - REQUIRE" duration="{duration}">
|
||||||
|
<skipped message="REQUIRE(i > 10)">
|
||||||
|
FAILED:
|
||||||
|
REQUIRE( i > 10 )
|
||||||
|
with expansion:
|
||||||
|
2 > 10
|
||||||
|
at AssertionHandler.tests.cpp:<line number>
|
||||||
|
</skipped>
|
||||||
|
<skipped message="REQUIRE(foo( 2 ) == 2)">
|
||||||
|
FAILED:
|
||||||
|
REQUIRE( foo( 2 ) == 2 )
|
||||||
|
{ nested assertion failed }
|
||||||
|
at AssertionHandler.tests.cpp:<line number>
|
||||||
|
</skipped>
|
||||||
|
</testCase>
|
||||||
|
<testCase name="FAIL can be nested in assertion" duration="{duration}">
|
||||||
|
<skipped message="FAIL()">
|
||||||
|
FAILED:
|
||||||
|
Throw a Catch::TestFailureException
|
||||||
|
at AssertionHandler.tests.cpp:<line number>
|
||||||
|
</skipped>
|
||||||
|
<skipped message="CHECK_NOTHROW(do_fail())">
|
||||||
|
FAILED:
|
||||||
|
CHECK_NOTHROW( do_fail() )
|
||||||
|
{ nested assertion failed }
|
||||||
|
at AssertionHandler.tests.cpp:<line number>
|
||||||
|
</skipped>
|
||||||
|
</testCase>
|
||||||
<testCase name="Incomplete AssertionHandler" duration="{duration}">
|
<testCase name="Incomplete AssertionHandler" duration="{duration}">
|
||||||
<skipped message="REQUIRE(Dummy)">
|
<skipped message="REQUIRE(Dummy)">
|
||||||
FAILED:
|
FAILED:
|
||||||
|
@@ -2,6 +2,49 @@
|
|||||||
<!-- filters='"*" ~[!nonportable] ~[!benchmark] ~[approvals]' rng-seed=1 -->
|
<!-- filters='"*" ~[!nonportable] ~[!benchmark] ~[approvals]' rng-seed=1 -->
|
||||||
<testExecutions version="1">
|
<testExecutions version="1">
|
||||||
<file path="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp">
|
<file path="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp">
|
||||||
|
<testCase name="Assertions can be nested - CHECK" duration="{duration}">
|
||||||
|
<skipped message="REQUIRE(i > 10)">
|
||||||
|
FAILED:
|
||||||
|
REQUIRE( i > 10 )
|
||||||
|
with expansion:
|
||||||
|
2 > 10
|
||||||
|
at AssertionHandler.tests.cpp:<line number>
|
||||||
|
</skipped>
|
||||||
|
<skipped message="CHECK(foo( 2 ) == 2)">
|
||||||
|
FAILED:
|
||||||
|
CHECK( foo( 2 ) == 2 )
|
||||||
|
{ nested assertion failed }
|
||||||
|
at AssertionHandler.tests.cpp:<line number>
|
||||||
|
</skipped>
|
||||||
|
</testCase>
|
||||||
|
<testCase name="Assertions can be nested - REQUIRE" duration="{duration}">
|
||||||
|
<skipped message="REQUIRE(i > 10)">
|
||||||
|
FAILED:
|
||||||
|
REQUIRE( i > 10 )
|
||||||
|
with expansion:
|
||||||
|
2 > 10
|
||||||
|
at AssertionHandler.tests.cpp:<line number>
|
||||||
|
</skipped>
|
||||||
|
<skipped message="REQUIRE(foo( 2 ) == 2)">
|
||||||
|
FAILED:
|
||||||
|
REQUIRE( foo( 2 ) == 2 )
|
||||||
|
{ nested assertion failed }
|
||||||
|
at AssertionHandler.tests.cpp:<line number>
|
||||||
|
</skipped>
|
||||||
|
</testCase>
|
||||||
|
<testCase name="FAIL can be nested in assertion" duration="{duration}">
|
||||||
|
<skipped message="FAIL()">
|
||||||
|
FAILED:
|
||||||
|
Throw a Catch::TestFailureException
|
||||||
|
at AssertionHandler.tests.cpp:<line number>
|
||||||
|
</skipped>
|
||||||
|
<skipped message="CHECK_NOTHROW(do_fail())">
|
||||||
|
FAILED:
|
||||||
|
CHECK_NOTHROW( do_fail() )
|
||||||
|
{ nested assertion failed }
|
||||||
|
at AssertionHandler.tests.cpp:<line number>
|
||||||
|
</skipped>
|
||||||
|
</testCase>
|
||||||
<testCase name="Incomplete AssertionHandler" duration="{duration}">
|
<testCase name="Incomplete AssertionHandler" duration="{duration}">
|
||||||
<skipped message="REQUIRE(Dummy)">
|
<skipped message="REQUIRE(Dummy)">
|
||||||
FAILED:
|
FAILED:
|
||||||
|
@@ -612,6 +612,16 @@ ok {test-number} - HasBitOperators{ 1 } & HasBitOperators{ 1 } for: Val: 1 & Val
|
|||||||
ok {test-number} - lhs ^ rhs for: Val: 1 ^ Val: 2
|
ok {test-number} - lhs ^ rhs for: Val: 1 ^ Val: 2
|
||||||
# Assertion macros support bit operators and bool conversions
|
# Assertion macros support bit operators and bool conversions
|
||||||
ok {test-number} - !(lhs ^ lhs) for: !(Val: 1 ^ Val: 1)
|
ok {test-number} - !(lhs ^ lhs) for: !(Val: 1 ^ Val: 1)
|
||||||
|
# Assertions can be nested - CHECK
|
||||||
|
not ok {test-number} - i > 10 for: 2 > 10
|
||||||
|
# Assertions can be nested - CHECK
|
||||||
|
not ok {test-number} - unexpected exception with message: '{ nested assertion failed }'; expression was: foo( 2 ) == 2
|
||||||
|
# Assertions can be nested - CHECK
|
||||||
|
ok {test-number} - true
|
||||||
|
# Assertions can be nested - REQUIRE
|
||||||
|
not ok {test-number} - i > 10 for: 2 > 10
|
||||||
|
# Assertions can be nested - REQUIRE
|
||||||
|
not ok {test-number} - unexpected exception with message: '{ nested assertion failed }'; expression was: foo( 2 ) == 2
|
||||||
# Assertions then sections
|
# Assertions then sections
|
||||||
ok {test-number} - true
|
ok {test-number} - true
|
||||||
# Assertions then sections
|
# Assertions then sections
|
||||||
@@ -1132,6 +1142,10 @@ not ok {test-number} - expected exception, got none; expression was: thisDoesntT
|
|||||||
not ok {test-number} - unexpected exception with message: 'expected exception'; expression was: thisThrows()
|
not ok {test-number} - unexpected exception with message: 'expected exception'; expression was: thisThrows()
|
||||||
# FAIL aborts the test
|
# FAIL aborts the test
|
||||||
not ok {test-number} - explicitly with 1 message: 'This is a failure'
|
not ok {test-number} - explicitly with 1 message: 'This is a failure'
|
||||||
|
# FAIL can be nested in assertion
|
||||||
|
not ok {test-number} - explicitly with 1 message: 'Throw a Catch::TestFailureException'
|
||||||
|
# FAIL can be nested in assertion
|
||||||
|
not ok {test-number} - unexpected exception with message: '{ nested assertion failed }'; expression was: do_fail()
|
||||||
# FAIL does not require an argument
|
# FAIL does not require an argument
|
||||||
not ok {test-number} - explicitly
|
not ok {test-number} - explicitly
|
||||||
# FAIL_CHECK does not abort the test
|
# FAIL_CHECK does not abort the test
|
||||||
@@ -4583,5 +4597,5 @@ ok {test-number} - q3 == 23. for: 23.0 == 23.0
|
|||||||
ok {test-number} -
|
ok {test-number} -
|
||||||
# xmlentitycheck
|
# xmlentitycheck
|
||||||
ok {test-number} -
|
ok {test-number} -
|
||||||
1..2293
|
1..2300
|
||||||
|
|
||||||
|
@@ -610,6 +610,16 @@ ok {test-number} - HasBitOperators{ 1 } & HasBitOperators{ 1 } for: Val: 1 & Val
|
|||||||
ok {test-number} - lhs ^ rhs for: Val: 1 ^ Val: 2
|
ok {test-number} - lhs ^ rhs for: Val: 1 ^ Val: 2
|
||||||
# Assertion macros support bit operators and bool conversions
|
# Assertion macros support bit operators and bool conversions
|
||||||
ok {test-number} - !(lhs ^ lhs) for: !(Val: 1 ^ Val: 1)
|
ok {test-number} - !(lhs ^ lhs) for: !(Val: 1 ^ Val: 1)
|
||||||
|
# Assertions can be nested - CHECK
|
||||||
|
not ok {test-number} - i > 10 for: 2 > 10
|
||||||
|
# Assertions can be nested - CHECK
|
||||||
|
not ok {test-number} - unexpected exception with message: '{ nested assertion failed }'; expression was: foo( 2 ) == 2
|
||||||
|
# Assertions can be nested - CHECK
|
||||||
|
ok {test-number} - true
|
||||||
|
# Assertions can be nested - REQUIRE
|
||||||
|
not ok {test-number} - i > 10 for: 2 > 10
|
||||||
|
# Assertions can be nested - REQUIRE
|
||||||
|
not ok {test-number} - unexpected exception with message: '{ nested assertion failed }'; expression was: foo( 2 ) == 2
|
||||||
# Assertions then sections
|
# Assertions then sections
|
||||||
ok {test-number} - true
|
ok {test-number} - true
|
||||||
# Assertions then sections
|
# Assertions then sections
|
||||||
@@ -1130,6 +1140,10 @@ not ok {test-number} - expected exception, got none; expression was: thisDoesntT
|
|||||||
not ok {test-number} - unexpected exception with message: 'expected exception'; expression was: thisThrows()
|
not ok {test-number} - unexpected exception with message: 'expected exception'; expression was: thisThrows()
|
||||||
# FAIL aborts the test
|
# FAIL aborts the test
|
||||||
not ok {test-number} - explicitly with 1 message: 'This is a failure'
|
not ok {test-number} - explicitly with 1 message: 'This is a failure'
|
||||||
|
# FAIL can be nested in assertion
|
||||||
|
not ok {test-number} - explicitly with 1 message: 'Throw a Catch::TestFailureException'
|
||||||
|
# FAIL can be nested in assertion
|
||||||
|
not ok {test-number} - unexpected exception with message: '{ nested assertion failed }'; expression was: do_fail()
|
||||||
# FAIL does not require an argument
|
# FAIL does not require an argument
|
||||||
not ok {test-number} - explicitly
|
not ok {test-number} - explicitly
|
||||||
# FAIL_CHECK does not abort the test
|
# FAIL_CHECK does not abort the test
|
||||||
@@ -4572,5 +4586,5 @@ ok {test-number} - q3 == 23. for: 23.0 == 23.0
|
|||||||
ok {test-number} -
|
ok {test-number} -
|
||||||
# xmlentitycheck
|
# xmlentitycheck
|
||||||
ok {test-number} -
|
ok {test-number} -
|
||||||
1..2293
|
1..2300
|
||||||
|
|
||||||
|
@@ -225,6 +225,14 @@
|
|||||||
##teamcity[testFinished name='Arbitrary predicate matcher' duration="{duration}"]
|
##teamcity[testFinished name='Arbitrary predicate matcher' duration="{duration}"]
|
||||||
##teamcity[testStarted name='Assertion macros support bit operators and bool conversions']
|
##teamcity[testStarted name='Assertion macros support bit operators and bool conversions']
|
||||||
##teamcity[testFinished name='Assertion macros support bit operators and bool conversions' duration="{duration}"]
|
##teamcity[testFinished name='Assertion macros support bit operators and bool conversions' duration="{duration}"]
|
||||||
|
##teamcity[testStarted name='Assertions can be nested - CHECK']
|
||||||
|
##teamcity[testIgnored name='Assertions can be nested - CHECK' message='AssertionHandler.tests.cpp:<line number>|n...............................................................................|n|nAssertionHandler.tests.cpp:<line number>|nexpression failed|n REQUIRE( i > 10 )|nwith expansion:|n 2 > 10|n- failure ignore as test marked as |'ok to fail|'|n']
|
||||||
|
##teamcity[testIgnored name='Assertions can be nested - CHECK' message='AssertionHandler.tests.cpp:<line number>|nunexpected exception with message:|n "{ nested assertion failed }"|n CHECK( foo( 2 ) == 2 )|nwith expansion:|n foo( 2 ) == 2|n- failure ignore as test marked as |'ok to fail|'|n']
|
||||||
|
##teamcity[testFinished name='Assertions can be nested - CHECK' duration="{duration}"]
|
||||||
|
##teamcity[testStarted name='Assertions can be nested - REQUIRE']
|
||||||
|
##teamcity[testIgnored name='Assertions can be nested - REQUIRE' message='AssertionHandler.tests.cpp:<line number>|n...............................................................................|n|nAssertionHandler.tests.cpp:<line number>|nexpression failed|n REQUIRE( i > 10 )|nwith expansion:|n 2 > 10|n- failure ignore as test marked as |'ok to fail|'|n']
|
||||||
|
##teamcity[testIgnored name='Assertions can be nested - REQUIRE' message='AssertionHandler.tests.cpp:<line number>|nunexpected exception with message:|n "{ nested assertion failed }"|n REQUIRE( foo( 2 ) == 2 )|nwith expansion:|n foo( 2 ) == 2|n- failure ignore as test marked as |'ok to fail|'|n']
|
||||||
|
##teamcity[testFinished name='Assertions can be nested - REQUIRE' duration="{duration}"]
|
||||||
##teamcity[testStarted name='Assertions then sections']
|
##teamcity[testStarted name='Assertions then sections']
|
||||||
##teamcity[testFinished name='Assertions then sections' duration="{duration}"]
|
##teamcity[testFinished name='Assertions then sections' duration="{duration}"]
|
||||||
##teamcity[testStarted name='Basic use of the Contains range matcher']
|
##teamcity[testStarted name='Basic use of the Contains range matcher']
|
||||||
@@ -376,6 +384,10 @@
|
|||||||
##teamcity[testStarted name='FAIL aborts the test']
|
##teamcity[testStarted name='FAIL aborts the test']
|
||||||
##teamcity[testFailed name='FAIL aborts the test' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexplicit failure with message:|n "This is a failure"']
|
##teamcity[testFailed name='FAIL aborts the test' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexplicit failure with message:|n "This is a failure"']
|
||||||
##teamcity[testFinished name='FAIL aborts the test' duration="{duration}"]
|
##teamcity[testFinished name='FAIL aborts the test' duration="{duration}"]
|
||||||
|
##teamcity[testStarted name='FAIL can be nested in assertion']
|
||||||
|
##teamcity[testIgnored name='FAIL can be nested in assertion' message='AssertionHandler.tests.cpp:<line number>|n...............................................................................|n|nAssertionHandler.tests.cpp:<line number>|nexplicit failure with message:|n "Throw a Catch::TestFailureException"- failure ignore as test marked as |'ok to fail|'|n']
|
||||||
|
##teamcity[testIgnored name='FAIL can be nested in assertion' message='AssertionHandler.tests.cpp:<line number>|nunexpected exception with message:|n "{ nested assertion failed }"|n CHECK_NOTHROW( do_fail() )|nwith expansion:|n do_fail()|n- failure ignore as test marked as |'ok to fail|'|n']
|
||||||
|
##teamcity[testFinished name='FAIL can be nested in assertion' duration="{duration}"]
|
||||||
##teamcity[testStarted name='FAIL does not require an argument']
|
##teamcity[testStarted name='FAIL does not require an argument']
|
||||||
##teamcity[testFailed name='FAIL does not require an argument' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexplicit failure']
|
##teamcity[testFailed name='FAIL does not require an argument' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexplicit failure']
|
||||||
##teamcity[testFinished name='FAIL does not require an argument' duration="{duration}"]
|
##teamcity[testFinished name='FAIL does not require an argument' duration="{duration}"]
|
||||||
|
@@ -225,6 +225,14 @@
|
|||||||
##teamcity[testFinished name='Arbitrary predicate matcher' duration="{duration}"]
|
##teamcity[testFinished name='Arbitrary predicate matcher' duration="{duration}"]
|
||||||
##teamcity[testStarted name='Assertion macros support bit operators and bool conversions']
|
##teamcity[testStarted name='Assertion macros support bit operators and bool conversions']
|
||||||
##teamcity[testFinished name='Assertion macros support bit operators and bool conversions' duration="{duration}"]
|
##teamcity[testFinished name='Assertion macros support bit operators and bool conversions' duration="{duration}"]
|
||||||
|
##teamcity[testStarted name='Assertions can be nested - CHECK']
|
||||||
|
##teamcity[testIgnored name='Assertions can be nested - CHECK' message='AssertionHandler.tests.cpp:<line number>|n...............................................................................|n|nAssertionHandler.tests.cpp:<line number>|nexpression failed|n REQUIRE( i > 10 )|nwith expansion:|n 2 > 10|n- failure ignore as test marked as |'ok to fail|'|n']
|
||||||
|
##teamcity[testIgnored name='Assertions can be nested - CHECK' message='AssertionHandler.tests.cpp:<line number>|nunexpected exception with message:|n "{ nested assertion failed }"|n CHECK( foo( 2 ) == 2 )|nwith expansion:|n foo( 2 ) == 2|n- failure ignore as test marked as |'ok to fail|'|n']
|
||||||
|
##teamcity[testFinished name='Assertions can be nested - CHECK' duration="{duration}"]
|
||||||
|
##teamcity[testStarted name='Assertions can be nested - REQUIRE']
|
||||||
|
##teamcity[testIgnored name='Assertions can be nested - REQUIRE' message='AssertionHandler.tests.cpp:<line number>|n...............................................................................|n|nAssertionHandler.tests.cpp:<line number>|nexpression failed|n REQUIRE( i > 10 )|nwith expansion:|n 2 > 10|n- failure ignore as test marked as |'ok to fail|'|n']
|
||||||
|
##teamcity[testIgnored name='Assertions can be nested - REQUIRE' message='AssertionHandler.tests.cpp:<line number>|nunexpected exception with message:|n "{ nested assertion failed }"|n REQUIRE( foo( 2 ) == 2 )|nwith expansion:|n foo( 2 ) == 2|n- failure ignore as test marked as |'ok to fail|'|n']
|
||||||
|
##teamcity[testFinished name='Assertions can be nested - REQUIRE' duration="{duration}"]
|
||||||
##teamcity[testStarted name='Assertions then sections']
|
##teamcity[testStarted name='Assertions then sections']
|
||||||
##teamcity[testFinished name='Assertions then sections' duration="{duration}"]
|
##teamcity[testFinished name='Assertions then sections' duration="{duration}"]
|
||||||
##teamcity[testStarted name='Basic use of the Contains range matcher']
|
##teamcity[testStarted name='Basic use of the Contains range matcher']
|
||||||
@@ -376,6 +384,10 @@
|
|||||||
##teamcity[testStarted name='FAIL aborts the test']
|
##teamcity[testStarted name='FAIL aborts the test']
|
||||||
##teamcity[testFailed name='FAIL aborts the test' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexplicit failure with message:|n "This is a failure"']
|
##teamcity[testFailed name='FAIL aborts the test' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexplicit failure with message:|n "This is a failure"']
|
||||||
##teamcity[testFinished name='FAIL aborts the test' duration="{duration}"]
|
##teamcity[testFinished name='FAIL aborts the test' duration="{duration}"]
|
||||||
|
##teamcity[testStarted name='FAIL can be nested in assertion']
|
||||||
|
##teamcity[testIgnored name='FAIL can be nested in assertion' message='AssertionHandler.tests.cpp:<line number>|n...............................................................................|n|nAssertionHandler.tests.cpp:<line number>|nexplicit failure with message:|n "Throw a Catch::TestFailureException"- failure ignore as test marked as |'ok to fail|'|n']
|
||||||
|
##teamcity[testIgnored name='FAIL can be nested in assertion' message='AssertionHandler.tests.cpp:<line number>|nunexpected exception with message:|n "{ nested assertion failed }"|n CHECK_NOTHROW( do_fail() )|nwith expansion:|n do_fail()|n- failure ignore as test marked as |'ok to fail|'|n']
|
||||||
|
##teamcity[testFinished name='FAIL can be nested in assertion' duration="{duration}"]
|
||||||
##teamcity[testStarted name='FAIL does not require an argument']
|
##teamcity[testStarted name='FAIL does not require an argument']
|
||||||
##teamcity[testFailed name='FAIL does not require an argument' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexplicit failure']
|
##teamcity[testFailed name='FAIL does not require an argument' message='Message.tests.cpp:<line number>|n...............................................................................|n|nMessage.tests.cpp:<line number>|nexplicit failure']
|
||||||
##teamcity[testFinished name='FAIL does not require an argument' duration="{duration}"]
|
##teamcity[testFinished name='FAIL does not require an argument' duration="{duration}"]
|
||||||
|
@@ -2716,6 +2716,58 @@ Approx( 1.23399996757507324 )
|
|||||||
</Expression>
|
</Expression>
|
||||||
<OverallResult success="true" skips="0"/>
|
<OverallResult success="true" skips="0"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
|
<TestCase name="Assertions can be nested - CHECK" tags="[!shouldfail][assertions]" filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
|
||||||
|
<Expression success="false" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
|
||||||
|
<Original>
|
||||||
|
i > 10
|
||||||
|
</Original>
|
||||||
|
<Expanded>
|
||||||
|
2 > 10
|
||||||
|
</Expanded>
|
||||||
|
</Expression>
|
||||||
|
<Expression success="false" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
|
||||||
|
<Original>
|
||||||
|
foo( 2 ) == 2
|
||||||
|
</Original>
|
||||||
|
<Expanded>
|
||||||
|
foo( 2 ) == 2
|
||||||
|
</Expanded>
|
||||||
|
<Exception filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
|
||||||
|
{ nested assertion failed }
|
||||||
|
</Exception>
|
||||||
|
</Expression>
|
||||||
|
<Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
|
||||||
|
<Original>
|
||||||
|
true
|
||||||
|
</Original>
|
||||||
|
<Expanded>
|
||||||
|
true
|
||||||
|
</Expanded>
|
||||||
|
</Expression>
|
||||||
|
<OverallResult success="true" skips="0"/>
|
||||||
|
</TestCase>
|
||||||
|
<TestCase name="Assertions can be nested - REQUIRE" tags="[!shouldfail][assertions]" filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
|
||||||
|
<Expression success="false" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
|
||||||
|
<Original>
|
||||||
|
i > 10
|
||||||
|
</Original>
|
||||||
|
<Expanded>
|
||||||
|
2 > 10
|
||||||
|
</Expanded>
|
||||||
|
</Expression>
|
||||||
|
<Expression success="false" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
|
||||||
|
<Original>
|
||||||
|
foo( 2 ) == 2
|
||||||
|
</Original>
|
||||||
|
<Expanded>
|
||||||
|
foo( 2 ) == 2
|
||||||
|
</Expanded>
|
||||||
|
<Exception filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
|
||||||
|
{ nested assertion failed }
|
||||||
|
</Exception>
|
||||||
|
</Expression>
|
||||||
|
<OverallResult success="true" skips="0"/>
|
||||||
|
</TestCase>
|
||||||
<TestCase name="Assertions then sections" tags="[Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
|
<TestCase name="Assertions then sections" tags="[Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
|
||||||
<Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
|
<Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
|
||||||
<Original>
|
<Original>
|
||||||
@@ -5124,6 +5176,23 @@ Approx( 1.30000000000000004 )
|
|||||||
</Failure>
|
</Failure>
|
||||||
<OverallResult success="false" skips="0"/>
|
<OverallResult success="false" skips="0"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
|
<TestCase name="FAIL can be nested in assertion" tags="[!shouldfail][assertions]" filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
|
||||||
|
<Failure filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
|
||||||
|
Throw a Catch::TestFailureException
|
||||||
|
</Failure>
|
||||||
|
<Expression success="false" type="CHECK_NOTHROW" filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
|
||||||
|
<Original>
|
||||||
|
do_fail()
|
||||||
|
</Original>
|
||||||
|
<Expanded>
|
||||||
|
do_fail()
|
||||||
|
</Expanded>
|
||||||
|
<Exception filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
|
||||||
|
{ nested assertion failed }
|
||||||
|
</Exception>
|
||||||
|
</Expression>
|
||||||
|
<OverallResult success="true" skips="0"/>
|
||||||
|
</TestCase>
|
||||||
<TestCase name="FAIL does not require an argument" tags="[.][failing][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
|
<TestCase name="FAIL does not require an argument" tags="[.][failing][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
|
||||||
<Failure filename="tests/<exe-name>/UsageTests/Message.tests.cpp" />
|
<Failure filename="tests/<exe-name>/UsageTests/Message.tests.cpp" />
|
||||||
<OverallResult success="false" skips="0"/>
|
<OverallResult success="false" skips="0"/>
|
||||||
@@ -22113,6 +22182,6 @@ Approx( -1.95996398454005449 )
|
|||||||
</Section>
|
</Section>
|
||||||
<OverallResult success="true" skips="0"/>
|
<OverallResult success="true" skips="0"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
<OverallResults successes="2089" failures="157" expectedFailures="35" skips="12"/>
|
<OverallResults successes="2090" failures="157" expectedFailures="41" skips="12"/>
|
||||||
<OverallResultsCases successes="313" failures="95" expectedFailures="14" skips="6"/>
|
<OverallResultsCases successes="313" failures="95" expectedFailures="17" skips="6"/>
|
||||||
</Catch2TestRun>
|
</Catch2TestRun>
|
||||||
|
@@ -2716,6 +2716,58 @@ Approx( 1.23399996757507324 )
|
|||||||
</Expression>
|
</Expression>
|
||||||
<OverallResult success="true" skips="0"/>
|
<OverallResult success="true" skips="0"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
|
<TestCase name="Assertions can be nested - CHECK" tags="[!shouldfail][assertions]" filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
|
||||||
|
<Expression success="false" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
|
||||||
|
<Original>
|
||||||
|
i > 10
|
||||||
|
</Original>
|
||||||
|
<Expanded>
|
||||||
|
2 > 10
|
||||||
|
</Expanded>
|
||||||
|
</Expression>
|
||||||
|
<Expression success="false" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
|
||||||
|
<Original>
|
||||||
|
foo( 2 ) == 2
|
||||||
|
</Original>
|
||||||
|
<Expanded>
|
||||||
|
foo( 2 ) == 2
|
||||||
|
</Expanded>
|
||||||
|
<Exception filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
|
||||||
|
{ nested assertion failed }
|
||||||
|
</Exception>
|
||||||
|
</Expression>
|
||||||
|
<Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
|
||||||
|
<Original>
|
||||||
|
true
|
||||||
|
</Original>
|
||||||
|
<Expanded>
|
||||||
|
true
|
||||||
|
</Expanded>
|
||||||
|
</Expression>
|
||||||
|
<OverallResult success="true" skips="0"/>
|
||||||
|
</TestCase>
|
||||||
|
<TestCase name="Assertions can be nested - REQUIRE" tags="[!shouldfail][assertions]" filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
|
||||||
|
<Expression success="false" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
|
||||||
|
<Original>
|
||||||
|
i > 10
|
||||||
|
</Original>
|
||||||
|
<Expanded>
|
||||||
|
2 > 10
|
||||||
|
</Expanded>
|
||||||
|
</Expression>
|
||||||
|
<Expression success="false" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
|
||||||
|
<Original>
|
||||||
|
foo( 2 ) == 2
|
||||||
|
</Original>
|
||||||
|
<Expanded>
|
||||||
|
foo( 2 ) == 2
|
||||||
|
</Expanded>
|
||||||
|
<Exception filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
|
||||||
|
{ nested assertion failed }
|
||||||
|
</Exception>
|
||||||
|
</Expression>
|
||||||
|
<OverallResult success="true" skips="0"/>
|
||||||
|
</TestCase>
|
||||||
<TestCase name="Assertions then sections" tags="[Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
|
<TestCase name="Assertions then sections" tags="[Tricky]" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
|
||||||
<Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
|
<Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Tricky.tests.cpp" >
|
||||||
<Original>
|
<Original>
|
||||||
@@ -5124,6 +5176,23 @@ Approx( 1.30000000000000004 )
|
|||||||
</Failure>
|
</Failure>
|
||||||
<OverallResult success="false" skips="0"/>
|
<OverallResult success="false" skips="0"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
|
<TestCase name="FAIL can be nested in assertion" tags="[!shouldfail][assertions]" filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
|
||||||
|
<Failure filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
|
||||||
|
Throw a Catch::TestFailureException
|
||||||
|
</Failure>
|
||||||
|
<Expression success="false" type="CHECK_NOTHROW" filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
|
||||||
|
<Original>
|
||||||
|
do_fail()
|
||||||
|
</Original>
|
||||||
|
<Expanded>
|
||||||
|
do_fail()
|
||||||
|
</Expanded>
|
||||||
|
<Exception filename="tests/<exe-name>/IntrospectiveTests/AssertionHandler.tests.cpp" >
|
||||||
|
{ nested assertion failed }
|
||||||
|
</Exception>
|
||||||
|
</Expression>
|
||||||
|
<OverallResult success="true" skips="0"/>
|
||||||
|
</TestCase>
|
||||||
<TestCase name="FAIL does not require an argument" tags="[.][failing][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
|
<TestCase name="FAIL does not require an argument" tags="[.][failing][messages]" filename="tests/<exe-name>/UsageTests/Message.tests.cpp" >
|
||||||
<Failure filename="tests/<exe-name>/UsageTests/Message.tests.cpp" />
|
<Failure filename="tests/<exe-name>/UsageTests/Message.tests.cpp" />
|
||||||
<OverallResult success="false" skips="0"/>
|
<OverallResult success="false" skips="0"/>
|
||||||
@@ -22112,6 +22181,6 @@ Approx( -1.95996398454005449 )
|
|||||||
</Section>
|
</Section>
|
||||||
<OverallResult success="true" skips="0"/>
|
<OverallResult success="true" skips="0"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
<OverallResults successes="2089" failures="157" expectedFailures="35" skips="12"/>
|
<OverallResults successes="2090" failures="157" expectedFailures="41" skips="12"/>
|
||||||
<OverallResultsCases successes="313" failures="95" expectedFailures="14" skips="6"/>
|
<OverallResultsCases successes="313" failures="95" expectedFailures="17" skips="6"/>
|
||||||
</Catch2TestRun>
|
</Catch2TestRun>
|
||||||
|
@@ -15,3 +15,28 @@ TEST_CASE( "Incomplete AssertionHandler", "[assertion-handler][!shouldfail]" ) {
|
|||||||
"Dummy",
|
"Dummy",
|
||||||
Catch::ResultDisposition::Normal );
|
Catch::ResultDisposition::Normal );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int foo( int i ) {
|
||||||
|
REQUIRE( i > 10 );
|
||||||
|
return 42;
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE( "Assertions can be nested - CHECK", "[assertions][!shouldfail]" ) {
|
||||||
|
CHECK( foo( 2 ) == 2 );
|
||||||
|
// We should hit this, because CHECK continues on failure
|
||||||
|
CHECK( true );
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE( "Assertions can be nested - REQUIRE", "[assertions][!shouldfail]" ) {
|
||||||
|
REQUIRE( foo( 2 ) == 2 );
|
||||||
|
// We should not hit this, because REQUIRE does not continue on failure
|
||||||
|
CHECK( true );
|
||||||
|
}
|
||||||
|
|
||||||
|
static void do_fail() { FAIL( "Throw a Catch::TestFailureException" ); }
|
||||||
|
|
||||||
|
TEST_CASE( "FAIL can be nested in assertion", "[assertions][!shouldfail]" ) {
|
||||||
|
// Fails, but the error message makes sense.
|
||||||
|
CHECK_NOTHROW( do_fail() );
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user