From 2f2a799f3d7b2fe6d1a20fdb0dde35354924fe13 Mon Sep 17 00:00:00 2001 From: John Layt Date: Thu, 1 Aug 2013 15:26:50 +0200 Subject: QDateTime - Fix tests to correctly restore time zone The unit tests were caching the original TZ value to restore later after testing with different TZ values. The problem is reading TZ will return a null value if no override TZ value is set, and if you then set the TZ to null the system assumes UTC and not the system time zone. Instead we need to unset TZ if it was null to start with. Change-Id: Ib0625b1712e565f9fdfa99e2ffe1e5d74f059354 Reviewed-by: Mitch Curtis Reviewed-by: Thiago Macieira --- tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'tests') diff --git a/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp index a0e55e9ae1..50092c9989 100644 --- a/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp +++ b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp @@ -1430,8 +1430,9 @@ void tst_QDateTime::operator_insert_extract() QFETCH(QString, deserialiseAs); QFETCH(QDataStream::Version, dataStreamVersion); - // Save the previous timezone so we can restore it afterwards, just in case. - QString previousTimeZone = qgetenv("TZ"); + // Save the previous timezone so we can restore it afterwards, otherwise later tests will break + QByteArray previousTimeZone = qgetenv("TZ"); + // Start off in a certain timezone. qputenv("TZ", serialiseAs.toLocal8Bit().constData()); tzset(); @@ -1512,7 +1513,10 @@ void tst_QDateTime::operator_insert_extract() } } - qputenv("TZ", previousTimeZone.toLocal8Bit().constData()); + if (previousTimeZone.isNull()) + qunsetenv("TZ"); + else + qputenv("TZ", previousTimeZone.constData()); tzset(); } #endif -- cgit v1.2.3