AutoTest: Fix noticing crashes on Windows for gtest

gtest based tests do not end the QProcess with CrashExit
when abort() is triggered but it results in a special exit
code.

Task-number: QTCREATORBUG-19565
Change-Id: I4ffc67cb43b05406ab79a7b3061e75c88b87ba98
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Christian Stenger
2018-01-08 11:21:34 +01:00
parent 8accfddb17
commit c57b06b9e6

View File

@@ -27,6 +27,7 @@
#include "gtestresult.h" #include "gtestresult.h"
#include "../testtreemodel.h" #include "../testtreemodel.h"
#include "../testtreeitem.h" #include "../testtreeitem.h"
#include "utils/hostosinfo.h"
#include <QDir> #include <QDir>
#include <QFileInfo> #include <QFileInfo>
@@ -47,6 +48,15 @@ GTestOutputReader::GTestOutputReader(const QFutureInterface<TestResultPtr> &futu
, m_executable(testApplication ? testApplication->program() : QString()) , m_executable(testApplication ? testApplication->program() : QString())
, m_projectFile(projectFile) , m_projectFile(projectFile)
{ {
// on Windows abort() will result in normal termination, but exit code will be set to 3
if (Utils::HostOsInfo::isWindowsHost()) {
connect(m_testApplication,
static_cast<void (QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished),
this, [this] (int exitCode, QProcess::ExitStatus /*exitStatus*/) {
if (exitCode == 3)
reportCrash();
});
}
} }
void GTestOutputReader::processOutput(const QByteArray &outputLine) void GTestOutputReader::processOutput(const QByteArray &outputLine)