Improved error handling for --abort as per #108

This commit is contained in:
Phil Nash 2012-07-28 20:22:40 +01:00
parent 6f220863cf
commit b084562b3b
3 changed files with 16 additions and 3 deletions

View File

@ -153,7 +153,7 @@ namespace Catch {
cmd.raiseError( "Expected a name" );
config.name = cmd[0];
}
if( Command cmd = parser.find( "-a", "--abort" ) ) {
if( cmd.argsCount() > 1 )
cmd.raiseError( "Only accepts 0-1 arguments" );
@ -162,6 +162,8 @@ namespace Catch {
std::stringstream ss;
ss << cmd[0];
ss >> threshold;
if( ss.fail() || threshold <= 0 )
cmd.raiseError( "threshold must be a number greater than zero" );
}
config.cutoff = threshold;
}

View File

@ -68,6 +68,7 @@ template<size_t size>
std::string parseIntoConfigAndReturnError( const char * (&argv)[size], Catch::ConfigData& config ) {
try {
Catch::parseIntoConfig( Catch::CommandParser( size, argv ), config );
FAIL( "expected exception" );
}
catch( std::exception& ex ) {
return ex.what();
@ -179,7 +180,15 @@ TEST_CASE( "selftest/parser/2", "ConfigData" ) {
REQUIRE( config.cutoff == 2 );
}
SECTION( "-a/error", "cutoff only takes one argument" ) {
SECTION( "-a/error/0", "" ) {
const char* argv[] = { "test", "-a", "0" };
REQUIRE_THAT( parseIntoConfigAndReturnError( argv, config ), Contains( "greater than zero" ) );
}
SECTION( "-a/error/non numeric", "" ) {
const char* argv[] = { "test", "-a", "oops" };
REQUIRE_THAT( parseIntoConfigAndReturnError( argv, config ), Contains( "greater than zero" ) );
}
SECTION( "-a/error/two args", "cutoff only takes one argument" ) {
const char* argv[] = { "test", "-a", "1", "2" };
REQUIRE_THAT( parseIntoConfigAndReturnError( argv, config ), Contains( "accepts" ) );
}

View File

@ -1,5 +1,5 @@
/*
* Generated: 2012-07-23 08:24:23.434402
* Generated: 2012-07-28 20:22:25.519628
* ----------------------------------------------------------
* This file has been merged from multiple headers. Please don't edit it directly
* Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved.
@ -3650,6 +3650,8 @@ namespace Catch {
std::stringstream ss;
ss << cmd[0];
ss >> threshold;
if( ss.fail() || threshold <= 0 )
cmd.raiseError( "threshold must be a number greater than zero" );
}
config.cutoff = threshold;
}