Fix compilation error when lambdas are used in assertions

This is a partial revert of b7b346c3e5.
This commit is contained in:
Martin Hořeňovský 2020-03-19 13:32:45 +01:00
parent 08f8a81b2c
commit 5198fd3c9a
No known key found for this signature in database
GPG Key ID: DE48307B8B0D381A
12 changed files with 42 additions and 11 deletions

View File

@ -148,8 +148,6 @@
# define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION __pragma( warning(push) ) # define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION __pragma( warning(push) )
# define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION __pragma( warning(pop) ) # define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION __pragma( warning(pop) )
# define CATCH_INTERNAL_IGNORE_BUT_WARN(...) (void)sizeof(__VA_ARGS__)
# if _MSC_VER >= 1900 // Visual Studio 2015 or newer # if _MSC_VER >= 1900 // Visual Studio 2015 or newer
# define CATCH_INTERNAL_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS # define CATCH_INTERNAL_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS
# endif # endif

View File

@ -56,7 +56,7 @@
CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \ CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \
} INTERNAL_CATCH_CATCH( catchAssertionHandler ) \ } INTERNAL_CATCH_CATCH( catchAssertionHandler ) \
INTERNAL_CATCH_REACT( catchAssertionHandler ) \ INTERNAL_CATCH_REACT( catchAssertionHandler ) \
} while( false ) } while( (void)0, (false) && static_cast<bool>( !!(__VA_ARGS__) ) )
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
#define INTERNAL_CATCH_IF( macroName, resultDisposition, ... ) \ #define INTERNAL_CATCH_IF( macroName, resultDisposition, ... ) \

View File

@ -138,6 +138,7 @@ Nor would this
:test-result: FAIL INFO is reset for each loop :test-result: FAIL INFO is reset for each loop
:test-result: XFAIL Inequality checks that should fail :test-result: XFAIL Inequality checks that should fail
:test-result: PASS Inequality checks that should succeed :test-result: PASS Inequality checks that should succeed
:test-result: PASS Lambdas in assertions
:test-result: PASS Less-than inequalities with different epsilons :test-result: PASS Less-than inequalities with different epsilons
:test-result: PASS ManuallyRegistered :test-result: PASS ManuallyRegistered
:test-result: PASS Matchers can be (AllOf) composed with the && operator :test-result: PASS Matchers can be (AllOf) composed with the && operator

View File

@ -818,6 +818,7 @@ Condition.tests.cpp:<line number>: passed: data.str_hello != "goodbye" for: "hel
Condition.tests.cpp:<line number>: passed: data.str_hello != "hell" for: "hello" != "hell" Condition.tests.cpp:<line number>: passed: data.str_hello != "hell" for: "hello" != "hell"
Condition.tests.cpp:<line number>: passed: data.str_hello != "hello1" for: "hello" != "hello1" Condition.tests.cpp:<line number>: passed: data.str_hello != "hello1" for: "hello" != "hello1"
Condition.tests.cpp:<line number>: passed: data.str_hello.size() != 6 for: 5 != 6 Condition.tests.cpp:<line number>: passed: data.str_hello.size() != 6 for: 5 != 6
Compilation.tests.cpp:<line number>: passed: []() { return true; }() for: true
Approx.tests.cpp:<line number>: passed: d <= Approx( 1.24 ) for: 1.23 <= Approx( 1.24 ) Approx.tests.cpp:<line number>: passed: d <= Approx( 1.24 ) for: 1.23 <= Approx( 1.24 )
Approx.tests.cpp:<line number>: passed: d <= Approx( 1.23 ) for: 1.23 <= Approx( 1.23 ) Approx.tests.cpp:<line number>: passed: d <= Approx( 1.23 ) for: 1.23 <= Approx( 1.23 )
Approx.tests.cpp:<line number>: passed: !(d <= Approx( 1.22 )) for: !(1.23 <= Approx( 1.22 )) Approx.tests.cpp:<line number>: passed: !(d <= Approx( 1.22 )) for: !(1.23 <= Approx( 1.22 ))

View File

@ -1380,6 +1380,6 @@ due to unexpected exception with message:
Why would you throw a std::string? Why would you throw a std::string?
=============================================================================== ===============================================================================
test cases: 331 | 257 passed | 70 failed | 4 failed as expected test cases: 332 | 258 passed | 70 failed | 4 failed as expected
assertions: 1872 | 1720 passed | 131 failed | 21 failed as expected assertions: 1873 | 1721 passed | 131 failed | 21 failed as expected

View File

@ -6116,6 +6116,17 @@ Condition.tests.cpp:<line number>: PASSED:
with expansion: with expansion:
5 != 6 5 != 6
-------------------------------------------------------------------------------
Lambdas in assertions
-------------------------------------------------------------------------------
Compilation.tests.cpp:<line number>
...............................................................................
Compilation.tests.cpp:<line number>: PASSED:
REQUIRE( []() { return true; }() )
with expansion:
true
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Less-than inequalities with different epsilons Less-than inequalities with different epsilons
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
@ -14647,6 +14658,6 @@ Misc.tests.cpp:<line number>
Misc.tests.cpp:<line number>: PASSED: Misc.tests.cpp:<line number>: PASSED:
=============================================================================== ===============================================================================
test cases: 331 | 241 passed | 86 failed | 4 failed as expected test cases: 332 | 242 passed | 86 failed | 4 failed as expected
assertions: 1889 | 1720 passed | 148 failed | 21 failed as expected assertions: 1890 | 1721 passed | 148 failed | 21 failed as expected

View File

@ -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="132" tests="1890" hostname="tbd" time="{duration}" timestamp="{iso8601-timestamp}"> <testsuite name="<exe-name>" errors="17" failures="132" tests="1891" hostname="tbd" time="{duration}" timestamp="{iso8601-timestamp}">
<properties> <properties>
<property name="filters" value="~[!nonportable]~[!benchmark]~[approvals] *"/> <property name="filters" value="~[!nonportable]~[!benchmark]~[approvals] *"/>
<property name="random-seed" value="1"/> <property name="random-seed" value="1"/>
@ -769,6 +769,7 @@ Condition.tests.cpp:<line number>
</failure> </failure>
</testcase> </testcase>
<testcase classname="<exe-name>.global" name="Inequality checks that should succeed" time="{duration}"/> <testcase classname="<exe-name>.global" name="Inequality checks that should succeed" time="{duration}"/>
<testcase classname="<exe-name>.global" name="Lambdas in assertions" time="{duration}"/>
<testcase classname="<exe-name>.global" name="Less-than inequalities with different epsilons" time="{duration}"/> <testcase classname="<exe-name>.global" name="Less-than inequalities with different epsilons" time="{duration}"/>
<testcase classname="<exe-name>.global" name="ManuallyRegistered" time="{duration}"/> <testcase classname="<exe-name>.global" name="ManuallyRegistered" time="{duration}"/>
<testcase classname="<exe-name>.global" name="Matchers can be (AllOf) composed with the &amp;&amp; operator" time="{duration}"/> <testcase classname="<exe-name>.global" name="Matchers can be (AllOf) composed with the &amp;&amp; operator" time="{duration}"/>

View File

@ -393,6 +393,7 @@ Class.tests.cpp:<line number>
<testCase name="#809" duration="{duration}"/> <testCase name="#809" duration="{duration}"/>
<testCase name="#833" duration="{duration}"/> <testCase name="#833" duration="{duration}"/>
<testCase name="#872" duration="{duration}"/> <testCase name="#872" duration="{duration}"/>
<testCase name="Lambdas in assertions" duration="{duration}"/>
<testCase name="Optionally static assertions" duration="{duration}"/> <testCase name="Optionally static assertions" duration="{duration}"/>
</file> </file>
<file path="tests/<exe-name>/UsageTests/Condition.tests.cpp"> <file path="tests/<exe-name>/UsageTests/Condition.tests.cpp">

View File

@ -1618,6 +1618,8 @@ ok {test-number} - data.str_hello != "hell" for: "hello" != "hell"
ok {test-number} - data.str_hello != "hello1" for: "hello" != "hello1" ok {test-number} - data.str_hello != "hello1" for: "hello" != "hello1"
# Inequality checks that should succeed # Inequality checks that should succeed
ok {test-number} - data.str_hello.size() != 6 for: 5 != 6 ok {test-number} - data.str_hello.size() != 6 for: 5 != 6
# Lambdas in assertions
ok {test-number} - []() { return true; }() for: true
# Less-than inequalities with different epsilons # Less-than inequalities with different epsilons
ok {test-number} - d <= Approx( 1.24 ) for: 1.23 <= Approx( 1.24 ) ok {test-number} - d <= Approx( 1.24 ) for: 1.23 <= Approx( 1.24 )
# Less-than inequalities with different epsilons # Less-than inequalities with different epsilons
@ -3770,5 +3772,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..1881 1..1882

View File

@ -352,6 +352,8 @@ Condition.tests.cpp:<line number>|nexpression failed|n CHECK( data.str_hello.si
##teamcity[testFinished name='Inequality checks that should fail' duration="{duration}"] ##teamcity[testFinished name='Inequality checks that should fail' duration="{duration}"]
##teamcity[testStarted name='Inequality checks that should succeed'] ##teamcity[testStarted name='Inequality checks that should succeed']
##teamcity[testFinished name='Inequality checks that should succeed' duration="{duration}"] ##teamcity[testFinished name='Inequality checks that should succeed' duration="{duration}"]
##teamcity[testStarted name='Lambdas in assertions']
##teamcity[testFinished name='Lambdas in assertions' duration="{duration}"]
##teamcity[testStarted name='Less-than inequalities with different epsilons'] ##teamcity[testStarted name='Less-than inequalities with different epsilons']
##teamcity[testFinished name='Less-than inequalities with different epsilons' duration="{duration}"] ##teamcity[testFinished name='Less-than inequalities with different epsilons' duration="{duration}"]
##teamcity[testStarted name='ManuallyRegistered'] ##teamcity[testStarted name='ManuallyRegistered']

View File

@ -7635,6 +7635,17 @@ Nor would this
</Expression> </Expression>
<OverallResult success="true"/> <OverallResult success="true"/>
</TestCase> </TestCase>
<TestCase name="Lambdas in assertions" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
<Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Compilation.tests.cpp" >
<Original>
[]() { return true; }()
</Original>
<Expanded>
true
</Expanded>
</Expression>
<OverallResult success="true"/>
</TestCase>
<TestCase name="Less-than inequalities with different epsilons" tags="[Approx]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" > <TestCase name="Less-than inequalities with different epsilons" tags="[Approx]" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
<Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" > <Expression success="true" type="REQUIRE" filename="tests/<exe-name>/UsageTests/Approx.tests.cpp" >
<Original> <Original>
@ -17557,7 +17568,7 @@ loose text artifact
</Section> </Section>
<OverallResult success="true"/> <OverallResult success="true"/>
</TestCase> </TestCase>
<OverallResults successes="1720" failures="149" expectedFailures="21"/> <OverallResults successes="1721" failures="149" expectedFailures="21"/>
</Group> </Group>
<OverallResults successes="1720" failures="148" expectedFailures="21"/> <OverallResults successes="1721" failures="148" expectedFailures="21"/>
</Catch> </Catch>

View File

@ -231,6 +231,9 @@ namespace { namespace CompilationTests {
} }
} }
TEST_CASE("Lambdas in assertions") {
REQUIRE([]() { return true; }());
}
}} // namespace CompilationTests }} // namespace CompilationTests