cmProcess: Use explicit enum for process state

Translate the values from KWSys Process.
This commit is contained in:
Bryon Bean
2017-10-23 08:16:45 -04:00
committed by Brad King
parent 5238e6db70
commit 3dd2edf4ab
3 changed files with 40 additions and 13 deletions

View File

@@ -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 ");
}

View File

@@ -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)

View File

@@ -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; }