cmake_minimum_required(VERSION 3.25) project(fingerprintRetryTests LANGUAGES CXX) # Compile the actual patched upstream classes, but never use the host's PAM # configuration or credentials. The test executable supplies a fake PAM API. set(KSCREENLOCKER_SOURCE "" CACHE PATH "Extracted, patched KScreenLocker source") if(NOT EXISTS "${KSCREENLOCKER_SOURCE}/greeter/pamauthenticator.cpp") message(FATAL_ERROR "Set KSCREENLOCKER_SOURCE to the patched source directory") endif() set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_AUTOMOC ON) find_package(Qt6 REQUIRED COMPONENTS Core Test) find_package(ECM REQUIRED NO_MODULE) list(APPEND CMAKE_MODULE_PATH "${ECM_MODULE_PATH}") include(ECMQtDeclareLoggingCategory) set(sources retrytest.cpp ${KSCREENLOCKER_SOURCE}/greeter/pamauthenticator.cpp ${KSCREENLOCKER_SOURCE}/greeter/pamauthenticators.cpp) ecm_qt_declare_logging_category(sources HEADER kscreenlocker_greet_logging.h IDENTIFIER KSCREENLOCKER_GREET CATEGORY_NAME kscreenlocker_greet) add_executable(retrytest ${sources}) target_include_directories(retrytest PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ${KSCREENLOCKER_SOURCE}/greeter) target_compile_definitions(retrytest PRIVATE HAVE_PAM_FAIL_DELAY) target_link_libraries(retrytest PRIVATE Qt6::Core Qt6::Test) enable_testing() add_test(NAME fingerprint-retry COMMAND retrytest) set_tests_properties(fingerprint-retry PROPERTIES TIMEOUT 30)