AutoTest: Fix processing of output

In case a (Qt) test process produces output that does not belong
to the standard test output we might ended without processable
output at all.
Avoid this by just handling the output that is given on stdout
for now.

Change-Id: If5ee70140b95cb61422e58a7610b7fe2d09915c2
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
This commit is contained in:
Christian Stenger
2016-04-18 10:24:54 +02:00
parent 334017be56
commit 104b434c8d
3 changed files with 8 additions and 1 deletions

View File

@@ -137,6 +137,13 @@ TestOutputReader::TestOutputReader(const QFutureInterface<TestResultPtr> &future
, m_buildDir(buildDirectory) , m_buildDir(buildDirectory)
{ {
connect(m_testApplication, &QProcess::readyRead, this, &TestOutputReader::processOutput); connect(m_testApplication, &QProcess::readyRead, this, &TestOutputReader::processOutput);
connect(m_testApplication, &QProcess::readyReadStandardError,
this, &TestOutputReader::processStdError);
}
void TestOutputReader::processStdError()
{
qWarning() << "Ignored plain output:" << m_testApplication->readAllStandardError();
} }
QtTestOutputReader::QtTestOutputReader(const QFutureInterface<TestResultPtr> &futureInterface, QtTestOutputReader::QtTestOutputReader(const QFutureInterface<TestResultPtr> &futureInterface,

View File

@@ -49,6 +49,7 @@ public:
protected: protected:
virtual void processOutput() = 0; virtual void processOutput() = 0;
virtual void processStdError();
QFutureInterface<TestResultPtr> m_futureInterface; QFutureInterface<TestResultPtr> m_futureInterface;
QProcess *m_testApplication; // not owned QProcess *m_testApplication; // not owned
QString m_buildDir; QString m_buildDir;

View File

@@ -137,7 +137,6 @@ static void performTestRun(QFutureInterface<TestResultPtr> &futureInterface,
} }
QProcess testProcess; QProcess testProcess;
testProcess.setReadChannelMode(QProcess::MergedChannels);
testProcess.setReadChannel(QProcess::StandardOutput); testProcess.setReadChannel(QProcess::StandardOutput);
futureInterface.setProgressRange(0, testCaseCount); futureInterface.setProgressRange(0, testCaseCount);