forked from qt-creator/qt-creator
Qnx: Reuse setExtraCommandsToTest()
Change-Id: I09e6160c1cbff9d74ac1ad3e824a0137d5964aae Reviewed-by: hjk <hjk@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
@@ -22,10 +22,13 @@ QnxDeviceTester::QnxDeviceTester(QObject *parent)
|
|||||||
connect(m_genericTester, &DeviceTester::finished,
|
connect(m_genericTester, &DeviceTester::finished,
|
||||||
this, &QnxDeviceTester::handleGenericTestFinished);
|
this, &QnxDeviceTester::handleGenericTestFinished);
|
||||||
|
|
||||||
connect(&m_process, &QtcProcess::done, this, &QnxDeviceTester::handleProcessDone);
|
connect(&m_varRunProcess, &QtcProcess::done, this, &QnxDeviceTester::handleVarRunDone);
|
||||||
|
}
|
||||||
|
|
||||||
m_commandsToTest = {
|
void QnxDeviceTester::testDevice(const ProjectExplorer::IDevice::Ptr &deviceConfiguration)
|
||||||
"awk",
|
{
|
||||||
|
QTC_ASSERT(m_state == Inactive, return);
|
||||||
|
static const QStringList s_commandsToTest = {"awk",
|
||||||
"cat",
|
"cat",
|
||||||
"cut",
|
"cut",
|
||||||
"df",
|
"df",
|
||||||
@@ -41,15 +44,14 @@ QnxDeviceTester::QnxDeviceTester(QObject *parent)
|
|||||||
"sed",
|
"sed",
|
||||||
"sleep",
|
"sleep",
|
||||||
"tail",
|
"tail",
|
||||||
"uname"
|
"uname"};
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
void QnxDeviceTester::testDevice(const ProjectExplorer::IDevice::Ptr &deviceConfiguration)
|
|
||||||
{
|
|
||||||
QTC_ASSERT(m_state == Inactive, return);
|
|
||||||
m_deviceConfiguration = deviceConfiguration;
|
m_deviceConfiguration = deviceConfiguration;
|
||||||
m_state = GenericTest;
|
m_state = GenericTest;
|
||||||
|
|
||||||
|
QnxDevice::ConstPtr qnxDevice = m_deviceConfiguration.dynamicCast<const QnxDevice>();
|
||||||
|
m_genericTester->setExtraCommandsToTest(
|
||||||
|
s_commandsToTest + versionSpecificCommandsToTest(qnxDevice->qnxVersion()));
|
||||||
m_genericTester->testDevice(deviceConfiguration);
|
m_genericTester->testDevice(deviceConfiguration);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,70 +79,23 @@ void QnxDeviceTester::handleGenericTestFinished(TestResult result)
|
|||||||
const CommandLine cmd {m_deviceConfiguration->filePath("/bin/sh"),
|
const CommandLine cmd {m_deviceConfiguration->filePath("/bin/sh"),
|
||||||
{"-c", QLatin1String("rm %1 > /dev/null 2>&1; echo ABC > %1 && rm %1")
|
{"-c", QLatin1String("rm %1 > /dev/null 2>&1; echo ABC > %1 && rm %1")
|
||||||
.arg("/var/run/qtc_xxxx.pid")}};
|
.arg("/var/run/qtc_xxxx.pid")}};
|
||||||
m_process.setCommand(cmd);
|
m_varRunProcess.setCommand(cmd);
|
||||||
m_process.start();
|
m_varRunProcess.start();
|
||||||
}
|
|
||||||
|
|
||||||
void QnxDeviceTester::handleProcessDone()
|
|
||||||
{
|
|
||||||
if (m_state == VarRunTest)
|
|
||||||
handleVarRunDone();
|
|
||||||
else if (m_state == CommandsTest)
|
|
||||||
handleCommandDone();
|
|
||||||
else
|
|
||||||
QTC_CHECK(false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void QnxDeviceTester::handleVarRunDone()
|
void QnxDeviceTester::handleVarRunDone()
|
||||||
{
|
{
|
||||||
if (m_process.result() == ProcessResult::FinishedWithSuccess) {
|
if (m_varRunProcess.result() == ProcessResult::FinishedWithSuccess) {
|
||||||
emit progressMessage(Tr::tr("Files can be created in /var/run.") + '\n');
|
emit progressMessage(Tr::tr("Files can be created in /var/run.") + '\n');
|
||||||
} else {
|
} else {
|
||||||
m_result = TestFailure;
|
m_result = TestFailure;
|
||||||
const QString message = m_process.result() == ProcessResult::StartFailed
|
const QString message = m_varRunProcess.result() == ProcessResult::StartFailed
|
||||||
? Tr::tr("An error occurred while checking that files can be created in /var/run.")
|
? Tr::tr("An error occurred while checking that files can be created in /var/run.")
|
||||||
+ '\n' + m_process.errorString()
|
+ '\n' + m_varRunProcess.errorString()
|
||||||
: Tr::tr("Files cannot be created in /var/run.");
|
: Tr::tr("Files cannot be created in /var/run.");
|
||||||
emit errorMessage(message + '\n');
|
emit errorMessage(message + '\n');
|
||||||
}
|
}
|
||||||
|
setFinished(m_result);
|
||||||
QnxDevice::ConstPtr qnxDevice = m_deviceConfiguration.dynamicCast<const QnxDevice>();
|
|
||||||
m_commandsToTest.append(versionSpecificCommandsToTest(qnxDevice->qnxVersion()));
|
|
||||||
|
|
||||||
testNextCommand();
|
|
||||||
}
|
|
||||||
|
|
||||||
void QnxDeviceTester::handleCommandDone()
|
|
||||||
{
|
|
||||||
const QString command = m_commandsToTest[m_currentCommandIndex];
|
|
||||||
if (m_process.result() == ProcessResult::FinishedWithSuccess) {
|
|
||||||
emit progressMessage(Tr::tr("%1 found.").arg(command) + '\n');
|
|
||||||
} else {
|
|
||||||
m_result = TestFailure;
|
|
||||||
const QString message = m_process.result() == ProcessResult::StartFailed
|
|
||||||
? Tr::tr("An error occurred while checking for %1.").arg(command)
|
|
||||||
+ '\n' + m_process.errorString()
|
|
||||||
: Tr::tr("%1 not found.").arg(command);
|
|
||||||
emit errorMessage(message + '\n');
|
|
||||||
}
|
|
||||||
|
|
||||||
++m_currentCommandIndex;
|
|
||||||
testNextCommand();
|
|
||||||
}
|
|
||||||
|
|
||||||
void QnxDeviceTester::testNextCommand()
|
|
||||||
{
|
|
||||||
m_state = CommandsTest;
|
|
||||||
m_process.close();
|
|
||||||
if (m_commandsToTest.size() == m_currentCommandIndex) {
|
|
||||||
setFinished(TestSuccess);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const QString command = m_commandsToTest[m_currentCommandIndex];
|
|
||||||
emit progressMessage(Tr::tr("Checking for %1...").arg(command));
|
|
||||||
m_process.setCommand({m_deviceConfiguration->filePath("command"), {"-v", command}});
|
|
||||||
m_process.start();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void QnxDeviceTester::setFinished(TestResult result)
|
void QnxDeviceTester::setFinished(TestResult result)
|
||||||
@@ -149,7 +104,7 @@ void QnxDeviceTester::setFinished(TestResult result)
|
|||||||
m_result = result;
|
m_result = result;
|
||||||
m_state = Inactive;
|
m_state = Inactive;
|
||||||
disconnect(m_genericTester, nullptr, this, nullptr);
|
disconnect(m_genericTester, nullptr, this, nullptr);
|
||||||
m_process.close();
|
m_varRunProcess.close();
|
||||||
emit finished(m_result);
|
emit finished(m_result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -25,16 +25,12 @@ private:
|
|||||||
enum State {
|
enum State {
|
||||||
Inactive,
|
Inactive,
|
||||||
GenericTest,
|
GenericTest,
|
||||||
VarRunTest,
|
VarRunTest
|
||||||
CommandsTest
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void handleGenericTestFinished(ProjectExplorer::DeviceTester::TestResult result);
|
void handleGenericTestFinished(ProjectExplorer::DeviceTester::TestResult result);
|
||||||
void handleProcessDone();
|
|
||||||
void handleVarRunDone();
|
void handleVarRunDone();
|
||||||
void handleCommandDone();
|
|
||||||
|
|
||||||
void testNextCommand();
|
|
||||||
void setFinished(ProjectExplorer::DeviceTester::TestResult result);
|
void setFinished(ProjectExplorer::DeviceTester::TestResult result);
|
||||||
|
|
||||||
QStringList versionSpecificCommandsToTest(int versionNumber) const;
|
QStringList versionSpecificCommandsToTest(int versionNumber) const;
|
||||||
@@ -44,9 +40,7 @@ private:
|
|||||||
ProjectExplorer::DeviceTester::TestResult m_result = TestSuccess;
|
ProjectExplorer::DeviceTester::TestResult m_result = TestSuccess;
|
||||||
State m_state = Inactive;
|
State m_state = Inactive;
|
||||||
|
|
||||||
int m_currentCommandIndex = 0;
|
Utils::QtcProcess m_varRunProcess;
|
||||||
QStringList m_commandsToTest;
|
|
||||||
Utils::QtcProcess m_process;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
Reference in New Issue
Block a user