aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/qmltest/quicktest.cpp5
-rw-r--r--tests/auto/quicktest/CMakeLists.txt1
-rw-r--r--tests/auto/quicktest/testswithcomponents/CMakeLists.txt34
-rw-r--r--tests/auto/quicktest/testswithcomponents/data/Sample.qml8
-rw-r--r--tests/auto/quicktest/testswithcomponents/data/tst_setup.qml53
-rw-r--r--tests/auto/quicktest/testswithcomponents/tst_quicktestswithcomponents.cpp32
6 files changed, 132 insertions, 1 deletions
diff --git a/src/qmltest/quicktest.cpp b/src/qmltest/quicktest.cpp
index 78937766cb..276463c7c5 100644
--- a/src/qmltest/quicktest.cpp
+++ b/src/qmltest/quicktest.cpp
@@ -298,14 +298,17 @@ private:
if (!object) // Start at root of compilation unit if not enumerating a specific child
object = compilationUnit->objectAt(0);
+ if (object->flags & Object::IsInlineComponentRoot)
+ return result;
if (const auto superTypeUnit = compilationUnit->resolvedTypes.value(
object->inheritedTypeNameIndex)->compilationUnit()) {
// We have a non-C++ super type, which could indicate we're a subtype of a TestCase
if (testCaseType.isValid() && superTypeUnit->url() == testCaseType.sourceUrl())
result.isTestCase = true;
- else
+ else if (superTypeUnit->url() != compilationUnit->url()) { // urls are the same for inline component, avoid infinite recursion
result = enumerateTestCases(superTypeUnit);
+ }
if (result.isTestCase) {
// Look for override of name in this type
diff --git a/tests/auto/quicktest/CMakeLists.txt b/tests/auto/quicktest/CMakeLists.txt
index 3686db8417..45c763eec9 100644
--- a/tests/auto/quicktest/CMakeLists.txt
+++ b/tests/auto/quicktest/CMakeLists.txt
@@ -4,3 +4,4 @@ add_subdirectory(polish)
add_subdirectory(signalspy)
add_subdirectory(quicktestmainwithsetup)
add_subdirectory(testfiltering)
+add_subdirectory(testswithcomponents)
diff --git a/tests/auto/quicktest/testswithcomponents/CMakeLists.txt b/tests/auto/quicktest/testswithcomponents/CMakeLists.txt
new file mode 100644
index 0000000000..cbdee23093
--- /dev/null
+++ b/tests/auto/quicktest/testswithcomponents/CMakeLists.txt
@@ -0,0 +1,34 @@
+# Generated from quicktestmainwithsetup.pro.
+
+#####################################################################
+## tst_quicktestmainwithsetup Test:
+#####################################################################
+
+# Collect test data
+file(GLOB_RECURSE test_data_glob
+ RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/data/*.qml)
+list(APPEND test_data ${test_data_glob})
+
+qt_internal_add_test(tst_quicktestswithcomponents
+ QMLTEST
+ SOURCES
+ tst_quicktestswithcomponents.cpp
+ PUBLIC_LIBRARIES
+ Qt::Gui
+ Qt::Quick
+ TESTDATA ${test_data}
+)
+
+## Scopes:
+#####################################################################
+
+qt_internal_extend_target(tst_quicktestswithcomponents CONDITION ANDROID OR IOS
+ DEFINES
+ QT_QMLTEST_DATADIR=\\\":/data\\\"
+)
+
+qt_internal_extend_target(tst_quicktestswithcomponents CONDITION NOT ANDROID AND NOT IOS
+ DEFINES
+ QT_QMLTEST_DATADIR=\\\"${CMAKE_CURRENT_SOURCE_DIR}/data\\\"
+)
diff --git a/tests/auto/quicktest/testswithcomponents/data/Sample.qml b/tests/auto/quicktest/testswithcomponents/data/Sample.qml
new file mode 100644
index 0000000000..78e3008b01
--- /dev/null
+++ b/tests/auto/quicktest/testswithcomponents/data/Sample.qml
@@ -0,0 +1,8 @@
+import QtQuick 2.15
+
+Item {
+ id: root
+
+ component InlineComponent: Rectangle {}
+ InlineComponent{}
+}
diff --git a/tests/auto/quicktest/testswithcomponents/data/tst_setup.qml b/tests/auto/quicktest/testswithcomponents/data/tst_setup.qml
new file mode 100644
index 0000000000..533027147e
--- /dev/null
+++ b/tests/auto/quicktest/testswithcomponents/data/tst_setup.qml
@@ -0,0 +1,53 @@
+/****************************************************************************
+**
+** Copyright (C) 2021 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
+
+
+Item {
+
+ Component {
+ id: mock
+ Sample {
+ }
+ }
+
+ component Mock : Sample {}
+
+ TestCase {
+ id: root
+ name: "ComponentTest"
+
+ function test_create()
+ {
+ let dialog = createTemporaryObject(mock, root);
+ verify(dialog);
+ }
+ }
+}
diff --git a/tests/auto/quicktest/testswithcomponents/tst_quicktestswithcomponents.cpp b/tests/auto/quicktest/testswithcomponents/tst_quicktestswithcomponents.cpp
new file mode 100644
index 0000000000..9692347cb8
--- /dev/null
+++ b/tests/auto/quicktest/testswithcomponents/tst_quicktestswithcomponents.cpp
@@ -0,0 +1,32 @@
+/****************************************************************************
+**
+** Copyright (C) 2021 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 <QtQuickTest/quicktest.h>
+
+QUICK_TEST_MAIN(data)