summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/tools/qsharedpointer/externaltests.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/corelib/tools/qsharedpointer/externaltests.cpp')
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/externaltests.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/tests/auto/corelib/tools/qsharedpointer/externaltests.cpp b/tests/auto/corelib/tools/qsharedpointer/externaltests.cpp
index 62dd33131b..3e1668522e 100644
--- a/tests/auto/corelib/tools/qsharedpointer/externaltests.cpp
+++ b/tests/auto/corelib/tools/qsharedpointer/externaltests.cpp
@@ -42,6 +42,7 @@
#include <QtCore/QDateTime>
#include <QtCore/QDebug>
#include <QtCore/QLibraryInfo>
+#include <QtCore/QThread>
#ifndef DEFAULT_MAKESPEC
# error DEFAULT_MAKESPEC not defined
@@ -69,6 +70,16 @@ static QString makespec()
QT_BEGIN_NAMESPACE
namespace QTest {
#if QT_CONFIG(process)
+ static void ensureStopped(QProcess &process)
+ {
+ if (process.state() == QProcess::Running) {
+ process.terminate();
+ QThread::msleep(20);
+ if (process.state() == QProcess::Running)
+ process.kill();
+ }
+ }
+
class QExternalProcess: public QProcess
{
protected:
@@ -594,7 +605,7 @@ namespace QTest {
ok = qmake.waitForFinished();
exitCode = qmake.exitCode();
if (!ok)
- qmake.terminate();
+ QTest::ensureStopped(qmake);
std_out += qmake.readAllStandardOutput();
std_err += qmake.readAllStandardError();
@@ -661,7 +672,7 @@ namespace QTest {
make.closeWriteChannel();
bool ok = make.waitForFinished(channelMode == QProcess::ForwardedChannels ? -1 : 60000);
if (!ok)
- make.terminate();
+ QTest::ensureStopped(make);
exitCode = make.exitCode();
std_out += make.readAllStandardOutput();
std_err += make.readAllStandardError();