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 Qml 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
    RETRY_QML="${CMAKE_CURRENT_SOURCE_DIR}/../../../plasma-always-show-unlock/FedoraToolsFingerprintRetry.qml")
target_link_libraries(retrytest PRIVATE Qt6::Core Qt6::Qml Qt6::Test)
enable_testing()
add_test(NAME fingerprint-retry COMMAND retrytest)
set_tests_properties(fingerprint-retry PROPERTIES TIMEOUT 30)
