CTest: Add cmCTestOptionalLog macro

cmCTestOptionalLog takes a boolean argument that indicates
whether or not the message should be suppressed.  Note that
error messages will still be printed, even if suppression is
requested.  This macro will allow us to provide more
fine-grained control over what messages CTest prints to the
console.
This commit is contained in:
Zack Galbreath 2015-02-16 15:24:55 -05:00 committed by Brad King
parent e2b9e7f7bc
commit 12db113944
2 changed files with 28 additions and 12 deletions

View File

@ -2741,10 +2741,11 @@ void cmCTest::DetermineNextDayStop()
}
//----------------------------------------------------------------------
void cmCTest::SetCTestConfiguration(const char *name, const char* value)
void cmCTest::SetCTestConfiguration(const char *name, const char* value,
bool suppress)
{
cmCTestLog(this, HANDLER_VERBOSE_OUTPUT, "SetCTestConfiguration:"
<< name << ":" << (value ? value : "(null)") << "\n");
cmCTestOptionalLog(this, HANDLER_VERBOSE_OUTPUT, "SetCTestConfiguration:"
<< name << ":" << (value ? value : "(null)") << "\n", suppress);
if ( !name )
{
@ -2858,7 +2859,7 @@ void cmCTest::SetConfigType(const char* ct)
//----------------------------------------------------------------------
bool cmCTest::SetCTestConfigurationFromCMakeVariable(cmMakefile* mf,
const char* dconfig, const std::string& cmake_var)
const char* dconfig, const std::string& cmake_var, bool suppress)
{
const char* ctvar;
ctvar = mf->GetDefinition(cmake_var);
@ -2866,10 +2867,10 @@ bool cmCTest::SetCTestConfigurationFromCMakeVariable(cmMakefile* mf,
{
return false;
}
cmCTestLog(this, HANDLER_VERBOSE_OUTPUT,
"SetCTestConfigurationFromCMakeVariable:"
<< dconfig << ":" << cmake_var << std::endl);
this->SetCTestConfiguration(dconfig, ctvar);
cmCTestOptionalLog(this, HANDLER_VERBOSE_OUTPUT,
"SetCTestConfigurationFromCMakeVariable:" << dconfig << ":" <<
cmake_var << std::endl, suppress);
this->SetCTestConfiguration(dconfig, ctvar, suppress);
return true;
}
@ -3034,12 +3035,17 @@ void cmCTest::InitStreams()
this->StreamErr = &std::cerr;
}
void cmCTest::Log(int logType, const char* file, int line, const char* msg)
void cmCTest::Log(int logType, const char* file, int line, const char* msg,
bool suppress)
{
if ( !msg || !*msg )
{
return;
}
if ( suppress && logType != cmCTest::ERROR_MESSAGE )
{
return;
}
if ( this->OutputLogFile )
{
bool display = true;

View File

@ -33,6 +33,14 @@ class cmCTestStartCommand;
cmCTestLog_msg.str().c_str());\
} while ( 0 )
#define cmCTestOptionalLog(ctSelf, logType, msg, suppress) \
do { \
std::ostringstream cmCTestLog_msg; \
cmCTestLog_msg << msg; \
(ctSelf)->Log(cmCTest::logType, __FILE__, __LINE__,\
cmCTestLog_msg.str().c_str(), suppress);\
} while ( 0 )
#ifdef cerr
# undef cerr
#endif
@ -173,7 +181,8 @@ public:
static int GetTestModelFromString(const char* str);
static std::string CleanString(const std::string& str);
std::string GetCTestConfiguration(const std::string& name);
void SetCTestConfiguration(const char *name, const char* value);
void SetCTestConfiguration(const char *name, const char* value,
bool suppress=false);
void EmptyCTestConfiguration();
/**
@ -332,7 +341,7 @@ public:
* Set the CTest variable from CMake variable
*/
bool SetCTestConfigurationFromCMakeVariable(cmMakefile* mf,
const char* dconfig, const std::string& cmake_var);
const char* dconfig, const std::string& cmake_var, bool suppress=false);
//! Make string safe to be send as an URL
static std::string MakeURLSafe(const std::string&);
@ -376,7 +385,8 @@ public:
};
//! Add log to the output
void Log(int logType, const char* file, int line, const char* msg);
void Log(int logType, const char* file, int line, const char* msg,
bool suppress=false);
//! Get the version of dart server
int GetDartVersion() { return this->DartVersion; }