mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 12:17:11 +01:00 
			
		
		
		
	Improved error handling for --abort as per #108
This commit is contained in:
		| @@ -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; | ||||
|         } | ||||
|   | ||||
| @@ -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" ) ); | ||||
|         } | ||||
|   | ||||
| @@ -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; | ||||
|         } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Phil Nash
					Phil Nash