diff options
Diffstat (limited to 'tests/auto/qpluginloader')
23 files changed, 0 insertions, 839 deletions
diff --git a/tests/auto/qpluginloader/.gitignore b/tests/auto/qpluginloader/.gitignore deleted file mode 100644 index 6b2fa3a715..0000000000 --- a/tests/auto/qpluginloader/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -tst_qpluginloader -bin/ diff --git a/tests/auto/qpluginloader/almostplugin/almostplugin.cpp b/tests/auto/qpluginloader/almostplugin/almostplugin.cpp deleted file mode 100644 index 70596c0113..0000000000 --- a/tests/auto/qpluginloader/almostplugin/almostplugin.cpp +++ /dev/null @@ -1,51 +0,0 @@ -/**************************************************************************** -** -** 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/QString> -#include "almostplugin.h" -#include <QtCore/qplugin.h> - -QString AlmostPlugin::pluginName() const -{ - unresolvedSymbol(); - return QLatin1String("Plugin ok"); -} - -Q_EXPORT_PLUGIN2(almostplugin, AlmostPlugin) diff --git a/tests/auto/qpluginloader/almostplugin/almostplugin.h b/tests/auto/qpluginloader/almostplugin/almostplugin.h deleted file mode 100644 index 0021180b36..0000000000 --- a/tests/auto/qpluginloader/almostplugin/almostplugin.h +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************** -** -** 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$ -** -****************************************************************************/ -#ifndef ALMOSTPLUGIN_H -#define ALMOSTPLUGIN_H - -#include <QObject> -#include "../theplugin/plugininterface.h" - -class AlmostPlugin : public QObject, public PluginInterface -{ - Q_OBJECT - Q_INTERFACES(PluginInterface) - -public: - QString pluginName() const; - void unresolvedSymbol() const; -}; - -#endif // ALMOSTPLUGIN_H diff --git a/tests/auto/qpluginloader/almostplugin/almostplugin.pro b/tests/auto/qpluginloader/almostplugin/almostplugin.pro deleted file mode 100644 index b45509ef01..0000000000 --- a/tests/auto/qpluginloader/almostplugin/almostplugin.pro +++ /dev/null @@ -1,7 +0,0 @@ -TEMPLATE = lib -CONFIG += plugin -HEADERS = almostplugin.h -SOURCES = almostplugin.cpp -TARGET = almostplugin -DESTDIR = ../bin -*-g++*:QMAKE_LFLAGS -= -Wl,--no-undefined diff --git a/tests/auto/qpluginloader/elftest/.gitattributes b/tests/auto/qpluginloader/elftest/.gitattributes deleted file mode 100644 index 891192ca94..0000000000 --- a/tests/auto/qpluginloader/elftest/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -corrupt1.elf64.so set -crlf -diff -corrupt2.elf64.so set -crlf -diff -corrupt3.elf64.so set -crlf -diff -debugobj.so set -crlf -diff -garbage1.so set -crlf -diff -garbage2.so set -crlf -diff -garbage3.so set -crlf -diff -garbage4.so set -crlf -diff -garbage5.so set -crlf -diff - diff --git a/tests/auto/qpluginloader/elftest/corrupt1.elf64.so b/tests/auto/qpluginloader/elftest/corrupt1.elf64.so Binary files differdeleted file mode 100755 index 12ce7362dc..0000000000 --- a/tests/auto/qpluginloader/elftest/corrupt1.elf64.so +++ /dev/null diff --git a/tests/auto/qpluginloader/elftest/corrupt2.elf64.so b/tests/auto/qpluginloader/elftest/corrupt2.elf64.so Binary files differdeleted file mode 100755 index 11fdc2c118..0000000000 --- a/tests/auto/qpluginloader/elftest/corrupt2.elf64.so +++ /dev/null diff --git a/tests/auto/qpluginloader/elftest/corrupt3.elf64.so b/tests/auto/qpluginloader/elftest/corrupt3.elf64.so Binary files differdeleted file mode 100755 index 94a2bc3560..0000000000 --- a/tests/auto/qpluginloader/elftest/corrupt3.elf64.so +++ /dev/null diff --git a/tests/auto/qpluginloader/elftest/debugobj.so b/tests/auto/qpluginloader/elftest/debugobj.so Binary files differdeleted file mode 100644 index f0ee0569a3..0000000000 --- a/tests/auto/qpluginloader/elftest/debugobj.so +++ /dev/null diff --git a/tests/auto/qpluginloader/elftest/garbage1.so b/tests/auto/qpluginloader/elftest/garbage1.so deleted file mode 100644 index 0c7453077f..0000000000 --- a/tests/auto/qpluginloader/elftest/garbage1.so +++ /dev/null @@ -1,4 +0,0 @@ -pcdL+&&e= -oÒʎIٝmg]!Z -L')t -N(eP)Y8G 6-y"Zk4?^n5$Y=#y
\ No newline at end of file diff --git a/tests/auto/qpluginloader/elftest/garbage2.so b/tests/auto/qpluginloader/elftest/garbage2.so deleted file mode 100644 index c06338e0c8..0000000000 --- a/tests/auto/qpluginloader/elftest/garbage2.so +++ /dev/null @@ -1 +0,0 @@ -v.YtKW3
\ No newline at end of file diff --git a/tests/auto/qpluginloader/elftest/garbage3.so b/tests/auto/qpluginloader/elftest/garbage3.so deleted file mode 100644 index a24c523a77..0000000000 --- a/tests/auto/qpluginloader/elftest/garbage3.so +++ /dev/null @@ -1 +0,0 @@ -ȂT-ڥ 쾜i8_xIx=4@[BKS$
\ No newline at end of file diff --git a/tests/auto/qpluginloader/elftest/garbage4.so b/tests/auto/qpluginloader/elftest/garbage4.so deleted file mode 100644 index 4f45cf5157..0000000000 --- a/tests/auto/qpluginloader/elftest/garbage4.so +++ /dev/null @@ -1 +0,0 @@ -!\~Uu:9T+91QEǚxng5zh^t'mm*ˈdXH;vw+G
9L0!
\ No newline at end of file diff --git a/tests/auto/qpluginloader/elftest/garbage5.so b/tests/auto/qpluginloader/elftest/garbage5.so deleted file mode 100644 index f8c0a1d544..0000000000 --- a/tests/auto/qpluginloader/elftest/garbage5.so +++ /dev/null @@ -1,2 +0,0 @@ -Q --9
\ No newline at end of file diff --git a/tests/auto/qpluginloader/lib/lib.pro b/tests/auto/qpluginloader/lib/lib.pro deleted file mode 100644 index ce9bf13c25..0000000000 --- a/tests/auto/qpluginloader/lib/lib.pro +++ /dev/null @@ -1,18 +0,0 @@ -TEMPLATE = lib -CONFIG += dll -CONFIG -= staticlib -SOURCES = mylib.c -TARGET = tst_qpluginloaderlib -DESTDIR = ../bin -QT = core - -win32-msvc: DEFINES += WIN32_MSVC -win32-borland: DEFINES += WIN32_BORLAND - -#no special install rule for the library used by test -INSTALLS = - -symbian: { - TARGET.CAPABILITY=ALL -TCB -} - diff --git a/tests/auto/qpluginloader/lib/mylib.c b/tests/auto/qpluginloader/lib/mylib.c deleted file mode 100644 index dc43c35815..0000000000 --- a/tests/auto/qpluginloader/lib/mylib.c +++ /dev/null @@ -1,60 +0,0 @@ -/**************************************************************************** -** -** 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 documentation 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 <qglobal.h> - -#if defined(Q_CC_MSVC) || defined(Q_CC_MSVC_NET) || defined(Q_CC_BOR) -#define LIB_EXPORT __declspec(dllexport) -#else -#define LIB_EXPORT -#endif - -#if defined(Q_CC_BOR) -# define BORLAND_STDCALL __stdcall -#else -# define BORLAND_STDCALL -#endif - -LIB_EXPORT int BORLAND_STDCALL version() -{ - return 1; -} - diff --git a/tests/auto/qpluginloader/qpluginloader.pro b/tests/auto/qpluginloader/qpluginloader.pro deleted file mode 100644 index 6e41b4c96a..0000000000 --- a/tests/auto/qpluginloader/qpluginloader.pro +++ /dev/null @@ -1,14 +0,0 @@ -QT = core -TEMPLATE = subdirs -CONFIG += ordered -SUBDIRS = lib \ - theplugin \ - tst -!win32: !macx-*: !symbian: SUBDIRS += almostplugin -TARGET = tst_qpluginloader - -# no special install rule for subdir -INSTALLS = - - -CONFIG += parallel_test diff --git a/tests/auto/qpluginloader/theplugin/plugininterface.h b/tests/auto/qpluginloader/theplugin/plugininterface.h deleted file mode 100644 index 48d8443ba1..0000000000 --- a/tests/auto/qpluginloader/theplugin/plugininterface.h +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** 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$ -** -****************************************************************************/ -#ifndef PLUGININTERFACE_H -#define PLUGININTERFACE_H - -struct PluginInterface { - virtual ~PluginInterface() {} - virtual QString pluginName() const = 0; -}; - -QT_BEGIN_NAMESPACE -Q_DECLARE_INTERFACE(PluginInterface, "com.trolltect.autotests.plugininterface/1.0") -QT_END_NAMESPACE - -#endif // PLUGININTERFACE_H - diff --git a/tests/auto/qpluginloader/theplugin/theplugin.cpp b/tests/auto/qpluginloader/theplugin/theplugin.cpp deleted file mode 100644 index fdf599c875..0000000000 --- a/tests/auto/qpluginloader/theplugin/theplugin.cpp +++ /dev/null @@ -1,51 +0,0 @@ -/**************************************************************************** -** -** 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/QString> -#include "theplugin.h" -#include <QtCore/qplugin.h> - -QString ThePlugin::pluginName() const -{ - return QLatin1String("Plugin ok"); -} - -Q_EXPORT_PLUGIN2(theplugin, ThePlugin) - diff --git a/tests/auto/qpluginloader/theplugin/theplugin.h b/tests/auto/qpluginloader/theplugin/theplugin.h deleted file mode 100644 index 5b738696e0..0000000000 --- a/tests/auto/qpluginloader/theplugin/theplugin.h +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************** -** -** 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$ -** -****************************************************************************/ -#ifndef THEPLUGIN_H -#define THEPLUGIN_H - -#include <QObject> -#include "plugininterface.h" - -class ThePlugin : public QObject, public PluginInterface -{ - Q_OBJECT - Q_INTERFACES(PluginInterface) - -public: - virtual QString pluginName() const; -}; - -#endif // THEPLUGIN_H - diff --git a/tests/auto/qpluginloader/theplugin/theplugin.pro b/tests/auto/qpluginloader/theplugin/theplugin.pro deleted file mode 100644 index 44b46b439f..0000000000 --- a/tests/auto/qpluginloader/theplugin/theplugin.pro +++ /dev/null @@ -1,11 +0,0 @@ -TEMPLATE = lib -CONFIG += plugin -HEADERS = theplugin.h -SOURCES = theplugin.cpp -TARGET = $$qtLibraryTarget(theplugin) -DESTDIR = ../bin - -symbian: { - TARGET.EPOCALLOWDLLDATA=1 - TARGET.CAPABILITY=ALL -TCB -} diff --git a/tests/auto/qpluginloader/tst/tst.pro b/tests/auto/qpluginloader/tst/tst.pro deleted file mode 100644 index 7ae6d89143..0000000000 --- a/tests/auto/qpluginloader/tst/tst.pro +++ /dev/null @@ -1,32 +0,0 @@ -load(qttest_p4) -SOURCES += ../tst_qpluginloader.cpp -TARGET = ../tst_qpluginloader -QT = core -HEADERS += ../theplugin/plugininterface.h - -win32 { - CONFIG(debug, debug|release) { - TARGET = ../../debug/tst_qpluginloader -} else { - TARGET = ../../release/tst_qpluginloader - } -} - - -wince*: { - addFiles.files = $$OUT_PWD/../bin/*.dll - addFiles.path = bin - DEPLOYMENT += addFiles -} - -symbian: { - libDep.files = tst_qpluginloaderlib.dll - libDep.path = /sys/bin - pluginDep.files = theplugin.dll - pluginDep.path = bin - - DEPLOYMENT += libDep pluginDep -} - -DEFINES += SRCDIR=\\\"$$PWD/../\\\" -mac*:CONFIG+=insignificant_test diff --git a/tests/auto/qpluginloader/tst_qpluginloader.cpp b/tests/auto/qpluginloader/tst_qpluginloader.cpp deleted file mode 100644 index 76dbd48a14..0000000000 --- a/tests/auto/qpluginloader/tst_qpluginloader.cpp +++ /dev/null @@ -1,406 +0,0 @@ -/**************************************************************************** -** -** 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 <QtTest/QtTest> -#include <qdir.h> -#include <qpluginloader.h> -#include "theplugin/plugininterface.h" - -// Helper macros to let us know if some suffixes are valid -#define bundle_VALID false -#define dylib_VALID false -#define sl_VALID false -#define a_VALID false -#define so_VALID false -#define dll_VALID false - -#if defined(Q_OS_DARWIN) -# undef bundle_VALID -# undef dylib_VALID -# undef so_VALID -# define bundle_VALID true -# define dylib_VALID true -# define so_VALID true -# define SUFFIX ".dylib" -# define PREFIX "lib" - -#elif defined(Q_OS_HPUX) && !defined(__ia64) -# undef sl_VALID -# define sl_VALID true -# define SUFFIX ".sl" -# define PREFIX "lib" - -#elif defined(Q_OS_AIX) -# undef a_VALID -# undef so_VALID -# define a_VALID true -# define so_VALID true -# define SUFFIX ".so" -# define PREFIX "lib" - -#elif defined(Q_OS_WIN) -# undef dll_VALID -# define dll_VALID true -# ifdef QT_NO_DEBUG -# define SUFFIX ".dll" -# else -# define SUFFIX "d.dll" -# endif -# define PREFIX "" - -#elif defined(Q_OS_SYMBIAN) -# undef dll_VALID -# define dll_VALID true -# define SUFFIX ".dll" -# define PREFIX "" - -#else // all other Unix -# undef so_VALID -# define so_VALID true -# define SUFFIX ".so" -# define PREFIX "lib" -#endif - -static QString sys_qualifiedLibraryName(const QString &fileName) -{ - QString currDir = QDir::currentPath(); - return currDir + "/bin/" + PREFIX + fileName + SUFFIX; -} - -//TESTED_CLASS= -//TESTED_FILES= - -QT_FORWARD_DECLARE_CLASS(QPluginLoader) -class tst_QPluginLoader : public QObject -{ - Q_OBJECT - -public: - tst_QPluginLoader(); - virtual ~tst_QPluginLoader(); - -private slots: - void errorString(); - void loadHints(); - void deleteinstanceOnUnload(); - void checkingStubsFromDifferentDrives(); - void loadDebugObj(); - void loadCorruptElf(); - void loadGarbage(); -}; - -tst_QPluginLoader::tst_QPluginLoader() - -{ -} - -tst_QPluginLoader::~tst_QPluginLoader() -{ -} - -//#define SHOW_ERRORS 1 - -void tst_QPluginLoader::errorString() -{ -#if defined(Q_OS_WINCE) - // On WinCE we need an QCoreApplication object for current dir - int argc = 0; - QCoreApplication app(argc,0); -#endif - const QString unknown(QLatin1String("Unknown error")); - - { - QPluginLoader loader; // default constructed - bool loaded = loader.load(); -#ifdef SHOW_ERRORS - qDebug() << loader.errorString(); -#endif - QCOMPARE(loaded, false); - QCOMPARE(loader.errorString(), unknown); - - QObject *obj = loader.instance(); -#ifdef SHOW_ERRORS - qDebug() << loader.errorString(); -#endif - QCOMPARE(obj, static_cast<QObject*>(0)); - QCOMPARE(loader.errorString(), unknown); - - bool unloaded = loader.unload(); -#ifdef SHOW_ERRORS - qDebug() << loader.errorString(); -#endif - QCOMPARE(unloaded, false); - QCOMPARE(loader.errorString(), unknown); - } - { - QPluginLoader loader( sys_qualifiedLibraryName("tst_qpluginloaderlib")); //not a plugin - bool loaded = loader.load(); -#ifdef SHOW_ERRORS - qDebug() << loader.errorString(); -#endif - QCOMPARE(loaded, false); - QVERIFY(loader.errorString() != unknown); - - QObject *obj = loader.instance(); -#ifdef SHOW_ERRORS - qDebug() << loader.errorString(); -#endif - QCOMPARE(obj, static_cast<QObject*>(0)); - QVERIFY(loader.errorString() != unknown); - - bool unloaded = loader.unload(); -#ifdef SHOW_ERRORS - qDebug() << loader.errorString(); -#endif - QCOMPARE(unloaded, false); - QVERIFY(loader.errorString() != unknown); - } - - { - QPluginLoader loader( sys_qualifiedLibraryName("nosuchfile")); //not a file - bool loaded = loader.load(); -#ifdef SHOW_ERRORS - qDebug() << loader.errorString(); -#endif - QCOMPARE(loaded, false); - QVERIFY(loader.errorString() != unknown); - - QObject *obj = loader.instance(); -#ifdef SHOW_ERRORS - qDebug() << loader.errorString(); -#endif - QCOMPARE(obj, static_cast<QObject*>(0)); - QVERIFY(loader.errorString() != unknown); - - bool unloaded = loader.unload(); -#ifdef SHOW_ERRORS - qDebug() << loader.errorString(); -#endif - QCOMPARE(unloaded, false); - QVERIFY(loader.errorString() != unknown); - } - -#if !defined Q_OS_WIN && !defined Q_OS_MAC && !defined Q_OS_HPUX && !defined Q_OS_SYMBIAN - { - QPluginLoader loader( sys_qualifiedLibraryName("almostplugin")); //a plugin with unresolved symbols - loader.setLoadHints(QLibrary::ResolveAllSymbolsHint); - QCOMPARE(loader.load(), false); -#ifdef SHOW_ERRORS - qDebug() << loader.errorString(); -#endif - QVERIFY(loader.errorString() != unknown); - - QCOMPARE(loader.instance(), static_cast<QObject*>(0)); -#ifdef SHOW_ERRORS - qDebug() << loader.errorString(); -#endif - QVERIFY(loader.errorString() != unknown); - - QCOMPARE(loader.unload(), false); -#ifdef SHOW_ERRORS - qDebug() << loader.errorString(); -#endif - QVERIFY(loader.errorString() != unknown); - } -#endif - - { - QPluginLoader loader( sys_qualifiedLibraryName("theplugin")); //a plugin - QCOMPARE(loader.load(), true); - QCOMPARE(loader.errorString(), unknown); - - QVERIFY(loader.instance() != static_cast<QObject*>(0)); - QCOMPARE(loader.errorString(), unknown); - - // Make sure that plugin really works - PluginInterface* theplugin = qobject_cast<PluginInterface*>(loader.instance()); - QString pluginName = theplugin->pluginName(); - QCOMPARE(pluginName, QLatin1String("Plugin ok")); - - QCOMPARE(loader.unload(), true); - QCOMPARE(loader.errorString(), unknown); - } -} - -void tst_QPluginLoader::loadHints() -{ - QPluginLoader loader; - QCOMPARE(loader.loadHints(), (QLibrary::LoadHints)0); //Do not crash - loader.setLoadHints(QLibrary::ResolveAllSymbolsHint); - loader.setFileName( sys_qualifiedLibraryName("theplugin")); //a plugin - QCOMPARE(loader.loadHints(), QLibrary::ResolveAllSymbolsHint); -} - -void tst_QPluginLoader::deleteinstanceOnUnload() -{ - for (int pass = 0; pass < 2; ++pass) { - QPluginLoader loader1; - loader1.setFileName( sys_qualifiedLibraryName("theplugin")); //a plugin - if (pass == 0) - loader1.load(); // not recommended, instance() should do the job. - PluginInterface *instance1 = qobject_cast<PluginInterface*>(loader1.instance()); - QVERIFY(instance1); - QCOMPARE(instance1->pluginName(), QLatin1String("Plugin ok")); - - QPluginLoader loader2; - loader2.setFileName( sys_qualifiedLibraryName("theplugin")); //a plugin - if (pass == 0) - loader2.load(); // not recommended, instance() should do the job. - PluginInterface *instance2 = qobject_cast<PluginInterface*>(loader2.instance()); - QCOMPARE(instance2->pluginName(), QLatin1String("Plugin ok")); - - QSignalSpy spy1(loader1.instance(), SIGNAL(destroyed())); - QSignalSpy spy2(loader2.instance(), SIGNAL(destroyed())); - if (pass == 0) { - QCOMPARE(loader2.unload(), false); // refcount not reached 0, not really unloaded - QCOMPARE(spy1.count(), 0); - QCOMPARE(spy2.count(), 0); - } - QCOMPARE(instance1->pluginName(), QLatin1String("Plugin ok")); - QCOMPARE(instance2->pluginName(), QLatin1String("Plugin ok")); - QVERIFY(loader1.unload()); // refcount reached 0, did really unload - QCOMPARE(spy1.count(), 1); - QCOMPARE(spy2.count(), 1); - } -} - -void tst_QPluginLoader::checkingStubsFromDifferentDrives() -{ -#if defined(Q_OS_SYMBIAN) - - // This test needs C-drive + some additional drive (driveForStubs) - - const QString driveForStubs("E:/");// != "C:/" - const QString stubDir("system/temp/stubtest/"); - const QString stubName("dummyStub.qtplugin"); - const QString fullStubFileName(stubDir + stubName); - QDir dir(driveForStubs); - bool test1(false); bool test2(false); - - // initial clean up - QFile::remove(driveForStubs + fullStubFileName); - dir.rmdir(driveForStubs + stubDir); - - // create a stub dir and do stub drive check - if (!dir.mkpath(stubDir)) - QSKIP("Required drive not available for this test", SkipSingle); - - {// test without stub, should not be found - QPluginLoader loader("C:/" + fullStubFileName); - test1 = !loader.fileName().length(); - } - - // create a stub to defined drive - QFile tempFile(driveForStubs + fullStubFileName); - tempFile.open(QIODevice::ReadWrite); - QFileInfo fileInfo(tempFile); - - {// now should be found even tried to find from C: - QPluginLoader loader("C:/" + fullStubFileName); - test2 = (loader.fileName() == fileInfo.absoluteFilePath()); - } - - // clean up - tempFile.close(); - if (!QFile::remove(driveForStubs + fullStubFileName)) - QWARN("Could not remove stub file"); - if (!dir.rmdir(driveForStubs + stubDir)) - QWARN("Could not remove stub directory"); - - // test after cleanup - QVERIFY(test1); - QVERIFY(test2); - -#endif//Q_OS_SYMBIAN -} - -void tst_QPluginLoader::loadDebugObj() -{ -#if defined (__ELF__) - QVERIFY(QFile::exists(SRCDIR "elftest/debugobj.so")); - QPluginLoader lib1(SRCDIR "elftest/debugobj.so"); - QCOMPARE(lib1.load(), false); -#endif -} - -void tst_QPluginLoader::loadCorruptElf() -{ -#if defined (__ELF__) -if (sizeof(void*) == 8) { - QVERIFY(QFile::exists(SRCDIR "elftest/corrupt1.elf64.so")); - - QPluginLoader lib1(SRCDIR "elftest/corrupt1.elf64.so"); - QCOMPARE(lib1.load(), false); - QVERIFY(lib1.errorString().contains("not a valid Qt plugin")); - - QPluginLoader lib2(SRCDIR "elftest/corrupt2.elf64.so"); - QCOMPARE(lib2.load(), false); - QVERIFY(lib2.errorString().contains("not a valid Qt plugin")); - - QPluginLoader lib3(SRCDIR "elftest/corrupt3.elf64.so"); - QCOMPARE(lib3.load(), false); - QVERIFY(lib3.errorString().contains("not a valid Qt plugin")); -} else if (sizeof(void*) == 4) { - QPluginLoader libW(SRCDIR "elftest/corrupt3.elf64.so"); - QCOMPARE(libW.load(), false); - QVERIFY(libW.errorString().contains("architecture")); -} else { - QFAIL("Please port QElfParser to this platform or blacklist this test."); -} -#endif -} - -void tst_QPluginLoader::loadGarbage() -{ -#if defined (Q_OS_UNIX) && !defined(Q_OS_SYMBIAN) - for (int i=0; i<5; i++) { - QPluginLoader lib(QString(SRCDIR "elftest/garbage%1.so").arg(i)); - QCOMPARE(lib.load(), false); -#ifdef SHOW_ERRORS - qDebug() << lib.errorString(); -#endif - } -#endif -} - -QTEST_APPLESS_MAIN(tst_QPluginLoader) -#include "tst_qpluginloader.moc" |