centralize headersclean test
authorOswald Buddenhagen <oswald.buddenhagen@digia.com>
Thu, 6 Dec 2012 16:16:56 +0000 (17:16 +0100)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Tue, 11 Dec 2012 12:37:57 +0000 (13:37 +0100)
so other modules can actually re-use the code without referencing qtbase
sources.

Change-Id: Id66f07b476e539273dd32455e7642a17d7e5d0ef
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
mkspecs/features/data/headersclean/tst_headersclean.cpp.in [moved from tests/auto/other/headersclean/tst_headersclean.cpp with 96% similarity]
mkspecs/features/qt_headersclean.prf [moved from tests/auto/other/headersclean/headersclean.pri with 70% similarity]
tests/auto/other/headersclean/headersclean.pro
tests/auto/other/headersclean/qt_headersclean_headers.h [deleted file]

 #define foreach public:;
 #define forever public:;
 
-#include <qt_headersclean_headers.h>
+$${includes}
 #include <QtCore/qglobal.h>
 
 int main()
 {
-    qWarning("This is a compile test only");
+    qWarning(\"This is a compile test only\");
     return 0;
 }
similarity index 70%
rename from tests/auto/other/headersclean/headersclean.pri
rename to mkspecs/features/qt_headersclean.prf
index c56d432..4128392 100644 (file)
@@ -1,9 +1,9 @@
 # The headersclean test attempts to ensure all public Qt headers
 # abide by various rules.
 #
-# To reuse this test outside of the qtbase module,
-# include this .pri and create a qt_headersclean_headers.h which includes
-# the headers you'd like to test.
+# To use this test, create a project which contains nothing else than a
+# QT= line with the modules you want to test (no presence conditionals needed),
+# followed by load(qt_headersclean).
 
 *-g++*: QMAKE_CXXFLAGS += -W -Wall -Wextra -Werror
 
@@ -33,7 +33,19 @@ QMAKE_CXXFLAGS += -DQT_NO_CAST_TO_ASCII \
                   -DQT_USE_FAST_OPERATOR_PLUS
 
 TARGET = tst_headersclean
-SOURCES += $$PWD/tst_headersclean.cpp
 
-# qt_headersclean_headers.h should be alongside the .pro file
-INCLUDEPATH += $$_PRO_FILE_PWD_
+includes =
+for(q, QT) {
+    qn = $$eval(QT.$${q}.name)
+    isEmpty(qn): \
+        QT -= $$q
+    else: \
+        includes += "$${LITERAL_HASH}include <$$qn/$$qn>"
+}
+includes = $$join(includes, $$escape_expand(\\n))
+
+testfile.input = $$PWD/data/headersclean/tst_headersclean.cpp.in
+testfile.output = $$OUT_PWD/tst_headersclean.cpp
+QMAKE_SUBSTITUTES += testfile
+
+SOURCES += $$testfile.output
index 419c2e9..4965064 100644 (file)
@@ -1,3 +1,3 @@
-QT = core testlib gui widgets
-include(headersclean.pri)
+QT = core concurrent network dbus xml sql testlib gui opengl widgets printsupport platformsupport
+load(qt_headersclean)
 DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
diff --git a/tests/auto/other/headersclean/qt_headersclean_headers.h b/tests/auto/other/headersclean/qt_headersclean_headers.h
deleted file mode 100644 (file)
index cab5770..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia.  For licensing terms and
-** conditions see http://qt.digia.com/licensing.  For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** 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, Digia gives you certain additional
-** rights.  These rights are described in the Digia 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.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QT_HEADERSCLEAN_HEADERS
-#define QT_HEADERSCLEAN_HEADERS
-
-/*
-    This file should include all the headers to be tested by the headersclean
-    test.  It may be copied and customized for each module.
-*/
-
-#include <QtCore/QtCore>
-#include <QtConcurrent/QtConcurrent>
-#include <QtTest/QtTest>
-
-#include <QtNetwork/QtNetwork>
-#include <QtXml/QtXml>
-#include <QtSql/QtSql>
-#include <QtGui/QtGui>
-#include <QtWidgets/QtWidgets>
-#include <QtPrintSupport/QtPrintSupport>
-#include <QtPlatformSupport/QtPlatformSupport>
-
-#ifndef QT_NO_OPENGL
-#include <QtOpenGL/QtOpenGL>
-#endif
-
-#if !defined(QT_NO_DBUS) && defined(Q_OS_UNIX)
-#include <QtDBus/QtDBus>
-#endif
-
-#endif