Add an autotest for the qtdiag tool.
authorFriedemann Kleint <Friedemann.Kleint@digia.com>
Fri, 21 Mar 2014 10:29:11 +0000 (11:29 +0100)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Fri, 21 Mar 2014 12:33:40 +0000 (13:33 +0100)
Change-Id: I4207cb72b3d5b124e6607e8cc4f3c4943e6a4cb3
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
tests/auto/auto.pro
tests/auto/qtdiag/qtdiag.pro [new file with mode: 0644]
tests/auto/qtdiag/tst_qtdiag.cpp [new file with mode: 0644]

index eaf440b..c3acfe3 100644 (file)
@@ -8,7 +8,8 @@ SUBDIRS=\
     qhelpindexmodel \
     qhelpprojectdata \
     cmake \
-    installed_cmake
+    installed_cmake \
+    qtdiag
 
 installed_cmake.depends = cmake
 
@@ -22,3 +23,5 @@ cross_compile:SUBDIRS -= host.pro
     qhelpgenerator \
     qhelpindexmodel \
     qhelpprojectdata \
+
+android|ios|qnx|wince*|winrt*:SUBDIRS -= qtdiag
diff --git a/tests/auto/qtdiag/qtdiag.pro b/tests/auto/qtdiag/qtdiag.pro
new file mode 100644 (file)
index 0000000..5f2f224
--- /dev/null
@@ -0,0 +1,7 @@
+TARGET = tst_tdiag
+CONFIG += testcase
+QT = core testlib
+
+SOURCES += tst_qtdiag.cpp
+
+DEFINES += QT_USE_USING_NAMESPACE
diff --git a/tests/auto/qtdiag/tst_qtdiag.cpp b/tests/auto/qtdiag/tst_qtdiag.cpp
new file mode 100644 (file)
index 0000000..7a5a274
--- /dev/null
@@ -0,0 +1,103 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** 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 Digia.  For licensing terms and
+** conditions see http://qt.digia.com/licensing.  For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights.  These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtTest/QtTest>
+
+#include <QtCore/QProcess>
+#include <QtCore/QLibraryInfo>
+#include <QtCore/QFileInfo>
+#include <QtCore/QDir>
+
+class tst_QtDiag : public QObject
+{
+    Q_OBJECT
+
+private slots:
+    void initTestCase();
+    void run();
+
+private:
+    QString m_binary;
+};
+
+void tst_QtDiag::initTestCase()
+{
+#ifdef QT_NO_PROCESS
+    QSKIP("This test requires QProcess support");
+#else
+    QString binary = QLibraryInfo::location(QLibraryInfo::BinariesPath) + QStringLiteral("/qtdiag");
+#  ifdef Q_OS_WIN
+    binary += QStringLiteral(".exe");
+#  endif
+    const QFileInfo fi(binary);
+    if (fi.isFile()) {
+        m_binary = fi.absoluteFilePath();
+    } else {
+        const QByteArray message = QByteArrayLiteral("The binary '")
+            + QDir::toNativeSeparators(binary).toLocal8Bit()
+            +  QByteArrayLiteral("' does not exist.");
+        QSKIP(message.constData());
+    }
+#endif // !QT_NO_PROCESS
+}
+
+void tst_QtDiag::run()
+{
+#ifdef QT_NO_PROCESS
+    QSKIP("This test requires QProcess support");
+#else
+    if (m_binary.isEmpty())
+        QSKIP("Binary could not be found");
+    QProcess process;
+    qDebug() << "Launching " << QDir::toNativeSeparators(m_binary);
+    process.start(m_binary);
+    QVERIFY2(process.waitForStarted(), qPrintable(process.errorString()));
+    QVERIFY(process.waitForFinished());
+    QCOMPARE(process.exitStatus(), QProcess::NormalExit);
+    QCOMPARE(process.exitCode(), 0);
+    QByteArray output = process.readAll();
+    QVERIFY(!output.isEmpty());
+    output.replace('\r', "");
+    qDebug("\n%s", output.constData());
+#endif // !QT_NO_PROCESS
+}
+
+QTEST_MAIN(tst_QtDiag)
+#include "tst_qtdiag.moc"