diff options
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) |