forked from qt-creator/qt-creator
Squish: Separate state handling
Different runner modes get different handlings, so reflect this in code and have easier maintenance. Change-Id: Ia879a0e2db1d99dd50e43dfbe439dc6d679d7da6 Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -259,25 +259,20 @@ void SquishTools::setState(SquishTools::State state)
|
|||||||
{
|
{
|
||||||
// TODO check whether state transition is legal
|
// TODO check whether state transition is legal
|
||||||
m_state = state;
|
m_state = state;
|
||||||
|
|
||||||
|
if (m_request == RunnerQueryRequested || m_request == KillOldBeforeQueryRunner) {
|
||||||
|
handleSetStateQueryRunner();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
switch (m_state) {
|
switch (m_state) {
|
||||||
case Idle:
|
case Idle:
|
||||||
m_request = None;
|
setIdle();
|
||||||
m_suitePath = QString();
|
|
||||||
m_testCases.clear();
|
|
||||||
m_currentTestCasePath.clear();
|
|
||||||
m_reportFiles.clear();
|
|
||||||
m_additionalRunnerArguments.clear();
|
|
||||||
m_additionalServerArguments.clear();
|
|
||||||
m_perspective.setPerspectiveMode(SquishPerspective::NoMode);
|
|
||||||
m_currentResultsDirectory.clear();
|
|
||||||
m_lastTopLevelWindows.clear();
|
|
||||||
break;
|
break;
|
||||||
case ServerStarted:
|
case ServerStarted:
|
||||||
if (m_request == RunTestRequested) {
|
if (m_request == RunTestRequested) {
|
||||||
startSquishRunner();
|
startSquishRunner();
|
||||||
} else if (m_request == RecordTestRequested) {
|
} else if (m_request == RecordTestRequested) {
|
||||||
} else if (m_request == RunnerQueryRequested) {
|
|
||||||
executeRunnerQuery();
|
|
||||||
} else if (m_request == ServerConfigChangeRequested) { // nothing to do here
|
} else if (m_request == ServerConfigChangeRequested) { // nothing to do here
|
||||||
} else {
|
} else {
|
||||||
QTC_ASSERT(false, qDebug() << m_state << m_request);
|
QTC_ASSERT(false, qDebug() << m_state << m_request);
|
||||||
@@ -321,8 +316,6 @@ void SquishTools::setState(SquishTools::State state)
|
|||||||
startSquishServer(RunTestRequested);
|
startSquishServer(RunTestRequested);
|
||||||
} else if (m_request == KillOldBeforeRecordRunner) {
|
} else if (m_request == KillOldBeforeRecordRunner) {
|
||||||
startSquishServer(RecordTestRequested);
|
startSquishServer(RecordTestRequested);
|
||||||
} else if (m_request == KillOldBeforeQueryRunner) {
|
|
||||||
startSquishServer(RunnerQueryRequested);
|
|
||||||
} else {
|
} else {
|
||||||
QTC_ASSERT(false, qDebug() << m_state << m_request);
|
QTC_ASSERT(false, qDebug() << m_state << m_request);
|
||||||
}
|
}
|
||||||
@@ -336,10 +329,7 @@ void SquishTools::setState(SquishTools::State state)
|
|||||||
break;
|
break;
|
||||||
case RunnerStartFailed:
|
case RunnerStartFailed:
|
||||||
case RunnerStopped:
|
case RunnerStopped:
|
||||||
if (m_request == RunnerQueryRequested) {
|
if (m_testCases.isEmpty() || (m_squishRunnerState == RunnerState::Canceled)) {
|
||||||
m_request = ServerStopRequested;
|
|
||||||
stopSquishServer();
|
|
||||||
} else if (m_testCases.isEmpty() || (m_squishRunnerState == RunnerState::Canceled)) {
|
|
||||||
m_request = ServerStopRequested;
|
m_request = ServerStopRequested;
|
||||||
stopSquishServer();
|
stopSquishServer();
|
||||||
QString error;
|
QString error;
|
||||||
@@ -361,6 +351,56 @@ void SquishTools::setState(SquishTools::State state)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SquishTools::handleSetStateQueryRunner()
|
||||||
|
{
|
||||||
|
switch (m_state) {
|
||||||
|
case Idle:
|
||||||
|
setIdle();
|
||||||
|
break;
|
||||||
|
case ServerStarted:
|
||||||
|
executeRunnerQuery();
|
||||||
|
break;
|
||||||
|
case ServerStartFailed:
|
||||||
|
m_state = Idle;
|
||||||
|
m_request = None;
|
||||||
|
break;
|
||||||
|
case ServerStopped:
|
||||||
|
m_state = Idle;
|
||||||
|
emit shutdownFinished();
|
||||||
|
if (m_request == KillOldBeforeQueryRunner) {
|
||||||
|
startSquishServer(RunnerQueryRequested);
|
||||||
|
} else {
|
||||||
|
QTC_ASSERT(false, qDebug() << m_state << m_request);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case ServerStopFailed:
|
||||||
|
m_state = Idle;
|
||||||
|
break;
|
||||||
|
case RunnerStartFailed:
|
||||||
|
case RunnerStopped:
|
||||||
|
m_request = ServerStopRequested;
|
||||||
|
stopSquishServer();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void SquishTools::setIdle()
|
||||||
|
{
|
||||||
|
QTC_ASSERT(m_state == Idle, return);
|
||||||
|
m_request = None;
|
||||||
|
m_suitePath = QString();
|
||||||
|
m_testCases.clear();
|
||||||
|
m_currentTestCasePath.clear();
|
||||||
|
m_reportFiles.clear();
|
||||||
|
m_additionalRunnerArguments.clear();
|
||||||
|
m_additionalServerArguments.clear();
|
||||||
|
m_perspective.setPerspectiveMode(SquishPerspective::NoMode);
|
||||||
|
m_currentResultsDirectory.clear();
|
||||||
|
m_lastTopLevelWindows.clear();
|
||||||
|
}
|
||||||
|
|
||||||
void SquishTools::startSquishServer(Request request)
|
void SquishTools::startSquishServer(Request request)
|
||||||
{
|
{
|
||||||
if (m_shutdownInitiated)
|
if (m_shutdownInitiated)
|
||||||
|
|||||||
@@ -96,6 +96,8 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
void setState(State state);
|
void setState(State state);
|
||||||
|
void handleSetStateQueryRunner();
|
||||||
|
void setIdle();
|
||||||
void startSquishServer(Request request);
|
void startSquishServer(Request request);
|
||||||
void stopSquishServer();
|
void stopSquishServer();
|
||||||
void startSquishRunner();
|
void startSquishRunner();
|
||||||
|
|||||||
Reference in New Issue
Block a user