summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp')
-rw-r--r--tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp38
1 files changed, 25 insertions, 13 deletions
diff --git a/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
index 5f9f5fbb6f..b81f3d356d 100644
--- a/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
+++ b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
@@ -155,6 +155,29 @@ private:
QDateTime invalidDateTime() const { return QDateTime(invalidDate(), invalidTime()); }
QDate invalidDate() const { return QDate(); }
QTime invalidTime() const { return QTime(-1, -1, -1); }
+
+ class TimeZoneRollback
+ {
+ const QByteArray prior;
+ public:
+ // Save the previous timezone so we can restore it afterwards, otherwise
+ // later tests may break:
+ explicit TimeZoneRollback(const QByteArray &zone) : prior(qgetenv("TZ"))
+ { reset(zone); }
+ void reset(const QByteArray &zone)
+ {
+ qputenv("TZ", zone.constData());
+ tzset();
+ }
+ ~TimeZoneRollback()
+ {
+ if (prior.isNull())
+ qunsetenv("TZ");
+ else
+ qputenv("TZ", prior.constData());
+ tzset();
+ }
+ };
};
Q_DECLARE_METATYPE(Qt::TimeSpec)
@@ -1953,12 +1976,8 @@ void tst_QDateTime::operator_insert_extract()
QFETCH(QString, deserialiseAs);
QFETCH(QDataStream::Version, dataStreamVersion);
- // 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();
+ TimeZoneRollback useZone(serialiseAs.toLocal8Bit());
QDateTime dateTimeAsUTC(dateTime.toUTC());
QByteArray byteArray;
@@ -1983,8 +2002,7 @@ void tst_QDateTime::operator_insert_extract()
// Ensure that a change in timezone between serialisation and deserialisation
// still results in identical UTC-converted datetimes.
- qputenv("TZ", deserialiseAs.toLocal8Bit().constData());
- tzset();
+ useZone.reset(deserialiseAs.toLocal8Bit());
QDateTime expectedLocalTime(dateTimeAsUTC.toLocalTime());
{
// Deserialise whole QDateTime at once.
@@ -2035,12 +2053,6 @@ void tst_QDateTime::operator_insert_extract()
QCOMPARE(localDeserialized, dateTime);
}
}
-
- if (previousTimeZone.isNull())
- qunsetenv("TZ");
- else
- qputenv("TZ", previousTimeZone.constData());
- tzset();
}
void tst_QDateTime::toString_strformat()