diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2012-12-20 10:25:24 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-12-20 13:58:23 +0100 |
commit | 3c1479f8a43c13b2f9f93e63ae2247907546c0ae (patch) | |
tree | 86b3fa5d44896f7b3b1d88c974dc10d424407ff9 | |
parent | d76d824e437bb858cb599ce81dd1c1b4d497ba5d (diff) |
QmlViewer: Fix test script exits.
Use exit code 1 on Windows to indicate failures as negative
exit codes are reported as crashes by QProcess in the qmlvisual
test. Always use QCoreApplication::exit() to ensure proper cleanup.
Task-number: QTBUG-28611
Task-number: QTBUG-28735
Change-Id: I0b12153449f7371ce7795a5747e3311184bc7b6f
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
-rw-r--r-- | tools/qml/qdeclarativetester.cpp | 24 |
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; } |