Browse Source

cmProcess: Use explicit enum for process state

Translate the values from KWSys Process.
Bryon Bean 8 năm trước cách đây
mục cha
commit
3dd2edf4ab
3 tập tin đã thay đổi với 40 bổ sung13 xóa
  1. 6 6
      Source/CTest/cmCTestRunTest.cxx
  2. 21 5
      Source/CTest/cmProcess.cxx
  3. 13 2
      Source/CTest/cmProcess.h

+ 6 - 6
Source/CTest/cmCTestRunTest.cxx

@@ -154,8 +154,8 @@ bool cmCTestRunTest::EndTest(size_t completed, size_t total, bool started)
   this->WriteLogOutputTop(completed, total);
   std::string reason;
   bool passed = true;
-  int res =
-    started ? this->TestProcess->GetProcessStatus() : cmsysProcess_State_Error;
+  cmProcess::State res =
+    started ? this->TestProcess->GetProcessStatus() : cmProcess::State::Error;
   int retVal = this->TestProcess->GetExitValue();
   bool forceFail = false;
   bool skipped = false;
@@ -194,7 +194,7 @@ bool cmCTestRunTest::EndTest(size_t completed, size_t total, bool started)
       }
     }
   }
-  if (res == cmsysProcess_State_Exited) {
+  if (res == cmProcess::State::Exited) {
     bool success = !forceFail &&
       (retVal == 0 ||
        !this->TestProperties->RequiredRegularExpressions.empty());
@@ -215,11 +215,11 @@ bool cmCTestRunTest::EndTest(size_t completed, size_t total, bool started)
       cmCTestLog(this->CTest, HANDLER_OUTPUT, "***Failed  " << reason);
       outputTestErrorsToConsole = this->CTest->OutputTestOutputOnTestFailure;
     }
-  } else if (res == cmsysProcess_State_Expired) {
+  } else if (res == cmProcess::State::Expired) {
     cmCTestLog(this->CTest, HANDLER_OUTPUT, "***Timeout ");
     this->TestResult.Status = cmCTestTestHandler::TIMEOUT;
     outputTestErrorsToConsole = this->CTest->OutputTestOutputOnTestFailure;
-  } else if (res == cmsysProcess_State_Exception) {
+  } else if (res == cmProcess::State::Exception) {
     outputTestErrorsToConsole = this->CTest->OutputTestOutputOnTestFailure;
     cmCTestLog(this->CTest, HANDLER_OUTPUT, "***Exception: ");
     this->TestResult.ExceptionStatus =
@@ -248,7 +248,7 @@ bool cmCTestRunTest::EndTest(size_t completed, size_t total, bool started)
     }
   } else if ("Disabled" == this->TestResult.CompletionStatus) {
     cmCTestLog(this->CTest, HANDLER_OUTPUT, "***Not Run (Disabled) ");
-  } else // cmsysProcess_State_Error
+  } else // cmProcess::State::Error
   {
     cmCTestLog(this->CTest, HANDLER_OUTPUT, "***Not Run ");
   }

+ 21 - 5
Source/CTest/cmProcess.cxx

@@ -156,13 +156,29 @@ int cmProcess::GetNextOutputLine(std::string& line,
   return cmsysProcess_Pipe_None;
 }
 
-// return the process status
-int cmProcess::GetProcessStatus()
+cmProcess::State cmProcess::GetProcessStatus()
 {
-  if (!this->Process) {
-    return cmsysProcess_State_Exited;
+  if (this->Process) {
+    switch (cmsysProcess_GetState(this->Process)) {
+      case cmsysProcess_State_Starting:
+        return State::Starting;
+      case cmsysProcess_State_Error:
+        return State::Error;
+      case cmsysProcess_State_Exception:
+        return State::Exception;
+      case cmsysProcess_State_Executing:
+        return State::Executing;
+      case cmsysProcess_State_Expired:
+        return State::Expired;
+      case cmsysProcess_State_Killed:
+        return State::Killed;
+      case cmsysProcess_State_Disowned:
+        return State::Disowned;
+      default: // case cmsysProcess_State_Exited:
+        break;
+    }
   }
-  return cmsysProcess_GetState(this->Process);
+  return State::Exited;
 }
 
 void cmProcess::ChangeTimeout(std::chrono::duration<double> t)

+ 13 - 2
Source/CTest/cmProcess.h

@@ -30,8 +30,19 @@ public:
   // Return true if the process starts
   bool StartProcess();
 
-  // return the process status
-  int GetProcessStatus();
+  enum class State
+  {
+    Starting,
+    Error,
+    Exception,
+    Executing,
+    Exited,
+    Expired,
+    Killed,
+    Disowned
+  };
+
+  State GetProcessStatus();
   int GetId() { return this->Id; }
   void SetId(int id) { this->Id = id; }
   int GetExitValue() { return this->ExitValue; }