瀏覽代碼

cmProcess: Use explicit enum for process exit exception

Translate the values from KWSys Process.
Bryon Bean 8 年之前
父節點
當前提交
fcebff75f9
共有 3 個文件被更改,包括 33 次插入7 次删除
  1. 4 4
      Source/CTest/cmCTestRunTest.cxx
  2. 16 2
      Source/CTest/cmProcess.cxx
  3. 13 1
      Source/CTest/cmProcess.h

+ 4 - 4
Source/CTest/cmCTestRunTest.cxx

@@ -225,19 +225,19 @@ bool cmCTestRunTest::EndTest(size_t completed, size_t total, bool started)
     this->TestResult.ExceptionStatus =
       this->TestProcess->GetExitExceptionString();
     switch (this->TestProcess->GetExitException()) {
-      case cmsysProcess_Exception_Fault:
+      case cmProcess::Exception::Fault:
         cmCTestLog(this->CTest, HANDLER_OUTPUT, "SegFault");
         this->TestResult.Status = cmCTestTestHandler::SEGFAULT;
         break;
-      case cmsysProcess_Exception_Illegal:
+      case cmProcess::Exception::Illegal:
         cmCTestLog(this->CTest, HANDLER_OUTPUT, "Illegal");
         this->TestResult.Status = cmCTestTestHandler::ILLEGAL;
         break;
-      case cmsysProcess_Exception_Interrupt:
+      case cmProcess::Exception::Interrupt:
         cmCTestLog(this->CTest, HANDLER_OUTPUT, "Interrupt");
         this->TestResult.Status = cmCTestTestHandler::INTERRUPT;
         break;
-      case cmsysProcess_Exception_Numerical:
+      case cmProcess::Exception::Numerical:
         cmCTestLog(this->CTest, HANDLER_OUTPUT, "Numerical");
         this->TestResult.Status = cmCTestTestHandler::NUMERICAL;
         break;

+ 16 - 2
Source/CTest/cmProcess.cxx

@@ -193,9 +193,23 @@ void cmProcess::ResetStartTime()
   this->StartTime = std::chrono::steady_clock::now();
 }
 
-int cmProcess::GetExitException()
+cmProcess::Exception cmProcess::GetExitException()
 {
-  return cmsysProcess_GetExitException(this->Process);
+  switch (cmsysProcess_GetExitException(this->Process)) {
+    case cmsysProcess_Exception_None:
+      return Exception::None;
+    case cmsysProcess_Exception_Fault:
+      return Exception::Fault;
+    case cmsysProcess_Exception_Illegal:
+      return Exception::Illegal;
+    case cmsysProcess_Exception_Interrupt:
+      return Exception::Interrupt;
+    case cmsysProcess_Exception_Numerical:
+      return Exception::Numerical;
+    default: // case cmsysProcess_Exception_Other:
+      break;
+  }
+  return Exception::Other;
 }
 
 std::string cmProcess::GetExitExceptionString()

+ 13 - 1
Source/CTest/cmProcess.h

@@ -47,8 +47,20 @@ public:
   void SetId(int id) { this->Id = id; }
   int GetExitValue() { return this->ExitValue; }
   std::chrono::duration<double> GetTotalTime() { return this->TotalTime; }
-  int GetExitException();
+
+  enum class Exception
+  {
+    None,
+    Fault,
+    Illegal,
+    Interrupt,
+    Numerical,
+    Other
+  };
+
+  Exception GetExitException();
   std::string GetExitExceptionString();
+
   /**
    * Read one line of output but block for no more than timeout.
    * Returns: