diff options
Diffstat (limited to 'tests/auto/qml/lifecycle')
-rw-r--r-- | tests/auto/qml/lifecycle/CMakeLists.txt | 16 | ||||
-rw-r--r-- | tests/auto/qml/lifecycle/am-config.yaml | 8 | ||||
-rw-r--r-- | tests/auto/qml/lifecycle/apps/tld.test.lifecycle/app.qml | 39 | ||||
-rw-r--r-- | tests/auto/qml/lifecycle/apps/tld.test.lifecycle/icon.png | bin | 0 -> 1486 bytes | |||
-rw-r--r-- | tests/auto/qml/lifecycle/apps/tld.test.lifecycle/info.yaml | 9 | ||||
-rw-r--r-- | tests/auto/qml/lifecycle/lifecycle.pro | 5 | ||||
-rw-r--r-- | tests/auto/qml/lifecycle/tst_lifecycle.qml | 134 |
7 files changed, 211 insertions, 0 deletions
diff --git a/tests/auto/qml/lifecycle/CMakeLists.txt b/tests/auto/qml/lifecycle/CMakeLists.txt new file mode 100644 index 00000000..36b09f7c --- /dev/null +++ b/tests/auto/qml/lifecycle/CMakeLists.txt @@ -0,0 +1,16 @@ +# Generated from lifecycle.pro. + +##################################################################### +## lifecycle Binary: +##################################################################### + +qt_internal_add_executable(lifecycle + GUI + PUBLIC_LIBRARIES + Qt::Gui +) + +#### Keys ignored in scope 1:.:.:lifecycle.pro:<TRUE>: +# AM_CONFIG = "am-config.yaml" +# TEST_APPS = "tld.test.lifecycle" +# TEST_FILES = "tst_lifecycle.qml" diff --git a/tests/auto/qml/lifecycle/am-config.yaml b/tests/auto/qml/lifecycle/am-config.yaml new file mode 100644 index 00000000..61b2bfb2 --- /dev/null +++ b/tests/auto/qml/lifecycle/am-config.yaml @@ -0,0 +1,8 @@ +formatVersion: 1 +formatType: am-configuration +--- +applications: + builtinAppsManifestDir: "${CONFIG_PWD}/apps" + +flags: + noUiWatchdog: yes diff --git a/tests/auto/qml/lifecycle/apps/tld.test.lifecycle/app.qml b/tests/auto/qml/lifecycle/apps/tld.test.lifecycle/app.qml new file mode 100644 index 00000000..a5f21ad0 --- /dev/null +++ b/tests/auto/qml/lifecycle/apps/tld.test.lifecycle/app.qml @@ -0,0 +1,39 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Copyright (C) 2019 Luxoft Sweden AB +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtApplicationManager module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL$ +** 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 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** 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.11 +import QtApplicationManager.Application 2.0 + +ApplicationManagerWindow { + Image { + anchors.centerIn: parent + source: ApplicationInterface.icon + } +} diff --git a/tests/auto/qml/lifecycle/apps/tld.test.lifecycle/icon.png b/tests/auto/qml/lifecycle/apps/tld.test.lifecycle/icon.png Binary files differnew file mode 100644 index 00000000..c1397153 --- /dev/null +++ b/tests/auto/qml/lifecycle/apps/tld.test.lifecycle/icon.png diff --git a/tests/auto/qml/lifecycle/apps/tld.test.lifecycle/info.yaml b/tests/auto/qml/lifecycle/apps/tld.test.lifecycle/info.yaml new file mode 100644 index 00000000..198cbe51 --- /dev/null +++ b/tests/auto/qml/lifecycle/apps/tld.test.lifecycle/info.yaml @@ -0,0 +1,9 @@ +formatVersion: 1 +formatType: am-application +--- +id: 'tld.test.lifecycle' +name: + en: 'Lifecycle Tests' +icon: 'icon.png' +code: 'app.qml' +runtime: 'qml' diff --git a/tests/auto/qml/lifecycle/lifecycle.pro b/tests/auto/qml/lifecycle/lifecycle.pro new file mode 100644 index 00000000..98ab9709 --- /dev/null +++ b/tests/auto/qml/lifecycle/lifecycle.pro @@ -0,0 +1,5 @@ +AM_CONFIG = am-config.yaml +TEST_FILES = tst_lifecycle.qml +TEST_APPS = tld.test.lifecycle + +load(am-qml-testcase) diff --git a/tests/auto/qml/lifecycle/tst_lifecycle.qml b/tests/auto/qml/lifecycle/tst_lifecycle.qml new file mode 100644 index 00000000..d75584e2 --- /dev/null +++ b/tests/auto/qml/lifecycle/tst_lifecycle.qml @@ -0,0 +1,134 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Copyright (C) 2019 Luxoft Sweden AB +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtApplicationManager module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL$ +** 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 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** 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.11 +import QtTest 1.0 +import QtApplicationManager.SystemUI 2.0 + +TestCase { + id: testCase + when: windowShown + name: "LifeCycleTest" + visible: true + + property var app: ApplicationManager.application("tld.test.lifecycle"); + + + WindowItem { + id: chrome + anchors.fill: parent + } + + Connections { + target: WindowManager + function onWindowAdded(window) { + chrome.window = window; + } + } + + Connections { + target: chrome.window + function onContentStateChanged() { + if (chrome.window.contentState === WindowObject.NoSurface) + chrome.window = null; + } + } + + + SignalSpy { + id: runStateChangedSpy + target: ApplicationManager + signalName: "applicationRunStateChanged" + } + + SignalSpy { + id: objectDestroyedSpy + target: AmTest + signalName: "objectDestroyed" + } + + Timer { + id: stopTimer + interval: 1 + onTriggered: app.stop(); + } + + + function cleanup() { + objectDestroyedSpy.clear(); + var index = AmTest.observeObjectDestroyed(app.runtime); + app.stop(); + while (app.runState !== ApplicationObject.NotRunning) + runStateChangedSpy.wait(); + objectDestroyedSpy.wait(); + compare(objectDestroyedSpy.signalArguments[0][0], index); + } + + + // Start followed by quick stop/start in single-porcess mode caused an abort in the past + function test_fast_stop_start() { + app.start(); + runStateChangedSpy.wait(); + compare(app.runState, ApplicationObject.StartingUp); + runStateChangedSpy.wait(); + compare(app.runState, ApplicationObject.Running); + + objectDestroyedSpy.clear(); + var index = AmTest.observeObjectDestroyed(app.runtime); + + app.stop(); + runStateChangedSpy.wait(); + compare(app.runState, ApplicationObject.ShuttingDown); + runStateChangedSpy.wait(); + compare(app.runState, ApplicationObject.NotRunning); + + app.start(); + runStateChangedSpy.wait(); + compare(app.runState, ApplicationObject.StartingUp); + runStateChangedSpy.wait(); + compare(app.runState, ApplicationObject.Running); + + objectDestroyedSpy.wait(); + compare(objectDestroyedSpy.signalArguments[0][0], index); + } + + // Quick start/stop followd by start in single-process mode caused an abort in the past + function test_fast_start_stop() { + app.start(); + stopTimer.start(); + + while (app.runState !== ApplicationObject.NotRunning) + runStateChangedSpy.wait(); + + app.start(); + while (app.runState !== ApplicationObject.Running) + runStateChangedSpy.wait(); + } +} |