set(QTMOBILITY_TIMEOUT 10)

macro(QTMOBILITY_TEST)
    string(REGEX MATCH "/([^/]+)//?([^/]+)\\.py" foo "${CMAKE_CURRENT_SOURCE_DIR}/${ARGV0}" )
    set(TEST_NAME "${CMAKE_MATCH_1}_${CMAKE_MATCH_2}")
    if (${ARGC} EQUAL 1)
        set(EXPECT_TO_FAIL 0)
    elseif(${ARGC} EQUAL 2)
        set(EXPECT_TO_FAIL ${ARGV1})
    else()
        message(WARNING "Ivalid call of macro QTMOBILITY_TEST")
    endif()
    set(TEST_CMD ${CMAKE_SOURCE_DIR}/tests/run_test.sh  "${CMAKE_BINARY_DIR}:${CMAKE_SOURCE_DIR}/tests/util" ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/${ARGV0}")
    add_test(${TEST_NAME} ${TEST_CMD})
    set_tests_properties(${TEST_NAME} PROPERTIES
                         TIMEOUT ${QTMOBILITY_TIMEOUT}
                         WILL_FAIL ${EXPECT_TO_FAIL})
endmacro(QTMOBILITY_TEST)

macro(add_if_found component)
    STRING(TOUPPER ${component} _COMPONENT)
    IF(${QT_MOBILITY_${_COMPONENT}_FOUND})
        message("Adding tests for ${component}.")
        add_subdirectory(${component})
        if(INSTALL_TESTS)
            install(DIRECTORY ${component} DESTINATION "${TEST_INSTALL_DIR}" FILES_MATCHING PATTERN "*.py")
        endif()
    ELSE()
        message("Module ${component} not found. ${component} tests disabled.")
    ENDIF()
endmacro()

if (NOT TEST_INSTALL_DIR)
    set(TEST_INSTALL_DIR "share/pyside-mobility/tests")
endif()

if(CMAKE_VERSION VERSION_LESS 2.8)
    # Versions lesser than 2.8 can not set environment variables for tests.
    message("CMake version greater than 2.8 necessary to run the tests.")
else()
    add_if_found(Contacts)
    add_if_found(Feedback)
    add_if_found(Gallery)
    add_if_found(Messaging)
    add_if_found(Location)
    add_if_found(MultimediaKit)
    add_if_found(Organizer)
    add_if_found(PublishSubscribe)
    add_if_found(Sensors)
    add_if_found(ServiceFramework)
    add_if_found(SystemInfo)
    add_if_found(Versit)
endif()

if(INSTALL_TESTS)
    install(DIRECTORY util/ DESTINATION "${SITE_PACKAGE}" FILES_MATCHING PATTERN "*.py")
endif()
