diff options
author | Michael Brasser <michael.brasser@nokia.com> | 2011-10-07 13:19:13 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-10-11 05:17:49 +0200 |
commit | a97b909363b28ce20c753558ba730e759b9ed285 (patch) | |
tree | 4c5a152d844976c1474d8ecdb5bd6fcfdb13d20f | |
parent | c9df7928182b95428639e79cec19629f739b1213 (diff) |
Generic solution for finding QtDeclarative test data.
Also implemented changes for qsgrepeater test to verify.
Task-number: QTBUG-21721
Change-Id: Ia5a839d1a23ba0f6ee144450ec026b74ee72134b
Reviewed-on: http://codereview.qt-project.org/6203
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
-rw-r--r-- | tests/auto/declarative/qsgrepeater/qsgrepeater.pro | 4 | ||||
-rw-r--r-- | tests/auto/declarative/qsgrepeater/tst_qsgrepeater.cpp | 24 | ||||
-rw-r--r-- | tests/auto/declarative/shared/util.h | 84 |
3 files changed, 100 insertions, 12 deletions
diff --git a/tests/auto/declarative/qsgrepeater/qsgrepeater.pro b/tests/auto/declarative/qsgrepeater/qsgrepeater.pro index f6ef6e8345..aa6e44d8ab 100644 --- a/tests/auto/declarative/qsgrepeater/qsgrepeater.pro +++ b/tests/auto/declarative/qsgrepeater/qsgrepeater.pro @@ -4,7 +4,9 @@ macx:CONFIG -= app_bundle SOURCES += tst_qsgrepeater.cpp -DEFINES += SRCDIR=\\\"$$PWD\\\" +testFiles.files = data +testFiles.path = . +DEPLOYMENT += testFiles CONFIG += parallel_test QT += core-private gui-private declarative-private diff --git a/tests/auto/declarative/qsgrepeater/tst_qsgrepeater.cpp b/tests/auto/declarative/qsgrepeater/tst_qsgrepeater.cpp index 7143ff8868..cb8b81e699 100644 --- a/tests/auto/declarative/qsgrepeater/tst_qsgrepeater.cpp +++ b/tests/auto/declarative/qsgrepeater/tst_qsgrepeater.cpp @@ -49,9 +49,11 @@ #include <private/qsgrepeater_p.h> #include <private/qsgtext_p.h> +#include "../shared/util.h" + inline QUrl TEST_FILE(const QString &filename) { - return QUrl::fromLocalFile(QLatin1String(SRCDIR) + QLatin1String("/data/") + filename); + return QUrl::fromLocalFile(TESTDATA(filename)); } class tst_QSGRepeater : public QObject @@ -178,7 +180,7 @@ void tst_QSGRepeater::numberModel() TestObject *testObject = new TestObject; ctxt->setContextProperty("testObject", testObject); - canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/intmodel.qml")); + canvas->setSource(TEST_FILE("intmodel.qml")); qApp->processEvents(); QSGRepeater *repeater = findItem<QSGRepeater>(canvas->rootObject(), "repeater"); @@ -219,7 +221,7 @@ void tst_QSGRepeater::objectList() QDeclarativeContext *ctxt = canvas->rootContext(); ctxt->setContextProperty("testData", QVariant::fromValue(data)); - canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/objlist.qml")); + canvas->setSource(TEST_FILE("objlist.qml")); qApp->processEvents(); QSGRepeater *repeater = findItem<QSGRepeater>(canvas->rootObject(), "repeater"); @@ -260,7 +262,7 @@ void tst_QSGRepeater::stringList() QDeclarativeContext *ctxt = canvas->rootContext(); ctxt->setContextProperty("testData", data); - canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/repeater1.qml")); + canvas->setSource(TEST_FILE("repeater1.qml")); qApp->processEvents(); QSGRepeater *repeater = findItem<QSGRepeater>(canvas->rootObject(), "repeater"); @@ -308,7 +310,7 @@ void tst_QSGRepeater::dataModel_adding() TestModel testModel; ctxt->setContextProperty("testData", &testModel); - canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/repeater2.qml")); + canvas->setSource(TEST_FILE("repeater2.qml")); qApp->processEvents(); QSGRepeater *repeater = findItem<QSGRepeater>(canvas->rootObject(), "repeater"); @@ -378,7 +380,7 @@ void tst_QSGRepeater::dataModel_removing() testModel.addItem("five", "5"); ctxt->setContextProperty("testData", &testModel); - canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/repeater2.qml")); + canvas->setSource(TEST_FILE("repeater2.qml")); qApp->processEvents(); QSGRepeater *repeater = findItem<QSGRepeater>(canvas->rootObject(), "repeater"); @@ -444,7 +446,7 @@ void tst_QSGRepeater::dataModel_changes() testModel.addItem("three", "3"); ctxt->setContextProperty("testData", &testModel); - canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/repeater2.qml")); + canvas->setSource(TEST_FILE("repeater2.qml")); qApp->processEvents(); QSGRepeater *repeater = findItem<QSGRepeater>(canvas->rootObject(), "repeater"); @@ -478,7 +480,7 @@ void tst_QSGRepeater::itemModel() TestObject *testObject = new TestObject; ctxt->setContextProperty("testObject", testObject); - canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/itemlist.qml")); + canvas->setSource(TEST_FILE("itemlist.qml")); qApp->processEvents(); QSGRepeater *repeater = findItem<QSGRepeater>(canvas->rootObject(), "repeater"); @@ -522,7 +524,7 @@ void tst_QSGRepeater::resetModel() QDeclarativeContext *ctxt = canvas->rootContext(); ctxt->setContextProperty("testData", dataA); - canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/repeater1.qml")); + canvas->setSource(TEST_FILE("repeater1.qml")); qApp->processEvents(); QSGRepeater *repeater = findItem<QSGRepeater>(canvas->rootObject(), "repeater"); QVERIFY(repeater != 0); @@ -584,7 +586,7 @@ void tst_QSGRepeater::resetModel() void tst_QSGRepeater::modelChanged() { QDeclarativeEngine engine; - QDeclarativeComponent component(&engine, TEST_FILE("/modelChanged.qml")); + QDeclarativeComponent component(&engine, TEST_FILE("modelChanged.qml")); QSGItem *rootObject = qobject_cast<QSGItem*>(component.create()); QVERIFY(rootObject); @@ -607,7 +609,7 @@ void tst_QSGRepeater::modelChanged() void tst_QSGRepeater::properties() { QDeclarativeEngine engine; - QDeclarativeComponent component(&engine, TEST_FILE("/properties.qml")); + QDeclarativeComponent component(&engine, TEST_FILE("properties.qml")); QSGItem *rootObject = qobject_cast<QSGItem*>(component.create()); QVERIFY(rootObject); diff --git a/tests/auto/declarative/shared/util.h b/tests/auto/declarative/shared/util.h new file mode 100644 index 0000000000..f353eabf76 --- /dev/null +++ b/tests/auto/declarative/shared/util.h @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** 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 QDECLARATIVETESTUTILS_H +#define QDECLARATIVETESTUTILS_H + +#include <QtCore/qdir.h> + +namespace QDeclarativeTestUtils +{ + /* + Returns the path to some testdata file. + + We first check relative to the binary, and then look in the source tree. + + Note we are looking for a _directory_ which exists, but the _file_ itself need not exist, + to support the case of finding a path to a testdata file which doesn't exist yet (i.e. + a file we are about to create). + */ + QString testdata(QString const& name, const char *sourceFile) + { + // Try to find it relative to the binary. + QFileInfo relative = QDir(QCoreApplication::applicationDirPath()).filePath(QLatin1String("data/") + name); + if (relative.dir().exists()) { + return relative.absoluteFilePath(); + } + + // Else try to find it in the source tree + QFileInfo from_source = QFileInfo(sourceFile).absoluteDir().filePath(QLatin1String("data/") + name); + if (from_source.dir().exists()) { + return from_source.absoluteFilePath(); + } + + qWarning("requested testdata %s could not be found (looked at: %s, %s)", + qPrintable(name), + qPrintable(relative.filePath()), + qPrintable(from_source.filePath()) + ); + + return QString(); + } +} + +#define TESTDATA(name) QDeclarativeTestUtils::testdata(name, __FILE__) + +#endif // QDECLARATIVETESTUTILS_H |