From b81515c58ab3818aec67880b636b2c5a9116c038 Mon Sep 17 00:00:00 2001 From: Edward Welbourne Date: Fri, 24 Mar 2023 14:26:35 +0100 Subject: [PATCH] Correct a test's precondition on the system zone America/Sao_Paulo was not alone in starting 2008-10-19 with a spring forward. Include the other affected zones in the check to tune the expected start-of-day time. See [0] for details. [0] https://github.com/eggert/tz/blob/main/southamerica Pick-to: 6.5 Change-Id: If251d8b715090319441790696983273637765d2e Reviewed-by: Ivan Solovev Reviewed-by: Thiago Macieira --- tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp b/tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp index 43c0709454d..2ea514e651b 100644 --- a/tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp +++ b/tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp @@ -2679,10 +2679,16 @@ void tst_QDateTime::fromStringDateFormat_data() QTest::newRow("ISO 24:00") << QString::fromLatin1("2012-06-04T24:00:00") << Qt::ISODate << QDate(2012, 6, 5).startOfDay(); #if QT_CONFIG(timezone) - QTest::newRow("ISO 24:00 in DST") // Only special if TZ=America/Sao_Paulo + const QByteArray sysId = QTimeZone::systemTimeZoneId(); + const bool midnightSkip = sysId == "America/Sao_Paulo" || sysId == "America/Asuncion" + || sysId == "America/Cordoba" || sysId == "America/Argentina/Cordoba" + || sysId == "America/Campo_Grande" + || sysId == "America/Cuiaba" || sysId == "America/Buenos_Aires" + || sysId == "America/Argentina/Buenos_Aires" + || sysId == "America/Argentina/Tucuman" || sysId == "Brazil/East"; + QTest::newRow("ISO 24:00 in DST") // Midnight spring forward in some of South America. << QString::fromLatin1("2008-10-18T24:00") << Qt::ISODate - << QDateTime(QDate(2008, 10, 19), - QTime(QTimeZone::systemTimeZoneId() == "America/Sao_Paulo" ? 1 : 0, 0)); + << QDateTime(QDate(2008, 10, 19), QTime(midnightSkip ? 1 : 0, 0)); #endif QTest::newRow("ISO 24:00 end of month") << QString::fromLatin1("2012-06-30T24:00:00")