diff options
Diffstat (limited to 'tests/auto/quicktest')
19 files changed, 783 insertions, 4 deletions
diff --git a/tests/auto/quicktest/polish-qml/data/tst_polish.qml b/tests/auto/quicktest/polish-qml/data/tst_polish.qml new file mode 100644 index 0000000000..d2d5972d43 --- /dev/null +++ b/tests/auto/quicktest/polish-qml/data/tst_polish.qml @@ -0,0 +1,60 @@ +/**************************************************************************** +** +** Copyright (C) 2018 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$ +** +****************************************************************************/ + +import QtQuick 2.13 +import QtTest 1.13 + +import Test 1.0 + +TestCase { + id: testCase + name: "polish-qml" + when: windowShown + + Component { + id: customItemComponent + CustomItem {} + } + + function test_polish() + { + var item = createTemporaryObject(customItemComponent, testCase) + verify(item) + + item.polishMe() + verify(isPolishScheduled(item)) + verify(item.isPolishScheduled()) + + verify(waitForItemPolished(item)) + verify(item.wasUpdatePolishCalled()) + + // TODO: test failure conditions when https://bugreports.qt.io/browse/QTBUG-72351 is fixed +// expectFail("", "Not a valid item") +// isPolishScheduled(null) + } +} diff --git a/tests/auto/quicktest/polish-qml/polish-qml.pro b/tests/auto/quicktest/polish-qml/polish-qml.pro new file mode 100644 index 0000000000..15b913ffe1 --- /dev/null +++ b/tests/auto/quicktest/polish-qml/polish-qml.pro @@ -0,0 +1,12 @@ +CONFIG += qmltestcase +macos:CONFIG -= app_bundle +TARGET = tst_polish-qml + +QT += testlib quick quick-private + +include (../../shared/util.pri) + +SOURCES += tst_polish-qml.cpp + +TESTDATA += \ + $$PWD/data/*.qml diff --git a/tests/auto/quicktest/polish-qml/tst_polish-qml.cpp b/tests/auto/quicktest/polish-qml/tst_polish-qml.cpp new file mode 100644 index 0000000000..e525a8a5af --- /dev/null +++ b/tests/auto/quicktest/polish-qml/tst_polish-qml.cpp @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2018 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$ +** +****************************************************************************/ + +#include <QtTest/qtest.h> +#include <QtQml/qqmlengine.h> +#include <QtQuick/qquickitem.h> +#include <QtQuick/private/qquickitem_p.h> +#include <QtQuick/qquickview.h> +#include <QtQuickTest/quicktest.h> + +#include "../../shared/util.h" + +class CustomItem : public QQuickItem +{ + Q_OBJECT + +public: + CustomItem() {} + + Q_INVOKABLE void polishMe() { + polish(); + } + + Q_INVOKABLE bool isPolishScheduled() const + { + return QQuickItemPrivate::get(this)->polishScheduled; + } + + Q_INVOKABLE bool wasUpdatePolishCalled() const + { + return updatePolishCalled; + } + + void updatePolish() override + { + updatePolishCalled = true; + } + +private: + bool updatePolishCalled = false; +}; + +class TestSetup : public QObject +{ + Q_OBJECT + +public: + TestSetup() {} + +public slots: + void applicationAvailable() + { + qmlRegisterType<CustomItem>("Test", 1, 0, "CustomItem"); + } +}; + +QUICK_TEST_MAIN_WITH_SETUP(polish-qml, TestSetup) + +#include "tst_polish-qml.moc" diff --git a/tests/auto/quicktest/polish/data/polish.qml b/tests/auto/quicktest/polish/data/polish.qml new file mode 100644 index 0000000000..0ab3afda2e --- /dev/null +++ b/tests/auto/quicktest/polish/data/polish.qml @@ -0,0 +1,32 @@ +/**************************************************************************** +** +** Copyright (C) 2018 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import Test 1.0 + +CustomItem {} diff --git a/tests/auto/quicktest/polish/polish.pro b/tests/auto/quicktest/polish/polish.pro new file mode 100644 index 0000000000..0dfb4bdf5e --- /dev/null +++ b/tests/auto/quicktest/polish/polish.pro @@ -0,0 +1,12 @@ +CONFIG += qmltestcase +macos:CONFIG -= app_bundle +TARGET = tst_polish + +QT += testlib quick quick-private + +include (../../shared/util.pri) + +SOURCES += tst_polish.cpp + +TESTDATA += \ + $$PWD/data/*.qml diff --git a/tests/auto/quicktest/polish/tst_polish.cpp b/tests/auto/quicktest/polish/tst_polish.cpp new file mode 100644 index 0000000000..3b96002cd2 --- /dev/null +++ b/tests/auto/quicktest/polish/tst_polish.cpp @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2018 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$ +** +****************************************************************************/ + +#include <QtTest/qtest.h> +#include <QtQml/qqmlengine.h> +#include <QtQml/qqmlcontext.h> +#include <QtQuick/qquickitem.h> +#include <QQuickView> +#include <QtQuickTest/quicktest.h> + +#include "../../shared/util.h" + +class CustomItem : public QQuickItem +{ + Q_OBJECT + +public: + CustomItem() {} + + void updatePolish() override + { + updatePolishCalled = true; + } + + bool updatePolishCalled = false; +}; + +class tst_Polish : public QQmlDataTest +{ + Q_OBJECT + +public: + tst_Polish(); + +private slots: + void testPolish(); +}; + +tst_Polish::tst_Polish() +{ + qmlRegisterType<CustomItem>("Test", 1, 0, "CustomItem"); +} + +void tst_Polish::testPolish() +{ + QQuickView view; + view.setSource(testFileUrl("polish.qml")); + view.show(); + QVERIFY(QTest::qWaitForWindowExposed(&view)); + + CustomItem *item = qobject_cast<CustomItem*>(view.rootObject()); + QVERIFY(item); + + item->polish(); + QVERIFY(QQuickTest::qIsPolishScheduled(item)); + QVERIFY(!item->updatePolishCalled); + QVERIFY(QQuickTest::qWaitForItemPolished(item)); + QVERIFY(item->updatePolishCalled); +} + +QTEST_MAIN(tst_Polish) + +#include "tst_polish.moc" diff --git a/tests/auto/quicktest/quicktest.pro b/tests/auto/quicktest/quicktest.pro index 3b4ec23a64..6d09f76c1d 100644 --- a/tests/auto/quicktest/quicktest.pro +++ b/tests/auto/quicktest/quicktest.pro @@ -1,3 +1,6 @@ TEMPLATE = subdirs SUBDIRS = \ - signalspy + polish \ + signalspy \ + quicktestmainwithsetup \ + testfiltering diff --git a/tests/auto/quicktest/quicktestmainwithsetup/data/tst_setup.qml b/tests/auto/quicktest/quicktestmainwithsetup/data/tst_setup.qml new file mode 100644 index 0000000000..0f5466998a --- /dev/null +++ b/tests/auto/quicktest/quicktestmainwithsetup/data/tst_setup.qml @@ -0,0 +1,39 @@ +/**************************************************************************** +** +** Copyright (C) 2018 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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtTest 1.2 + +TestCase { + name: "setup" + + function initTestCase() + { + verify(qmlEngineAvailableCalled) + } +} diff --git a/tests/auto/quicktest/quicktestmainwithsetup/quicktestmainwithsetup.pro b/tests/auto/quicktest/quicktestmainwithsetup/quicktestmainwithsetup.pro new file mode 100644 index 0000000000..a8c1c6d36a --- /dev/null +++ b/tests/auto/quicktest/quicktestmainwithsetup/quicktestmainwithsetup.pro @@ -0,0 +1,12 @@ +CONFIG += qmltestcase +macos:CONFIG -= app_bundle +TARGET = tst_quicktestmainwithsetup + +QT += testlib quick + +include (../../shared/util.pri) + +SOURCES += tst_quicktestmainwithsetup.cpp + +TESTDATA += \ + $$PWD/data/*.qml diff --git a/tests/auto/quicktest/quicktestmainwithsetup/tst_quicktestmainwithsetup.cpp b/tests/auto/quicktest/quicktestmainwithsetup/tst_quicktestmainwithsetup.cpp new file mode 100644 index 0000000000..b0545d1a95 --- /dev/null +++ b/tests/auto/quicktest/quicktestmainwithsetup/tst_quicktestmainwithsetup.cpp @@ -0,0 +1,54 @@ +/**************************************************************************** +** +** Copyright (C) 2018 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$ +** +****************************************************************************/ + +#include <QtTest/qtest.h> +#include <QtQml/qqmlengine.h> +#include <QtQml/qqmlcontext.h> +#include <QtQuick/qquickitem.h> +#include <QtQuick/qquickview.h> +#include <QtQuickTest/quicktest.h> + +#include "../../shared/util.h" + +class CustomTestSetup : public QObject +{ + Q_OBJECT + +public: + CustomTestSetup() {} + +public slots: + void qmlEngineAvailable(QQmlEngine *qmlEngine) + { + qmlEngine->rootContext()->setContextProperty("qmlEngineAvailableCalled", true); + } +}; + +QUICK_TEST_MAIN_WITH_SETUP(qquicktestsetup, CustomTestSetup) + +#include "tst_quicktestmainwithsetup.moc" diff --git a/tests/auto/quicktest/signalspy/tst_signalspy.cpp b/tests/auto/quicktest/signalspy/tst_signalspy.cpp index f54da7819c..0806f43c1c 100644 --- a/tests/auto/quicktest/signalspy/tst_signalspy.cpp +++ b/tests/auto/quicktest/signalspy/tst_signalspy.cpp @@ -58,7 +58,7 @@ void tst_SignalSpy::testValid() { QQuickView window; window.setSource(testFileUrl("signalspy.qml")); - QVERIFY(window.rootObject() != 0); + QVERIFY(window.rootObject() != nullptr); QObject *mouseSpy = window.rootObject()->findChild<QObject*>("mouseSpy"); QVERIFY(mouseSpy->property("valid").toBool()); @@ -73,8 +73,8 @@ void tst_SignalSpy::testCount() window.resize(200, 200); window.setSource(testFileUrl("signalspy.qml")); window.show(); - QTest::qWaitForWindowActive(&window); - QVERIFY(window.rootObject() != 0); + QVERIFY(QTest::qWaitForWindowActive(&window)); + QVERIFY(window.rootObject() != nullptr); QObject *mouseSpy = window.rootObject()->findChild<QObject*>("mouseSpy"); QCOMPARE(mouseSpy->property("count").toInt(), 0); diff --git a/tests/auto/quicktest/testfiltering/quicktestmain/quicktestmain.cpp b/tests/auto/quicktest/testfiltering/quicktestmain/quicktestmain.cpp new file mode 100644 index 0000000000..656911f842 --- /dev/null +++ b/tests/auto/quicktest/testfiltering/quicktestmain/quicktestmain.cpp @@ -0,0 +1,29 @@ +/**************************************************************************** +** +** Copyright (C) 2018 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$ +** +****************************************************************************/ +#include <QtQuickTest/quicktest.h> +QUICK_TEST_MAIN(quicktestmain) diff --git a/tests/auto/quicktest/testfiltering/quicktestmain/quicktestmain.pro b/tests/auto/quicktest/testfiltering/quicktestmain/quicktestmain.pro new file mode 100644 index 0000000000..7b3e734cb4 --- /dev/null +++ b/tests/auto/quicktest/testfiltering/quicktestmain/quicktestmain.pro @@ -0,0 +1,11 @@ +CONFIG += qmltestcase +macos:CONFIG -= app_bundle +TARGET = quicktestmain + +DEFINES += QT_QMLTEST_DATADIR=\\\"$${PWD}\\\" + +SOURCES += quicktestmain.cpp + +TESTDATA += $$PWD/*.qml + +DESTDIR = ./ diff --git a/tests/auto/quicktest/testfiltering/quicktestmain/tst_first.qml b/tests/auto/quicktest/testfiltering/quicktestmain/tst_first.qml new file mode 100644 index 0000000000..55c9612b78 --- /dev/null +++ b/tests/auto/quicktest/testfiltering/quicktestmain/tst_first.qml @@ -0,0 +1,38 @@ +/**************************************************************************** +** +** Copyright (C) 2018 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$ +** +****************************************************************************/ + +import QtQuick 2.3 +import QtTest 1.1 + +TestCase { + name: "First" + + function test_foo() { } + function test_bar() { } + function test_baz() { } +} diff --git a/tests/auto/quicktest/testfiltering/quicktestmain/tst_second.qml b/tests/auto/quicktest/testfiltering/quicktestmain/tst_second.qml new file mode 100644 index 0000000000..2143d93e12 --- /dev/null +++ b/tests/auto/quicktest/testfiltering/quicktestmain/tst_second.qml @@ -0,0 +1,38 @@ +/**************************************************************************** +** +** Copyright (C) 2018 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$ +** +****************************************************************************/ + +import QtQuick 2.3 +import QtTest 1.1 + +TestCase { + name: "Second" + + function test_dupfoo() { } + function test_dupbar() { } + function test_dupbaz() { } +} diff --git a/tests/auto/quicktest/testfiltering/quicktestmain/tst_third.qml b/tests/auto/quicktest/testfiltering/quicktestmain/tst_third.qml new file mode 100644 index 0000000000..6e26d8171b --- /dev/null +++ b/tests/auto/quicktest/testfiltering/quicktestmain/tst_third.qml @@ -0,0 +1,62 @@ +/**************************************************************************** +** +** Copyright (C) 2018 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$ +** +****************************************************************************/ + +import QtQuick 2.3 +import QtTest 1.1 + +TestCase { + name: "Third" + + function init_data() { + return [ + { tag: "init_0" }, + { tag: "skip_1" }, + { tag: "init_2" }, + { tag: "skip_3" }, + { tag: "init_4" }, + ] + } + + function test_default_tags(data) { + if (data.tag.startsWith("skip_")) + skip("skip '" + data.tag + "' tag") + } + + function test_tags_data() { + return [ + { tag: "foo" }, + { tag: "bar" }, + { tag: "baz" }, + ] + } + + function test_tags(data) { + if (data.tag === "bar") + skip("skip '" + data.tag + "' tag") + } +} diff --git a/tests/auto/quicktest/testfiltering/test/test.pro b/tests/auto/quicktest/testfiltering/test/test.pro new file mode 100644 index 0000000000..cecbdca725 --- /dev/null +++ b/tests/auto/quicktest/testfiltering/test/test.pro @@ -0,0 +1,5 @@ +CONFIG += testcase +QT += testlib +TARGET = ../tst_testfiltering + +SOURCES = ../tst_testfiltering.cpp diff --git a/tests/auto/quicktest/testfiltering/testfiltering.pro b/tests/auto/quicktest/testfiltering/testfiltering.pro new file mode 100644 index 0000000000..ae7a039b8b --- /dev/null +++ b/tests/auto/quicktest/testfiltering/testfiltering.pro @@ -0,0 +1,4 @@ +TEMPLATE = subdirs +SUBDIRS = \ + test \ + quicktestmain diff --git a/tests/auto/quicktest/testfiltering/tst_testfiltering.cpp b/tests/auto/quicktest/testfiltering/tst_testfiltering.cpp new file mode 100644 index 0000000000..1db3d5be57 --- /dev/null +++ b/tests/auto/quicktest/testfiltering/tst_testfiltering.cpp @@ -0,0 +1,196 @@ +/**************************************************************************** +** +** Copyright (C) 2018 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$ +** +****************************************************************************/ +#include <QProcess> +#include <QtTest> + +class tst_TestFiltering : public QObject +{ + Q_OBJECT +private slots: + void noFilters(); + void oneMatchingFilter(); + void filterThatDoesntMatch(); + void twoFilters(); + void twoFiltersWithOneMatch(); + void manyFilters(); + void filterTestWithDefaultDataTags(); + void filterTestWithDataTags(); + void filterTestByDataTag(); + void filterInvalidDataTag(); +}; + + +const QString testExe = +#if defined(Q_OS_WIN) + QFINDTESTDATA("quicktestmain/quicktestmain.exe"); +#else + QFINDTESTDATA("quicktestmain/quicktestmain"); +#endif + +void tst_TestFiltering::noFilters() +{ + QProcess process; + process.start(testExe); + + QVERIFY(process.waitForFinished()); + + const QString output = process.readAll(); + QVERIFY(output.contains(QLatin1String("Totals: 17 passed"))); + QVERIFY(output.contains(QLatin1String(", 3 skipped"))); + QCOMPARE(process.exitStatus(), QProcess::NormalExit); + QCOMPARE(process.exitCode(), 0); +} + +void tst_TestFiltering::oneMatchingFilter() +{ + QProcess process; + process.start(testExe, {QLatin1String("First::test_bar")}); + + QVERIFY(process.waitForFinished()); + + const QString output = process.readAll(); + QVERIFY(output.contains(QLatin1String("Totals: 3 passed"))); + QCOMPARE(process.exitStatus(), QProcess::NormalExit); + QCOMPARE(process.exitCode(), 0); +} + +void tst_TestFiltering::filterThatDoesntMatch() +{ + QProcess process; + process.start(testExe, {QLatin1String("First::test_nonexisting")}); + + QVERIFY(process.waitForFinished()); + + QCOMPARE(process.exitStatus(), QProcess::NormalExit); + QCOMPARE(process.exitCode(), 1); +} + +void tst_TestFiltering::twoFilters() +{ + QProcess process; + process.start(testExe, + {QLatin1String("Second::test_dupfoo"), QLatin1String("Second::test_dupbaz")}); + + QVERIFY(process.waitForFinished()); + + const QString output = process.readAll(); + QVERIFY(output.contains(QLatin1String("Totals: 4 passed"))); + QCOMPARE(process.exitStatus(), QProcess::NormalExit); + QCOMPARE(process.exitCode(), 0); +} + +void tst_TestFiltering::twoFiltersWithOneMatch() +{ + QProcess process; + process.start(testExe, + {QLatin1String("First::test_foo"), QLatin1String("Second::test_nonexisting")}); + + QVERIFY(process.waitForFinished()); + + const QString output = process.readAll(); + QVERIFY(output.contains(QLatin1String("Totals: 3 passed"))); + QCOMPARE(process.exitStatus(), QProcess::NormalExit); + QCOMPARE(process.exitCode(), 1); +} + +void tst_TestFiltering::manyFilters() +{ + QProcess process; + process.start(testExe, + {QLatin1String("First::test_foo"), + QLatin1String("First::test_baz"), + QLatin1String("Second::test_dupfoo"), + QLatin1String("Second::test_dupbaz")}); + + QVERIFY(process.waitForFinished()); + + const QString output = process.readAll(); + QVERIFY(output.contains(QLatin1String("Totals: 8 passed"))); + QCOMPARE(process.exitStatus(), QProcess::NormalExit); + QCOMPARE(process.exitCode(), 0); +} + +void tst_TestFiltering::filterTestWithDefaultDataTags() +{ + QProcess process; + process.start(testExe, { QLatin1String("Third::test_default_tags"), }); + + QVERIFY(process.waitForFinished()); + + const QString output = process.readAll(); + QVERIFY(output.contains(QLatin1String("Totals: 5 passed"))); + QVERIFY(output.contains(QLatin1String(" 2 skipped"))); + QCOMPARE(process.exitStatus(), QProcess::NormalExit); + QCOMPARE(process.exitCode(), 0); +} + +void tst_TestFiltering::filterTestWithDataTags() +{ + QProcess process; + process.start(testExe, { QLatin1String("Third::test_tags"), }); + + QVERIFY(process.waitForFinished()); + + const QString output = process.readAll(); + QVERIFY(output.contains(QLatin1String("Totals: 4 passed"))); + QVERIFY(output.contains(QLatin1String(" 1 skipped"))); + QCOMPARE(process.exitStatus(), QProcess::NormalExit); + QCOMPARE(process.exitCode(), 0); +} + +void tst_TestFiltering::filterTestByDataTag() +{ + QProcess process; + process.start(testExe, { QLatin1String("Third::test_default_tags:init_2"), + QLatin1String("Third::test_default_tags:skip_3"), + QLatin1String("Third::test_tags:baz"), + QLatin1String("Third::test_tags:bar"), }); + + QVERIFY(process.waitForFinished()); + + const QString output = process.readAll(); + QVERIFY(output.contains(QLatin1String("Totals: 4 passed"))); + QVERIFY(output.contains(QLatin1String(" 2 skipped"))); + QCOMPARE(process.exitStatus(), QProcess::NormalExit); + QCOMPARE(process.exitCode(), 0); +} + +void tst_TestFiltering::filterInvalidDataTag() +{ + QProcess process; + process.start(testExe, { QLatin1String("Third::test_tags:invalid_tag") }); + + QVERIFY(process.waitForFinished()); + + QCOMPARE(process.exitStatus(), QProcess::NormalExit); + QCOMPARE(process.exitCode(), 1); +} + +QTEST_MAIN(tst_TestFiltering); + +#include "tst_testfiltering.moc" |