diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2007-09-11 15:21:36 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2007-09-11 15:21:36 (GMT) |
commit | f262298bb037b683c995f239d1ca9fc00aaec3f3 (patch) | |
tree | 5144068cbd9df6d0c99139f227392aa5e005770e /Source | |
parent | 4835f8303b4bf9c729b00f0b3aedca6f229b2d2f (diff) | |
download | CMake-f262298bb037b683c995f239d1ca9fc00aaec3f3.zip CMake-f262298bb037b683c995f239d1ca9fc00aaec3f3.tar.gz CMake-f262298bb037b683c995f239d1ca9fc00aaec3f3.tar.bz2 |
ENH: fix 2 ctest issues, do not use the build type of ctest to look for config types, do not inherit pipes in child procs for ctest so it can kill them
Diffstat (limited to 'Source')
-rw-r--r-- | Source/CTest/cmCTestTestHandler.cxx | 20 | ||||
-rw-r--r-- | Source/cmCTest.cxx | 8 | ||||
-rw-r--r-- | Source/cmSystemTools.cxx | 17 | ||||
-rw-r--r-- | Source/cmSystemTools.h | 6 | ||||
-rw-r--r-- | Source/ctest.cxx | 2 |
5 files changed, 34 insertions, 19 deletions
diff --git a/Source/CTest/cmCTestTestHandler.cxx b/Source/CTest/cmCTestTestHandler.cxx index 8026c5a..580623e 100644 --- a/Source/CTest/cmCTestTestHandler.cxx +++ b/Source/CTest/cmCTestTestHandler.cxx @@ -1090,16 +1090,6 @@ void cmCTestTestHandler { // no config specified to try some options tempPath = filepath; - tempPath += "Deployment/"; - tempPath += filename; - attempted.push_back(tempPath); - attemptedConfigs.push_back("Deployment"); - tempPath = filepath; - tempPath += "Development/"; - tempPath += filename; - attempted.push_back(tempPath); - attemptedConfigs.push_back("Deployment"); - tempPath = filepath; tempPath += "Release/"; tempPath += filename; attempted.push_back(tempPath); @@ -1119,6 +1109,16 @@ void cmCTestTestHandler tempPath += filename; attempted.push_back(tempPath); attemptedConfigs.push_back("RelWithDebInfo"); + tempPath = filepath; + tempPath += "Deployment/"; + tempPath += filename; + attempted.push_back(tempPath); + attemptedConfigs.push_back("Deployment"); + tempPath = filepath; + tempPath += "Development/"; + tempPath += filename; + attempted.push_back(tempPath); + attemptedConfigs.push_back("Deployment"); } } diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index 84b23d1..8158257 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -1898,14 +1898,6 @@ int cmCTest::Run(std::vector<std::string> &args, std::string* output) } // the close of the for argument loop - // default to the build type of ctest itself if there is one -#ifdef CMAKE_INTDIR - if(this->ConfigType.size() == 0) - { - this->SetConfigType(CMAKE_INTDIR); - } -#endif - // now what sould cmake do? if --build-and-test was specified then // we run the build and test handler and return if(cmakeAndTest) diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index 337e60f..7e59724 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -1976,3 +1976,20 @@ int cmSystemTools::WaitForLine(cmsysProcess* process, std::string& line, } } +void cmSystemTools::DoNotInheritStdPipes() +{ + { + HANDLE out = GetStdHandle(STD_OUTPUT_HANDLE); + DuplicateHandle(GetCurrentProcess(), out, + GetCurrentProcess(), &out, 0, FALSE, + DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE); + SetStdHandle(STD_OUTPUT_HANDLE, out); + } + { + HANDLE out = GetStdHandle(STD_ERROR_HANDLE); + DuplicateHandle(GetCurrentProcess(), out, + GetCurrentProcess(), &out, 0, FALSE, + DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE); + SetStdHandle(STD_ERROR_HANDLE, out); + } +} diff --git a/Source/cmSystemTools.h b/Source/cmSystemTools.h index 0cba39c..ed95bdf 100644 --- a/Source/cmSystemTools.h +++ b/Source/cmSystemTools.h @@ -339,6 +339,12 @@ public: static bool ExtractTar(const char* inFileName, const std::vector<cmStdString>& files, bool gzip, bool verbose); + // This should be called first thing in main + // it will keep child processes from inheriting the + // stdin and stdout of this process. This is important + // if you want to be able to kill child processes and + // not get stuck waiting for all the output on the pipes. + static void DoNotInheritStdPipes(); private: static bool s_ForceUnixPaths; static bool s_RunCommandHideConsole; diff --git a/Source/ctest.cxx b/Source/ctest.cxx index b7d207f..5dedcc4 100644 --- a/Source/ctest.cxx +++ b/Source/ctest.cxx @@ -22,7 +22,6 @@ #include "cmDocumentation.h" #include "CTest/cmCTestScriptHandler.h" - //---------------------------------------------------------------------------- static const cmDocumentationEntry cmDocumentationName[] = { @@ -209,6 +208,7 @@ static const cmDocumentationEntry cmDocumentationSeeAlso[] = // this is a test driver program for cmCTest. int main (int argc, char *argv[]) { + cmSystemTools::DoNotInheritStdPipes(); cmSystemTools::EnableMSVCDebugHook(); int nocwd = 0; cmCTest inst; |