summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>2011-12-09 16:16:46 +0100
committerQt by Nokia <qt-info@nokia.com>2011-12-12 10:43:44 +0100
commitb9ebb65c77ea779d4abbf92e93b8bef5a41c84bc (patch)
tree707eb23727cdd7b549637fddb7d1e475bdd133e0
parent77f41a68b30b93e95808b86fc9d36838e690c8cc (diff)
Revert "Remove unused overload of QTest::qExec."
The overload is used in Qt Creator (see src/libs/extensionsystem/pluginmanager.cpp). The use case here is an application whose internal QObjects can be tested by passing a command line parameter. For this use case, it is inconvenient to have to allocate memory and create a char argv[]- array. This reverts commit ad80d42f8eefd72d9297c272139acc70e24bfa13. Change-Id: I2a2f91e2840100fd62743f6d03b33005d67b18f8 Reviewed-by: Daniel Teske <daniel.teske@nokia.com> Reviewed-by: Jason McDonald <jason.mcdonald@nokia.com>
-rw-r--r--dist/changes-5.0.03
-rw-r--r--src/testlib/qtestcase.cpp28
-rw-r--r--src/testlib/qtestcase.h1
-rw-r--r--tests/auto/testlib/selftests/.gitignore1
-rw-r--r--tests/auto/testlib/selftests/qexecstringlist/qexecstringlist.pro8
-rw-r--r--tests/auto/testlib/selftests/qexecstringlist/tst_qexecstringlist.cpp96
-rw-r--r--tests/auto/testlib/selftests/selftests.pro2
-rw-r--r--tests/auto/testlib/selftests/selftests.qrc1
-rw-r--r--tests/auto/testlib/selftests/tst_selftests.cpp4
9 files changed, 140 insertions, 4 deletions
diff --git a/dist/changes-5.0.0 b/dist/changes-5.0.0
index 7d9153d46b..daf68eee32 100644
--- a/dist/changes-5.0.0
+++ b/dist/changes-5.0.0
@@ -59,9 +59,6 @@ information about a particular change.
like SkipSingle -- skipping a non-data-driven test function or skipping
only the current data row of a data-driven test function. Every skipped
data row is now reported in the test log.
- * The QTest::qExec(QObject*, const QStringList&) overload has been removed
- from the API. This function was not used in any of Qt's autotests and did
- not provide significant benefits over QTest::qExec(QObject*, int, char**).
- The QSsl::TlsV1 enum value was renamed to QSsl::TlsV1_0 .
diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp
index 608b2ca2ea..2ddb363888 100644
--- a/src/testlib/qtestcase.cpp
+++ b/src/testlib/qtestcase.cpp
@@ -1903,6 +1903,10 @@ FatalSignalHandler::~FatalSignalHandler()
test that was executed with qExec() can't run another test via qExec() and
threads are not allowed to call qExec() simultaneously.
+ If you have programatically created the arguments, as opposed to getting them
+ from the arguments in \c main(), it is likely of interest to use
+ QTest::qExec(QObject *, const QStringList &) since it is Unicode safe.
+
\sa QTEST_MAIN()
*/
@@ -2012,6 +2016,30 @@ int QTest::qExec(QObject *testObject, int argc, char **argv)
return qMin(QTestResult::failCount(), 127);
}
+/*!
+ \overload
+ \since 4.4
+
+ Behaves identically to qExec(QObject *, int, char**) but takes a
+ QStringList of \a arguments instead of a \c char** list.
+ */
+int QTest::qExec(QObject *testObject, const QStringList &arguments)
+{
+ const int argc = arguments.count();
+ QVarLengthArray<char *> argv(argc);
+
+ QVector<QByteArray> args;
+ args.reserve(argc);
+
+ for (int i = 0; i < argc; ++i)
+ {
+ args.append(arguments.at(i).toLocal8Bit().constData());
+ argv[i] = args.last().data();
+ }
+
+ return qExec(testObject, argc, argv.data());
+}
+
/*! \internal
*/
void QTest::qFail(const char *statementStr, const char *file, int line)
diff --git a/src/testlib/qtestcase.h b/src/testlib/qtestcase.h
index 091e9a8d96..dffbedab8e 100644
--- a/src/testlib/qtestcase.h
+++ b/src/testlib/qtestcase.h
@@ -180,6 +180,7 @@ namespace QTest
Q_TESTLIB_EXPORT char *toString(const void *);
Q_TESTLIB_EXPORT int qExec(QObject *testObject, int argc = 0, char **argv = 0);
+ Q_TESTLIB_EXPORT int qExec(QObject *testObject, const QStringList &arguments);
Q_TESTLIB_EXPORT bool qVerify(bool statement, const char *statementStr, const char *description,
const char *file, int line);
diff --git a/tests/auto/testlib/selftests/.gitignore b/tests/auto/testlib/selftests/.gitignore
index 98a3f49081..56ba17abd7 100644
--- a/tests/auto/testlib/selftests/.gitignore
+++ b/tests/auto/testlib/selftests/.gitignore
@@ -13,6 +13,7 @@ fetchbogus/tst_fetchbogus
globaldata/tst_globaldata
maxwarnings/tst_maxwarnings
multiexec/tst_multiexec
+qexecstringlist/tst_qexecstringlist
singleskip/tst_singleskip
skip/tst_skip
skipglobal/tst_skipglobal
diff --git a/tests/auto/testlib/selftests/qexecstringlist/qexecstringlist.pro b/tests/auto/testlib/selftests/qexecstringlist/qexecstringlist.pro
new file mode 100644
index 0000000000..de8a7da37e
--- /dev/null
+++ b/tests/auto/testlib/selftests/qexecstringlist/qexecstringlist.pro
@@ -0,0 +1,8 @@
+SOURCES += tst_qexecstringlist.cpp
+QT = core testlib
+
+mac:CONFIG -= app_bundle
+CONFIG -= debug_and_release_target
+
+
+TARGET = qexecstringlist
diff --git a/tests/auto/testlib/selftests/qexecstringlist/tst_qexecstringlist.cpp b/tests/auto/testlib/selftests/qexecstringlist/tst_qexecstringlist.cpp
new file mode 100644
index 0000000000..aacfab76f1
--- /dev/null
+++ b/tests/auto/testlib/selftests/qexecstringlist/tst_qexecstringlist.cpp
@@ -0,0 +1,96 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** 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, Nokia gives you certain additional
+** rights. These rights are described in the Nokia 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.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtCore>
+#include <QtTest/QtTest>
+
+class tst_QExecStringList: public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void testA() const;
+ void testB() const;
+ void testB_data() const;
+ void testC() const;
+};
+
+void tst_QExecStringList::testA() const
+{
+}
+
+void tst_QExecStringList::testB() const
+{
+ QFETCH(bool, dummy);
+ Q_UNUSED(dummy);
+}
+
+void tst_QExecStringList::testB_data() const
+{
+ QTest::addColumn<bool>("dummy");
+
+ QTest::newRow("Data1") << false;
+ QTest::newRow("Data2") << false;
+ QTest::newRow("Data3") << false;
+}
+
+void tst_QExecStringList::testC() const
+{
+}
+
+int main(int argc,char *argv[])
+{
+ QCoreApplication app(argc, argv);
+
+ tst_QExecStringList test;
+
+ QTest::qExec(&test, app.arguments());
+ QTest::qExec(&test, QStringList("appName"));
+ QTest::qExec(&test, QStringList("appName") << "testA");
+ QTest::qExec(&test, QStringList("appName") << "testB");
+ QTest::qExec(&test, QStringList("appName") << "testB:Data2");
+ QTest::qExec(&test, QStringList("appName") << "testC");
+
+ return 0;
+}
+
+#include "tst_qexecstringlist.moc"
diff --git a/tests/auto/testlib/selftests/selftests.pro b/tests/auto/testlib/selftests/selftests.pro
index b4c4255dfc..68239754aa 100644
--- a/tests/auto/testlib/selftests/selftests.pro
+++ b/tests/auto/testlib/selftests/selftests.pro
@@ -3,7 +3,7 @@ TEMPLATE = subdirs
SUBDIRS = subtest test warnings maxwarnings cmptest globaldata skip \
strcmp expectfail sleep fetchbogus crashes multiexec failinit failinitdata \
skipinit skipinitdata datetime singleskip assert differentexec \
- exceptionthrow datatable commandlinedata \
+ exceptionthrow qexecstringlist datatable commandlinedata\
benchlibwalltime benchlibcallgrind benchlibeventcounter benchlibtickcounter \
benchliboptions xunit badxml longstring float printdatatags \
printdatatagswithglobaltags findtestdata
diff --git a/tests/auto/testlib/selftests/selftests.qrc b/tests/auto/testlib/selftests/selftests.qrc
index 5090fa7378..fb303af2b5 100644
--- a/tests/auto/testlib/selftests/selftests.qrc
+++ b/tests/auto/testlib/selftests/selftests.qrc
@@ -95,6 +95,7 @@
<file>expected_multiexec.xunitxml</file>
<file>expected_printdatatags.txt</file>
<file>expected_printdatatagswithglobaltags.txt</file>
+ <file>expected_qexecstringlist.txt</file>
<file>expected_singleskip.lightxml</file>
<file>expected_singleskip.txt</file>
<file>expected_singleskip.xml</file>
diff --git a/tests/auto/testlib/selftests/tst_selftests.cpp b/tests/auto/testlib/selftests/tst_selftests.cpp
index f7a485b857..f3b47389e6 100644
--- a/tests/auto/testlib/selftests/tst_selftests.cpp
+++ b/tests/auto/testlib/selftests/tst_selftests.cpp
@@ -327,6 +327,7 @@ void tst_Selftests::runSubTest_data()
<< "multiexec"
<< "printdatatags"
<< "printdatatagswithglobaltags"
+ << "qexecstringlist"
<< "singleskip"
<< "skip"
<< "skipinit"
@@ -391,6 +392,9 @@ void tst_Selftests::runSubTest_data()
if (subtest == "multiexec") {
continue;
}
+ if (subtest == "qexecstringlist") {
+ continue;
+ }
if (subtest == "benchliboptions") {
continue;
}