summaryrefslogtreecommitdiffstats
path: root/tools/qml/qdeclarativetester.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/qml/qdeclarativetester.cpp')
-rw-r--r--tools/qml/qdeclarativetester.cpp24
1 files changed, 19 insertions, 5 deletions
diff --git a/tools/qml/qdeclarativetester.cpp b/tools/qml/qdeclarativetester.cpp
index 1d46f560..70d50f3a 100644
--- a/tools/qml/qdeclarativetester.cpp
+++ b/tools/qml/qdeclarativetester.cpp
@@ -53,6 +53,15 @@
QT_BEGIN_NAMESPACE
+enum {
+ TestSuccessExitCode = 0,
+#ifdef Q_OS_WIN
+ TestFailureExitCode = 1 // QProcess on Windows reports crash for exit codes < 0, QTBUG-28735
+#else
+ TestFailureExitCode = -1
+#endif
+};
+
extern Q_GUI_EXPORT bool qt_applefontsmoothing_enabled;
QDeclarativeTester::QDeclarativeTester(const QString &script, QDeclarativeViewer::ScriptOptions opts,
@@ -137,7 +146,7 @@ void QDeclarativeTester::executefailure()
hasFailed = true;
if (options & QDeclarativeViewer::ExitOnFailure)
- exit(-1);
+ QCoreApplication::exit(TestFailureExitCode);
}
void QDeclarativeTester::imagefailure()
@@ -146,7 +155,7 @@ void QDeclarativeTester::imagefailure()
if (options & QDeclarativeViewer::ExitOnFailure){
testSkip();
- exit(hasFailed?-1:0);
+ QCoreApplication::exit(hasFailed ? TestFailureExitCode : TestSuccessExitCode);
}
}
@@ -178,7 +187,7 @@ void QDeclarativeTester::complete()
testSkip();
if (options & QDeclarativeViewer::ExitOnComplete)
- QApplication::exit(hasFailed?-1:0);
+ QCoreApplication::exit(hasFailed? TestFailureExitCode : TestSuccessExitCode);
if (hasCompleted)
return;
@@ -193,8 +202,13 @@ void QDeclarativeTester::run()
QDeclarativeComponent c(m_view->engine(), m_script + QLatin1String(".qml"));
testscript = qobject_cast<QDeclarativeVisualTest *>(c.create());
- if (testscript) testscript->setParent(this);
- else { executefailure(); exit(-1); }
+ if (testscript) {
+ testscript->setParent(this);
+ } else {
+ executefailure();
+ if (!(options & QDeclarativeViewer::ExitOnFailure))
+ QCoreApplication::exit(TestFailureExitCode);
+ }
testscriptidx = 0;
}