console reporter:

Always print test case + sections in header for every new section.
Group sections into single block
Tweaked BDD mappings to print out nicely with above
This commit is contained in:
Phil Nash 2013-01-15 23:14:52 +00:00
parent 097282e00e
commit f8ba2277d3
4 changed files with 411 additions and 279 deletions

View File

@ -79,14 +79,12 @@ namespace Catch
struct ThreadedSectionInfo : SectionInfo, SharedImpl<> { struct ThreadedSectionInfo : SectionInfo, SharedImpl<> {
ThreadedSectionInfo( SectionInfo const& _sectionInfo, Ptr<ThreadedSectionInfo> const& _parent = Ptr<ThreadedSectionInfo>() ) ThreadedSectionInfo( SectionInfo const& _sectionInfo, Ptr<ThreadedSectionInfo> const& _parent = Ptr<ThreadedSectionInfo>() )
: SectionInfo( _sectionInfo ), : SectionInfo( _sectionInfo ),
parent( _parent ), parent( _parent )
printed( false )
{} {}
virtual ~ThreadedSectionInfo(); virtual ~ThreadedSectionInfo();
std::vector<Ptr<ThreadedSectionInfo> > children; std::vector<Ptr<ThreadedSectionInfo> > children;
Ptr<ThreadedSectionInfo> parent; Ptr<ThreadedSectionInfo> parent;
bool printed;
}; };
struct AssertionStats { struct AssertionStats {

View File

@ -213,7 +213,7 @@ namespace Catch {
void lazyPrint() { void lazyPrint() {
bool needsNewline = unusedTestCaseInfo || ( currentSectionInfo && !currentSectionInfo->printed ); bool needsNewline = unusedTestCaseInfo || currentSectionInfo;
if( testRunInfo ) if( testRunInfo )
lazyPrintRunInfo(); lazyPrintRunInfo();
@ -221,7 +221,7 @@ namespace Catch {
lazyPrintGroupInfo(); lazyPrintGroupInfo();
if( unusedTestCaseInfo ) if( unusedTestCaseInfo )
lazyPrintTestCaseInfo(); lazyPrintTestCaseInfo();
if( currentSectionInfo && !currentSectionInfo->printed ) if( currentSectionInfo)
lazyPrintSectionInfo(); lazyPrintSectionInfo();
if( needsNewline ) if( needsNewline )
stream << "\n"; stream << "\n";
@ -285,7 +285,6 @@ namespace Catch {
else else
stream << inset; stream << inset;
stream << (*it)->name << "\n"; stream << (*it)->name << "\n";
// (*it)->printed = true; // !TBD remove flag?
} }
stream << getDashes() << std::endl; stream << getDashes() << std::endl;
unusedSectionInfo.reset(); unusedSectionInfo.reset();

File diff suppressed because it is too large Load Diff

View File

@ -12,31 +12,22 @@
#include "catch.hpp" #include "catch.hpp"
#define STORY( a, b ) // !TBD: story scenarios map to class based tests
#define SCENARIO( storyName, desc ) TEST_CASE( desc, "" ) #define SCENARIO( name, tags ) TEST_CASE( "Scenario: " name, tags )
#define GIVEN( desc ) SECTION( desc, "" ) #define GIVEN( desc ) SECTION( "Given: " desc, "" )
#define WHEN( desc ) SECTION( desc, "" ) #define WHEN( desc ) SECTION( "When: " desc, "" )
#define THEN( desc ) SECTION( desc, "" ) #define THEN( desc ) SECTION( "Then: " desc, "" )
inline bool itDoesThis(){ return true; } inline bool itDoesThis(){ return true; }
STORY( storyName, "once upon a time" ) SCENARIO( "Do that thing with the thing", "[tags]" ) {
GIVEN( "This stuff exists" ) {
SCENARIO( storyName, "scenario name" )
{
GIVEN( "This stuff exists" )
{
// make stuff exist // make stuff exist
WHEN( "I do this" ) {
WHEN( "I do this" )
{
// do this // do this
THEN( "it should do this") THEN( "it should do this")
{
REQUIRE( itDoesThis() ); REQUIRE( itDoesThis() );
} }
}
} }
} }