diff options
Diffstat (limited to 'tests/auto/qml/qmlformat/tst_qmlformat.cpp')
-rw-r--r-- | tests/auto/qml/qmlformat/tst_qmlformat.cpp | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/tests/auto/qml/qmlformat/tst_qmlformat.cpp b/tests/auto/qml/qmlformat/tst_qmlformat.cpp new file mode 100644 index 0000000000..7ad9c99d83 --- /dev/null +++ b/tests/auto/qml/qmlformat/tst_qmlformat.cpp @@ -0,0 +1,111 @@ +/**************************************************************************** +** +** Copyright (C) 2019 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/QtTest> +#include <QProcess> +#include <QString> + +#include <util.h> + +class TestQmlformat: public QQmlDataTest +{ + Q_OBJECT + +private Q_SLOTS: + void initTestCase() override; + + void testFormat(); + void testFormatNoSort(); + +private: + QString readTestFile(const QString &path); + QString runQmlformat(const QString &fileToFormat, bool sortImports, bool shouldSucceed); + + QString m_qmlformatPath; +}; + +void TestQmlformat::initTestCase() +{ + QQmlDataTest::initTestCase(); + m_qmlformatPath = QLibraryInfo::location(QLibraryInfo::BinariesPath) + QLatin1String("/qmlformat"); +#ifdef Q_OS_WIN + m_qmlformatPath += QLatin1String(".exe"); +#endif + if (!QFileInfo(m_qmlformatPath).exists()) { + QString message = QStringLiteral("qmlformat executable not found (looked for %0)").arg(m_qmlformatPath); + QFAIL(qPrintable(message)); + } +} + +QString TestQmlformat::readTestFile(const QString &path) +{ + QFile file(testFile(path)); + + if (!file.open(QIODevice::ReadOnly)) + return ""; + + return QString::fromUtf8(file.readAll()); +} + +void TestQmlformat::testFormat() +{ + QCOMPARE(runQmlformat("Example1.qml", true, true), readTestFile("Example1.formatted.qml")); +} + +void TestQmlformat::testFormatNoSort() +{ + QCOMPARE(runQmlformat("Example1.qml", false, true), readTestFile("Example1.formatted.nosort.qml")); +} + +QString TestQmlformat::runQmlformat(const QString &fileToFormat, bool sortImports, bool shouldSucceed) +{ + QStringList args; + args << testFile(fileToFormat); + + if (!sortImports) + args << "-n"; + + QString output; + auto verify = [&]() { + QProcess process; + process.start(m_qmlformatPath, args); + QVERIFY(process.waitForFinished()); + QCOMPARE(process.exitStatus(), QProcess::NormalExit); + if (shouldSucceed) + QCOMPARE(process.exitCode(), 0); + else + QVERIFY(process.exitCode() != 0); + output = process.readAllStandardOutput(); + }; + verify(); + + return output; +} + +QTEST_MAIN(TestQmlformat) +#include "tst_qmlformat.moc" |