diff --git a/CMakeLists.txt b/CMakeLists.txt index 5a658682a..78317b6d3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,113 +1,117 @@ cmake_minimum_required(VERSION 3.5 FATAL_ERROR) set(PIM_VERSION "5.16.43") project(libkleo VERSION ${PIM_VERSION}) set(KF5_MIN_VERSION "5.78.0") if (WIN32) set(KF5_WANT_VERSION "5.70.0") else () set(KF5_WANT_VERSION ${KF5_MIN_VERSION}) endif () find_package(ECM ${KF5_WANT_VERSION} CONFIG REQUIRED) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) include(KDEInstallDirs) include(KDECMakeSettings) include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE) include(GenerateExportHeader) include(ECMSetupVersion) include(ECMGenerateHeaders) include(ECMGeneratePriFile) include(FeatureSummary) include(ECMQtDeclareLoggingCategory) set(LIBKLEO_LIB_VERSION ${PIM_VERSION}) set(QT_REQUIRED_VERSION "5.14.0") set(KDEPIMTEXTEDIT_VERSION "5.16.40") find_package(Qt5 ${QT_REQUIRED_VERSION} CONFIG REQUIRED Widgets) find_package(KF5I18n ${KF5_WANT_VERSION} CONFIG REQUIRED) find_package(KF5Config ${KF5_WANT_VERSION} CONFIG REQUIRED) find_package(KF5WidgetsAddons ${KF5_WANT_VERSION} CONFIG REQUIRED) find_package(KF5Completion ${KF5_WANT_VERSION} CONFIG REQUIRED) find_package(KF5CoreAddons ${KF5_WANT_VERSION} CONFIG REQUIRED) find_package(KF5Codecs ${KF5_WANT_VERSION} CONFIG REQUIRED) find_package(KF5ItemModels ${KF5_WANT_VERSION} CONFIG REQUIRED) find_package(KF5PimTextEdit ${KDEPIMTEXTEDIT_VERSION} CONFIG) set(GPGMEPP_LIB_VERSION "1.13.1") find_package(Gpgmepp ${GPGMEPP_LIB_VERSION} CONFIG REQUIRED) set_package_properties(Gpgmepp PROPERTIES DESCRIPTION "GpgME++ Library" URL "https://www.gnupg.org" TYPE REQUIRED PURPOSE "GpgME++ is required for OpenPGP support") find_package(QGpgme ${GPGMEPP_LIB_VERSION} CONFIG REQUIRED) message(STATUS "GPGME Version ${Gpgmepp_VERSION}") find_package(Boost 1.34.0) set_package_properties(Boost PROPERTIES DESCRIPTION "Boost C++ Libraries" URL "https://www.boost.org" TYPE REQUIRED PURPOSE "Boost is required for building most KDEPIM applications") set_package_properties(KF5PimTextEdit PROPERTIES DESCRIPTION "A textedit with PIM-specific features." URL "https://commits.kde.org/kpimtextedit" TYPE OPTIONAL PURPOSE "Improved audit log viewer.") ecm_setup_version(PROJECT VARIABLE_PREFIX LIBKLEO VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/libkleo_version.h" PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF5LibkleoConfigVersion.cmake" SOVERSION 5 ) ########### Targets ########### add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0) #add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x050f00) add_definitions(-DKF_DISABLE_DEPRECATED_BEFORE_AND_AT=0x054F00) remove_definitions(-DQT_NO_CAST_FROM_ASCII ) add_definitions(-DQT_NO_EMIT) set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED ON) ########### CMake Config Files ########### set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF5Libkleo") configure_package_config_file( "${CMAKE_CURRENT_SOURCE_DIR}/KF5LibkleoConfig.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/KF5LibkleoConfig.cmake" INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} ) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/KF5LibkleoConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/KF5LibkleoConfigVersion.cmake" DESTINATION "${CMAKECONFIG_INSTALL_DIR}" COMPONENT Devel ) install(EXPORT KF5LibkleoTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}" FILE KF5LibkleoTargets.cmake NAMESPACE KF5::) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libkleo_version.h DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5} COMPONENT Devel ) option(USE_UNITY_CMAKE_SUPPORT "Use UNITY cmake support (speedup compile time)" FALSE) set(COMPILE_WITH_UNITY_CMAKE_SUPPORT false) if (USE_UNITY_CMAKE_SUPPORT) if(${CMAKE_VERSION} VERSION_LESS "3.16.0") message(STATUS "CMAKE version is less than 3.16.0 . We can't use cmake unify build support") else() set(COMPILE_WITH_UNITY_CMAKE_SUPPORT true) endif() endif() add_subdirectory(src) +if (BUILD_TESTING) + add_subdirectory(autotests) +endif() + ecm_qt_install_logging_categories( EXPORT LIBKLEO FILE libkleo.categories DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR} ) feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/autotests/CMakeLists.txt b/autotests/CMakeLists.txt new file mode 100644 index 000000000..2016c74ad --- /dev/null +++ b/autotests/CMakeLists.txt @@ -0,0 +1,15 @@ +remove_definitions(-DQT_NO_CAST_FROM_ASCII) + +include(ECMAddTests) + +find_package(Qt5Test ${REQUIRED_QT_VERSION} CONFIG QUIET) + +if(NOT Qt5Test_FOUND) + message(STATUS "Qt5Test not found, autotests will not be built.") + return() +endif() + +ecm_add_tests( + flatkeylistmodeltest.cpp + LINK_LIBRARIES KF5::Libkleo Qt5::Test +) diff --git a/autotests/flatkeylistmodeltest.cpp b/autotests/flatkeylistmodeltest.cpp new file mode 100644 index 000000000..d6a8eba56 --- /dev/null +++ b/autotests/flatkeylistmodeltest.cpp @@ -0,0 +1,63 @@ +/* + autotests/flatkeylistmodeltest.cpp + + This file is part of libkleopatra's test suite. + SPDX-FileCopyrightText: 2021 g10 Code GmbH + SPDX-FileContributor: Ingo Klöcker + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#include "kleo/keygroup.h" +#include "models/keylistmodel.h" + +#include + +#include + +class testFlatKeyListModel: public QObject +{ + Q_OBJECT +private Q_SLOTS: + void testAddGroup(); + void testClear(); +}; + +using namespace Kleo; +using namespace GpgME; + +void testFlatKeyListModel::testAddGroup() +{ + QScopedPointer model(AbstractKeyListModel::createFlatKeyListModel(this)); + QCOMPARE( model->rowCount(), 0 ); + + const KeyGroup group("test", std::vector()); + model->addGroup(group); + QCOMPARE( model->rowCount(), 1 ); + + const QModelIndex index = model->index(group); + QVERIFY( index.isValid() ); + + const KeyGroup modelGroup = model->group(index); + QCOMPARE( modelGroup.name(), group.name() ); + QVERIFY( modelGroup.keys().empty() ); +} + +void testFlatKeyListModel::testClear() +{ + QScopedPointer model(AbstractKeyListModel::createFlatKeyListModel(this)); + QCOMPARE( model->rowCount(), 0 ); + + const KeyGroup group("test", std::vector()); + model->addGroup(group); + QCOMPARE( model->rowCount(), 1 ); + + model->clear(AbstractKeyListModel::Keys); + QCOMPARE( model->rowCount(), 1 ); + + model->clear(AbstractKeyListModel::Groups); + QCOMPARE( model->rowCount(), 0 ); +} + +QTEST_MAIN(testFlatKeyListModel) +#include "flatkeylistmodeltest.moc"