diff options
author | Alex Merry <alex.merry@kde.org> | 2015-07-29 22:46:44 +0200 |
---|---|---|
committer | Alex Merry <alex.merry@kde.org> | 2015-08-18 23:02:11 +0100 |
commit | 9bffa7a202cad3a29103f3e9a8b50b9a61277310 (patch) | |
tree | 1312c922a8097904a4abc53a2c0d00cd4886ae3f /tests/ECMQtDeclareLoggingCategoryTest | |
parent | 7af8bdcc7610df1de24c36ceeedd8c9f82529634 (diff) | |
download | extra-cmake-modules-9bffa7a202cad3a29103f3e9a8b50b9a61277310.tar.gz extra-cmake-modules-9bffa7a202cad3a29103f3e9a8b50b9a61277310.tar.bz2 |
Add macro to generate logging category declarations for Qt5.
This makes life a bit easier for developers who use the categorised
logging in Qt5 in the common case - rather than creating two new files,
and remembering to put in the #ifdef for the default verbosity settings
in Qt 5.4, they can just add a couple of lines to their CMakeLists.txt.
REVIEW: 124595
Diffstat (limited to 'tests/ECMQtDeclareLoggingCategoryTest')
-rw-r--r-- | tests/ECMQtDeclareLoggingCategoryTest/CMakeLists.txt | 42 | ||||
-rw-r--r-- | tests/ECMQtDeclareLoggingCategoryTest/testmain.cpp | 83 |
2 files changed, 125 insertions, 0 deletions
diff --git a/tests/ECMQtDeclareLoggingCategoryTest/CMakeLists.txt b/tests/ECMQtDeclareLoggingCategoryTest/CMakeLists.txt new file mode 100644 index 00000000..15ece187 --- /dev/null +++ b/tests/ECMQtDeclareLoggingCategoryTest/CMakeLists.txt @@ -0,0 +1,42 @@ +project(ECMQtDeclareLoggingCategoryTest) +cmake_minimum_required(VERSION 2.8.12) +set(ECM_MODULE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../modules") + +set(CMAKE_MODULE_PATH ${ECM_MODULE_DIR}) + +include(ECMQtDeclareLoggingCategory) + +ecm_qt_declare_logging_category( + sources + HEADER "log1.h" + IDENTIFIER "log1" + CATEGORY_NAME "log.one" +) + +ecm_qt_declare_logging_category( + sources + HEADER "log2.h" + IDENTIFIER "foo::bar::log2" + CATEGORY_NAME "log.two" +) + +ecm_qt_declare_logging_category( + sources + HEADER "${CMAKE_CURRENT_BINARY_DIR}/log3.h" + IDENTIFIER "log3" + CATEGORY_NAME "three" + DEFAULT_SEVERITY Critical +) + +find_package(Qt5Core REQUIRED) + +add_executable(testmain testmain.cpp ${sources}) +target_include_directories(testmain + PRIVATE + "${CMAKE_CURRENT_BINARY_DIR}" +) +target_link_libraries(testmain + PRIVATE + Qt5::Core +) + diff --git a/tests/ECMQtDeclareLoggingCategoryTest/testmain.cpp b/tests/ECMQtDeclareLoggingCategoryTest/testmain.cpp new file mode 100644 index 00000000..a06614a1 --- /dev/null +++ b/tests/ECMQtDeclareLoggingCategoryTest/testmain.cpp @@ -0,0 +1,83 @@ +#include <QCoreApplication> + +#include "log1.h" +#include "log2.h" +#include "log3.h" + +#include <iostream> + +int main(int argc, char **argv) { + QCoreApplication qapp(argc, argv); + + bool success = true; + + // NB: we cannot test against QtInfoMsg, as that (a) does not exist before + // Qt 5.5, and (b) has incorrect semantics in Qt 5.5, in that it is + // treated as more severe than QtCriticalMsg. + + if (log1().categoryName() != QLatin1String("log.one")) { + qWarning("log1 category was \"%s\", expected \"log.one\"", log1().categoryName()); + success = false; + } +#if QT_VERSION < QT_VERSION_CHECK(5, 4, 0) + if (!log1().isDebugEnabled()) { + qWarning("log1 debug messages were not enabled"); + success = false; + } +#else + if (log1().isDebugEnabled()) { + qWarning("log1 debug messages were enabled"); + success = false; + } + if (!log1().isWarningEnabled()) { + qWarning("log1 warning messages were not enabled"); + success = false; + } +#endif + + if (foo::bar::log2().categoryName() != QLatin1String("log.two")) { + qWarning("log2 category was \"%s\", expected \"log.two\"", foo::bar::log2().categoryName()); + success = false; + } +#if QT_VERSION < QT_VERSION_CHECK(5, 4, 0) + if (!foo::bar::log2().isDebugEnabled()) { + qWarning("log2 debug messages were not enabled"); + success = false; + } +#else + if (foo::bar::log2().isDebugEnabled()) { + qWarning("log2 debug messages were enabled"); + success = false; + } + if (!foo::bar::log2().isWarningEnabled()) { + qWarning("log2 warning messages were not enabled"); + success = false; + } +#endif + + if (log3().categoryName() != QLatin1String("three")) { + qWarning("log3 category was \"%s\", expected \"three\"", log3().categoryName()); + success = false; + } +#if QT_VERSION < QT_VERSION_CHECK(5, 4, 0) + if (!log3().isDebugEnabled()) { + qWarning("log3 debug messages were not enabled"); + success = false; + } +#else + if (log3().isDebugEnabled()) { + qWarning("log3 debug messages were enabled"); + success = false; + } + if (log3().isWarningEnabled()) { + qWarning("log3 warning messages were enabled"); + success = false; + } + if (!log3().isCriticalEnabled()) { + qWarning("log3 critical messages were not enabled"); + success = false; + } +#endif + + return success ? 0 : 1; +} |