diff options
author | Jan Arve Sæther <jan-arve.saether@qt.io> | 2019-07-03 13:43:20 +0200 |
---|---|---|
committer | Jan Arve Sæther <jan-arve.saether@qt.io> | 2019-07-18 13:00:11 +0200 |
commit | 2b433c3e89cf6ba4fca9a2da28562a2c8ae93c1a (patch) | |
tree | 1349866d9aed4c82bacd3dad572307c9305b3211 /tests/auto/qml | |
parent | 4a7f21da6e7d1f513fc60dccfff6d6b81a116f21 (diff) |
Make sure timeZoneUpdated test cleans up properly if it fails
It modifies the global time zone, so if it failed we want to make sure it
doesn't affect the subsequent tests in this file.
Task-number: QTBUG-73512
Change-Id: I3622acc3563ac27ede1b3f39d30e12bb844ac663
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'tests/auto/qml')
-rw-r--r-- | tests/auto/qml/qqmllocale/tst_qqmllocale.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/tests/auto/qml/qqmllocale/tst_qqmllocale.cpp b/tests/auto/qml/qqmllocale/tst_qqmllocale.cpp index cc13fb4b5f..a90749208c 100644 --- a/tests/auto/qml/qqmllocale/tst_qqmllocale.cpp +++ b/tests/auto/qml/qqmllocale/tst_qqmllocale.cpp @@ -32,6 +32,8 @@ #include <QtQml/qqmlcomponent.h> #include <QtQml/qqmlcontext.h> #include <QtCore/QDateTime> +#include <QtCore/qscopeguard.h> +#include <QtCore/qscopedpointer.h> #include <qcolor.h> #include "../../shared/util.h" @@ -1270,13 +1272,21 @@ void tst_qqmllocale::timeZoneUpdated() // Set the timezone to Brisbane time, AEST-10:00 setTimeZone(QByteArray("Australia/Brisbane")); + QScopedPointer<QObject> obj; + auto cleanup = qScopeGuard([&original, &obj] { + // Restore to original time zone + setTimeZone(original); + QMetaObject::invokeMethod(obj.data(), "resetTimeZone"); + }); + DateFormatter formatter; QQmlEngine e; e.rootContext()->setContextObject(&formatter); QQmlComponent c(&e, testFileUrl("timeZoneUpdated.qml")); - QScopedPointer<QObject> obj(c.create()); + QVERIFY2(!c.isError(), qPrintable(c.errorString())); + obj.reset(c.create()); QVERIFY(obj); QVERIFY(obj->property("success").toBool()); @@ -1284,11 +1294,6 @@ void tst_qqmllocale::timeZoneUpdated() setTimeZone(QByteArray("Asia/Kolkata")); QMetaObject::invokeMethod(obj.data(), "check"); - - // Reset to original time - setTimeZone(original); - QMetaObject::invokeMethod(obj.data(), "resetTimeZone"); - QVERIFY(obj->property("success").toBool()); } #endif |