summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@nokia.com>2012-04-10 12:48:01 +0200
committerOswald Buddenhagen <oswald.buddenhagen@nokia.com>2012-04-10 15:31:45 +0200
commit143c4d3e13a430b951f4f4f8c28db14303f80605 (patch)
tree2b89637b93fc7d81c674106008566010f986d67c /tests/auto/corelib
parenta7ed81b557d593a8ddb43b71bf4bbf3b44ead070 (diff)
parente5337ad1b1fb02873ce7b5ca8db45f6fd8063352 (diff)
Merge remote-tracking branch 'origin/master' into api_changes
Conflicts: configure src/widgets/styles/qwindowsxpstyle.cpp tests/auto/gui/kernel/qwindow/qwindow.pro tests/auto/gui/kernel/qwindow/tst_qwindow.cpp Change-Id: I624b6d26abce9874c610c04954c1c45bc074bef3
Diffstat (limited to 'tests/auto/corelib')
-rw-r--r--tests/auto/corelib/codecs/utf8/tst_utf8.cpp2
-rw-r--r--tests/auto/corelib/io/qdir/tst_qdir.cpp2
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEchoGui/main_win.cpp10
-rw-r--r--tests/auto/corelib/io/qsettings/tst_qsettings.cpp9
-rw-r--r--tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp14
-rw-r--r--tests/auto/corelib/json/tst_qtjson.cpp39
-rw-r--r--tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp3
-rw-r--r--tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp2
-rw-r--r--tests/auto/corelib/plugin/plugin.pro1
-rw-r--r--tests/auto/corelib/plugin/qfactoryloader/plugin1/plugin1.cpp47
-rw-r--r--tests/auto/corelib/plugin/qfactoryloader/plugin1/plugin1.h58
-rw-r--r--tests/auto/corelib/plugin/qfactoryloader/plugin1/plugin1.pro10
-rw-r--r--tests/auto/corelib/plugin/qfactoryloader/plugin1/plugininterface1.h59
-rw-r--r--tests/auto/corelib/plugin/qfactoryloader/plugin2/plugin2.cpp47
-rw-r--r--tests/auto/corelib/plugin/qfactoryloader/plugin2/plugin2.h58
-rw-r--r--tests/auto/corelib/plugin/qfactoryloader/plugin2/plugin2.pro10
-rw-r--r--tests/auto/corelib/plugin/qfactoryloader/plugin2/plugininterface2.h59
-rw-r--r--tests/auto/corelib/plugin/qfactoryloader/qfactoryloader.pro15
-rw-r--r--tests/auto/corelib/plugin/qfactoryloader/test/test.pro21
-rw-r--r--tests/auto/corelib/plugin/qfactoryloader/tst_qfactoryloader.cpp91
-rw-r--r--tests/auto/corelib/tools/qstring/tst_qstring.cpp9
-rw-r--r--tests/auto/corelib/xml/qxmlstream/tst_qxmlstream.cpp17
22 files changed, 544 insertions, 39 deletions
diff --git a/tests/auto/corelib/codecs/utf8/tst_utf8.cpp b/tests/auto/corelib/codecs/utf8/tst_utf8.cpp
index 025bb349d6..07ea4c4545 100644
--- a/tests/auto/corelib/codecs/utf8/tst_utf8.cpp
+++ b/tests/auto/corelib/codecs/utf8/tst_utf8.cpp
@@ -185,7 +185,7 @@ void tst_Utf8::charByChar()
}
if (encoded.startsWith(utf8bom))
- encoded = encoded.mid(strlen(utf8bom));
+ encoded = encoded.mid(int(strlen(utf8bom)));
QCOMPARE(encoded, utf8);
}
{
diff --git a/tests/auto/corelib/io/qdir/tst_qdir.cpp b/tests/auto/corelib/io/qdir/tst_qdir.cpp
index b7fc366a39..250575bea0 100644
--- a/tests/auto/corelib/io/qdir/tst_qdir.cpp
+++ b/tests/auto/corelib/io/qdir/tst_qdir.cpp
@@ -53,7 +53,7 @@
#include "../../../network-settings.h"
#endif
-#if defined(Q_OS_WIN)
+#if defined(Q_OS_WIN) && !defined(_WIN32_WINNT)
#define _WIN32_WINNT 0x500
#endif
diff --git a/tests/auto/corelib/io/qprocess/testProcessEchoGui/main_win.cpp b/tests/auto/corelib/io/qprocess/testProcessEchoGui/main_win.cpp
index a8a17b6951..3bae41e83e 100644
--- a/tests/auto/corelib/io/qprocess/testProcessEchoGui/main_win.cpp
+++ b/tests/auto/corelib/io/qprocess/testProcessEchoGui/main_win.cpp
@@ -42,10 +42,10 @@
#include <windows.h>
-int APIENTRY WinMain(HINSTANCE hInstance,
- HINSTANCE hPrevInstance,
- LPSTR lpCmdLine,
- int nCmdShow)
+int APIENTRY WinMain(HINSTANCE /* hInstance */,
+ HINSTANCE /* hPrevInstance */,
+ LPSTR /* lpCmdLine */,
+ int /* nCmdShow */)
{
HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);
@@ -64,4 +64,4 @@ int APIENTRY WinMain(HINSTANCE hInstance,
WriteFile(hStderr, &c, 1, &wrote, 0);
}
return 0;
-} \ No newline at end of file
+}
diff --git a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp
index d294eec248..dbb844d204 100644
--- a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp
+++ b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp
@@ -1486,11 +1486,9 @@ void tst_QSettings::sync()
settings1.sync();
QCOMPARE(settings1.allKeys().count(), 0);
-/*
- // Now "some other app" will change software.org.conf
- unlink((userConfDir + "software.org.ini").toLatin1());
- rename((userConfDir + "other.software.org.ini").toLatin1(),
- (userConfDir + "software.org.ini").toLatin1());
+ // Now "some other app" will change software.org.ini
+ QVERIFY(QFile::rename((userConfDir + "other.software.org.ini").toLatin1(),
+ (userConfDir + "software.org.ini").toLatin1()));
settings1.sync();
QCOMPARE(settings1.value("alpha/beta/geometry").toInt(), -7);
@@ -1505,7 +1503,6 @@ void tst_QSettings::sync()
QCOMPARE(settings1.value("moo/beta/geometry/height").toInt(), 4);
QCOMPARE(settings1.value("moo/gamma/splitter").toInt(), 5);
QCOMPARE(settings1.allKeys().count(), 11);
-*/
}
void tst_QSettings::setFallbacksEnabled_data()
diff --git a/tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp b/tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp
index ed396d3344..9b1d5c0b68 100644
--- a/tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp
+++ b/tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp
@@ -239,18 +239,12 @@ void tst_qstandardpaths::testDataLocation()
{
// On all platforms, DataLocation should be GenericDataLocation / organization name / app name
// This allows one app to access the data of another app.
- {
- const QString base = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation);
- const QString app = QStandardPaths::writableLocation(QStandardPaths::DataLocation);
- QCOMPARE(base, app);
- }
+ const QString base = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation);
+ QCOMPARE(QStandardPaths::writableLocation(QStandardPaths::DataLocation), base + "/tst_qstandardpaths");
QCoreApplication::instance()->setOrganizationName("Qt");
+ QCOMPARE(QStandardPaths::writableLocation(QStandardPaths::DataLocation), base + "/Qt/tst_qstandardpaths");
QCoreApplication::instance()->setApplicationName("QtTest");
- {
- const QString base = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation);
- const QString app = QStandardPaths::writableLocation(QStandardPaths::DataLocation);
- QCOMPARE(app, base + "/Qt/QtTest");
- }
+ QCOMPARE(QStandardPaths::writableLocation(QStandardPaths::DataLocation), base + "/Qt/QtTest");
#ifdef Q_XDG_PLATFORM
setDefaultLocations();
diff --git a/tests/auto/corelib/json/tst_qtjson.cpp b/tests/auto/corelib/json/tst_qtjson.cpp
index 87820d2e78..4ab4b78da1 100644
--- a/tests/auto/corelib/json/tst_qtjson.cpp
+++ b/tests/auto/corelib/json/tst_qtjson.cpp
@@ -122,6 +122,7 @@ private Q_SLOTS:
void assignArrays();
void testTrailingComma();
+ void testDetachBug();
private:
QString testDataDir;
};
@@ -1186,7 +1187,7 @@ void TestQtJson::fromJsonErrors()
QByteArray json = "[\n 11111";
QJsonDocument doc = QJsonDocument::fromJson(json, &error);
QVERIFY(doc.isEmpty());
- QCOMPARE(error.error, QJsonParseError::EndOfNumber);
+ QCOMPARE(error.error, QJsonParseError::TerminationByNumber);
QCOMPARE(error.offset, 11);
}
{
@@ -1210,7 +1211,7 @@ void TestQtJson::fromJsonErrors()
QByteArray json = "[\n \"\\u12\"]";
QJsonDocument doc = QJsonDocument::fromJson(json, &error);
QVERIFY(doc.isEmpty());
- QCOMPARE(error.error, QJsonParseError::StringEscapeSequence);
+ QCOMPARE(error.error, QJsonParseError::IllegalEscapeSequence);
QCOMPARE(error.offset, 11);
}
{
@@ -1218,7 +1219,7 @@ void TestQtJson::fromJsonErrors()
QByteArray json = "[\n \"foo" INVALID_UNICODE "bar\"]";
QJsonDocument doc = QJsonDocument::fromJson(json, &error);
QVERIFY(doc.isEmpty());
- QCOMPARE(error.error, QJsonParseError::StringUTF8Scan);
+ QCOMPARE(error.error, QJsonParseError::IllegalUTF8String);
QCOMPARE(error.offset, 13);
}
{
@@ -1226,7 +1227,7 @@ void TestQtJson::fromJsonErrors()
QByteArray json = "[\n \"";
QJsonDocument doc = QJsonDocument::fromJson(json, &error);
QVERIFY(doc.isEmpty());
- QCOMPARE(error.error, QJsonParseError::EndOfString);
+ QCOMPARE(error.error, QJsonParseError::UnterminatedString);
QCOMPARE(error.offset, 8);
}
{
@@ -1234,7 +1235,7 @@ void TestQtJson::fromJsonErrors()
QByteArray json = "[\n \"c" UNICODE_DJE "a\\u12\"]";
QJsonDocument doc = QJsonDocument::fromJson(json, &error);
QVERIFY(doc.isEmpty());
- QCOMPARE(error.error, QJsonParseError::StringEscapeSequence);
+ QCOMPARE(error.error, QJsonParseError::IllegalEscapeSequence);
QCOMPARE(error.offset, 15);
}
{
@@ -1242,7 +1243,7 @@ void TestQtJson::fromJsonErrors()
QByteArray json = "[\n \"c" UNICODE_DJE "a" INVALID_UNICODE "bar\"]";
QJsonDocument doc = QJsonDocument::fromJson(json, &error);
QVERIFY(doc.isEmpty());
- QCOMPARE(error.error, QJsonParseError::StringUTF8Scan);
+ QCOMPARE(error.error, QJsonParseError::IllegalUTF8String);
QCOMPARE(error.offset, 14);
}
{
@@ -1250,7 +1251,7 @@ void TestQtJson::fromJsonErrors()
QByteArray json = "[\n \"c" UNICODE_DJE "a ]";
QJsonDocument doc = QJsonDocument::fromJson(json, &error);
QVERIFY(doc.isEmpty());
- QCOMPARE(error.error, QJsonParseError::EndOfString);
+ QCOMPARE(error.error, QJsonParseError::UnterminatedString);
QCOMPARE(error.offset, 14);
}
}
@@ -1820,5 +1821,29 @@ void TestQtJson::testTrailingComma()
}
}
+void TestQtJson::testDetachBug()
+{
+ QJsonObject dynamic;
+ QJsonObject embedded;
+
+ QJsonObject local;
+
+ embedded.insert("Key1", QString("Value1"));
+ embedded.insert("Key2", QString("Value2"));
+ dynamic.insert(QStringLiteral("Bogus"), QString("bogusValue"));
+ dynamic.insert("embedded", embedded);
+ local = dynamic.value("embedded").toObject();
+
+ dynamic.remove("embedded");
+
+ QCOMPARE(local.keys().size(),2);
+ local.remove("Key1");
+ local.remove("Key2");
+ QCOMPARE(local.keys().size(), 0);
+
+ local.insert("Key1", QString("anotherValue"));
+ QCOMPARE(local.keys().size(), 1);
+}
+
QTEST_MAIN(TestQtJson)
#include "tst_qtjson.moc"
diff --git a/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp b/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp
index 29fa98b8bb..e8f6c29a94 100644
--- a/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp
+++ b/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp
@@ -121,7 +121,8 @@ void tst_QCoreApplication::qAppName()
int argc = 1;
char *argv[] = { const_cast<char*>("tst_qcoreapplication") };
QCoreApplication app(argc, argv);
- QVERIFY(!::qAppName().isEmpty());
+ QCOMPARE(::qAppName(), QString::fromLatin1("tst_qcoreapplication"));
+ QCOMPARE(QCoreApplication::applicationName(), QString::fromLatin1("tst_qcoreapplication"));
}
void tst_QCoreApplication::argc()
diff --git a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
index 9f4944b44b..4eb26928ac 100644
--- a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
+++ b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
@@ -450,7 +450,7 @@ template<> struct TestValueFactory<QMetaType::UChar> {
static uchar *create() { return new uchar('u'); }
};
template<> struct TestValueFactory<QMetaType::Float> {
- static float *create() { return new float(3.14); }
+ static float *create() { return new float(3.14f); }
};
template<> struct TestValueFactory<QMetaType::QObjectStar> {
static QObject * *create() { return new QObject *(0); }
diff --git a/tests/auto/corelib/plugin/plugin.pro b/tests/auto/corelib/plugin/plugin.pro
index 24de36e4ec..506f6abaeb 100644
--- a/tests/auto/corelib/plugin/plugin.pro
+++ b/tests/auto/corelib/plugin/plugin.pro
@@ -1,5 +1,6 @@
TEMPLATE=subdirs
SUBDIRS=\
+ qfactoryloader \
qlibrary \
qplugin \
qpluginloader \
diff --git a/tests/auto/corelib/plugin/qfactoryloader/plugin1/plugin1.cpp b/tests/auto/corelib/plugin/qfactoryloader/plugin1/plugin1.cpp
new file mode 100644
index 0000000000..542b58a5bf
--- /dev/null
+++ b/tests/auto/corelib/plugin/qfactoryloader/plugin1/plugin1.cpp
@@ -0,0 +1,47 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** 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/qstring.h>
+#include "plugin1.h"
+
+QString Plugin1::pluginName() const
+{
+ return QLatin1String("Plugin1 ok");
+}
diff --git a/tests/auto/corelib/plugin/qfactoryloader/plugin1/plugin1.h b/tests/auto/corelib/plugin/qfactoryloader/plugin1/plugin1.h
new file mode 100644
index 0000000000..02d814e1fa
--- /dev/null
+++ b/tests/auto/corelib/plugin/qfactoryloader/plugin1/plugin1.h
@@ -0,0 +1,58 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** 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$
+**
+****************************************************************************/
+#ifndef THEPLUGIN_H
+#define THEPLUGIN_H
+
+#include <QtCore/qobject.h>
+#include <QtCore/qplugin.h>
+#include "plugininterface1.h"
+
+class Plugin1 : public QObject, public PluginInterface1
+{
+ Q_OBJECT
+ Q_PLUGIN_METADATA(IID "org.qt-project.Qt.autotests.plugininterface1")
+ Q_INTERFACES(PluginInterface1)
+
+public:
+ virtual QString pluginName() const;
+};
+
+#endif // THEPLUGIN_H
diff --git a/tests/auto/corelib/plugin/qfactoryloader/plugin1/plugin1.pro b/tests/auto/corelib/plugin/qfactoryloader/plugin1/plugin1.pro
new file mode 100644
index 0000000000..1d578c0b2e
--- /dev/null
+++ b/tests/auto/corelib/plugin/qfactoryloader/plugin1/plugin1.pro
@@ -0,0 +1,10 @@
+TEMPLATE = lib
+CONFIG += plugin
+HEADERS = plugin1.h
+SOURCES = plugin1.cpp
+TARGET = $$qtLibraryTarget(plugin1)
+DESTDIR = ../bin
+
+# This is testdata for the tst_qpluginloader test.
+target.path = $$[QT_INSTALL_TESTS]/tst_qfactoryloader/bin
+INSTALLS += target
diff --git a/tests/auto/corelib/plugin/qfactoryloader/plugin1/plugininterface1.h b/tests/auto/corelib/plugin/qfactoryloader/plugin1/plugininterface1.h
new file mode 100644
index 0000000000..37f53c9c89
--- /dev/null
+++ b/tests/auto/corelib/plugin/qfactoryloader/plugin1/plugininterface1.h
@@ -0,0 +1,59 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** 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$
+**
+****************************************************************************/
+#ifndef PLUGININTERFACE1_H
+#define PLUGININTERFACE1_H
+
+#include <QtCore/QtGlobal>
+
+struct PluginInterface1 {
+ virtual ~PluginInterface1() {}
+ virtual QString pluginName() const = 0;
+};
+
+QT_BEGIN_NAMESPACE
+
+#define PluginInterface1_iid "org.qt-project.Qt.autotests.plugininterface1"
+
+Q_DECLARE_INTERFACE(PluginInterface1, PluginInterface1_iid)
+
+QT_END_NAMESPACE
+
+#endif // PLUGININTERFACE1_H
diff --git a/tests/auto/corelib/plugin/qfactoryloader/plugin2/plugin2.cpp b/tests/auto/corelib/plugin/qfactoryloader/plugin2/plugin2.cpp
new file mode 100644
index 0000000000..b0a8f08495
--- /dev/null
+++ b/tests/auto/corelib/plugin/qfactoryloader/plugin2/plugin2.cpp
@@ -0,0 +1,47 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** 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/qstring.h>
+#include "plugin2.h"
+
+QString Plugin2::pluginName() const
+{
+ return QLatin1String("Plugin2 ok");
+}
diff --git a/tests/auto/corelib/plugin/qfactoryloader/plugin2/plugin2.h b/tests/auto/corelib/plugin/qfactoryloader/plugin2/plugin2.h
new file mode 100644
index 0000000000..f5741246ab
--- /dev/null
+++ b/tests/auto/corelib/plugin/qfactoryloader/plugin2/plugin2.h
@@ -0,0 +1,58 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** 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$
+**
+****************************************************************************/
+#ifndef THEPLUGIN_H
+#define THEPLUGIN_H
+
+#include <QtCore/qobject.h>
+#include <QtCore/qplugin.h>
+#include "plugininterface2.h"
+
+class Plugin2 : public QObject, public PluginInterface2
+{
+ Q_OBJECT
+ Q_PLUGIN_METADATA(IID "org.qt-project.Qt.autotests.plugininterface2")
+ Q_INTERFACES(PluginInterface2)
+
+public:
+ virtual QString pluginName() const;
+};
+
+#endif // THEPLUGIN_H
diff --git a/tests/auto/corelib/plugin/qfactoryloader/plugin2/plugin2.pro b/tests/auto/corelib/plugin/qfactoryloader/plugin2/plugin2.pro
new file mode 100644
index 0000000000..1a8bd3a721
--- /dev/null
+++ b/tests/auto/corelib/plugin/qfactoryloader/plugin2/plugin2.pro
@@ -0,0 +1,10 @@
+TEMPLATE = lib
+CONFIG += plugin
+HEADERS = plugin2.h
+SOURCES = plugin2.cpp
+TARGET = $$qtLibraryTarget(plugin2)
+DESTDIR = ../bin
+
+# This is testdata for the tst_qpluginloader test.
+target.path = $$[QT_INSTALL_TESTS]/tst_qfactoryloader/bin
+INSTALLS += target
diff --git a/tests/auto/corelib/plugin/qfactoryloader/plugin2/plugininterface2.h b/tests/auto/corelib/plugin/qfactoryloader/plugin2/plugininterface2.h
new file mode 100644
index 0000000000..3fc57f1df2
--- /dev/null
+++ b/tests/auto/corelib/plugin/qfactoryloader/plugin2/plugininterface2.h
@@ -0,0 +1,59 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** 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$
+**
+****************************************************************************/
+#ifndef PLUGININTERFACE2_H
+#define PLUGININTERFACE2_H
+
+#include <QtCore/QtGlobal>
+
+struct PluginInterface2 {
+ virtual ~PluginInterface2() {}
+ virtual QString pluginName() const = 0;
+};
+
+QT_BEGIN_NAMESPACE
+
+#define PluginInterface2_iid "org.qt-project.Qt.autotests.plugininterface2"
+
+Q_DECLARE_INTERFACE(PluginInterface2, PluginInterface2_iid)
+
+QT_END_NAMESPACE
+
+#endif // PLUGININTERFACE2_H
diff --git a/tests/auto/corelib/plugin/qfactoryloader/qfactoryloader.pro b/tests/auto/corelib/plugin/qfactoryloader/qfactoryloader.pro
new file mode 100644
index 0000000000..42bc01e2ed
--- /dev/null
+++ b/tests/auto/corelib/plugin/qfactoryloader/qfactoryloader.pro
@@ -0,0 +1,15 @@
+QT = core-private
+TEMPLATE = subdirs
+CONFIG += ordered
+SUBDIRS = \
+ plugin1 \
+ plugin2 \
+ test
+
+TARGET = tst_qpluginloader
+
+# no special install rule for subdir
+INSTALLS =
+
+
+CONFIG += parallel_test
diff --git a/tests/auto/corelib/plugin/qfactoryloader/test/test.pro b/tests/auto/corelib/plugin/qfactoryloader/test/test.pro
new file mode 100644
index 0000000000..d03af231aa
--- /dev/null
+++ b/tests/auto/corelib/plugin/qfactoryloader/test/test.pro
@@ -0,0 +1,21 @@
+CONFIG += testcase
+TARGET = ../tst_qfactoryloader
+QT = core-private testlib
+
+SOURCES = \
+ ../tst_qfactoryloader.cpp
+
+HEADERS = \
+ ../plugin1/plugininterface1.h \
+ ../plugin2/plugininterface2.h
+
+win32 {
+ CONFIG(debug, debug|release) {
+ TARGET = ../../debug/tst_qfactoryloader
+ } else {
+ TARGET = ../../release/tst_qfactoryloader
+ }
+}
+
+mac: CONFIG -= app_bundle
+mac: CONFIG += insignificant_test # QTBUG-22765
diff --git a/tests/auto/corelib/plugin/qfactoryloader/tst_qfactoryloader.cpp b/tests/auto/corelib/plugin/qfactoryloader/tst_qfactoryloader.cpp
new file mode 100644
index 0000000000..d4ed63dc37
--- /dev/null
+++ b/tests/auto/corelib/plugin/qfactoryloader/tst_qfactoryloader.cpp
@@ -0,0 +1,91 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** 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 <QtTest/qtest.h>
+#include <QtCore/qdir.h>
+#include <QtCore/qfileinfo.h>
+#include <private/qfactoryloader_p.h>
+#include "plugin1/plugininterface1.h"
+#include "plugin2/plugininterface2.h"
+
+class tst_QFactoryLoader : public QObject
+{
+ Q_OBJECT
+public slots:
+ void initTestCase();
+
+private slots:
+ void usingTwoFactoriesFromSameDir();
+};
+
+static const char binFolderC[] = "bin";
+
+void tst_QFactoryLoader::initTestCase()
+{
+ const QString binFolder = QFINDTESTDATA(binFolderC);
+ QVERIFY2(!binFolder.isEmpty(), "Unable to locate 'bin' folder");
+
+ QCoreApplication::setLibraryPaths(QStringList(QFileInfo(binFolder).absolutePath()));
+}
+
+void tst_QFactoryLoader::usingTwoFactoriesFromSameDir()
+{
+ const QString suffix = QLatin1Char('/') + QLatin1String(binFolderC);
+ QFactoryLoader loader1(PluginInterface1_iid, suffix);
+
+ PluginInterface1 *plugin1 = qobject_cast<PluginInterface1 *>(loader1.instance(0));
+ QVERIFY2(plugin1,
+ qPrintable(QString::fromLatin1("Cannot load plugin '%1'")
+ .arg(QLatin1String(PluginInterface1_iid))));
+
+ QFactoryLoader loader2(PluginInterface2_iid, suffix);
+
+ PluginInterface2 *plugin2 = qobject_cast<PluginInterface2 *>(loader2.instance(0));
+ QVERIFY2(plugin2,
+ qPrintable(QString::fromLatin1("Cannot load plugin '%1'")
+ .arg(QLatin1String(PluginInterface2_iid))));
+
+ QCOMPARE(plugin1->pluginName(), QLatin1String("Plugin1 ok"));
+ QCOMPARE(plugin2->pluginName(), QLatin1String("Plugin2 ok"));
+}
+
+QTEST_MAIN(tst_QFactoryLoader)
+#include "tst_qfactoryloader.moc"
diff --git a/tests/auto/corelib/tools/qstring/tst_qstring.cpp b/tests/auto/corelib/tools/qstring/tst_qstring.cpp
index 7afd435e52..1905c9c049 100644
--- a/tests/auto/corelib/tools/qstring/tst_qstring.cpp
+++ b/tests/auto/corelib/tools/qstring/tst_qstring.cpp
@@ -780,6 +780,11 @@ void tst_QString::acc_01()
}
}
+#ifdef Q_CC_GNU
+# pragma GCC diagnostic push
+# pragma GCC diagnostic ignored "-Wformat-security"
+#endif
+
void tst_QString::isNull()
{
QString a;
@@ -790,6 +795,10 @@ void tst_QString::isNull()
QVERIFY(!a.isNull());
}
+#ifdef Q_CC_GNU
+# pragma GCC diagnostic pop
+#endif
+
void tst_QString::isEmpty()
{
QString a;
diff --git a/tests/auto/corelib/xml/qxmlstream/tst_qxmlstream.cpp b/tests/auto/corelib/xml/qxmlstream/tst_qxmlstream.cpp
index bd9fa2a8db..8a60bb1876 100644
--- a/tests/auto/corelib/xml/qxmlstream/tst_qxmlstream.cpp
+++ b/tests/auto/corelib/xml/qxmlstream/tst_qxmlstream.cpp
@@ -984,7 +984,7 @@ void tst_QXmlStream::writeAttributesWithSpace() const
QXmlStreamWriter writer(&buffer);
writer.writeStartDocument();
writer.writeEmptyElement("A");
- writer.writeAttribute("attribute", QString("value")+QChar::Nbsp);
+ writer.writeAttribute("attribute", QStringLiteral("value") + QChar(QChar::Nbsp));
writer.writeEndDocument();
QString s = QString("<?xml version=\"1.0\" encoding=\"UTF-8\"?><A attribute=\"value%1\"/>\n").arg(QChar(QChar::Nbsp));
QCOMPARE(buffer.buffer().data(), s.toUtf8().data());
@@ -1512,35 +1512,38 @@ void tst_QXmlStream::hasError() const
// Failure caused by write(QString)
FakeBuffer fb;
QVERIFY(fb.open(QBuffer::ReadWrite));
- fb.setCapacity(strlen("<?xml version=\""));
+ const QByteArray expected = QByteArrayLiteral("<?xml version=\"");
+ fb.setCapacity(expected.size());
QXmlStreamWriter writer(&fb);
writer.writeStartDocument();
QVERIFY(writer.hasError());
- QCOMPARE(fb.data(), QByteArray("<?xml version=\""));
+ QCOMPARE(fb.data(), expected);
}
{
// Failure caused by write(char *)
FakeBuffer fb;
QVERIFY(fb.open(QBuffer::ReadWrite));
- fb.setCapacity(strlen("<?xml version=\"1.0"));
+ const QByteArray expected = QByteArrayLiteral("<?xml version=\"1.0");
+ fb.setCapacity(expected.size());
QXmlStreamWriter writer(&fb);
writer.writeStartDocument();
QVERIFY(writer.hasError());
- QCOMPARE(fb.data(), QByteArray("<?xml version=\"1.0"));
+ QCOMPARE(fb.data(), expected);
}
{
// Failure caused by write(QStringRef)
FakeBuffer fb;
QVERIFY(fb.open(QBuffer::ReadWrite));
- fb.setCapacity(strlen("<?xml version=\"1.0\" encoding=\"UTF-8\"?><test xmlns:"));
+ const QByteArray expected = QByteArrayLiteral("<?xml version=\"1.0\" encoding=\"UTF-8\"?><test xmlns:");
+ fb.setCapacity(expected.size());
QXmlStreamWriter writer(&fb);
writer.writeStartDocument();
writer.writeStartElement("test");
writer.writeNamespace("http://foo.bar", "foo");
QVERIFY(writer.hasError());
- QCOMPARE(fb.data(), QByteArray("<?xml version=\"1.0\" encoding=\"UTF-8\"?><test xmlns:"));
+ QCOMPARE(fb.data(), expected);
}
{