From 0926d63d56a792f26bbcbe156da61a45953cf1df Mon Sep 17 00:00:00 2001
From: Orgad Shaneh <orgad.shaneh@audiocodes.com>
Date: Mon, 13 Jul 2015 17:12:45 +0300
Subject: [PATCH] Sdktool: Only execute tests with -test argument

+ add an autotest that executes it

Change-Id: I7a9e1cd409bccd77776eefb0e832c92c51bc2bd5
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
---
 src/tools/sdktool/main.cpp         | 16 +++++---
 tests/auto/auto.pro                |  1 +
 tests/auto/auto.qbs                |  1 +
 tests/auto/sdktool/sdktool.pro     |  3 ++
 tests/auto/sdktool/sdktool.qbs     | 10 +++++
 tests/auto/sdktool/tst_sdktool.cpp | 61 ++++++++++++++++++++++++++++++
 6 files changed, 87 insertions(+), 5 deletions(-)
 create mode 100644 tests/auto/sdktool/sdktool.pro
 create mode 100644 tests/auto/sdktool/sdktool.qbs
 create mode 100644 tests/auto/sdktool/tst_sdktool.cpp

diff --git a/src/tools/sdktool/main.cpp b/src/tools/sdktool/main.cpp
index 51cc49ac864..97bc41941bf 100644
--- a/src/tools/sdktool/main.cpp
+++ b/src/tools/sdktool/main.cpp
@@ -193,11 +193,17 @@ int main(int argc, char *argv[])
                << new FindValueOperation;
 
 #ifdef WITH_TESTS
-    std::cerr << std::endl << std::endl << "Starting tests..." << std::endl;
-    foreach (Operation *o, operations)
-        if (!o->test())
-            std::cerr << "!!!! Test failed for: " << qPrintable(o->name()) << " !!!!" << std::endl;
-    std::cerr << "Tests done." << std::endl << std::endl;
+    if (argc == 2 && !strcmp(argv[1], "-test")) {
+        std::cerr << std::endl << std::endl << "Starting tests..." << std::endl;
+        int res = 0;
+        foreach (Operation *o, operations)
+            if (!o->test()) {
+                std::cerr << "!!!! Test failed for: " << qPrintable(o->name()) << " !!!!" << std::endl;
+                ++res;
+            }
+        std::cerr << "Tests done." << std::endl << std::endl;
+        return res;
+    }
 #endif
 
     int result = parseArguments(a.arguments(), &settings, operations);
diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro
index c84f446c0cd..20f4e69fc57 100644
--- a/tests/auto/auto.pro
+++ b/tests/auto/auto.pro
@@ -16,6 +16,7 @@ SUBDIRS += \
     qtcprocess \
     utils \
     filesearch \
+    sdktool \
     valgrind
 
 qtHaveModule(declarative) {
diff --git a/tests/auto/auto.qbs b/tests/auto/auto.qbs
index 5bd5acaff49..84c6867cbba 100644
--- a/tests/auto/auto.qbs
+++ b/tests/auto/auto.qbs
@@ -18,6 +18,7 @@ Project {
         "profilewriter/profilewriter.qbs",
         "qml/qml.qbs",
         "qtcprocess/qtcprocess.qbs",
+        "sdktool/sdktool.qbs",
         "timeline/timeline.qbs",
         "treeviewfind/treeviewfind.qbs",
         "utils/utils.qbs",
diff --git a/tests/auto/sdktool/sdktool.pro b/tests/auto/sdktool/sdktool.pro
new file mode 100644
index 00000000000..cc5fb2d28cc
--- /dev/null
+++ b/tests/auto/sdktool/sdktool.pro
@@ -0,0 +1,3 @@
+include(../qttest.pri)
+
+SOURCES += tst_sdktool.cpp
diff --git a/tests/auto/sdktool/sdktool.qbs b/tests/auto/sdktool/sdktool.qbs
new file mode 100644
index 00000000000..1fd08fc2586
--- /dev/null
+++ b/tests/auto/sdktool/sdktool.qbs
@@ -0,0 +1,10 @@
+import qbs
+
+QtcAutotest {
+    name: "sdktool autotest"
+
+    Group {
+        name: "Test sources"
+        files: "tst_sdktool.cpp"
+    }
+}
diff --git a/tests/auto/sdktool/tst_sdktool.cpp b/tests/auto/sdktool/tst_sdktool.cpp
new file mode 100644
index 00000000000..8cc01357d4c
--- /dev/null
+++ b/tests/auto/sdktool/tst_sdktool.cpp
@@ -0,0 +1,61 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing
+**
+** This file is part of Qt Creator.
+**
+** 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 http://www.qt.io/terms-conditions.  For further information
+** use the contact form at http://www.qt.io/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 or version 3 as published by the Free
+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
+** LICENSE.LGPLv3 included in the packaging of this file.  Please review the
+** following information to ensure the GNU Lesser General Public License
+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, The Qt Company gives you certain additional
+** rights.  These rights are described in The Qt Company LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+****************************************************************************/
+
+#include <QCoreApplication>
+#include <QDebug>
+#include <QProcess>
+#include <QtTest>
+
+class SdktoolTest : public QObject
+{
+    Q_OBJECT
+
+private slots:
+    void testSdktool();
+};
+
+void SdktoolTest::testSdktool()
+{
+    QDir rootDir = QCoreApplication::applicationDirPath();
+    rootDir.cdUp();
+    rootDir.cdUp();
+    rootDir.cdUp();
+    rootDir.cd(QLatin1String("bin"));
+    QProcess process;
+    process.start(rootDir.absoluteFilePath(QLatin1String("sdktool")),
+                  QStringList() << QLatin1String("-test"));
+    process.waitForFinished();
+    qDebug() << process.readAllStandardError();
+    QCOMPARE(process.exitCode(), 0);
+}
+
+QTEST_MAIN(SdktoolTest)
+
+#include "tst_sdktool.moc"
-- 
GitLab