Tests: C++: Make tests run from shadow builds.

For shadow builds some tests couldn't find their test data. Solved by
using the same pattern as in Qt tests: Inject $$PWD as SRCDIR via a
DEFINES statement.

Note: It was considered to use QFINDTESTDATA for Qt5, but this was
rejected due to:
 1) It's Qt5 only (would mean to introduce some wrapper...)
 2) As the doc states, it will not work with QTEST_APPLESS_MAIN tests.

Change-Id: Ie6cf59570fe61725b7f6f83b7da650331ddb38fc
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
This commit is contained in:
Nikolai Kosjar
2012-11-06 12:41:05 +01:00
parent 4e49c297bc
commit 492ca1cbcf
4 changed files with 12 additions and 4 deletions
+4
View File
@@ -1,5 +1,9 @@
include(../../qttest.pri)
include(../shared/shared.pri)
# Inject the source dir for referencing test data from shadow builds.
DEFINES += SRCDIR=\\\"$$PWD\\\"
SOURCES += tst_cxx11.cpp
OTHER_FILES += \
data/inlineNamespace.1.cpp \
+2 -1
View File
@@ -56,7 +56,8 @@ class tst_cxx11: public QObject
*/
static QString testdata(const QString &name = QString())
{
static const QString dataDirectory = QDir::currentPath() + QLatin1String("/data");
static const QString dataDirectory = QLatin1String(SRCDIR "/data");
QString result = dataDirectory;
if (!name.isEmpty()) {
result += QLatin1Char('/');
@@ -1,7 +1,10 @@
include(../../qttest.pri)
include(../shared/shared.pri)
SOURCES += tst_preprocessor.cpp
# Inject the source dir for referencing test data from shadow builds.
DEFINES += SRCDIR=\\\"$$PWD\\\"
SOURCES += tst_preprocessor.cpp
OTHER_FILES = \
data/noPP.1.cpp \
data/noPP.2.cpp \
@@ -39,7 +39,7 @@ using namespace CPlusPlus;
QByteArray loadSource(const QString &fileName)
{
QFile inf(fileName);
QFile inf(QLatin1String(SRCDIR) + QLatin1Char('/') + fileName);
if (!inf.open(QIODevice::ReadOnly | QIODevice::Text)) {
qDebug("Cannot open \"%s\"", fileName.toUtf8().constData());
return QByteArray();
@@ -53,7 +53,7 @@ QByteArray loadSource(const QString &fileName)
void saveData(const QByteArray &data, const QString &fileName)
{
QFile inf(fileName);
QFile inf(QLatin1String(SRCDIR) + QLatin1Char('/') + fileName);
if (!inf.open(QIODevice::WriteOnly | QIODevice::Text)) {
qDebug("Cannot open \"%s\"", fileName.toUtf8().constData());
return;