test/CMakeLists.txt
author Tero Marttila <terom@fixme.fi>
Thu, 28 May 2009 01:17:36 +0300
branchnew-lib-errors
changeset 219 cefec18b8268
parent 191 031582f7b61b
permissions -rw-r--r--
some of the lib/transport stuff compiles
find_package (Valgrind)
find_package (LCOV)

# static flags for test harness
set (TEST_FLAGS --debug)

# valgrind stuff
if (Valgrind_FOUND)
    # suppressions file
    set (VALGRIND_SUPPRESSIONS ${CMAKE_CURRENT_SOURCE_DIR}/valgrind-suppressions)

    # static flags
    set (VALGRIND_FLAGS --leak-check=yes --num-callers=30 --suppressions=${VALGRIND_SUPPRESSIONS})

    # command
    set (TEST_COMMAND ${Valgrind_EXECUTABLE})
    set (TEST_ARGS ${VALGRIND_FLAGS} ${TEST_EXECUTABLE} ${TEST_FLAGS})

else (Valgrind_FOUND)
    # plain command
    set (TEST_COMMAND ${TEST_EXECUTABLE})
    set (TEST_ARGS ${TEST_FLAGS})

endif (Valgrind_FOUND)

# add LCOV coverage stuff
if (LCOV_FOUND)
    # static flags
    set (LCOV_FLAGS )
    set (LCOV_GENHTML_FLAGS )

    # path to the file generated by `lcov --capture`
    set (LCOV_CAPTURE_PATH ${CMAKE_CURRENT_BINARY_DIR}/lcov-capture-info)

    message (STATUS "test object files are located in ${TEST_OBJECT_DIR}")

    # unless coverage is disabled
    if (ENABLE_TEST_COVERAGE)
        # create the test target with lcov instrumentation
        add_custom_target (test
            COMMAND ${CMAKE_COMMAND} -DTEST_OBJECT_DIR="${TEST_OBJECT_DIR}" -P "${CMAKE_CURRENT_SOURCE_DIR}/CleanProfileData.cmake"
            COMMAND ${TEST_COMMAND} ${TEST_ARGS}
            COMMAND ${LCOV_EXECUTABLE} ${LCOV_FLAGS} --directory ${TEST_OBJECT_DIR} --capture --output-file ${LCOV_CAPTURE_PATH}
            COMMAND ${LCOV_GENHTML_EXECUTABLE} ${LCOV_GENHTML_FLAGS} --output-directory ${CMAKE_CURRENT_BINARY_DIR} ${LCOV_CAPTURE_PATH}
        )

        set (TEST_TARGET_DEFINED TRUE)
    endif (ENABLE_TEST_COVERAGE)
endif (LCOV_FOUND)

if (NOT TEST_TARGET_DEFINED)
    # add default `test` target
    add_custom_target (test
        COMMAND ${TEST_COMMAND} ${TEST_ARGS}
    )
        
    set (TEST_TARGET_DEFINED TRUE)

endif (NOT TEST_TARGET_DEFINED)

# add utility targets to run the test_harness executable
add_custom_target (test_list
    COMMAND ${TEST_EXECUTABLE} --list
)