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,
|
||||
this, &QnxDeviceTester::handleGenericTestFinished);
|
||||
|
||||
connect(&m_process, &QtcProcess::done, this, &QnxDeviceTester::handleProcessDone);
|
||||
connect(&m_varRunProcess, &QtcProcess::done, this, &QnxDeviceTester::handleVarRunDone);
|
||||
}
|
||||
|
||||
m_commandsToTest = {
|
||||
"awk",
|
||||
void QnxDeviceTester::testDevice(const ProjectExplorer::IDevice::Ptr &deviceConfiguration)
|
||||
{
|
||||
QTC_ASSERT(m_state == Inactive, return);
|
||||
static const QStringList s_commandsToTest = {"awk",
|
||||
"cat",
|
||||
"cut",
|
||||
"df",
|
||||
@@ -41,15 +44,14 @@ QnxDeviceTester::QnxDeviceTester(QObject *parent)
|
||||
"sed",
|
||||
"sleep",
|
||||
"tail",
|
||||
"uname"
|
||||
};
|
||||
}
|
||||
"uname"};
|
||||
|
||||
void QnxDeviceTester::testDevice(const ProjectExplorer::IDevice::Ptr &deviceConfiguration)
|
||||
{
|
||||
QTC_ASSERT(m_state == Inactive, return);
|
||||
m_deviceConfiguration = deviceConfiguration;
|
||||
m_state = GenericTest;
|
||||
|
||||
QnxDevice::ConstPtr qnxDevice = m_deviceConfiguration.dynamicCast<const QnxDevice>();
|
||||
m_genericTester->setExtraCommandsToTest(
|
||||
s_commandsToTest + versionSpecificCommandsToTest(qnxDevice->qnxVersion()));
|
||||
m_genericTester->testDevice(deviceConfiguration);
|
||||
}
|
||||
|
||||
@@ -77,70 +79,23 @@ void QnxDeviceTester::handleGenericTestFinished(TestResult result)
|
||||
const CommandLine cmd {m_deviceConfiguration->filePath("/bin/sh"),
|
||||
{"-c", QLatin1String("rm %1 > /dev/null 2>&1; echo ABC > %1 && rm %1")
|
||||
.arg("/var/run/qtc_xxxx.pid")}};
|
||||
m_process.setCommand(cmd);
|
||||
m_process.start();
|
||||
}
|
||||
|
||||
void QnxDeviceTester::handleProcessDone()
|
||||
{
|
||||
if (m_state == VarRunTest)
|
||||
handleVarRunDone();
|
||||
else if (m_state == CommandsTest)
|
||||
handleCommandDone();
|
||||
else
|
||||
QTC_CHECK(false);
|
||||
m_varRunProcess.setCommand(cmd);
|
||||
m_varRunProcess.start();
|
||||
}
|
||||
|
||||
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');
|
||||
} else {
|
||||
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.")
|
||||
+ '\n' + m_process.errorString()
|
||||
+ '\n' + m_varRunProcess.errorString()
|
||||
: Tr::tr("Files cannot be created in /var/run.");
|
||||
emit errorMessage(message + '\n');
|
||||
}
|
||||
|
||||
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();
|
||||
setFinished(m_result);
|
||||
}
|
||||
|
||||
void QnxDeviceTester::setFinished(TestResult result)
|
||||
@@ -149,7 +104,7 @@ void QnxDeviceTester::setFinished(TestResult result)
|
||||
m_result = result;
|
||||
m_state = Inactive;
|
||||
disconnect(m_genericTester, nullptr, this, nullptr);
|
||||
m_process.close();
|
||||
m_varRunProcess.close();
|
||||
emit finished(m_result);
|
||||
}
|
||||
|
||||
|
@@ -25,16 +25,12 @@ private:
|
||||
enum State {
|
||||
Inactive,
|
||||
GenericTest,
|
||||
VarRunTest,
|
||||
CommandsTest
|
||||
VarRunTest
|
||||
};
|
||||
|
||||
void handleGenericTestFinished(ProjectExplorer::DeviceTester::TestResult result);
|
||||
void handleProcessDone();
|
||||
void handleVarRunDone();
|
||||
void handleCommandDone();
|
||||
|
||||
void testNextCommand();
|
||||
void setFinished(ProjectExplorer::DeviceTester::TestResult result);
|
||||
|
||||
QStringList versionSpecificCommandsToTest(int versionNumber) const;
|
||||
@@ -44,9 +40,7 @@ private:
|
||||
ProjectExplorer::DeviceTester::TestResult m_result = TestSuccess;
|
||||
State m_state = Inactive;
|
||||
|
||||
int m_currentCommandIndex = 0;
|
||||
QStringList m_commandsToTest;
|
||||
Utils::QtcProcess m_process;
|
||||
Utils::QtcProcess m_varRunProcess;
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
|
Reference in New Issue
Block a user