diff options
Diffstat (limited to 'tests/auto/printsupport')
11 files changed, 102 insertions, 30 deletions
diff --git a/tests/auto/printsupport/CMakeLists.txt b/tests/auto/printsupport/CMakeLists.txt index 053b66da0b..2608aa4809 100644 --- a/tests/auto/printsupport/CMakeLists.txt +++ b/tests/auto/printsupport/CMakeLists.txt @@ -1,4 +1,5 @@ -# Generated from printsupport.pro. +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause if(NOT QT_FEATURE_printer OR NOT QT_FEATURE_printdialog) return() diff --git a/tests/auto/printsupport/dialogs/CMakeLists.txt b/tests/auto/printsupport/dialogs/CMakeLists.txt index 548ddc8577..b9baf14e39 100644 --- a/tests/auto/printsupport/dialogs/CMakeLists.txt +++ b/tests/auto/printsupport/dialogs/CMakeLists.txt @@ -1,3 +1,4 @@ -# Generated from dialogs.pro. +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause add_subdirectory(qabstractprintdialog) diff --git a/tests/auto/printsupport/dialogs/qabstractprintdialog/CMakeLists.txt b/tests/auto/printsupport/dialogs/qabstractprintdialog/CMakeLists.txt index 9bc1b3f6b0..64a7792d77 100644 --- a/tests/auto/printsupport/dialogs/qabstractprintdialog/CMakeLists.txt +++ b/tests/auto/printsupport/dialogs/qabstractprintdialog/CMakeLists.txt @@ -1,13 +1,20 @@ -# Generated from qabstractprintdialog.pro. +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause ##################################################################### ## tst_qabstractprintdialog Test: ##################################################################### +if(NOT QT_BUILD_STANDALONE_TESTS AND NOT QT_BUILDING_QT) + cmake_minimum_required(VERSION 3.16) + project(tst_qabstractprintdialog LANGUAGES CXX) + find_package(Qt6BuildInternals REQUIRED COMPONENTS STANDALONE_TEST) +endif() + qt_internal_add_test(tst_qabstractprintdialog SOURCES tst_qabstractprintdialog.cpp - PUBLIC_LIBRARIES + LIBRARIES Qt::Gui Qt::PrintSupport Qt::Widgets diff --git a/tests/auto/printsupport/dialogs/qabstractprintdialog/tst_qabstractprintdialog.cpp b/tests/auto/printsupport/dialogs/qabstractprintdialog/tst_qabstractprintdialog.cpp index 8dcfab8e64..c3785efe18 100644 --- a/tests/auto/printsupport/dialogs/qabstractprintdialog/tst_qabstractprintdialog.cpp +++ b/tests/auto/printsupport/dialogs/qabstractprintdialog/tst_qabstractprintdialog.cpp @@ -1,5 +1,5 @@ // Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include <QTest> @@ -24,6 +24,8 @@ private slots: void getSetCheck(); void setMinMax(); void setFromTo(); + + void hideNativeByDestruction(); #endif }; @@ -135,6 +137,37 @@ void tst_QAbstractPrintDialog::setFromTo() QCOMPARE(obj1.maxPage(), 50); } +void tst_QAbstractPrintDialog::hideNativeByDestruction() +{ +#ifdef Q_OS_WINDOWS + QSKIP("This test fails on windows, the QPrintDialog::setVisible implementation blocks"); +#endif + + QWidget window; + QWidget *child = new QWidget(&window); + QPointer<QPrintDialog> dialog = new QPrintDialog(child); + // Make it application modal so that we don't end up with a sheet on macOS + dialog->setWindowModality(Qt::ApplicationModal); + window.show(); + QVERIFY(QTest::qWaitForWindowActive(&window)); + dialog->open(); + + // We test that the dialog opens and closes by watching the activation of the + // transient parent window. If it doesn't deactivate, then we have to skip. + const auto windowActive = [&window]{ return window.isActiveWindow(); }; + const auto windowInactive = [&window]{ return !window.isActiveWindow(); }; + if (!QTest::qWaitFor(windowInactive, 2000)) + QSKIP("Dialog didn't activate"); + + // This should destroy the dialog and close the native window + child->deleteLater(); + QTRY_VERIFY(!dialog); + // If the native window is still open, then the transient parent can't become + // active + window.activateWindow(); + QVERIFY(QTest::qWaitFor(windowActive)); +} + #endif QTEST_MAIN(tst_QAbstractPrintDialog) diff --git a/tests/auto/printsupport/kernel/CMakeLists.txt b/tests/auto/printsupport/kernel/CMakeLists.txt index 8154d5e868..f633590f62 100644 --- a/tests/auto/printsupport/kernel/CMakeLists.txt +++ b/tests/auto/printsupport/kernel/CMakeLists.txt @@ -1,4 +1,5 @@ -# Generated from kernel.pro. +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause add_subdirectory(qprintdevice) add_subdirectory(qprinter) diff --git a/tests/auto/printsupport/kernel/qprintdevice/CMakeLists.txt b/tests/auto/printsupport/kernel/qprintdevice/CMakeLists.txt index 8cdd82068e..3df4d6e135 100644 --- a/tests/auto/printsupport/kernel/qprintdevice/CMakeLists.txt +++ b/tests/auto/printsupport/kernel/qprintdevice/CMakeLists.txt @@ -1,15 +1,22 @@ -# Generated from qprintdevice.pro. +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause ##################################################################### ## tst_qprintdevice Test: ##################################################################### +if(NOT QT_BUILD_STANDALONE_TESTS AND NOT QT_BUILDING_QT) + cmake_minimum_required(VERSION 3.16) + project(tst_qprintdevice LANGUAGES CXX) + find_package(Qt6BuildInternals REQUIRED COMPONENTS STANDALONE_TEST) +endif() + qt_internal_add_test(tst_qprintdevice SOURCES tst_qprintdevice.cpp DEFINES QT_USE_USING_NAMESPACE - PUBLIC_LIBRARIES + LIBRARIES Qt::Gui Qt::PrintSupportPrivate ) diff --git a/tests/auto/printsupport/kernel/qprintdevice/tst_qprintdevice.cpp b/tests/auto/printsupport/kernel/qprintdevice/tst_qprintdevice.cpp index a496b5bfb9..81b50c1084 100644 --- a/tests/auto/printsupport/kernel/qprintdevice/tst_qprintdevice.cpp +++ b/tests/auto/printsupport/kernel/qprintdevice/tst_qprintdevice.cpp @@ -1,5 +1,5 @@ // Copyright (C) 2014 John Layt <jlayt@kde.org> -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include <QTest> #include <QMimeType> @@ -25,16 +25,17 @@ void tst_QPrintDevice::basics() QSKIP("Could not load platform plugin"); QString defaultId = ps->defaultPrintDeviceId(); + const QStringList availableIds = ps->availablePrintDeviceIds(); if (defaultId.isEmpty()) { qDebug() << "No default printer found"; } else { - QVERIFY(ps->availablePrintDeviceIds().contains(defaultId)); + QVERIFY(availableIds.contains(defaultId)); } - qDebug() << "Available Printer IDs :" << ps->availablePrintDeviceIds(); + qDebug() << "Available Printer IDs :" << availableIds; // Just exercise the api for now as we don't know what is installed - foreach (const QString id, ps->availablePrintDeviceIds()) { + for (const QString &id : availableIds) { QPrintDevice printDevice = ps->createPrintDevice(id); const char quote = id == defaultId ? '*' : '"'; qDebug().noquote().nospace() << "\nCreated printer " << quote << id diff --git a/tests/auto/printsupport/kernel/qprinter/CMakeLists.txt b/tests/auto/printsupport/kernel/qprinter/CMakeLists.txt index 2fffa945a7..c861a122d9 100644 --- a/tests/auto/printsupport/kernel/qprinter/CMakeLists.txt +++ b/tests/auto/printsupport/kernel/qprinter/CMakeLists.txt @@ -1,13 +1,20 @@ -# Generated from qprinter.pro. +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause ##################################################################### ## tst_qprinter Test: ##################################################################### +if(NOT QT_BUILD_STANDALONE_TESTS AND NOT QT_BUILDING_QT) + cmake_minimum_required(VERSION 3.16) + project(tst_qprinter LANGUAGES CXX) + find_package(Qt6BuildInternals REQUIRED COMPONENTS STANDALONE_TEST) +endif() + qt_internal_add_test(tst_qprinter SOURCES tst_qprinter.cpp - PUBLIC_LIBRARIES + LIBRARIES Qt::Gui Qt::PrintSupport Qt::Widgets diff --git a/tests/auto/printsupport/kernel/qprinter/tst_qprinter.cpp b/tests/auto/printsupport/kernel/qprinter/tst_qprinter.cpp index e4ce742e7c..d2ccf7b990 100644 --- a/tests/auto/printsupport/kernel/qprinter/tst_qprinter.cpp +++ b/tests/auto/printsupport/kernel/qprinter/tst_qprinter.cpp @@ -1,5 +1,5 @@ // Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include <QTest> @@ -903,7 +903,8 @@ void tst_QPrinter::duplex() QPrinter::DuplexMode expected = printerInfo.defaultDuplexMode(); QCOMPARE(native.duplex(), expected); // Test set/get (skipping Auto as that will return something different) - foreach (QPrinter::DuplexMode mode, printerInfo.supportedDuplexModes()) { + const auto supported = printerInfo.supportedDuplexModes(); + for (QPrinter::DuplexMode mode : supported) { if (mode != expected && mode != QPrinter::DuplexAuto) { expected = mode; break; @@ -1193,7 +1194,8 @@ void tst_QPrinter::paperSource() QPrinter::PaperSource expected = QPrinter::Manual; #ifdef Q_OS_WIN expected = QPrinter::Auto; - foreach (QPrinter::PaperSource supported, native.supportedPaperSources()) { + const auto sources = native.supportedPaperSources(); + for (QPrinter::PaperSource supported : sources) { if (supported != QPrinter::Auto) { expected = supported; break; @@ -1315,7 +1317,8 @@ void tst_QPrinter::printerName() // Test set/get QString expected = QPrinterInfo::defaultPrinter().printerName(); - foreach (const QPrinterInfo &available, QPrinterInfo::availablePrinters()) { + const auto allAvailable = QPrinterInfo::availablePrinters(); + for (const QPrinterInfo &available : allAvailable) { if (available.printerName() != expected) { expected = available.printerName(); break; @@ -1408,7 +1411,7 @@ void tst_QPrinter::resolution() #ifdef Q_OS_MAC // QMacPrintEngine chooses the closest supported resolution. const QList<int> all_supported = native.supportedResolutions(); - foreach (int supported, all_supported) { + for (int supported : all_supported) { // Test setting a supported resolution int requested = supported; native.setResolution(requested); @@ -1702,7 +1705,7 @@ void tst_QPrinter::reusePageMetrics() QPrinter defaultP; QPrinterInfo info(defaultP); QString otherPrinterName; - for (QPrinterInfo i : qAsConst(availablePrinters)) { + for (QPrinterInfo i : std::as_const(availablePrinters)) { if (i.printerName() != defaultP.printerName()) { otherPrinterName = i.printerName(); break; @@ -1712,9 +1715,9 @@ void tst_QPrinter::reusePageMetrics() QList<QPageSize> defaultPageSizes = info.supportedPageSizes(); QList<QPageSize> otherPageSizes = QPrinterInfo(otherP).supportedPageSizes(); QPageSize unavailableSizeToSet; - for (QPageSize s : qAsConst(defaultPageSizes)) { + for (QPageSize s : std::as_const(defaultPageSizes)) { bool found = false; - for (QPageSize os : qAsConst(otherPageSizes)) { + for (QPageSize os : std::as_const(otherPageSizes)) { if (os.isEquivalentTo(s)) { found = true; break; diff --git a/tests/auto/printsupport/kernel/qprinterinfo/CMakeLists.txt b/tests/auto/printsupport/kernel/qprinterinfo/CMakeLists.txt index 18a093c4e3..84d0de4d5e 100644 --- a/tests/auto/printsupport/kernel/qprinterinfo/CMakeLists.txt +++ b/tests/auto/printsupport/kernel/qprinterinfo/CMakeLists.txt @@ -1,15 +1,22 @@ -# Generated from qprinterinfo.pro. +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause ##################################################################### ## tst_qprinterinfo Test: ##################################################################### +if(NOT QT_BUILD_STANDALONE_TESTS AND NOT QT_BUILDING_QT) + cmake_minimum_required(VERSION 3.16) + project(tst_qprinterinfo LANGUAGES CXX) + find_package(Qt6BuildInternals REQUIRED COMPONENTS STANDALONE_TEST) +endif() + qt_internal_add_test(tst_qprinterinfo SOURCES tst_qprinterinfo.cpp DEFINES QT_USE_USING_NAMESPACE - PUBLIC_LIBRARIES + LIBRARIES Qt::Gui Qt::PrintSupport ) diff --git a/tests/auto/printsupport/kernel/qprinterinfo/tst_qprinterinfo.cpp b/tests/auto/printsupport/kernel/qprinterinfo/tst_qprinterinfo.cpp index 15af4c899b..110f2996fd 100644 --- a/tests/auto/printsupport/kernel/qprinterinfo/tst_qprinterinfo.cpp +++ b/tests/auto/printsupport/kernel/qprinterinfo/tst_qprinterinfo.cpp @@ -1,5 +1,5 @@ // Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include <QTest> #include <QtGlobal> @@ -8,7 +8,7 @@ #include <algorithm> -#if defined(Q_OS_UNIX) && !defined(Q_OS_INTEGRITY) +#if defined(Q_OS_UNIX) && !defined(Q_OS_INTEGRITY) && !defined(Q_OS_VXWORKS) # include <unistd.h> # include <sys/types.h> # include <sys/wait.h> @@ -49,6 +49,10 @@ private: #ifdef QT_NO_PRINTER void tst_QPrinterInfo::initTestCase() { +#ifdef Q_OS_ANDROID + if (QNativeInterface::QAndroidApplication::sdkVersion() == 33) + QSKIP("Is flaky on Android 13 / RHEL 8.6 and 8.8 (QTQAINFRA-5606)"); +#endif QSKIP("This test requires printing support"); } @@ -94,7 +98,7 @@ QStringList tst_QPrinterInfo::getPrintersFromSystem() QString output = getOutputFromCommand({ "lpstat", "-e" }); QStringList list = output.split(QChar::fromLatin1('\n')); - QRegularExpression reg("^([.a-zA-Z0-9-_@]+)"); + QRegularExpression reg("^([.a-zA-Z0-9-_@/]+)"); QRegularExpressionMatch match; for (int c = 0; c < list.size(); ++c) { match = reg.match(list[c]); @@ -174,7 +178,7 @@ QString tst_QPrinterInfo::getOutputFromCommand(const QStringList &command) { // Forces the ouptut from the command to be in English const QByteArray origSoftwareEnv = qgetenv("SOFTWARE"); - qputenv("SOFTWARE", QByteArray()); + qputenv("SOFTWARE", nullptr); QString output = getOutputFromCommandInternal(command); qputenv("SOFTWARE", origSoftwareEnv); return output; @@ -336,11 +340,11 @@ void tst_QPrinterInfo::testAssignment() void tst_QPrinterInfo::namedPrinter() { - QList<QPrinterInfo> printers = QPrinterInfo::availablePrinters(); + const QList<QPrinterInfo> printers = QPrinterInfo::availablePrinters(); QStringList printerNames; - foreach (const QPrinterInfo &pi, printers) { + for (const QPrinterInfo &pi : printers) { QPrinterInfo pi2 = QPrinterInfo::printerInfo(pi.printerName()); QCOMPARE(pi2.printerName(), pi.printerName()); QCOMPARE(pi2.description(), pi.description()); |