diff options
Diffstat (limited to 'tests/auto/testlib/selftests/warnings/tst_warnings.cpp')
-rw-r--r-- | tests/auto/testlib/selftests/warnings/tst_warnings.cpp | 67 |
1 files changed, 36 insertions, 31 deletions
diff --git a/tests/auto/testlib/selftests/warnings/tst_warnings.cpp b/tests/auto/testlib/selftests/warnings/tst_warnings.cpp index ee73bd4fe4..5add39ac88 100644 --- a/tests/auto/testlib/selftests/warnings/tst_warnings.cpp +++ b/tests/auto/testlib/selftests/warnings/tst_warnings.cpp @@ -1,31 +1,7 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2020 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only +#undef QTEST_THROW_ON_FAILURE // fails ### investigate #include <QtCore/QCoreApplication> #include <QtCore/QRegularExpression> @@ -37,7 +13,9 @@ class tst_Warnings: public QObject private slots: void testWarnings(); void testMissingWarnings(); +#if QT_CONFIG(regularexpression) void testMissingWarningsRegularExpression(); +#endif void testMissingWarningsWithData_data(); void testMissingWarningsWithData(); @@ -50,6 +28,7 @@ private slots: void testFailOnWarningsThenSkip(); #endif void testFailOnWarningsAndIgnoreWarnings(); + void testFailOnTemporaryObjectDestruction(); }; void tst_Warnings::testWarnings() @@ -109,6 +88,7 @@ void tst_Warnings::testMissingWarnings() qWarning("Warning2"); } +#if QT_CONFIG(regularexpression) void tst_Warnings::testMissingWarningsRegularExpression() { QTest::ignoreMessage(QtWarningMsg, QRegularExpression("Warning\\d\\d")); @@ -116,6 +96,7 @@ void tst_Warnings::testMissingWarningsRegularExpression() qWarning("Warning11"); } +#endif void tst_Warnings::testMissingWarningsWithData_data() { @@ -136,7 +117,7 @@ void tst_Warnings::testMissingWarningsWithData() void tst_Warnings::testFailOnWarnings() { - // failOnWarnings() wasn't called yet; shouldn't fail; + // failOnWarning() wasn't called yet; shouldn't fail; qWarning("Ran out of space!"); #if QT_CONFIG(regularexpression) @@ -172,8 +153,9 @@ void tst_Warnings::testFailOnWarnings() void tst_Warnings::testFailOnWarningsCleared() { // The patterns passed to failOnWarnings() should be cleared at the end of - // each test function, so this shouldn't fail because of the failOnWarning() call in the previous function. - // Note that this test always needs to come after testFailOnWarnings for it to work. + // each test function, so this shouldn't fail because of the failOnWarning() + // call in the previous function. Note that this test always needs to come + // after testFailOnWarnings for it to test anything meaningfully. qWarning("Ran out of muffins!"); } @@ -202,7 +184,9 @@ void tst_Warnings::testFailOnWarningsWithData() void tst_Warnings::testFailOnWarningsFailInHelper() { + const QTest::ThrowOnFailDisabler nothrow; // tests repeated QFAILs [](){ QFAIL("This failure message should be printed but not cause the test to abort"); }(); + // So we've already failed, but we get more messages - that don't increment counters. const auto warnRegex = QRegularExpression("Ran out of .*!"); QTest::failOnWarning(warnRegex); qWarning("Ran out of cabbage!"); @@ -214,7 +198,7 @@ void tst_Warnings::testFailOnWarningsThenSkip() const auto warnRegex = QRegularExpression("Ran out of .*!"); QTest::failOnWarning(warnRegex); qWarning("Ran out of cabbage!"); - QSKIP("My cabbage! :("); + QSKIP("My cabbage! :("); // Reports, but doesn't count. } #endif // QT_CONFIG(regularexpression) @@ -227,6 +211,27 @@ void tst_Warnings::testFailOnWarningsAndIgnoreWarnings() qWarning(warningStr); } +void tst_Warnings::testFailOnTemporaryObjectDestruction() +{ + QTest::failOnWarning("Running low on toothpaste!"); + QTest::ignoreMessage(QtWarningMsg, "Ran out of cabbage!"); + + class TestObject : public QObject + { + public: + ~TestObject() + { + // Shouldn't fail - ignored + qWarning("Ran out of cabbage!"); + // Should fail + qWarning("Running low on toothpaste!"); + } + }; + + QScopedPointer<TestObject, QScopedPointerDeleteLater> testObject(new TestObject); + QVERIFY(testObject); +} + QTEST_MAIN(tst_Warnings) #include "tst_warnings.moc" |