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
191
031582f7b61b add support for valgrind to test, and update old suppressions file
Tero Marttila <terom@fixme.fi>
parents: 187
diff changeset
     1
find_package (Valgrind)
186
33ef336dbb4b rework CMake scripts, particularly re make: Nothing to be done for `test'., integrate lcov now
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
find_package (LCOV)
33ef336dbb4b rework CMake scripts, particularly re make: Nothing to be done for `test'., integrate lcov now
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
191
031582f7b61b add support for valgrind to test, and update old suppressions file
Tero Marttila <terom@fixme.fi>
parents: 187
diff changeset
     4
# static flags for test harness
187
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
     5
set (TEST_FLAGS --debug)
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
     6
191
031582f7b61b add support for valgrind to test, and update old suppressions file
Tero Marttila <terom@fixme.fi>
parents: 187
diff changeset
     7
# valgrind stuff
031582f7b61b add support for valgrind to test, and update old suppressions file
Tero Marttila <terom@fixme.fi>
parents: 187
diff changeset
     8
if (Valgrind_FOUND)
031582f7b61b add support for valgrind to test, and update old suppressions file
Tero Marttila <terom@fixme.fi>
parents: 187
diff changeset
     9
    # suppressions file
031582f7b61b add support for valgrind to test, and update old suppressions file
Tero Marttila <terom@fixme.fi>
parents: 187
diff changeset
    10
    set (VALGRIND_SUPPRESSIONS ${CMAKE_CURRENT_SOURCE_DIR}/valgrind-suppressions)
031582f7b61b add support for valgrind to test, and update old suppressions file
Tero Marttila <terom@fixme.fi>
parents: 187
diff changeset
    11
031582f7b61b add support for valgrind to test, and update old suppressions file
Tero Marttila <terom@fixme.fi>
parents: 187
diff changeset
    12
    # static flags
031582f7b61b add support for valgrind to test, and update old suppressions file
Tero Marttila <terom@fixme.fi>
parents: 187
diff changeset
    13
    set (VALGRIND_FLAGS --leak-check=yes --num-callers=30 --suppressions=${VALGRIND_SUPPRESSIONS})
031582f7b61b add support for valgrind to test, and update old suppressions file
Tero Marttila <terom@fixme.fi>
parents: 187
diff changeset
    14
031582f7b61b add support for valgrind to test, and update old suppressions file
Tero Marttila <terom@fixme.fi>
parents: 187
diff changeset
    15
    # command
031582f7b61b add support for valgrind to test, and update old suppressions file
Tero Marttila <terom@fixme.fi>
parents: 187
diff changeset
    16
    set (TEST_COMMAND ${Valgrind_EXECUTABLE})
031582f7b61b add support for valgrind to test, and update old suppressions file
Tero Marttila <terom@fixme.fi>
parents: 187
diff changeset
    17
    set (TEST_ARGS ${VALGRIND_FLAGS} ${TEST_EXECUTABLE} ${TEST_FLAGS})
031582f7b61b add support for valgrind to test, and update old suppressions file
Tero Marttila <terom@fixme.fi>
parents: 187
diff changeset
    18
031582f7b61b add support for valgrind to test, and update old suppressions file
Tero Marttila <terom@fixme.fi>
parents: 187
diff changeset
    19
else (Valgrind_FOUND)
031582f7b61b add support for valgrind to test, and update old suppressions file
Tero Marttila <terom@fixme.fi>
parents: 187
diff changeset
    20
    # plain command
031582f7b61b add support for valgrind to test, and update old suppressions file
Tero Marttila <terom@fixme.fi>
parents: 187
diff changeset
    21
    set (TEST_COMMAND ${TEST_EXECUTABLE})
031582f7b61b add support for valgrind to test, and update old suppressions file
Tero Marttila <terom@fixme.fi>
parents: 187
diff changeset
    22
    set (TEST_ARGS ${TEST_FLAGS})
031582f7b61b add support for valgrind to test, and update old suppressions file
Tero Marttila <terom@fixme.fi>
parents: 187
diff changeset
    23
031582f7b61b add support for valgrind to test, and update old suppressions file
Tero Marttila <terom@fixme.fi>
parents: 187
diff changeset
    24
endif (Valgrind_FOUND)
031582f7b61b add support for valgrind to test, and update old suppressions file
Tero Marttila <terom@fixme.fi>
parents: 187
diff changeset
    25
187
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    26
# add LCOV coverage stuff
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    27
if (LCOV_FOUND)
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    28
    # static flags
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    29
    set (LCOV_FLAGS )
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    30
    set (LCOV_GENHTML_FLAGS )
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    31
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    32
    # path to the file generated by `lcov --capture`
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    33
    set (LCOV_CAPTURE_PATH ${CMAKE_CURRENT_BINARY_DIR}/lcov-capture-info)
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    34
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    35
    message (STATUS "test object files are located in ${TEST_OBJECT_DIR}")
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    36
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    37
    # unless coverage is disabled
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    38
    if (ENABLE_TEST_COVERAGE)
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    39
        # create the test target with lcov instrumentation
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    40
        add_custom_target (test
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    41
            COMMAND ${CMAKE_COMMAND} -DTEST_OBJECT_DIR="${TEST_OBJECT_DIR}" -P "${CMAKE_CURRENT_SOURCE_DIR}/CleanProfileData.cmake"
191
031582f7b61b add support for valgrind to test, and update old suppressions file
Tero Marttila <terom@fixme.fi>
parents: 187
diff changeset
    42
            COMMAND ${TEST_COMMAND} ${TEST_ARGS}
187
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    43
            COMMAND ${LCOV_EXECUTABLE} ${LCOV_FLAGS} --directory ${TEST_OBJECT_DIR} --capture --output-file ${LCOV_CAPTURE_PATH}
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    44
            COMMAND ${LCOV_GENHTML_EXECUTABLE} ${LCOV_GENHTML_FLAGS} --output-directory ${CMAKE_CURRENT_BINARY_DIR} ${LCOV_CAPTURE_PATH}
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    45
        )
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    46
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    47
        set (TEST_TARGET_DEFINED TRUE)
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    48
    endif (ENABLE_TEST_COVERAGE)
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    49
endif (LCOV_FOUND)
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    50
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    51
if (NOT TEST_TARGET_DEFINED)
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    52
    # add default `test` target
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    53
    add_custom_target (test
191
031582f7b61b add support for valgrind to test, and update old suppressions file
Tero Marttila <terom@fixme.fi>
parents: 187
diff changeset
    54
        COMMAND ${TEST_COMMAND} ${TEST_ARGS}
187
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    55
    )
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    56
        
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    57
    set (TEST_TARGET_DEFINED TRUE)
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    58
5d100c79521a fix CMake TEST_OBJECT_PATH, ENABLE_TEST_COVERAGE test-target and cleanup of .gcda's
Tero Marttila <terom@fixme.fi>
parents: 186
diff changeset
    59
endif (NOT TEST_TARGET_DEFINED)
186
33ef336dbb4b rework CMake scripts, particularly re make: Nothing to be done for `test'., integrate lcov now
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    60
33ef336dbb4b rework CMake scripts, particularly re make: Nothing to be done for `test'., integrate lcov now
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    61
# add utility targets to run the test_harness executable
33ef336dbb4b rework CMake scripts, particularly re make: Nothing to be done for `test'., integrate lcov now
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    62
add_custom_target (test_list
191
031582f7b61b add support for valgrind to test, and update old suppressions file
Tero Marttila <terom@fixme.fi>
parents: 187
diff changeset
    63
    COMMAND ${TEST_EXECUTABLE} --list
186
33ef336dbb4b rework CMake scripts, particularly re make: Nothing to be done for `test'., integrate lcov now
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    64
)
33ef336dbb4b rework CMake scripts, particularly re make: Nothing to be done for `test'., integrate lcov now
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    65
33ef336dbb4b rework CMake scripts, particularly re make: Nothing to be done for `test'., integrate lcov now
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    66