From 6694d391316a490674ecb97f64e1c2e82328d2ce Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 6 Dec 2012 17:16:56 +0100 Subject: centralize headersclean test so other modules can actually re-use the code without referencing qtbase sources. Change-Id: Id66f07b476e539273dd32455e7642a17d7e5d0ef Reviewed-by: Thiago Macieira Reviewed-by: Joerg Bornemann --- .../data/headersclean/tst_headersclean.cpp.in | 55 +++++++++++++++++ mkspecs/features/qt_headersclean.prf | 51 ++++++++++++++++ tests/auto/other/headersclean/headersclean.pri | 39 ------------ tests/auto/other/headersclean/headersclean.pro | 4 +- .../other/headersclean/qt_headersclean_headers.h | 70 ---------------------- tests/auto/other/headersclean/tst_headersclean.cpp | 55 ----------------- 6 files changed, 108 insertions(+), 166 deletions(-) create mode 100644 mkspecs/features/data/headersclean/tst_headersclean.cpp.in create mode 100644 mkspecs/features/qt_headersclean.prf delete mode 100644 tests/auto/other/headersclean/headersclean.pri delete mode 100644 tests/auto/other/headersclean/qt_headersclean_headers.h delete mode 100644 tests/auto/other/headersclean/tst_headersclean.cpp diff --git a/mkspecs/features/data/headersclean/tst_headersclean.cpp.in b/mkspecs/features/data/headersclean/tst_headersclean.cpp.in new file mode 100644 index 0000000000..1784615dd5 --- /dev/null +++ b/mkspecs/features/data/headersclean/tst_headersclean.cpp.in @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** 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$ +** +****************************************************************************/ + +#define signals int +#define slots int +#define emit public:; +#define foreach public:; +#define forever public:; + +$${includes} +#include + +int main() +{ + qWarning(\"This is a compile test only\"); + return 0; +} diff --git a/mkspecs/features/qt_headersclean.prf b/mkspecs/features/qt_headersclean.prf new file mode 100644 index 0000000000..4128392997 --- /dev/null +++ b/mkspecs/features/qt_headersclean.prf @@ -0,0 +1,51 @@ +# The headersclean test attempts to ensure all public Qt headers +# abide by various rules. +# +# 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 + +# 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 + +contains(QT_ARCH,arm)|contains(QT_ARCH,mips) { + # There are outstanding alignment issues in some container classes. + *-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 + +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 diff --git a/tests/auto/other/headersclean/headersclean.pri b/tests/auto/other/headersclean/headersclean.pri deleted file mode 100644 index c56d432a42..0000000000 --- a/tests/auto/other/headersclean/headersclean.pri +++ /dev/null @@ -1,39 +0,0 @@ -# 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 - -contains(QT_ARCH,arm)|contains(QT_ARCH,mips) { - # There are outstanding alignment issues in some container classes. - *-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 - -# 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 419c2e97d5..4965064b88 100644 --- a/tests/auto/other/headersclean/headersclean.pro +++ b/tests/auto/other/headersclean/headersclean.pro @@ -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 index cab5770790..0000000000 --- a/tests/auto/other/headersclean/qt_headersclean_headers.h +++ /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 -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#ifndef QT_NO_OPENGL -#include -#endif - -#if !defined(QT_NO_DBUS) && defined(Q_OS_UNIX) -#include -#endif - -#endif diff --git a/tests/auto/other/headersclean/tst_headersclean.cpp b/tests/auto/other/headersclean/tst_headersclean.cpp deleted file mode 100644 index 91abca4373..0000000000 --- a/tests/auto/other/headersclean/tst_headersclean.cpp +++ /dev/null @@ -1,55 +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$ -** -****************************************************************************/ - -#define signals int -#define slots int -#define emit public:; -#define foreach public:; -#define forever public:; - -#include -#include - -int main() -{ - qWarning("This is a compile test only"); - return 0; -} -- cgit v1.2.3