mirror of
https://github.com/catchorg/Catch2.git
synced 2025-05-28 15:39:27 +00:00
Removed "singleton" method from context
There is now a global "currentContext" - but Context itself is not aware of it
This commit is contained in:
parent
61319a9bc1
commit
9fa9d4279c
2 changed files with 17 additions and 24 deletions
|
@ -51,10 +51,6 @@ namespace Catch {
|
|||
Context( const Context& );
|
||||
void operator=( const Context& );
|
||||
|
||||
public: // friends
|
||||
friend IContext& getCurrentContext() { return Context::getCurrent(); }
|
||||
friend IMutableContext& getCurrentMutableContext() { return Context::getCurrent(); }
|
||||
|
||||
public: // IContext
|
||||
virtual IResultCapture& getResultCapture();
|
||||
virtual IRunner& getRunner();
|
||||
|
@ -72,9 +68,9 @@ namespace Catch {
|
|||
static std::streambuf* createStreamBuf( const std::string& streamName );
|
||||
static void cleanUp();
|
||||
|
||||
friend IMutableContext& getCurrentMutableContext();
|
||||
|
||||
private:
|
||||
static Context& getCurrent();
|
||||
static Context*& singleInstance();
|
||||
GeneratorsForTest* findGeneratorsForCurrentTest();
|
||||
GeneratorsForTest& getGeneratorsForCurrentTest();
|
||||
|
||||
|
|
|
@ -17,7 +17,17 @@
|
|||
|
||||
namespace Catch {
|
||||
|
||||
|
||||
namespace {
|
||||
Context* currentHub = NULL;
|
||||
}
|
||||
IMutableContext& getCurrentMutableContext() {
|
||||
if( !currentHub )
|
||||
currentHub = new Context();
|
||||
return *currentHub;
|
||||
}
|
||||
IContext& getCurrentContext() {
|
||||
return getCurrentMutableContext();
|
||||
}
|
||||
|
||||
Context::Context()
|
||||
: m_reporterRegistry( new ReporterRegistry ),
|
||||
|
@ -25,22 +35,9 @@ namespace Catch {
|
|||
m_exceptionTranslatorRegistry( new ExceptionTranslatorRegistry )
|
||||
{}
|
||||
|
||||
Context*& Context::singleInstance() {
|
||||
static Context* hub = NULL;
|
||||
return hub;
|
||||
}
|
||||
|
||||
Context& Context::getCurrent() {
|
||||
Context*& hub = singleInstance();
|
||||
if( !hub )
|
||||
hub = new Context();
|
||||
return *hub;
|
||||
}
|
||||
|
||||
void Context::cleanUp() {
|
||||
Context*& hub = singleInstance();
|
||||
delete hub;
|
||||
hub = NULL;
|
||||
delete currentHub;
|
||||
currentHub = NULL;
|
||||
}
|
||||
|
||||
void Context::setRunner( IRunner* runner ) {
|
||||
|
@ -80,7 +77,7 @@ namespace Catch {
|
|||
}
|
||||
|
||||
GeneratorsForTest* Context::findGeneratorsForCurrentTest() {
|
||||
std::string testName = getCurrentContext().getResultCapture().getCurrentTestName();
|
||||
std::string testName = getResultCapture().getCurrentTestName();
|
||||
|
||||
std::map<std::string, GeneratorsForTest*>::const_iterator it =
|
||||
m_generatorsByTestName.find( testName );
|
||||
|
@ -92,7 +89,7 @@ namespace Catch {
|
|||
GeneratorsForTest& Context::getGeneratorsForCurrentTest() {
|
||||
GeneratorsForTest* generators = findGeneratorsForCurrentTest();
|
||||
if( !generators ) {
|
||||
std::string testName = getCurrentContext().getResultCapture().getCurrentTestName();
|
||||
std::string testName = getResultCapture().getCurrentTestName();
|
||||
generators = new GeneratorsForTest();
|
||||
m_generatorsByTestName.insert( std::make_pair( testName, generators ) );
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue