diff --git a/include/internal/catch_list.cpp b/include/internal/catch_list.cpp index 6010ec15..e1d99222 100644 --- a/include/internal/catch_list.cpp +++ b/include/internal/catch_list.cpp @@ -12,6 +12,7 @@ #include "catch_interfaces_reporter.h" #include "catch_interfaces_testcase.h" +#include "catch_context.h" #include "catch_stream.h" #include "catch_text.h" @@ -146,15 +147,16 @@ namespace Catch { return factories.size(); } - Option list( Config const& config ) { + Option list( std::shared_ptr const& config ) { Option listedCount; - if( config.listTests() ) - listedCount = listedCount.valueOr(0) + listTests( config ); - if( config.listTestNamesOnly() ) - listedCount = listedCount.valueOr(0) + listTestsNamesOnly( config ); - if( config.listTags() ) - listedCount = listedCount.valueOr(0) + listTags( config ); - if( config.listReporters() ) + getCurrentMutableContext().setConfig( config ); + if( config->listTests() ) + listedCount = listedCount.valueOr(0) + listTests( *config ); + if( config->listTestNamesOnly() ) + listedCount = listedCount.valueOr(0) + listTestsNamesOnly( *config ); + if( config->listTags() ) + listedCount = listedCount.valueOr(0) + listTags( *config ); + if( config->listReporters() ) listedCount = listedCount.valueOr(0) + listReporters(); return listedCount; } diff --git a/include/internal/catch_list.h b/include/internal/catch_list.h index bd29d970..cea7bbab 100644 --- a/include/internal/catch_list.h +++ b/include/internal/catch_list.h @@ -31,7 +31,7 @@ namespace Catch { std::size_t listReporters(); - Option list( Config const& config ); + Option list( std::shared_ptr const& config ); } // end namespace Catch diff --git a/include/internal/catch_session.cpp b/include/internal/catch_session.cpp index 6224fbe6..44b45dbc 100644 --- a/include/internal/catch_session.cpp +++ b/include/internal/catch_session.cpp @@ -10,6 +10,7 @@ #include "catch_console_colour.h" #include "catch_enforce.h" #include "catch_list.h" +#include "catch_context.h" #include "catch_run_context.h" #include "catch_stream.h" #include "catch_test_spec.h" @@ -170,6 +171,8 @@ namespace Catch { return 1; auto result = m_cli.parse( clara::Args( argc, argv ) ); + config(); + getCurrentMutableContext().setConfig( m_config ); if( !result ) { Catch::cerr() << Colour( Colour::Red ) @@ -262,7 +265,7 @@ namespace Catch { applyFilenamesAsTags( *m_config ); // Handle list request - if( Option listed = list( config() ) ) + if( Option listed = list( m_config ) ) return static_cast( *listed ); auto totals = runTests( m_config );