mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 20:27:11 +01:00 
			
		
		
		
	Factored ConfigData out of data
This commit is contained in:
		| @@ -60,200 +60,154 @@ TEST_CASE( "meta/Misc/Sections", "looped tests" ) { | ||||
| #include "../../include/reporters/catch_reporter_junit.hpp" | ||||
|  | ||||
| template<size_t size> | ||||
| bool parseIntoConfig( const char * (&argv)[size], Catch::Config& config ) { | ||||
|     return Catch::parseIntoConfig( Catch::CommandParser( size, argv ), config ); | ||||
| void parseIntoConfig( const char * (&argv)[size], Catch::ConfigData& config ) { | ||||
|     Catch::parseIntoConfig( Catch::CommandParser( size, argv ), config ); | ||||
| } | ||||
|  | ||||
| TEST_CASE( "selftest/parser", "" ) { | ||||
| template<size_t size> | ||||
| std::string parseIntoConfigAndReturnError( const char * (&argv)[size], Catch::ConfigData& config ) { | ||||
|     try { | ||||
|         Catch::parseIntoConfig( Catch::CommandParser( size, argv ), config ); | ||||
|     } | ||||
|     catch( std::exception& ex ) { | ||||
|         return ex.what(); | ||||
|     } | ||||
|     return ""; | ||||
| } | ||||
|  | ||||
| TEST_CASE( "selftest/parser/2", "ConfigData" ) { | ||||
|  | ||||
|     Catch::ConfigData config; | ||||
|  | ||||
|     SECTION( "default", "" ) { | ||||
|         const char* argv[] = { "test" }; | ||||
|         Catch::Config config; | ||||
|         CHECK( parseIntoConfig( argv, config ) ); | ||||
|         CHECK_NOTHROW( parseIntoConfig( argv, config ) ); | ||||
|          | ||||
|         CHECK( config.getTestSpecs().empty() ); | ||||
|         CHECK( config.shouldDebugBreak() == false ); | ||||
|         CHECK( config.showHelp() == false ); | ||||
|         CHECK( config.getCutoff() == -1 ); | ||||
|         CHECK( config.allowThrows() == true ); | ||||
|         CHECK( dynamic_cast<Catch::BasicReporter*>( config.getReporter().get() ) ); | ||||
|         CHECK( config.testSpecs.empty() ); | ||||
|         CHECK( config.shouldDebugBreak == false ); | ||||
|         CHECK( config.cutoff == -1 ); | ||||
|         CHECK( config.allowThrows == true ); | ||||
|         CHECK( config.reporter.empty() ); | ||||
|     } | ||||
|      | ||||
|     SECTION( "test lists", "" ) { | ||||
|         SECTION( "-t/1", "Specify one test case using -t" ) { | ||||
|             const char* argv[] = { "test", "-t", "test1" }; | ||||
|             Catch::Config config; | ||||
|             CHECK( parseIntoConfig( argv, config ) ); | ||||
|             CHECK_NOTHROW( parseIntoConfig( argv, config ) ); | ||||
|              | ||||
|             REQUIRE( config.getTestSpecs().size() == 1 ); | ||||
|             REQUIRE( config.getTestSpecs()[0] == "test1" ); | ||||
|             REQUIRE( config.testSpecs.size() == 1 ); | ||||
|             REQUIRE( config.testSpecs[0] == "test1" ); | ||||
|         } | ||||
|  | ||||
|         SECTION( "--test/1", "Specify one test case using --test" ) { | ||||
|             const char* argv[] = { "test", "--test", "test1" }; | ||||
|             Catch::Config config; | ||||
|             CHECK( parseIntoConfig( argv, config ) ); | ||||
|             CHECK_NOTHROW( parseIntoConfig( argv, config ) ); | ||||
|              | ||||
|             REQUIRE( config.getTestSpecs().size() == 1 ); | ||||
|             REQUIRE( config.getTestSpecs()[0] == "test1" ); | ||||
|             REQUIRE( config.testSpecs.size() == 1 ); | ||||
|             REQUIRE( config.testSpecs[0] == "test1" ); | ||||
|         } | ||||
|  | ||||
|         SECTION( "-t/2", "Specify two test cases using -t" ) { | ||||
|             const char* argv[] = { "test", "-t", "test1", "test2" }; | ||||
|             Catch::Config config; | ||||
|             CHECK( parseIntoConfig( argv, config ) ); | ||||
|             CHECK_NOTHROW( parseIntoConfig( argv, config ) ); | ||||
|  | ||||
|             REQUIRE( config.getTestSpecs().size() == 2 ); | ||||
|             REQUIRE( config.getTestSpecs()[0] == "test1" ); | ||||
|             REQUIRE( config.getTestSpecs()[1] == "test2" ); | ||||
|             REQUIRE( config.testSpecs.size() == 2 ); | ||||
|             REQUIRE( config.testSpecs[0] == "test1" ); | ||||
|             REQUIRE( config.testSpecs[1] == "test2" ); | ||||
|         } | ||||
|  | ||||
|         SECTION( "-t/0", "When no test names are supplied it is an error" ) { | ||||
|             const char* argv[] = { "test", "-t" }; | ||||
|             Catch::Config config; | ||||
|             CHECK( parseIntoConfig( argv, config ) == false ); | ||||
|              | ||||
|             REQUIRE_THAT( config.getMessage(), Contains( "at least one" ) ); | ||||
|             REQUIRE_THAT( parseIntoConfigAndReturnError( argv, config ), Contains( "at least one" ) ); | ||||
|         } | ||||
|     } | ||||
|      | ||||
|     SECTION( "reporter", "" ) { | ||||
|         SECTION( "-r/basic", "" ) { | ||||
|             const char* argv[] = { "test", "-reporter", "basic" }; | ||||
|             Catch::Config config; | ||||
|             CHECK( parseIntoConfig( argv, config ) ); | ||||
|             const char* argv[] = { "test", "-r", "basic" }; | ||||
|             CHECK_NOTHROW( parseIntoConfig( argv, config ) ); | ||||
|              | ||||
|             REQUIRE( dynamic_cast<Catch::BasicReporter*>( config.getReporter().get() ) ); | ||||
|             REQUIRE( config.reporter == "basic" ); | ||||
|         } | ||||
|         SECTION( "-r/xml", "" ) { | ||||
|             const char* argv[] = { "test", "-r", "xml" }; | ||||
|             Catch::Config config; | ||||
|             CHECK( parseIntoConfig( argv, config ) ); | ||||
|             CHECK_NOTHROW( parseIntoConfig( argv, config ) ); | ||||
|              | ||||
|             REQUIRE( dynamic_cast<Catch::XmlReporter*>( config.getReporter().get() ) ); | ||||
|             REQUIRE( config.reporter == "xml" ); | ||||
|         } | ||||
|         SECTION( "-r/junit", "" ) { | ||||
|             const char* argv[] = { "test", "-r", "junit" }; | ||||
|             Catch::Config config; | ||||
|             CHECK( parseIntoConfig( argv, config ) ); | ||||
|         SECTION( "--reporter/junit", "" ) { | ||||
|             const char* argv[] = { "test", "--reporter", "junit" }; | ||||
|             CHECK_NOTHROW( parseIntoConfig( argv, config ) ); | ||||
|              | ||||
|             REQUIRE( dynamic_cast<Catch::JunitReporter*>( config.getReporter().get() ) ); | ||||
|             REQUIRE( config.reporter == "junit" ); | ||||
|         } | ||||
|         SECTION( "-r/error", "reporter config only accepts one argument" ) { | ||||
|             const char* argv[] = { "test", "-r", "one", "two" }; | ||||
|             Catch::Config config; | ||||
|             CHECK( parseIntoConfig( argv, config ) == false ); | ||||
|              | ||||
|             REQUIRE_THAT( config.getMessage(), Contains( "one argument" ) ); | ||||
|             REQUIRE_THAT( parseIntoConfigAndReturnError( argv, config ), Contains( "one argument" ) ); | ||||
|         } | ||||
|     } | ||||
|      | ||||
|     SECTION( "debugger", "" ) { | ||||
|         SECTION( "-b", "" ) { | ||||
|             const char* argv[] = { "test", "-b" }; | ||||
|             Catch::Config config; | ||||
|             CHECK( parseIntoConfig( argv, config ) ); | ||||
|             CHECK_NOTHROW( parseIntoConfig( argv, config ) ); | ||||
|              | ||||
|             REQUIRE( config.shouldDebugBreak() == true ); | ||||
|             REQUIRE( config.shouldDebugBreak == true ); | ||||
|         } | ||||
|         SECTION( "--break", "" ) { | ||||
|             const char* argv[] = { "test", "--break" }; | ||||
|             Catch::Config config; | ||||
|             CHECK( parseIntoConfig( argv, config ) ); | ||||
|             CHECK_NOTHROW( parseIntoConfig( argv, config ) ); | ||||
|              | ||||
|             REQUIRE( config.shouldDebugBreak() ); | ||||
|             REQUIRE( config.shouldDebugBreak ); | ||||
|         } | ||||
|         SECTION( "-b", "break option has no arguments" ) { | ||||
|             const char* argv[] = { "test", "-b", "unexpected" }; | ||||
|             Catch::Config config; | ||||
|             CHECK( parseIntoConfig( argv, config ) == false ); | ||||
|              | ||||
|             REQUIRE_THAT( config.getMessage(), Contains( "not accept" ) ); | ||||
|             REQUIRE_THAT( parseIntoConfigAndReturnError( argv, config ), Contains( "not accept" ) ); | ||||
|         } | ||||
|     } | ||||
|      | ||||
|     SECTION( "help", "" ) { | ||||
|         SECTION( "-h", "" ) { | ||||
|             const char* argv[] = { "test", "-h" }; | ||||
|             Catch::Config config; | ||||
|             CHECK( parseIntoConfig( argv, config ) ); | ||||
|  | ||||
|             REQUIRE( config.showHelp() ); | ||||
|         } | ||||
|         SECTION( "-?", "" ) { | ||||
|             const char* argv[] = { "test", "-?" }; | ||||
|             Catch::Config config; | ||||
|             CHECK( parseIntoConfig( argv, config ) ); | ||||
|  | ||||
|             REQUIRE( config.showHelp() ); | ||||
|         } | ||||
|         SECTION( "--help", "" ) { | ||||
|             const char* argv[] = { "test", "--help" }; | ||||
|             Catch::Config config; | ||||
|             CHECK( parseIntoConfig( argv, config ) ); | ||||
|  | ||||
|             REQUIRE( config.showHelp() ); | ||||
|         } | ||||
|         SECTION( "-h", "help option has no arguments" ) { | ||||
|             const char* argv[] = { "test", "-h", "unexpected" }; | ||||
|             Catch::Config config; | ||||
|             CHECK( parseIntoConfig( argv, config ) == false ); | ||||
|              | ||||
|             REQUIRE_THAT( config.getMessage(), Contains( "not accept" ) ); | ||||
|         } | ||||
|     } | ||||
|      | ||||
|          | ||||
|     SECTION( "abort", "" ) { | ||||
|         SECTION( "-a", "" ) { | ||||
|             const char* argv[] = { "test", "-a" }; | ||||
|             Catch::Config config; | ||||
|             CHECK( parseIntoConfig( argv, config ) ); | ||||
|             CHECK_NOTHROW( parseIntoConfig( argv, config ) ); | ||||
|  | ||||
|             REQUIRE( config.getCutoff() == 1 ); | ||||
|             REQUIRE( config.cutoff == 1 ); | ||||
|         } | ||||
|         SECTION( "-a/2", "" ) { | ||||
|             const char* argv[] = { "test", "-a", "2" }; | ||||
|             Catch::Config config; | ||||
|             CHECK( parseIntoConfig( argv, config ) ); | ||||
|             CHECK_NOTHROW( parseIntoConfig( argv, config ) ); | ||||
|  | ||||
|             REQUIRE( config.getCutoff() == 2 ); | ||||
|             REQUIRE( config.cutoff == 2 ); | ||||
|         } | ||||
|         SECTION( "-a/error", "cutoff only takes one argument" ) { | ||||
|             const char* argv[] = { "test", "-a", "1", "2" }; | ||||
|             Catch::Config config; | ||||
|             CHECK( parseIntoConfig( argv, config ) == false ); | ||||
|  | ||||
|             REQUIRE_THAT( config.getMessage(), Contains( "accepts" ) ); | ||||
|             REQUIRE_THAT( parseIntoConfigAndReturnError( argv, config ), Contains( "accepts" ) ); | ||||
|         } | ||||
|     } | ||||
|      | ||||
|     SECTION( "nothrow", "" ) { | ||||
|         SECTION( "-nt", "" ) { | ||||
|             const char* argv[] = { "test", "-nt" }; | ||||
|             Catch::Config config; | ||||
|             CHECK( parseIntoConfig( argv, config ) ); | ||||
|             CHECK_NOTHROW( parseIntoConfig( argv, config ) ); | ||||
|  | ||||
|             REQUIRE( config.allowThrows() == false ); | ||||
|             REQUIRE( config.allowThrows == false ); | ||||
|         } | ||||
|         SECTION( "--nothrow", "" ) { | ||||
|             const char* argv[] = { "test", "--nothrow" }; | ||||
|             Catch::Config config; | ||||
|             CHECK( parseIntoConfig( argv, config ) ); | ||||
|             CHECK_NOTHROW( parseIntoConfig( argv, config ) ); | ||||
|  | ||||
|             REQUIRE( config.allowThrows() == false ); | ||||
|             REQUIRE( config.allowThrows == false ); | ||||
|         } | ||||
|      | ||||
|     } | ||||
|     SECTION( "combinations", "" ) { | ||||
|         SECTION( "-a -b", "" ) { | ||||
|             const char* argv[] = { "test", "-a", "-b", "-nt" }; | ||||
|             Catch::Config config; | ||||
|             CHECK( parseIntoConfig( argv, config ) ); | ||||
|             CHECK_NOTHROW( parseIntoConfig( argv, config ) ); | ||||
|  | ||||
|             CHECK( config.getCutoff() == 1 ); | ||||
|             CHECK( config.shouldDebugBreak() ); | ||||
|             CHECK( config.allowThrows() == false ); | ||||
|             CHECK( config.cutoff == 1 ); | ||||
|             CHECK( config.shouldDebugBreak ); | ||||
|             CHECK( config.allowThrows == false ); | ||||
|         } | ||||
|     } | ||||
|      | ||||
|     }         | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Phil Nash
					Phil Nash