Commit Graph

150 Commits

Author SHA1 Message Date
Martin Hořeňovský 3cfef738e7 Merge branch 'dev-performance-round3' 2017-02-15 10:35:01 +01:00
Martin Hořeňovský 7b13a8f85a Move debug break out of tests, speeds up compilation time
This is hidden behind CATCH_CONFIG_FAST_COMPILE
2017-02-14 15:35:12 +01:00
Martin Hořeňovský 73159ace3d REQUIRE_THROWS_AS now catches exception by const&
Prevents some warnings caused by catching complex types by value.

Closes #542
2017-02-09 12:57:01 +01:00
Martin Hořeňovský 9952dda524 REQUIRE_THROWS_AS is now reported with expected type as well
Also updated tests to reflect this change.
2017-02-09 12:51:43 +01:00
Martin Hořeňovský 0dabd951ba expr is now cast to void in THROWS family of assertions.
This prevents Clang from complaining about unused value in expressions
containing explicit casts used in the THROW assertion macro family.

Example:
`REQUIRE_THROWS_AS(static_cast<bool>(object), std::bad_cast);` would
trigger `-Wunused-value` warning. Now it does not.

Credits to Arto Bendiken, who submitted a PR almost 3 years ago, but his
branch has since died and I was unable to merge it.
2017-01-31 18:02:11 +01:00
Martin Hořeňovský 15816c5760 Revert "use sizeof(expr) for unevaluated syntax check"
Using sizeof(expr) can trigger a compile-time error,
"lambda expressions are not allowed in an unevaluated context", when passing
expression containing lambda, like a std algorithm. This error is considered
a standard defect, as it is meant to prevent lambdas in decltype
or templates, but not in sizeof.

This reverts commit 227598af47.
2017-01-30 11:56:29 +01:00
Martin Hořeňovský 4ce11d63a6 Merge branch 'dev-performance' 2017-01-25 22:56:36 +01:00
Martin Hořeňovský 184865358c CHECK no longer stops running SECTION on exception.
This seems to be much closer to desired behaviour than the current one, where
CHECK(false) lets the execution continue, but CHECK(<throws>) does not.
2017-01-23 17:52:17 +00:00
Mickey Rose 227598af47 use sizeof(expr) for unevaluated syntax check 2017-01-19 21:25:27 +01:00
Martin Hořeňovský ee0ca512ea Force short-circuited evaluation for types that have overloaded &&.
This fixes #574.
2017-01-17 23:31:03 +01:00
Mickey Rose a1e9b841ff lazily stringify expressions 2017-01-14 21:56:16 +01:00
Phil Nash 7940d58a2f "test" expression using !! instead of static_cast to bool.
This addresses #657 while (hopefully) maintaining fix for #574
2016-05-12 19:17:55 +01:00
Phil Nash 91bfe68a75 Suppress parentheses warnings on clang and gcc
- should address #593, #528, #521, #496 (and possibly others)
2016-02-29 08:03:48 +00:00
Phil Nash ffad3a0a39 Fix as suggested in #574
Cast expression to bool to prevent custom && from defeating short-circuiting
2016-02-10 05:49:56 +00:00
Simon Warta a5fba672e1 Add missing comma when in captured expression for matchers
Such that
CHECK_THAT( hex_encode(outbuf) Equals("B5D4045C") )
becomes
CHECK_THAT( hex_encode(outbuf), Equals("B5D4045C") )
2015-12-10 08:09:10 +00:00
Phil Nash f3e7722cc6 Don't introduce Catch::Matchers namespace in macro
- this could be a breaking change - fixed up self-test code to compensate
2015-11-05 18:10:33 +00:00
Phil Nash 72868920bb Exception message assertions now work with matchers 2015-07-15 23:02:25 +01:00
Phil Nash 85de743d70 Added _THROWS_WITH macros
- asserts on exception message
2015-07-13 06:34:41 +01:00
Phil Nash 8cc1108f2b Use <= operator instead of ->* for decomposer
Allows more complex LHS expressions - and works around an Eclipse bug.
See Issues #359, #393 and #247 for details
2015-06-26 06:46:37 +01:00
Phil Nash 5eb7748a55 Changed relative #includes and made SourceLineInfo sortable (added < op) 2015-03-04 07:17:12 +00:00
Phil Nash ea33961b43 Factored out mention of "unprintable string" ("{?}") 2014-09-08 08:14:59 +01:00
Phil Nash 11cf45bc41 Fixed regression with -e 2014-06-05 18:11:31 +01:00
Phil Nash 10801c2876 Folded ExpressionResultBuilder into ResultBuilder
(even more SRP violations!)
2014-05-29 07:50:19 +01:00
Phil Nash 9438a03d5b Big assertion capture refactoring.
- moved as much logic out of the macros as possible
- moved most logic into new ResultBuilder class, which wraps ExpressionResultBuilder (may take it over next), subsumes ResultAction and also takes place of ExpressionDecomposer.

This introduces many SRP violations - but all in the name of minimising macro logic!
2014-05-28 18:53:01 +01:00
Phil Nash 5daa22dcc3 Fixed dereferenced null issue 2014-05-20 18:49:28 +01:00
Phil Nash 97150f27ac Renamed catch_tostring.hpp catch_tostring.h
- in preparation for splitting implementation into catch_tostring.hpp
2014-04-23 06:51:58 +01:00
Phil Nash 970127e488 Removed some unnecessary core macros 2014-04-16 18:01:31 +01:00
Phil Nash 1bccc03213 Secondary fix for #270 (addresses same issue with CHECK) 2014-04-12 19:20:46 +01:00
Phil Nash a176b93738 Fix for #270 (REQUIRE continues if test throws an exception).
Added test case that reproduced the bug then applied the fix.
2014-04-12 19:07:24 +01:00
Phil Nash b4625208d0 Test for FAIL that doesn’t take an argument 2013-12-14 14:30:58 +00:00
Phil Nash 274ed3ea76 Allow FAIL() to be empty 2013-12-12 23:02:31 +00:00
Phil Nash c4a089c12b Refactored a lot of code from headers into impl headers only compiled into one TU
- also added noimpl option to single header script - which only generates the non impl code
2013-12-03 18:52:41 +00:00
Phil Nash 1e2f1d1603 Fixes toString forward reference issue:
- as raised in https://github.com/philsquared/Catch/pull/195
2013-09-14 19:58:45 +01:00
Phil Nash f3d1f08c3b Removed all trailing whitespace
- addresses #105
2013-07-03 19:14:59 +01:00
Phil Nash b5fd5a6496 INFO and CAPTURE are now scoped
- SCOPED_INFO and SCOPED_CAPTURE are now just aliases
2013-06-28 17:09:57 +01:00
Phil Nash bf37e6879a Removed use of compiler specific techniques for denoting non-returning functions
- use if( Catch::isTrue( true) ) to guard throws instead
2013-04-23 20:52:49 +01:00
Phil Nash 2a9d8d9e36 Changed "const X ref"s to "X const ref"s
- Brought older code up to current convention (with the help of a Python script)
2013-04-23 18:58:56 +01:00
Phil Nash 4dd3f68dd9 Compiler capabilities clean-up
- renamed CATCH_SFINAE -> CATCH_CONFIG_SFINAE
- moved variadic macros detection into catch_compiler_capabilities.h
2013-04-22 08:19:17 +01:00
Phil Nash 2666c96d4e Fixes issue #164
- Removed spurious (re-)throw when catching unexpected exception
2013-04-20 21:04:32 +01:00
Phil Nash 3df6c0d1b4 Refactored ConsoleColour impl. Tweaked the (Windows) colours a bit.
Also fixed issue that would cause warnings on some compilers when doing REQUIRE( p ); where p is a pointer.
Moved to build 23
2013-03-11 18:38:29 +00:00
Phil Nash 207b27b3c5 Changed the way info messages are handled.
This fixes issue with SCOPED_INFO and makes output more readable.
Needs some refactoring.
2013-02-02 19:58:04 +00:00
Phil Nash d539da9030 Implemented CHECK_NO_FAIL 2012-11-13 09:44:52 +00:00
Phil Nash defca58566 negate() -> endExpression(), takes ResultDisposition 2012-11-10 18:43:23 +00:00
Phil Nash b2ef998825 Changed shouldNegate boolean to use part of ResultDisposition enum 2012-11-10 10:35:09 +00:00
Phil Nash 1af13dba97 Changed StopOnFailure boolean to an enum 2012-11-10 10:20:08 +00:00
Phil Nash ec5956f471 Fix for #134
The INTERNAL_CATCH_MSG macro, which is used by INFO, WARN and FAIL places its lines in a do…while block so it can be used after an if statement with no block
2012-11-06 07:52:28 +00:00
Phil Nash 81cb69ef18 AssertionInfo captures more info (for test cases and sections) 2012-11-04 21:09:22 +00:00
Phil Nash 2e203a1834 Fixed remaining reporting regressions 2012-10-29 19:55:13 +00:00
Phil Nash fe1d7c1d08 Small fixes and tweaks 2012-10-28 10:27:44 +00:00
Phil Nash 355b5e546d Some tidy-up 2012-10-26 09:05:36 +01:00
Phil Nash f847186ebb AssertionResultBuilder -> ExpressionResultBuilder 2012-10-26 08:45:23 +01:00
Phil Nash 8cca2f1369 ExpressionBuilder ->ExpressionDecomposer
Expression -> ExpressionLhs
2012-10-24 22:09:01 +01:00
Phil Nash e04e74f896 More AssertionResult refactoring 2012-10-24 21:59:47 +01:00
Phil Nash 1dd56d4d2b AssertionResultBuilder can be constructed from result type 2012-10-19 08:01:34 +01:00
Phil Nash e3b111a39a streamlined acceptResult 2012-10-18 22:59:16 +01:00
Phil Nash 3ad13256e1 Refactored assertion builder stuff out of expression builder 2012-10-18 08:39:44 +01:00
Phil Nash c96f9330a0 Collect assertion info up front 2012-10-17 08:14:22 +01:00
Phil Nash d16955f63a Renamed ResultInfo -> AssertionResult 2012-10-16 08:27:21 +01:00
Phil Nash 71edf8b727 isNot -> isFalse 2012-10-09 11:59:11 +01:00
Phil Nash 86e1915099 Refactoring ResultData out of ResultInfo/ Builder pt1 2012-10-05 18:35:01 +01:00
Phil Nash 36d0da0194 Started refactoring ResultInfo/Builder 2012-10-04 08:09:09 +01:00
Phil Nash ec2fccf6b8 Fixed SCOPED_INFO (#123) 2012-09-24 08:28:23 +01:00
Phil Nash da0ae952fc Renamed static registries -> registry hub 2012-08-07 07:58:34 +01:00
Phil Nash 1091ca81e6 First cut of StaticRegistries - separate from Context 2012-08-06 20:16:53 +01:00
Phil Nash abf271672f Added NotImplementedException 2012-07-05 18:37:58 +01:00
Phil Nash 46a3476731 Added nothrow command line option
Causes _THROWS family of macros to no evaluate expression
2012-06-05 20:50:47 +01:00
Phil Nash 19b2aa6187 Added cutoff option to command line
Aborts testing after a certain number of assertion failures
2012-06-01 19:40:27 +01:00
Phil Nash 7035b55832 Matchers macro uses Catch::Matchers namespace internally - so it doesn't have to be declared with "using" first 2012-05-24 08:29:03 +01:00
Phil Nash 371db8b42f Context methods are non-static - accessed via interface
This is a move towards allowing multiple contexts - with the concept of a (possibly thread local) "current" context
2012-05-21 18:52:09 +01:00
Phil Nash 2efc1146bf Reformatting 2012-05-15 07:42:26 +01:00
Phil Nash 6acb36a996 Renamed ResultBuilder -> ExpressionBuilder 2012-05-11 19:22:28 +01:00
Phil Nash 7a0cadc342 Moved ResultBuilder out into its own file 2012-05-11 19:15:54 +01:00
Phil Nash a6855f7eab Move expression classes into own file 2012-05-11 08:03:05 +01:00
Phil Nash 5ec53b2788 renamed hub -> context
(also did some reformatting)
2012-05-10 07:58:48 +01:00
Phil Nash d06dcedfdc Some more reformatting.
Also fixed some warnings
2012-05-09 08:17:51 +01:00
Phil Nash e83f839741 Renamed MutableResultInfo to ResultInfoBuilder 2012-05-08 19:32:18 +01:00
Phil Nash b5d367206b Factored MutableResultInfo into its own file 2012-05-08 19:29:51 +01:00
Phil Nash 5d1c8f2c6d Replaced all file/ line pairings with SourceLineInfo 2012-05-08 19:16:18 +01:00
Phil Nash 81a122e66a Factored toString overloads into their own file 2012-05-08 08:10:49 +01:00
Phil Nash 40b161adea Some reformating 2012-05-08 07:59:54 +01:00
Phil Nash 83a66a6255 Removed redundant const
(also fixed test counts)
2012-04-28 12:39:15 +01:00
Phil Nash 53c990a7e1 ARC support for Object-C projects 2012-03-17 18:20:06 +00:00
Phil Nash 966f5dbff2 Added initial built-in matchers for NSString (ObjC) 2012-03-04 21:18:46 +00:00
Phil Nash eca5637c58 First cut of Matcher support 2012-03-04 11:14:21 +00:00
Phil Nash 5ff4ab0a76 Suppress warning about constant conditional 2012-02-29 08:47:18 +00:00
Phil Nash f52bd35e2f made CHECK/ REQUIRE into block statements
Placed the contents of the macros into do{…}while(0) so they can be used as statements (e.g. after an if() with no braces).
Also means they now require the closing ;
2012-02-29 08:35:41 +00:00
Phil Nash 333e6e6254 Improved exception reporting
Refactored exception handling (handle more in the translator)
and report exceptions in CHECKs
2012-02-17 19:50:59 +00:00
Phil Nash a162e22fa3 Added CHECKED_IF and CHECKED_ELSE 2012-02-10 08:30:13 +00:00
Phil Nash 4094e7fe3d Merge branch 'master' of github.com:philsquared/Catch 2011-09-29 18:42:32 +01:00
Phil Nash a713ce0264 Simplified streamable detection 2011-09-29 09:01:59 +01:00
Wichert Akkerman 6d18d4b189 Fix compiler warnings
Fix base classes without virtual destructors and missing initialisors.
2011-09-23 10:03:52 +02:00
Phil Nash 08a1b51987 Hold values by value and references by reference 2011-09-19 18:19:13 +01:00
Phil Nash 4d0a8d96e6 Fixed issue with evaluating static bools 2011-08-09 08:18:27 +01:00
Phil Nash 3723b527f5 Some fixes for string literals on LHS 2011-07-15 08:07:44 +01:00
Phil Nash 1adebefb50 Fixed tests with string literal on lhs 2011-06-29 19:22:56 +01:00
Phil Nash eb2964e4ae Disambiguated some locally scoped names 2011-06-23 08:13:25 +01:00
Phil Nash 4b24490e1a Fixed Github Issue #32: "ResultBuilder& operator << should use toString" 2011-05-11 10:06:28 +01:00
Phil Nash d7c203c3e9 Factored Approx out into own file 2011-04-28 08:03:28 +01:00
Phil Nash 38edb9fa95 Removed bool warning 2011-04-26 08:35:52 +01:00
Phil Nash 823ea3efd4 Re-org 2011-04-26 08:32:40 +01:00