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>
This commit is contained in:
parent
3ae2dce911
commit
dd7a06d0c9
38
tests/auto/other/headersclean/headersclean.pri
Normal file
38
tests/auto/other/headersclean/headersclean.pri
Normal file
@ -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_
|
@ -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)
|
||||
|
70
tests/auto/other/headersclean/qt_headersclean_headers.h
Normal file
70
tests/auto/other/headersclean/qt_headersclean_headers.h
Normal file
@ -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
|
@ -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"
|
||||
|
61
tests/auto/other/headersclean/tst_headersclean.h
Normal file
61
tests/auto/other/headersclean/tst_headersclean.h
Normal file
@ -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
|
@ -30,8 +30,7 @@ testcocoon: SUBDIRS -= headersclean
|
||||
|
||||
cross_compile: SUBDIRS -= \
|
||||
atwrapper \
|
||||
compiler \
|
||||
headersclean \
|
||||
compiler
|
||||
|
||||
wince*|!contains(QT_CONFIG, accessibility):SUBDIRS -= qaccessibility
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user