find_program(QMLTESTRUNNER_BIN
    NAMES qmltestrunner
    PATHS /usr/lib/*/qt5/bin
    NO_DEFAULT_PATH
)

find_program(XVFB_RUN_BIN
    NAMES xvfb-run
)

macro(DECLARE_QML_TEST TST_NAME TST_QML_FILE)
    if(USE_XVFB)
        set(COMMAND_PREFIX ${XVFB_RUN_BIN} -a -s "-screen 0 1024x768x24")
    else()
        set(COMMAND_PREFIX "")
    endif()
    add_test(NAME ${TST_NAME}
        WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
        COMMAND ${COMMAND_PREFIX} ${QMLTESTRUNNER_BIN} -import ${imports_BINARY_DIR} -input ${CMAKE_CURRENT_SOURCE_DIR}/${TST_QML_FILE}
    )
endmacro()

if(QMLTESTRUNNER_BIN AND XVFB_RUN_BIN)
    declare_qml_test("contact_list" tst_ContactList.qml)
    declare_qml_test("Contact_list_model" tst_ContactListModel.qml)
    declare_qml_test("Contact_list_view" tst_ContactListView.qml)
    declare_qml_test("contact_editor" tst_ContactEditor.qml)
    declare_qml_test("contact_avatar" tst_ContactAvatar.qml)
    declare_qml_test("list_with_actions" tst_ListWithActions.qml)
    declare_qml_test("contact_preview_page" tst_ContactPreviewPage.qml)
    declare_qml_test("vcard_parser" tst_VCardParser.qml)
    declare_qml_test("lomiri_contact" tst_LomiriContacts.qml)
else()
    if (NOT QMLTESTRUNNER_BIN)
        message(WARNING "Qml tests disabled: qmltestrunner not found")
    else()
        message(WARNING "Qml tests disabled: xvfb-run not found")
    endif()
endif()

set(QML_TST_FILES
    ContactUtil.js
    tst_ContactEditor.qml
    tst_ContactAvatar.qml
    tst_ContactList.qml
    tst_ContactListModel.qml
    tst_ContactListView.qml
    tst_ListWithActions.qml
    tst_ContactPreviewPage.qml
    tst_VCardParser.qml
    tst_LomiriContacts.qml
)
add_custom_target(tst_QmlFiles ALL SOURCES ${QML_TST_FILES})
