From a998a8a1497c4c9176278bca9401f7954708eb9e Mon Sep 17 00:00:00 2001 From: Rohan McGovern Date: Thu, 14 Jan 2010 16:24:01 +1000 Subject: Add a selftest for tests/auto/auto.pro. This selftest enforces that tests/auto/auto.pro is properly maintained. It may be extended to check other elements of the environment necessary for autotests to run correctly. --- tests/auto/auto.pro | 10 ++- tests/auto/maketestselftest/maketestselftest.pro | 9 ++ .../auto/maketestselftest/tst_maketestselftest.cpp | 100 +++++++++++++++++++++ 3 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 tests/auto/maketestselftest/maketestselftest.pro create mode 100644 tests/auto/maketestselftest/tst_maketestselftest.cpp (limited to 'tests/auto') diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro index 4215e97913..9b91c7d45f 100644 --- a/tests/auto/auto.pro +++ b/tests/auto/auto.pro @@ -8,10 +8,14 @@ TEMPLATE = subdirs compiler \ compilerwarnings \ linguist \ + maketestselftest \ moc \ uic \ uic3 \ - guiapplauncher + guiapplauncher \ + #atwrapper \ # These tests need significant updating, + #uiloader \ # they have hardcoded machine names etc. + Q3SUBDIRS += \ q3accel \ q3action \ @@ -130,6 +134,7 @@ SUBDIRS += \ qdoublevalidator \ qdrag \ qerrormessage \ + qevent \ qeventloop \ qexplicitlyshareddatapointer \ qfile \ @@ -478,7 +483,8 @@ embedded:!wince* { } symbian { - SUBDIRS += qsoftkeymanager + SUBDIRS += qsoftkeymanager \ + qs60mainapplication } # Enable the tests specific to QtXmlPatterns. If you add a test, remember to diff --git a/tests/auto/maketestselftest/maketestselftest.pro b/tests/auto/maketestselftest/maketestselftest.pro new file mode 100644 index 0000000000..6cc1744d2d --- /dev/null +++ b/tests/auto/maketestselftest/maketestselftest.pro @@ -0,0 +1,9 @@ +load(qttest_p4) + +SOURCES += tst_maketestselftest.cpp +QT = core + +DEFINES += SRCDIR=\\\"$$PWD/\\\" + +requires(!cross_compile) + diff --git a/tests/auto/maketestselftest/tst_maketestselftest.cpp b/tests/auto/maketestselftest/tst_maketestselftest.cpp new file mode 100644 index 0000000000..ea7f36c60b --- /dev/null +++ b/tests/auto/maketestselftest/tst_maketestselftest.cpp @@ -0,0 +1,100 @@ +/**************************************************************************** +** +** Copyright (C) 2009 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$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, 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. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include +#include +#include +#include + +class tst_MakeTestSelfTest: public QObject +{ + Q_OBJECT + +private slots: + void auto_dot_pro(); + void auto_dot_pro_data(); +}; + +/* Verify that all tests are listed somewhere in auto.pro */ +void tst_MakeTestSelfTest::auto_dot_pro() +{ + static QStringList lines; + + if (lines.isEmpty()) { + QString filename = QString::fromLatin1(SRCDIR "/../auto.pro"); + QFile file(filename); + if (!file.open(QIODevice::ReadOnly)) { + QFAIL(qPrintable(QString("open %1: %2").arg(filename).arg(file.errorString()))); + } + while (!file.atEnd()) { + lines << file.readLine().trimmed(); + } + } + + QFETCH(QString, subdir); + QRegExp re(QString("( |=|^|#)%1( |\\\\|$)").arg(QRegExp::escape(subdir))); + foreach (const QString& line, lines) { + if (re.indexIn(line) != -1) { + return; + } + } + + QFAIL(qPrintable(QString( + "Subdir `%1' is missing from tests/auto/auto.pro\n" + "This means the test won't be compiled or run on any platform.\n" + "If this is intentional, please put the test name in a comment in auto.pro.").arg(subdir)) + ); +} + +void tst_MakeTestSelfTest::auto_dot_pro_data() +{ + QTest::addColumn("subdir"); + QDir dir(SRCDIR "/.."); + QStringList subdirs = dir.entryList(QDir::AllDirs|QDir::NoDotAndDotDot); + + foreach (const QString& subdir, subdirs) { + QTest::newRow(qPrintable(subdir)) << subdir; + } +} + +QTEST_MAIN(tst_MakeTestSelfTest) +#include "tst_maketestselftest.moc" -- cgit v1.2.3