diff options
Diffstat (limited to 'tests/auto/corelib/kernel/qtranslator')
4 files changed, 40 insertions, 84 deletions
diff --git a/tests/auto/corelib/kernel/qtranslator/CMakeLists.txt b/tests/auto/corelib/kernel/qtranslator/CMakeLists.txt index e6dc145472..92b6edb17c 100644 --- a/tests/auto/corelib/kernel/qtranslator/CMakeLists.txt +++ b/tests/auto/corelib/kernel/qtranslator/CMakeLists.txt @@ -1,9 +1,20 @@ -# Generated from qtranslator.pro. +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause ##################################################################### ## tst_qtranslator Test: ##################################################################### +if(NOT QT_BUILD_STANDALONE_TESTS AND NOT QT_BUILDING_QT) + cmake_minimum_required(VERSION 3.16) + project(tst_qtranslator LANGUAGES CXX) + find_package(Qt6BuildInternals REQUIRED COMPONENTS STANDALONE_TEST) +endif() + +if (NOT QT_FEATURE_thread) + return() +endif() + qt_internal_add_test(tst_qtranslator SOURCES tst_qtranslator.cpp @@ -11,8 +22,10 @@ qt_internal_add_test(tst_qtranslator # Resources: set(qtranslator_resource_files + "dependencies_la.qm" "hellotr_empty.qm" "hellotr_la.qm" + "msgfmt_from_po.qm" ) qt_internal_add_resource(tst_qtranslator "qtranslator" @@ -22,11 +35,10 @@ qt_internal_add_resource(tst_qtranslator "qtranslator" ${qtranslator_resource_files} ) - ## Scopes: ##################################################################### -if(ANDROID AND NOT ANDROID_EMBEDDED) +if(ANDROID) # Resources: set(android_testdata_resource_files "dependencies_la.qm" @@ -42,6 +54,3 @@ if(ANDROID AND NOT ANDROID_EMBEDDED) ${android_testdata_resource_files} ) endif() - -#### Keys ignored in scope 3:.:.:qtranslator.pro:else: -# TESTDATA = "dependencies_la.qm" "hellotr_empty.qm" "hellotr_la.qm" "msgfmt_from_po.qm" diff --git a/tests/auto/corelib/kernel/qtranslator/android_testdata.qrc b/tests/auto/corelib/kernel/qtranslator/android_testdata.qrc deleted file mode 100644 index 39b85db664..0000000000 --- a/tests/auto/corelib/kernel/qtranslator/android_testdata.qrc +++ /dev/null @@ -1,8 +0,0 @@ -<RCC> - <qresource prefix="/android_testdata"> - <file>hellotr_la.qm</file> - <file>hellotr_empty.qm</file> - <file>msgfmt_from_po.qm</file> - <file>dependencies_la.qm</file> - </qresource> -</RCC> diff --git a/tests/auto/corelib/kernel/qtranslator/qtranslator.qrc b/tests/auto/corelib/kernel/qtranslator/qtranslator.qrc deleted file mode 100644 index cb82c6cc95..0000000000 --- a/tests/auto/corelib/kernel/qtranslator/qtranslator.qrc +++ /dev/null @@ -1,6 +0,0 @@ -<RCC> - <qresource prefix="/tst_qtranslator"> - <file>hellotr_la.qm</file> - <file>hellotr_empty.qm</file> - </qresource> -</RCC> diff --git a/tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp b/tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp index 3e7790d6ac..c76500ea11 100644 --- a/tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp +++ b/tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp @@ -1,30 +1,5 @@ -/**************************************************************************** -** -** Copyright (C) 2020 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$ -** -****************************************************************************/ +// Copyright (C) 2021 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include <QTest> #include <QWaitCondition> @@ -34,7 +9,7 @@ #include <qfile.h> #include <qtemporarydir.h> -#if defined(Q_OS_ANDROID) && !defined(Q_OS_ANDROID_EMBEDDED) +#ifdef Q_OS_ANDROID #include <QDirIterator> #endif @@ -48,6 +23,7 @@ protected: bool eventFilter(QObject *obj, QEvent *event) override; private slots: void initTestCase(); + void init(); void load_data(); void load(); @@ -73,38 +49,14 @@ tst_QTranslator::tst_QTranslator() void tst_QTranslator::initTestCase() { -#if defined(Q_OS_ANDROID) && !defined(Q_OS_ANDROID_EMBEDDED) - QString sourceDir(":/android_testdata/"); - QDirIterator it(sourceDir, QDirIterator::Subdirectories); - while (it.hasNext()) { - it.next(); - - QFileInfo sourceFileInfo = it.fileInfo(); - if (!sourceFileInfo.isDir()) { - QFileInfo destinationFileInfo(QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + QLatin1Char('/') + sourceFileInfo.filePath().mid(sourceDir.length())); - - if (!destinationFileInfo.exists()) { - QVERIFY(QDir().mkpath(destinationFileInfo.path())); - QVERIFY(QFile::copy(sourceFileInfo.filePath(), destinationFileInfo.filePath())); - } - } - } - - QDir::setCurrent(QStandardPaths::writableLocation(QStandardPaths::CacheLocation)); -#endif - - // chdir into the directory containing our testdata, - // to make the code simpler (load testdata via relative paths) -#if 0 - // ### TODO: Use this for all platforms in 5.7 - dataDir = QEXTRACTTESTDATA(QStringLiteral("/")); + dataDir = QEXTRACTTESTDATA(QStringLiteral("/tst_qtranslator")); QVERIFY2(!dataDir.isNull(), qPrintable("Could not extract test data")); - QVERIFY2(QDir::setCurrent(dataDir->path()), qPrintable("Could not chdir to " + dataDir->path())); -#else - QString testdata_dir = QFileInfo(QFINDTESTDATA("hellotr_la.qm")).absolutePath(); - QVERIFY2(QDir::setCurrent(testdata_dir), qPrintable("Could not chdir to " + testdata_dir)); -#endif +} +void tst_QTranslator::init() +{ + QVERIFY2(QDir::setCurrent(dataDir->path()), + qPrintable("Could not chdir to " + dataDir->path())); } bool tst_QTranslator::eventFilter(QObject *, QEvent *event) @@ -143,7 +95,7 @@ void tst_QTranslator::load() { QFile file(filepath); - file.open(QFile::ReadOnly); + QVERIFY(file.open(QFile::ReadOnly)); QByteArray data = file.readAll(); QTranslator tor; QVERIFY(tor.load((const uchar *)data.constData(), data.length())); @@ -167,7 +119,7 @@ void tst_QTranslator::load() void tst_QTranslator::loadLocale() { QLocale locale; - auto localeName = locale.uiLanguages().value(0).replace('-', '_'); + auto localeName = locale.uiLanguages(QLocale::TagSeparator::Underscore).value(0); if (localeName.isEmpty()) QSKIP("This test requires at least one available UI language."); @@ -377,12 +329,21 @@ void tst_QTranslator::dependencies() { QTranslator tor( 0 ); QFile file("dependencies_la.qm"); - file.open(QFile::ReadOnly); + QVERIFY(file.open(QFile::ReadOnly)); QByteArray data = file.readAll(); QVERIFY(tor.load((const uchar *)data.constData(), data.length())); QVERIFY(!tor.isEmpty()); QCOMPARE(tor.translate("QPushButton", "Hello world!"), QLatin1String("Hallo Welt!")); } + + { + // Test resolution of paths relative to main file + const QString absoluteFile = QFileInfo("dependencies_la").absoluteFilePath(); + QDir::setCurrent(QDir::tempPath()); + QTranslator tor; + QVERIFY(tor.load(absoluteFile)); + QVERIFY(!tor.isEmpty()); + } } struct TranslateThread : public QThread @@ -422,9 +383,9 @@ void tst_QTranslator::translationInThreadWhileInstallingTranslator() thread.runningCondition.wait(&thread.startupLock); - QTranslator *tor = new QTranslator; - QVERIFY(tor->load("hellotr_la")); - QCoreApplication::installTranslator(tor); + QTranslator tor; + QVERIFY(tor.load("hellotr_la")); + QVERIFY(QCoreApplication::installTranslator(&tor)); ++thread.terminate; |