diff options
author | Andrei Golubev <andrei.golubev@qt.io> | 2020-04-23 17:11:40 +0300 |
---|---|---|
committer | Andrei Golubev <andrei.golubev@qt.io> | 2020-05-11 14:42:00 +0300 |
commit | b428e98052aa1b97a42f31ed52b1266d17e186ee (patch) | |
tree | d6ce2fefdef8279b986239b2f09a5c3fa36da473 /tests/auto | |
parent | 255cc55d74b55dfbecd9af0ea8d39aaf181da4ce (diff) |
Make qtbase compile without QT_CONFIG(timezone)
Fixes: QTBUG-83795
Pick-to: 5.15
Change-Id: I05eaaf57d87a9111d3609ebab81bc707f8af98f0
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'tests/auto')
7 files changed, 105 insertions, 17 deletions
diff --git a/tests/auto/corelib/text/qlocale/tst_qlocale.cpp b/tests/auto/corelib/text/qlocale/tst_qlocale.cpp index 570a1db9b3..29fa3cc075 100644 --- a/tests/auto/corelib/text/qlocale/tst_qlocale.cpp +++ b/tests/auto/corelib/text/qlocale/tst_qlocale.cpp @@ -1787,6 +1787,7 @@ void tst_QLocale::formatTimeZone() const QString cest(QStringLiteral("CEST")); #endif +#if QT_CONFIG(timezone) QDateTime dt6(QDate(2013, 1, 1), QTime(0, 0, 0), QTimeZone("Europe/Berlin")); #ifdef Q_OS_WIN QEXPECT_FAIL("", "QTimeZone windows backend only returns long name", Continue); @@ -1798,6 +1799,7 @@ void tst_QLocale::formatTimeZone() QEXPECT_FAIL("", "QTimeZone windows backend only returns long name", Continue); #endif QCOMPARE(enUS.toString(dt7, "t"), cest); +#endif // Current datetime should return current abbreviation QCOMPARE(enUS.toString(QDateTime::currentDateTime(), "t"), diff --git a/tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp b/tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp index bf84508522..a3fe6faead 100644 --- a/tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp +++ b/tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp @@ -709,9 +709,11 @@ void tst_QDateTime::setMSecsSinceEpoch() QCOMPARE(localDt.timeSpec(), Qt::LocalTime); // Compare result for LocalTime to TimeZone - QTimeZone europe("Europe/Oslo"); QDateTime dt2; +#if QT_CONFIG(timezone) + QTimeZone europe("Europe/Oslo"); dt2.setTimeZone(europe); +#endif dt2.setMSecsSinceEpoch(msecs); QCOMPARE(dt2.date(), cet.date()); @@ -720,8 +722,10 @@ void tst_QDateTime::setMSecsSinceEpoch() // have hard limits. Let's restrict it to the 32-bit Unix range if (dt2.date().year() >= 1970 && dt2.date().year() <= 2037) QCOMPARE(dt2.time(), cet.time()); +#if QT_CONFIG(timezone) QCOMPARE(dt2.timeSpec(), Qt::TimeZone); QCOMPARE(dt2.timeZone(), europe); +#endif } QCOMPARE(dt.toMSecsSinceEpoch(), msecs); @@ -958,14 +962,15 @@ void tst_QDateTime::toString_textDate_extra() QVERIFY(!dt.toString().endsWith(GMT)); dt = QDateTime::fromMSecsSinceEpoch(0, Qt::UTC).toLocalTime(); QVERIFY(!dt.toString().endsWith(GMT)); - if (QTimeZone::systemTimeZone().offsetFromUtc(dt)) - QVERIFY(dt.toString() != QLatin1String("Thu Jan 1 00:00:00 1970")); - else - QCOMPARE(dt.toString(), QLatin1String("Thu Jan 1 00:00:00 1970")); + #if QT_CONFIG(timezone) # if defined Q_OS_UNIX && !defined Q_OS_DARWIN && !defined Q_OS_ANDROID # define CORRECT_ZONE_ABBREV # endif // QTBUG-57320, QTBUG-57298, QTBUG-68833 + if (QTimeZone::systemTimeZone().offsetFromUtc(dt)) + QVERIFY(dt.toString() != QLatin1String("Thu Jan 1 00:00:00 1970")); + else + QCOMPARE(dt.toString(), QLatin1String("Thu Jan 1 00:00:00 1970")); QTimeZone PST("America/Vancouver"); if (PST.isValid()) { @@ -993,7 +998,12 @@ void tst_QDateTime::toString_textDate_extra() } else { qDebug("Missed zone test: no Europe/Berlin zone available"); } -#endif // timezone +#else // timezone + if (dt.offsetFromUtc()) + QVERIFY(dt.toString() != QLatin1String("Thu Jan 1 00:00:00 1970")); + else + QCOMPARE(dt.toString(), QLatin1String("Thu Jan 1 00:00:00 1970")); +#endif dt = QDateTime::fromMSecsSinceEpoch(0, Qt::UTC); QVERIFY(dt.toString().endsWith(GMT)); } @@ -2501,10 +2511,11 @@ void tst_QDateTime::fromStringStringFormat_data() QTest::newRow("data13") << QString("30.02.2004") << QString("dd.MM.yyyy") << invalidDateTime(); QTest::newRow("data14") << QString("32.01.2004") << QString("dd.MM.yyyy") << invalidDateTime(); QTest::newRow("data15") << QString("Thu January 2004") << QString("ddd MMMM yyyy") << QDateTime(QDate(2004, 1, 1), QTime()); +#if QT_CONFIG(timezone) + // Qt::UTC and Qt::OffsetFromUTC not supported without timezone: QTBUG-83844 QTest::newRow("data16") << QString("2005-06-28T07:57:30.001Z") << QString("yyyy-MM-ddThh:mm:ss.zt") << QDateTime(QDate(2005, 06, 28), QTime(07, 57, 30, 1), Qt::UTC); -#if QT_CONFIG(timezone) QTimeZone southBrazil("America/Sao_Paulo"); if (southBrazil.isValid()) { QTest::newRow("spring-forward-midnight") @@ -2541,8 +2552,10 @@ void tst_QDateTime::fromStringStringFormat() if (expected.isValid()) { QCOMPARE(dt.timeSpec(), expected.timeSpec()); +#if QT_CONFIG(timezone) if (expected.timeSpec() == Qt::TimeZone) QCOMPARE(dt.timeZone(), expected.timeZone()); +#endif } QCOMPARE(dt, expected); } @@ -2589,7 +2602,15 @@ void tst_QDateTime::fromStringToStringLocale() ROUNDTRIP(Qt::SystemLocaleDate); ROUNDTRIP(Qt::LocaleDate); +#if !QT_CONFIG(timezone) + QEXPECT_FAIL("", "Long date formats (with time-zone specifiers) need timezone feature enabled", + Continue); +#endif ROUNDTRIP(Qt::DefaultLocaleLongDate); +#if !QT_CONFIG(timezone) + QEXPECT_FAIL("", "Long date formats (with time-zone specifiers) need timezone feature enabled", + Continue); +#endif ROUNDTRIP(Qt::SystemLocaleLongDate); #undef ROUNDTRIP QLocale::setDefault(def); @@ -2605,7 +2626,9 @@ void tst_QDateTime::offsetFromUtc() // Offset constructor QDateTime dt1(QDate(2013, 1, 1), QTime(1, 0, 0), Qt::OffsetFromUTC, 60 * 60); QCOMPARE(dt1.offsetFromUtc(), 60 * 60); +#if QT_CONFIG(timezone) QVERIFY(dt1.timeZone().isValid()); +#endif dt1 = QDateTime(QDate(2013, 1, 1), QTime(1, 0, 0), Qt::OffsetFromUTC, -60 * 60); QCOMPARE(dt1.offsetFromUtc(), -60 * 60); @@ -2625,11 +2648,13 @@ void tst_QDateTime::offsetFromUtc() QSKIP("You must test using Central European (CET/CEST) time zone, e.g. TZ=Europe/Oslo"); } +#if QT_CONFIG(timezone) QDateTime dt5(QDate(2013, 1, 1), QTime(0, 0, 0), QTimeZone("Pacific/Auckland")); QCOMPARE(dt5.offsetFromUtc(), 46800); QDateTime dt6(QDate(2013, 6, 1), QTime(0, 0, 0), QTimeZone("Pacific/Auckland")); QCOMPARE(dt6.offsetFromUtc(), 43200); +#endif } void tst_QDateTime::setOffsetFromUtc() @@ -2785,6 +2810,7 @@ void tst_QDateTime::zoneAtTime_data() void tst_QDateTime::zoneAtTime() { +#if QT_CONFIG(timezone) QFETCH(QByteArray, ianaID); QFETCH(QDate, date); QFETCH(int, offset); @@ -2797,6 +2823,9 @@ void tst_QDateTime::zoneAtTime() QCOMPARE(zone.standardTimeOffset(QDateTime(date, noon, zone)), offset); else // zone.offsetFromUtc *does* include DST, even before epoch QCOMPARE(zone.offsetFromUtc(QDateTime(date, noon, zone)), offset); +#else + QSKIP("Needs timezone feature enabled"); +#endif } void tst_QDateTime::timeZoneAbbreviation() @@ -2838,6 +2867,7 @@ void tst_QDateTime::timeZoneAbbreviation() const QString cest(QStringLiteral("CEST")); #endif +#if QT_CONFIG(timezone) QDateTime dt5(QDate(2013, 1, 1), QTime(0, 0, 0), QTimeZone("Europe/Berlin")); #ifdef Q_OS_WIN QEXPECT_FAIL("", "Windows only reports long names (QTBUG-32759)", Continue); @@ -2848,6 +2878,7 @@ void tst_QDateTime::timeZoneAbbreviation() QEXPECT_FAIL("", "Windows only reports long names (QTBUG-32759)", Continue); #endif QCOMPARE(dt6.timeZoneAbbreviation(), cest); +#endif } void tst_QDateTime::getDate() @@ -3323,6 +3354,7 @@ void tst_QDateTime::daylightTransitions() const void tst_QDateTime::timeZones() const { +#if QT_CONFIG(timezone) QTimeZone invalidTz = QTimeZone("Vulcan/ShiKahr"); QCOMPARE(invalidTz.isValid(), false); QDateTime invalidDateTime = QDateTime(QDate(2000, 1, 1), QTime(0, 0, 0), invalidTz); @@ -3518,6 +3550,9 @@ void tst_QDateTime::timeZones() const QDateTime future(QDate(2015, 1, 1), QTime(0, 0, 0), sgt); QVERIFY(future.isValid()); QCOMPARE(future.offsetFromUtc(), 28800); +#else + QSKIP("Needs timezone feature enabled"); +#endif } void tst_QDateTime::systemTimeZoneChange() const @@ -3530,13 +3565,17 @@ void tst_QDateTime::systemTimeZoneChange() const QDateTime localDate = QDateTime(QDate(2012, 6, 1), QTime(2, 15, 30), Qt::LocalTime); QDateTime utcDate = QDateTime(QDate(2012, 6, 1), QTime(2, 15, 30), Qt::UTC); +#if QT_CONFIG(timezone) QDateTime tzDate = QDateTime(QDate(2012, 6, 1), QTime(2, 15, 30), QTimeZone("Australia/Brisbane")); +#endif qint64 localMsecs = localDate.toMSecsSinceEpoch(); qint64 utcMsecs = utcDate.toMSecsSinceEpoch(); +#if QT_CONFIG(timezone) qint64 tzMsecs = tzDate.toMSecsSinceEpoch(); // check that Australia/Brisbane is known QVERIFY(tzDate.timeZone().isValid()); +#endif // Change to Indian time useZone.reset(QByteArray("IST-05:30")); @@ -3545,8 +3584,10 @@ void tst_QDateTime::systemTimeZoneChange() const QVERIFY(localMsecs != localDate.toMSecsSinceEpoch()); QCOMPARE(utcDate, QDateTime(QDate(2012, 6, 1), QTime(2, 15, 30), Qt::UTC)); QCOMPARE(utcDate.toMSecsSinceEpoch(), utcMsecs); +#if QT_CONFIG(timezone) QCOMPARE(tzDate, QDateTime(QDate(2012, 6, 1), QTime(2, 15, 30), QTimeZone("Australia/Brisbane"))); QCOMPARE(tzDate.toMSecsSinceEpoch(), tzMsecs); +#endif } void tst_QDateTime::invalid_data() const @@ -3561,6 +3602,7 @@ void tst_QDateTime::invalid_data() const QTest::newRow("UTC") << invalidDate.toUTC() << Qt::UTC << true; QTest::newRow("offset") << invalidDate.toOffsetFromUtc(3600) << Qt::OffsetFromUTC << true; +#if QT_CONFIG(timezone) QTest::newRow("CET") << invalidDate.toTimeZone(QTimeZone("Europe/Oslo")) << Qt::TimeZone << true; @@ -3571,6 +3613,7 @@ void tst_QDateTime::invalid_data() const << QDateTime::fromMSecsSinceEpoch(42, QTimeZone()) << Qt::TimeZone << false; QDateTime valid(QDate(1970, 1, 1), QTime(12, 0), Qt::UTC); QTest::newRow("tonozone") << valid.toTimeZone(QTimeZone()) << Qt::TimeZone << false; +#endif } void tst_QDateTime::invalid() const @@ -3584,7 +3627,9 @@ void tst_QDateTime::invalid() const if (!goodZone) QCOMPARE(when.toMSecsSinceEpoch(), 0); QVERIFY(!when.isDaylightTime()); +#if QT_CONFIG(timezone) QCOMPARE(when.timeZone().isValid(), goodZone); +#endif } void tst_QDateTime::range() const diff --git a/tests/auto/corelib/time/time.pro b/tests/auto/corelib/time/time.pro index 6f1ee9a8bd..c917587fe7 100644 --- a/tests/auto/corelib/time/time.pro +++ b/tests/auto/corelib/time/time.pro @@ -3,5 +3,5 @@ SUBDIRS = \ qcalendar \ qdate \ qdatetime \ - qtime \ - qtimezone + qtime +qtConfig(timezone): SUBDIRS += qtimezone diff --git a/tests/auto/other/toolsupport/tst_toolsupport.cpp b/tests/auto/other/toolsupport/tst_toolsupport.cpp index 9591eca16a..c023fa3ac3 100644 --- a/tests/auto/other/toolsupport/tst_toolsupport.cpp +++ b/tests/auto/other/toolsupport/tst_toolsupport.cpp @@ -140,8 +140,10 @@ void tst_toolsupport::offsets_data() << pmm_to_offsetof(&QDateTimePrivate::m_status) << 4 << 4; QTest::newRow("QDateTimePrivate::m_offsetFromUtc") << pmm_to_offsetof(&QDateTimePrivate::m_offsetFromUtc) << 16 << 16; +#if QT_CONFIG(timezone) QTest::newRow("QDateTimePrivate::m_timeZone") << pmm_to_offsetof(&QDateTimePrivate::m_timeZone) << 20 << 24; +#endif } #endif // RUN_MEMBER_OFFSET_TEST } diff --git a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp index e15ac4faf3..e60d33081b 100644 --- a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp +++ b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp @@ -4018,6 +4018,7 @@ void tst_QSqlQuery::QTBUG_36211() QSqlQuery q(db); QVERIFY_SQL(q, exec(QString("CREATE TABLE %1 (dtwtz timestamptz, dtwotz timestamp)").arg(tableName))); +#if QT_CONFIG(timezone) QTimeZone l_tzBrazil("America/Sao_Paulo"); QTimeZone l_tzChina("Asia/Shanghai"); QVERIFY(l_tzBrazil.isValid()); @@ -4044,6 +4045,7 @@ void tst_QSqlQuery::QTBUG_36211() QVERIFY(diff <= 1000 - keep); } } +#endif } } @@ -4546,6 +4548,7 @@ void tst_QSqlQuery::dateTime_data() QTest::addColumn<QList<QDateTime> >("initialDateTimes"); QTest::addColumn<QList<QDateTime> >("expectedDateTimes"); +#if QT_CONFIG(timezone) // Using time zones which are highly unlikely to be the same as the testing machine's one // as it could pass as a result despite it. // +8.5 hours from UTC to North Korea @@ -4553,17 +4556,37 @@ void tst_QSqlQuery::dateTime_data() // -8 hours from UTC to Belize const QTimeZone beforeUTCTimeZone(-28800); const QTimeZone utcTimeZone("UTC"); - const QDateTime dt(QDate(2015, 5, 18), QTime(4, 26, 30)); - const QDateTime dtWithMS(QDate(2015, 5, 18), QTime(4, 26, 30, 500)); + const QDateTime dtWithAfterTZ(QDate(2015, 5, 18), QTime(4, 26, 30, 500), afterUTCTimeZone); const QDateTime dtWithBeforeTZ(QDate(2015, 5, 18), QTime(4, 26, 30, 500), beforeUTCTimeZone); const QDateTime dtWithUTCTZ(QDate(2015, 5, 18), QTime(4, 26, 30, 500), utcTimeZone); - const QList<QDateTime> dateTimes = { dt, dtWithMS, dtWithAfterTZ, dtWithBeforeTZ, dtWithUTCTZ }; - const QList<QDateTime> expectedDateTimesLocalTZ = { dt, dtWithMS, dtWithAfterTZ.toLocalTime(), - dtWithBeforeTZ.toLocalTime(), - dtWithUTCTZ.toLocalTime() }; - const QList<QDateTime> expectedTimeStampDateTimes = { dt, dtWithMS, dtWithMS, dtWithMS, dtWithMS }; - const QList<QDateTime> expectedDateTimes = { dt, dt, dt, dt, dt }; +#endif + const QDateTime dt(QDate(2015, 5, 18), QTime(4, 26, 30)); + const QDateTime dtWithMS(QDate(2015, 5, 18), QTime(4, 26, 30, 500)); + const QList<QDateTime> dateTimes = { + dt, dtWithMS, +#if QT_CONFIG(timezone) + dtWithAfterTZ, dtWithBeforeTZ, dtWithUTCTZ +#endif + }; + const QList<QDateTime> expectedDateTimesLocalTZ = { + dt, dtWithMS, +#if QT_CONFIG(timezone) + dtWithAfterTZ.toLocalTime(), dtWithBeforeTZ.toLocalTime(), dtWithUTCTZ.toLocalTime() +#endif + }; + const QList<QDateTime> expectedTimeStampDateTimes = { + dt, dtWithMS, +#if QT_CONFIG(timezone) + dtWithMS, dtWithMS, dtWithMS +#endif + }; + const QList<QDateTime> expectedDateTimes = { + dt, dt, +#if QT_CONFIG(timezone) + dt, dt, dt +#endif + }; for (const QString &dbName : qAsConst(dbs.dbNames)) { QSqlDatabase db = QSqlDatabase::database(dbName); diff --git a/tests/auto/widgets/itemviews/qitemdelegate/tst_qitemdelegate.cpp b/tests/auto/widgets/itemviews/qitemdelegate/tst_qitemdelegate.cpp index 0243b587b2..a9d2b413f0 100644 --- a/tests/auto/widgets/itemviews/qitemdelegate/tst_qitemdelegate.cpp +++ b/tests/auto/widgets/itemviews/qitemdelegate/tst_qitemdelegate.cpp @@ -1605,7 +1605,9 @@ void tst_QItemDelegate::dateTextForRole_data() // Ensure we exercise every time-spec variant: QTest::newRow("local") << QDateTime(date, time, Qt::LocalTime); QTest::newRow("UTC") << QDateTime(date, time, Qt::UTC); +#if QT_CONFIG(timezone) QTest::newRow("zone") << QDateTime(date, time, QTimeZone("Europe/Dublin")); +#endif QTest::newRow("offset") << QDateTime(date, time, Qt::OffsetFromUTC, 36000); #endif } diff --git a/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp b/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp index 08c80c96ab..6efac708b9 100644 --- a/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp +++ b/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp @@ -4510,6 +4510,7 @@ void tst_QDateTimeEdit::stepModifierPressAndHold() QCOMPARE(value.toDate(), expectedDate); } +#if QT_CONFIG(timezone) /* The following tests verify correct handling of the spring forward gap; which hour is skipped, and on which day, depends on the local time zone. We try to @@ -4535,6 +4536,7 @@ static QDateTime findSpring(int year, const QTimeZone &timeZone) return spring; }; +#endif /*! Test that typing in a time that is invalid due to spring forward gap @@ -4542,6 +4544,7 @@ static QDateTime findSpring(int year, const QTimeZone &timeZone) */ void tst_QDateTimeEdit::springForward_data() { +#if QT_CONFIG(timezone) QTest::addColumn<QDateTime>("start"); QTest::addColumn<QAbstractSpinBox::CorrectionMode>("correctionMode"); QTest::addColumn<QTime>("inputTime"); @@ -4589,10 +4592,14 @@ void tst_QDateTimeEdit::springForward_data() << QAbstractSpinBox::CorrectToNearestValue << springGapMiddle << springTransition; +#else + QSKIP("Needs timezone feature enabled"); +#endif } void tst_QDateTimeEdit::springForward() { +#if QT_CONFIG(timezone) QFETCH(QDateTime, start); QFETCH(QAbstractSpinBox::CorrectionMode, correctionMode); QFETCH(QTime, inputTime); @@ -4621,6 +4628,7 @@ void tst_QDateTimeEdit::springForward() QTest::keyClick(&edit, Qt::Key_Return, {}); QCOMPARE(edit.dateTime(), expected); +#endif } /*! @@ -4632,6 +4640,7 @@ void tst_QDateTimeEdit::springForward() */ void tst_QDateTimeEdit::stepIntoDSTGap_data() { +#if QT_CONFIG(timezone) QTest::addColumn<QDateTime>("start"); QTest::addColumn<QDateTimeEdit::Section>("section"); QTest::addColumn<int>("steps"); @@ -4706,10 +4715,14 @@ void tst_QDateTimeEdit::stepIntoDSTGap_data() << QDateTimeEdit::YearSection << -1 << springTransition; +#else + QSKIP("Needs timezone feature enabled"); +#endif } void tst_QDateTimeEdit::stepIntoDSTGap() { +#if QT_CONFIG(timezone) QFETCH(QDateTime, start); QFETCH(QDateTimeEdit::Section, section); QFETCH(int, steps); @@ -4732,6 +4745,7 @@ void tst_QDateTimeEdit::stepIntoDSTGap() QTest::keyClick(&edit, steps > 0 ? Qt::Key_Up : Qt::Key_Down, {}); QCOMPARE(edit.dateTime(), end); +#endif } QTEST_MAIN(tst_QDateTimeEdit) |