Added clean-up

Clean-up statics at the end of main to avoid added noise when looking for leaks
This commit is contained in:
Phil Nash 2012-02-18 09:58:30 +00:00
parent 333e6e6254
commit dd5b9c2ae5
4 changed files with 58 additions and 8 deletions

View File

@ -24,14 +24,14 @@ int main (int argc, char * const argv[])
int result = Catch::Main( argc, (char* const*)argv ); int result = Catch::Main( argc, (char* const*)argv );
[pool drain]; [pool drain];
return result;
#else #else
return Catch::Main( argc, argv ); int result =Catch::Main( argc, argv );
#endif #endif
Catch::Hub::cleanUp();
return result;
} }
#endif // TWOBLUECUBES_CATCH_DEFAULT_MAIN_HPP_INCLUDED #endif // TWOBLUECUBES_CATCH_DEFAULT_MAIN_HPP_INCLUDED

View File

@ -77,7 +77,13 @@ namespace Catch
static bool advanceGeneratorsForCurrentTest static bool advanceGeneratorsForCurrentTest
(); ();
static void cleanUp
();
private: private:
static Hub*& singleInstance();
GeneratorsForTest* findGeneratorsForCurrentTest GeneratorsForTest* findGeneratorsForCurrentTest
(); ();

View File

@ -32,8 +32,27 @@ namespace Catch
Hub& Hub::me Hub& Hub::me
() ()
{ {
static Hub hub; Hub*& hub = singleInstance();
if( !hub )
hub = new Hub();
return *hub;
}
///////////////////////////////////////////////////////////////////////////
void Hub::cleanUp
()
{
Hub*& hub = singleInstance();
delete hub;
hub = NULL;
}
///////////////////////////////////////////////////////////////////////////
Hub*& Hub::singleInstance()
{
static Hub* hub = NULL;
return hub; return hub;
} }
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////

View File

@ -370,7 +370,13 @@ namespace Catch
static bool advanceGeneratorsForCurrentTest static bool advanceGeneratorsForCurrentTest
(); ();
static void cleanUp
();
private: private:
static Hub*& singleInstance();
GeneratorsForTest* findGeneratorsForCurrentTest GeneratorsForTest* findGeneratorsForCurrentTest
(); ();
@ -4513,8 +4519,27 @@ namespace Catch
Hub& Hub::me Hub& Hub::me
() ()
{ {
static Hub hub; Hub*& hub = singleInstance();
if( !hub )
hub = new Hub();
return *hub;
}
///////////////////////////////////////////////////////////////////////////
void Hub::cleanUp
()
{
Hub*& hub = singleInstance();
delete hub;
hub = NULL;
}
///////////////////////////////////////////////////////////////////////////
Hub*& Hub::singleInstance()
{
static Hub* hub = NULL;
return hub; return hub;
} }
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
@ -6276,16 +6301,16 @@ int main (int argc, char * const argv[])
int result = Catch::Main( argc, (char* const*)argv ); int result = Catch::Main( argc, (char* const*)argv );
[pool drain]; [pool drain];
return result;
#else #else
return Catch::Main( argc, argv ); int result =Catch::Main( argc, argv );
#endif #endif
Catch::Hub::cleanUp();
return result;
} }
#endif #endif
////// //////