summaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
authorRohan McGovern <rohan.mcgovern@nokia.com>2012-03-01 14:37:50 +1000
committerQt by Nokia <qt-info@nokia.com>2012-03-07 03:49:59 +0100
commitdd7a06d0c9eda4bdda2db3160930d8267d1bb821 (patch)
tree2dcfa7fe576447fd1a7f6c0ed876d63515558004 /tests/auto
parent3ae2dce9118c0d37cdfed60b07c83cdd20ef3e36 (diff)
Refactor headersclean for usage from modules other than qtbase
headersclean enforces various rules which all Qt headers are supposed to abide by. It fails compilation if these rules are broken. These rules should be followed also by modules hosted outside of qtbase. Split the test up so that it can be easily reused by other modules. Change-Id: Icf09cbfde411c926ed87914dc821e6dfc569b0de Reviewed-by: Jason McDonald <jason.mcdonald@nokia.com>
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/other/headersclean/headersclean.pri38
-rw-r--r--tests/auto/other/headersclean/headersclean.pro28
-rw-r--r--tests/auto/other/headersclean/qt_headersclean_headers.h70
-rw-r--r--tests/auto/other/headersclean/tst_headersclean.cpp36
-rw-r--r--tests/auto/other/headersclean/tst_headersclean.h61
-rw-r--r--tests/auto/other/other.pro3
6 files changed, 176 insertions, 60 deletions
diff --git a/tests/auto/other/headersclean/headersclean.pri b/tests/auto/other/headersclean/headersclean.pri
new file mode 100644
index 0000000000..163ef6d409
--- /dev/null
+++ b/tests/auto/other/headersclean/headersclean.pri
@@ -0,0 +1,38 @@
+# 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.
+
+*-g++*: QMAKE_CXXFLAGS += -W -Wall -Wextra -Werror
+
+# The flags here come from http://wiki.qt-project.org/Coding_Conventions#Conventions_for_public_header_files
+# -Wold-style-cast cannot be used, /usr/include/bits/byteswap.h defines the macro bswap_16 using C style casts :(
+# -Wfloat-equal cannot be used, qrect.h and qvector2d.h do exact comparisons in isNull and operator==. Would need #pragmas.
+*-g++*: QMAKE_CXXFLAGS += -Woverloaded-virtual -Wshadow -Wundef
+
+# Other nice flags
+*-g++*: QMAKE_CXXFLAGS += -Wnon-virtual-dtor -ansi -Wcast-align -Wchar-subscripts -Wpointer-arith -Wformat-security
+
+# Enable pedantic mode, but accept variadic macros and 'long long' usage.
+*-g++*: QMAKE_CXXFLAGS += -Wno-long-long -Wno-variadic-macros -pedantic-errors
+
+# There are outstanding alignment issues on ARM in some container classes.
+contains(QT_ARCH,arm):*-g++*:QMAKE_CXXFLAGS -= -Wcast-align
+
+QMAKE_CXXFLAGS += -DQT_NO_CAST_TO_ASCII \
+ -DQT_NO_CAST_FROM_ASCII \
+ -DQT_STRICT_ITERATORS \
+ -DQT_NO_URL_CAST_FROM_STRING \
+ -DQT_NO_CAST_FROM_BYTEARRAY \
+ -DQT_NO_KEYWORDS \
+ -DQT_USE_FAST_CONCATENATION \
+ -DQT_USE_FAST_OPERATOR_PLUS
+
+TARGET = tst_headersclean
+SOURCES += $$PWD/tst_headersclean.cpp
+HEADERS += $$PWD/tst_headersclean.h
+
+# qt_headersclean_headers.h should be alongside the .pro file
+INCLUDEPATH += $$_PRO_FILE_PWD_
diff --git a/tests/auto/other/headersclean/headersclean.pro b/tests/auto/other/headersclean/headersclean.pro
index 5444bebfb9..9bfadca08c 100644
--- a/tests/auto/other/headersclean/headersclean.pro
+++ b/tests/auto/other/headersclean/headersclean.pro
@@ -1,28 +1,2 @@
-CONFIG += testcase
-TARGET = tst_headersclean
-SOURCES += tst_headersclean.cpp
-
-# No need to link to all modules, only those actually used
QT = core testlib gui widgets
-
-*-g++*: QMAKE_CXXFLAGS += -W -Wall -Wextra -Werror
-
-# The flags here come from http://wiki.qt-project.org/Coding_Conventions#Conventions_for_public_header_files
-# -Wold-style-cast cannot be used, /usr/include/bits/byteswap.h defines the macro bswap_16 using C style casts :(
-# -Wfloat-equal cannot be used, qrect.h and qvector2d.h do exact comparisons in isNull and operator==. Would need #pragmas.
-*-g++*: QMAKE_CXXFLAGS += -Woverloaded-virtual -Wshadow -Wundef
-
-# Other nice flags
-*-g++*: QMAKE_CXXFLAGS += -Wnon-virtual-dtor -ansi -Wcast-align -Wchar-subscripts -Wpointer-arith -Wformat-security
-
-# Enable pedantic mode, but accept variadic macros and 'long long' usage.
-*-g++*: QMAKE_CXXFLAGS += -Wno-long-long -Wno-variadic-macros -pedantic-errors
-
-QMAKE_CXXFLAGS += -DQT_NO_CAST_TO_ASCII \
- -DQT_NO_CAST_FROM_ASCII \
- -DQT_STRICT_ITERATORS \
- -DQT_NO_URL_CAST_FROM_STRING \
- -DQT_NO_CAST_FROM_BYTEARRAY \
- -DQT_NO_KEYWORDS \
- -DQT_USE_FAST_CONCATENATION \
- -DQT_USE_FAST_OPERATOR_PLUS
+include(headersclean.pri)
diff --git a/tests/auto/other/headersclean/qt_headersclean_headers.h b/tests/auto/other/headersclean/qt_headersclean_headers.h
new file mode 100644
index 0000000000..c9b4e3f399
--- /dev/null
+++ b/tests/auto/other/headersclean/qt_headersclean_headers.h
@@ -0,0 +1,70 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** 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 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
diff --git a/tests/auto/other/headersclean/tst_headersclean.cpp b/tests/auto/other/headersclean/tst_headersclean.cpp
index 81d0aa3a4a..d442ad39d3 100644
--- a/tests/auto/other/headersclean/tst_headersclean.cpp
+++ b/tests/auto/other/headersclean/tst_headersclean.cpp
@@ -39,38 +39,12 @@
**
****************************************************************************/
-#define signals int
-#define slots int
-#define emit public:;
-#define foreach public:;
-#define forever public:;
+#include "tst_headersclean.h"
+#include <QTest>
-#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
-
-class tst_HeadersClean: public QObject
+void tst_HeadersClean::initTestCase()
{
- Q_OBJECT
-public:
- tst_HeadersClean() {}
-};
+ QWARN("This is a compile test only");
+}
QTEST_MAIN(tst_HeadersClean)
-#include "tst_headersclean.moc"
diff --git a/tests/auto/other/headersclean/tst_headersclean.h b/tests/auto/other/headersclean/tst_headersclean.h
new file mode 100644
index 0000000000..7479e061dc
--- /dev/null
+++ b/tests/auto/other/headersclean/tst_headersclean.h
@@ -0,0 +1,61 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** 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 TST_HEADERSCLEAN_H
+#define TST_HEADERSCLEAN_H
+
+#define signals int
+#define slots int
+#define emit public:;
+#define foreach public:;
+#define forever public:;
+
+#include <qt_headersclean_headers.h>
+#include <QObject>
+
+class tst_HeadersClean: public QObject
+{
+ Q_OBJECT
+private Q_SLOTS:
+ void initTestCase();
+};
+
+#endif
diff --git a/tests/auto/other/other.pro b/tests/auto/other/other.pro
index 9ec5ea8e34..6c708baa6b 100644
--- a/tests/auto/other/other.pro
+++ b/tests/auto/other/other.pro
@@ -30,8 +30,7 @@ testcocoon: SUBDIRS -= headersclean
cross_compile: SUBDIRS -= \
atwrapper \
- compiler \
- headersclean \
+ compiler
wince*|!contains(QT_CONFIG, accessibility):SUBDIRS -= qaccessibility