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>
This commit is contained in:
Friedemann Kleint 2011-12-09 16:16:46 +01:00 committed by Qt by Nokia
parent 77f41a68b3
commit b9ebb65c77
9 changed files with 140 additions and 4 deletions

3
dist/changes-5.0.0 vendored
View File

@ -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 .

View File

@ -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)

View File

@ -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);

View File

@ -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

View File

@ -0,0 +1,8 @@
SOURCES += tst_qexecstringlist.cpp
QT = core testlib
mac:CONFIG -= app_bundle
CONFIG -= debug_and_release_target
TARGET = qexecstringlist

View File

@ -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"

View File

@ -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

View File

@ -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>

View File

@ -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;
}