[Cmake-commits] CMake branch, master, updated. 003ffe5908f1fac152383fc82af70996182926a3

cmake-commits at cmake.org cmake-commits at cmake.org
Tue Mar 30 14:12:04 EDT 2010


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, master has been updated
       via  003ffe5908f1fac152383fc82af70996182926a3 (commit)
      from  d0b510900d43e0ca8ba056ea81d4ed97ffeadb67 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=003ffe5908f1fac152383fc82af70996182926a3
commit 003ffe5908f1fac152383fc82af70996182926a3
Author: David Cole <david.cole at kitware.com>
Date:   Tue Mar 30 14:08:31 2010 -0400

    Fix intermingling of test environments when tests run in parallel.
    
    The SaveRestoreEnvironment helper object makes sure that the
    original environment is restored immediately after the
    StartProcess call returns rather than waiting for the end
    of the test. When tests are executed in parallel, there is
    no guarantee about the ordering of EndTest calls relative
    to StartTest calls. In fact, it would be odd for them to
    be nested nicely. Therefore, to avoid the corruption of
    the calling ctest's environment, the original environment
    must be restored before ForkProcess returns.

diff --git a/Source/CTest/cmCTestRunTest.cxx b/Source/CTest/cmCTestRunTest.cxx
index fe2437d..4c9675b 100644
--- a/Source/CTest/cmCTestRunTest.cxx
+++ b/Source/CTest/cmCTestRunTest.cxx
@@ -23,7 +23,6 @@ cmCTestRunTest::cmCTestRunTest(cmCTestTestHandler* handler)
 {
   this->CTest = handler->CTest;
   this->TestHandler = handler;
-  this->ModifyEnv = false;
   this->TestProcess = 0;
   this->TestResult.ExecutionTime =0;
   this->TestResult.ReturnValue = 0;
@@ -139,11 +138,6 @@ bool cmCTestRunTest::EndTest(size_t completed, size_t total, bool started)
     this->CompressOutput();
     }
 
-  //restore the old environment
-  if (this->ModifyEnv)
-    {
-    cmSystemTools::RestoreEnv(this->OrigEnv);
-    }
   this->WriteLogOutputTop(completed, total);
   std::string reason;
   bool passed = true;
@@ -593,9 +587,6 @@ bool cmCTestRunTest::ForkProcess(double testTimeOut,
   this->TestProcess->SetCommand(this->ActualCommand.c_str());
   this->TestProcess->SetCommandArguments(this->Arguments);
 
-  std::vector<std::string> origEnv;
-  this->ModifyEnv = (environment && environment->size()>0);
-
   // determine how much time we have
   double timeout = this->CTest->GetRemainingTimeAllowed() - 120;
   if (this->CTest->GetTimeOut() > 0 && this->CTest->GetTimeOut() < timeout)
@@ -618,9 +609,13 @@ bool cmCTestRunTest::ForkProcess(double testTimeOut,
 
   this->TestProcess->SetTimeout(timeout);
 
-  if (this->ModifyEnv)
+#ifdef CMAKE_BUILD_WITH_CMAKE
+  cmSystemTools::SaveRestoreEnvironment sre;
+#endif
+
+  if (environment && environment->size()>0)
     {
-    this->OrigEnv = cmSystemTools::AppendEnv(environment);
+    cmSystemTools::AppendEnv(environment);
     }
 
   return this->TestProcess->StartProcess();
diff --git a/Source/CTest/cmCTestRunTest.h b/Source/CTest/cmCTestRunTest.h
index 14fa2e5..d7d3a2f 100644
--- a/Source/CTest/cmCTestRunTest.h
+++ b/Source/CTest/cmCTestRunTest.h
@@ -77,14 +77,9 @@ private:
   //if this option is set to false.)
   //bool OptimizeForCTest;
 
-  //flag for whether the env was modified for this run
-  bool ModifyEnv;
-
   bool UsePrefixCommand;
   std::string PrefixCommand;
 
-  //stores the original environment if we are modifying it
-  std::vector<std::string> OrigEnv;
   std::string ProcessOutput;
   std::string CompressedOutput;
   double CompressionRatio;

-----------------------------------------------------------------------

Summary of changes:
 Source/CTest/cmCTestRunTest.cxx |   17 ++++++-----------
 Source/CTest/cmCTestRunTest.h   |    5 -----
 2 files changed, 6 insertions(+), 16 deletions(-)


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list