Update lancelot tests to use non-system-specific host info collection

Change the lancelot baseline test runner to use generic text files for
host info data collection. This also avoids relying on QProcess and
scraping the bash scripts output from stdout.

Fixes: QTBUG-71836
Change-Id: I88a46c99dbb11f71afc18cae5a6d2fbebcbe76c5
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
(cherry picked from commit 651dd26403052f98397783927ad02e008acf0552)
This commit is contained in:
Daniel Smith 2018-11-16 13:42:16 +01:00 committed by Daniel Smith
parent 19ab8bf7e7
commit cc1dc42c1f

View File

@ -28,10 +28,8 @@
#include "qbaselinetest.h" #include "qbaselinetest.h"
#include "baselineprotocol.h" #include "baselineprotocol.h"
#if QT_CONFIG(process)
# include <QtCore/QProcess>
#endif
#include <QtCore/QDir> #include <QtCore/QDir>
#include <QFile>
#define MAXCMDLINEARGS 128 #define MAXCMDLINEARGS 128
@ -146,20 +144,15 @@ void addClientProperty(const QString& key, const QString& value)
*/ */
void fetchCustomClientProperties() void fetchCustomClientProperties()
{ {
#if !QT_CONFIG(process) QFile file("hostinfo.txt");
QSKIP("This test requires QProcess support"); if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
#else return;
QString script = "hostinfo.sh"; //### TBD: Windows implementation (hostinfo.bat) QTextStream in(&file);
QProcess runScript; while (!in.atEnd()) {
runScript.setWorkingDirectory(QCoreApplication::applicationDirPath()); QString line = in.readLine().trimmed(); // ###local8bit? utf8?
runScript.start("sh", QStringList() << script, QIODevice::ReadOnly); if (line.startsWith(QLatin1Char('#'))) // Ignore comments in file
if (!runScript.waitForFinished(5000) || runScript.error() != QProcess::UnknownError) { continue;
qWarning() << "QBaselineTest: Error running script" << runScript.workingDirectory() + QDir::separator() + script << ":" << runScript.errorString();
qDebug() << " stderr:" << runScript.readAllStandardError().trimmed();
}
while (!runScript.atEnd()) {
QByteArray line = runScript.readLine().trimmed(); // ###local8bit? utf8?
QString key, val; QString key, val;
int colonPos = line.indexOf(':'); int colonPos = line.indexOf(':');
if (colonPos > 0) { if (colonPos > 0) {
@ -171,7 +164,6 @@ void fetchCustomClientProperties()
else else
qDebug() << "Unparseable script output ignored:" << line; qDebug() << "Unparseable script output ignored:" << line;
} }
#endif // QT_CONFIG(process)
} }