Commit 9ff7fdc7 authored by Bill Hoffman's avatar Bill Hoffman
Browse files

ENH: add the ability to block popup error dialogs in tests on windows

parent 99a1ec6c
...@@ -359,6 +359,7 @@ cmCTest::cmCTest() ...@@ -359,6 +359,7 @@ cmCTest::cmCTest()
m_ShowOnly = false; m_ShowOnly = false;
m_RunConfigurationScript = false; m_RunConfigurationScript = false;
m_TestModel = cmCTest::EXPERIMENTAL; m_TestModel = cmCTest::EXPERIMENTAL;
m_InteractiveDebugMode = true;
m_TimeOut = 0; m_TimeOut = 0;
m_CompatibilityMode = 0; m_CompatibilityMode = 0;
int cc; int cc;
...@@ -370,6 +371,11 @@ cmCTest::cmCTest() ...@@ -370,6 +371,11 @@ cmCTest::cmCTest()
int cmCTest::Initialize() int cmCTest::Initialize()
{ {
if(!m_InteractiveDebugMode)
{
this->BlockTestErrorDiagnostics();
}
m_ToplevelPath = cmSystemTools::GetCurrentWorkingDirectory(); m_ToplevelPath = cmSystemTools::GetCurrentWorkingDirectory();
cmSystemTools::ConvertToUnixSlashes(m_ToplevelPath); cmSystemTools::ConvertToUnixSlashes(m_ToplevelPath);
if ( !this->ReadCustomConfigurationFileTree(m_ToplevelPath.c_str()) ) if ( !this->ReadCustomConfigurationFileTree(m_ToplevelPath.c_str()) )
...@@ -512,6 +518,21 @@ void cmCTest::UpdateCTestConfiguration() ...@@ -512,6 +518,21 @@ void cmCTest::UpdateCTestConfiguration()
} }
} }
void cmCTest::BlockTestErrorDiagnostics()
{
cmSystemTools::PutEnv("DART_TEST_FROM_DART=1");
cmSystemTools::PutEnv("DASHBOARD_TEST_FROM_CTEST=1");
#if defined(_WIN32)
SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX);
#endif
}
void cmCTest::SetTestModel(int mode)
{
m_InteractiveDebugMode = false;
m_TestModel = mode;
}
bool cmCTest::SetTest(const char* ttype) bool cmCTest::SetTest(const char* ttype)
{ {
if ( cmSystemTools::LowerCase(ttype) == "all" ) if ( cmSystemTools::LowerCase(ttype) == "all" )
...@@ -4148,6 +4169,11 @@ int cmCTest::Run(std::vector<std::string>const& args, std::string* output) ...@@ -4148,6 +4169,11 @@ int cmCTest::Run(std::vector<std::string>const& args, std::string* output)
{ {
m_TomorrowTag = true; m_TomorrowTag = true;
} }
if( arg.find("--interactive-debug-mode",0) == 0 && i < args.size() - 1 )
{
i++;
m_InteractiveDebugMode = cmSystemTools::IsOn(args[i].c_str());
}
if( arg.find("--compatibility-mode",0) == 0 ) if( arg.find("--compatibility-mode",0) == 0 )
{ {
m_CompatibilityMode = true; m_CompatibilityMode = true;
......
...@@ -117,10 +117,7 @@ public: ...@@ -117,10 +117,7 @@ public:
/** /**
* Set the cmake test mode (experimental, nightly, continuous). * Set the cmake test mode (experimental, nightly, continuous).
*/ */
void SetTestModel(int mode) void SetTestModel(int mode);
{
m_TestModel = mode;
}
std::string GetTestModelString(); std::string GetTestModelString();
static int GetTestModelFromString(const char* str); static int GetTestModelFromString(const char* str);
...@@ -356,7 +353,10 @@ private: ...@@ -356,7 +353,10 @@ private:
tm_VectorOfStrings m_CustomPostTest; tm_VectorOfStrings m_CustomPostTest;
tm_VectorOfStrings m_CustomPreMemCheck; tm_VectorOfStrings m_CustomPreMemCheck;
tm_VectorOfStrings m_CustomPostMemCheck; tm_VectorOfStrings m_CustomPostMemCheck;
bool m_InteractiveDebugMode;
void BlockTestErrorDiagnostics();
int ExecuteCommands(tm_VectorOfStrings& vec); int ExecuteCommands(tm_VectorOfStrings& vec);
/** /**
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment