diff options
| author | Alex Merry <alex.merry@kde.org> | 2015-05-11 13:56:28 +0100 | 
|---|---|---|
| committer | Alex Merry <alex.merry@kde.org> | 2015-05-13 19:22:25 +0100 | 
| commit | 0c224194ea7f12eaed32af746fc9138537f1919c (patch) | |
| tree | acd667f840cc3db01152120505b351d84b496098 | |
| parent | 1b636b43d2bf4dca0332a2e2b36affa67fbe1e0b (diff) | |
| download | extra-cmake-modules-0c224194ea7f12eaed32af746fc9138537f1919c.tar.gz extra-cmake-modules-0c224194ea7f12eaed32af746fc9138537f1919c.tar.bz2 | |
Add PROPERTIES argument to ecm_add_test and ecm_add_tests.
This is particularly useful with ecm_add_tests, where you may want to
force a suite of tests to run in serial, or alter the timeout for
multiple tests at once.
BUG: 345797
REVIEW: 123722
| -rw-r--r-- | modules/ECMAddTests.cmake | 16 | ||||
| -rw-r--r-- | tests/ECMAddTests/CMakeLists.txt | 3 | ||||
| -rw-r--r-- | tests/ECMAddTests/multi_tests/CMakeLists.txt | 96 | ||||
| -rw-r--r-- | tests/ECMAddTests/multi_tests/test10.cpp | 8 | ||||
| -rw-r--r-- | tests/ECMAddTests/multi_tests/test11.cpp | 8 | ||||
| -rw-r--r-- | tests/ECMAddTests/single_tests/CMakeLists.txt | 39 | ||||
| -rw-r--r-- | tests/ECMAddTests/single_tests/test7.cpp | 8 | 
7 files changed, 146 insertions, 32 deletions
| diff --git a/modules/ECMAddTests.cmake b/modules/ECMAddTests.cmake index bdb60691..ee7e63e3 100644 --- a/modules/ECMAddTests.cmake +++ b/modules/ECMAddTests.cmake @@ -9,7 +9,8 @@  #   ecm_add_test(<sources> LINK_LIBRARIES <library> [<library> [...]]  #                          [TEST_NAME <name>]  #                          [NAME_PREFIX <prefix>] -#                          [GUI]) +#                          [GUI] +#                          [PROPERTIES <prop1> <value1> [<prop2> <value2> [...]]])  #  # Add a new unit test using the passed source files. The parameter TEST_NAME is  # used to set the name of the resulting test, and the target built for and run @@ -27,6 +28,8 @@  # of CMAKE_WIN32_EXECUTABLE or CMAKE_MACOSX_BUNDLE).  The test will be linked  # against the libraries and/or targets passed to LINK_LIBRARIES.  # +# The PROPERTIES argument sets the given properties on the test. +#  # The generated target executable will have the effects of ecm_mark_as_test()  # (from the :module:`ECMMarkAsTest` module) applied to it.  # @@ -35,7 +38,8 @@  #  #   ecm_add_tests(<sources> LINK_LIBRARIES <library> [<library> [...]]  #                           [NAME_PREFIX <prefix>] -#                           [GUI]) +#                           [GUI] +#                           [PROPERTIES <prop1> <value1> [<prop2> <value2> [...]]])  #  # This is a convenient version of ecm_add_test() for when you have many tests  # that consist of a single source file each.  It behaves like calling @@ -63,7 +67,7 @@ include(ECMMarkNonGuiExecutable)  function(ecm_add_test)    set(options GUI)    set(oneValueArgs TEST_NAME NAME_PREFIX) -  set(multiValueArgs LINK_LIBRARIES) +  set(multiValueArgs LINK_LIBRARIES PROPERTIES)    cmake_parse_arguments(ECM_ADD_TEST "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})    set(_sources ${ECM_ADD_TEST_UNPARSED_ARGUMENTS})    list(LENGTH _sources _sourceCount) @@ -89,12 +93,15 @@ function(ecm_add_test)    add_test(NAME ${_testname} COMMAND ${_targetname})    target_link_libraries(${_targetname} ${ECM_ADD_TEST_LINK_LIBRARIES})    ecm_mark_as_test(${_targetname}) +  if (ECM_ADD_TEST_PROPERTIES) +    set_tests_properties(${_testname} PROPERTIES ${ECM_ADD_TEST_PROPERTIES}) +  endif()  endfunction()  function(ecm_add_tests)    set(options GUI)    set(oneValueArgs NAME_PREFIX) -  set(multiValueArgs LINK_LIBRARIES) +  set(multiValueArgs LINK_LIBRARIES PROPERTIES)    cmake_parse_arguments(ECM_ADD_TESTS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})    if(ECM_ADD_TESTS_GUI)      set(_exe_type GUI) @@ -106,6 +113,7 @@ function(ecm_add_tests)        NAME_PREFIX ${ECM_ADD_TESTS_NAME_PREFIX}        LINK_LIBRARIES ${ECM_ADD_TESTS_LINK_LIBRARIES}  	  ${_exe_type} +      PROPERTIES ${ECM_ADD_TESTS_PROPERTIES}      )    endforeach()  endfunction() diff --git a/tests/ECMAddTests/CMakeLists.txt b/tests/ECMAddTests/CMakeLists.txt index e77b33f9..b31934d4 100644 --- a/tests/ECMAddTests/CMakeLists.txt +++ b/tests/ECMAddTests/CMakeLists.txt @@ -34,6 +34,7 @@ add_check(single_tests      test4.txt      test5.txt      test6.txt +    test7.txt      )  add_check(multi_tests      test1.txt @@ -45,5 +46,7 @@ add_check(multi_tests      test7.txt      test8.txt      test9.txt +    test10.txt +    test11.txt      ) diff --git a/tests/ECMAddTests/multi_tests/CMakeLists.txt b/tests/ECMAddTests/multi_tests/CMakeLists.txt index ca434773..bad625b5 100644 --- a/tests/ECMAddTests/multi_tests/CMakeLists.txt +++ b/tests/ECMAddTests/multi_tests/CMakeLists.txt @@ -22,6 +22,8 @@ file(REMOVE      "${CMAKE_CURRENT_BINARY_DIR}/test7.txt"      "${CMAKE_CURRENT_BINARY_DIR}/test8.txt"      "${CMAKE_CURRENT_BINARY_DIR}/test9.txt" +    "${CMAKE_CURRENT_BINARY_DIR}/test10.txt" +    "${CMAKE_CURRENT_BINARY_DIR}/test11.txt"      )  ecm_add_tests( @@ -30,14 +32,6 @@ ecm_add_tests(      test3.cpp      LINK_LIBRARIES testhelper      ) -# check targets exist -get_property(_dummy TARGET test1 PROPERTY TYPE) -get_property(_dummy TARGET test2 PROPERTY TYPE) -get_property(_dummy TARGET test3 PROPERTY TYPE) -# check tests exists -get_property(_dummy TEST test1 PROPERTY TIMEOUT) -get_property(_dummy TEST test2 PROPERTY TIMEOUT) -get_property(_dummy TEST test3 PROPERTY TIMEOUT)  get_property(_is_win32 TARGET test1 PROPERTY WIN32_EXECUTABLE)  if (_is_win32)      message(FATAL_ERROR "test1 is a WIN32 executable when it should not be") @@ -46,6 +40,9 @@ get_property(_is_bundle TARGET test1 PROPERTY MACOSX_BUNDLE)  if (_is_bundle)      message(FATAL_ERROR "test1 is an OS/X bundle when it should not be")  endif() +# existence check +get_property(_dummy TEST test1 PROPERTY TIMEOUT) +  get_property(_is_win32 TARGET test2 PROPERTY WIN32_EXECUTABLE)  if (_is_win32)      message(FATAL_ERROR "test2 is a WIN32 executable when it should not be") @@ -54,6 +51,17 @@ get_property(_is_bundle TARGET test2 PROPERTY MACOSX_BUNDLE)  if (_is_bundle)      message(FATAL_ERROR "test2 is an OS/X bundle when it should not be")  endif() +get_property(_dummy TEST test2 PROPERTY TIMEOUT) + +get_property(_is_win32 TARGET test3 PROPERTY WIN32_EXECUTABLE) +if (_is_win32) +    message(FATAL_ERROR "test3 is a WIN32 executable when it should not be") +endif() +get_property(_is_bundle TARGET test3 PROPERTY MACOSX_BUNDLE) +if (_is_bundle) +    message(FATAL_ERROR "test3 is an OS/X bundle when it should not be") +endif() +get_property(_dummy TEST test3 PROPERTY TIMEOUT)  ecm_add_tests( @@ -62,10 +70,6 @@ ecm_add_tests(      LINK_LIBRARIES testhelper      NAME_PREFIX pref_      ) -get_property(_dummy TARGET test4 PROPERTY TYPE) -get_property(_dummy TARGET test5 PROPERTY TYPE) -get_property(_dummy TEST pref_test4 PROPERTY TIMEOUT) -get_property(_dummy TEST pref_test5 PROPERTY TIMEOUT)  get_property(_is_win32 TARGET test4 PROPERTY WIN32_EXECUTABLE)  if (_is_win32)      message(FATAL_ERROR "test4 is a WIN32 executable when it should not be") @@ -74,6 +78,8 @@ get_property(_is_bundle TARGET test4 PROPERTY MACOSX_BUNDLE)  if (_is_bundle)      message(FATAL_ERROR "test4 is an OS/X bundle when it should not be")  endif() +get_property(_dummy TEST pref_test4 PROPERTY TIMEOUT) +  get_property(_is_win32 TARGET test5 PROPERTY WIN32_EXECUTABLE)  if (_is_win32)      message(FATAL_ERROR "test5 is a WIN32 executable when it should not be") @@ -82,6 +88,7 @@ get_property(_is_bundle TARGET test5 PROPERTY MACOSX_BUNDLE)  if (_is_bundle)      message(FATAL_ERROR "test5 is an OS/X bundle when it should not be")  endif() +get_property(_dummy TEST pref_test5 PROPERTY TIMEOUT)  ecm_add_tests( @@ -90,10 +97,6 @@ ecm_add_tests(      LINK_LIBRARIES testhelper      GUI      ) -get_property(_dummy TARGET test6 PROPERTY TYPE) -get_property(_dummy TARGET test7 PROPERTY TYPE) -get_property(_dummy TEST test6 PROPERTY TIMEOUT) -get_property(_dummy TEST test7 PROPERTY TIMEOUT)  get_property(_is_win32 TARGET test6 PROPERTY WIN32_EXECUTABLE)  if (NOT _is_win32)      message(FATAL_ERROR "test6 is not a WIN32 executable when it should be") @@ -102,6 +105,8 @@ get_property(_is_bundle TARGET test6 PROPERTY MACOSX_BUNDLE)  if (NOT _is_bundle)      message(FATAL_ERROR "test6 is not an OS/X bundle when it should be")  endif() +get_property(_dummy TEST test6 PROPERTY TIMEOUT) +  get_property(_is_win32 TARGET test7 PROPERTY WIN32_EXECUTABLE)  if (NOT _is_win32)      message(FATAL_ERROR "test7 is not a WIN32 executable when it should be") @@ -110,6 +115,7 @@ get_property(_is_bundle TARGET test7 PROPERTY MACOSX_BUNDLE)  if (NOT _is_bundle)      message(FATAL_ERROR "test7 is not an OS/X bundle when it should be")  endif() +get_property(_dummy TEST test7 PROPERTY TIMEOUT)  ecm_add_tests( @@ -118,11 +124,9 @@ ecm_add_tests(      LINK_LIBRARIES testhelper      NAME_PREFIX p_      GUI +    PROPERTIES +        LABELS "somelabel"      ) -get_property(_dummy TARGET test8 PROPERTY TYPE) -get_property(_dummy TARGET test9 PROPERTY TYPE) -get_property(_dummy TEST p_test8 PROPERTY TIMEOUT) -get_property(_dummy TEST p_test9 PROPERTY TIMEOUT)  get_property(_is_win32 TARGET test8 PROPERTY WIN32_EXECUTABLE)  if (NOT _is_win32)      message(FATAL_ERROR "test8 is not a WIN32 executable when it should be") @@ -131,6 +135,11 @@ get_property(_is_bundle TARGET test8 PROPERTY MACOSX_BUNDLE)  if (NOT _is_bundle)      message(FATAL_ERROR "test8 is not an OS/X bundle when it should be")  endif() +get_property(_labels TEST p_test8 PROPERTY LABELS) +if (NOT _labels STREQUAL "somelabel") +    message(FATAL_ERROR "p_test8 LABELS property was \"${_labels}\", expected \"somelabel\"") +endif() +  get_property(_is_win32 TARGET test9 PROPERTY WIN32_EXECUTABLE)  if (NOT _is_win32)      message(FATAL_ERROR "test9 is not a WIN32 executable when it should be") @@ -139,4 +148,51 @@ get_property(_is_bundle TARGET test9 PROPERTY MACOSX_BUNDLE)  if (NOT _is_bundle)      message(FATAL_ERROR "test9 is not an OS/X bundle when it should be")  endif() +get_property(_labels TEST p_test9 PROPERTY LABELS) +if (NOT _labels STREQUAL "somelabel") +    message(FATAL_ERROR "p_test9 LABELS property was \"${_labels}\", expected \"somelabel\"") +endif() + + +ecm_add_tests( +    test10.cpp +    test11.cpp +    LINK_LIBRARIES testhelper +    PROPERTIES +        LABELS "somelabel" +        RUN_SERIAL TRUE +    ) +get_property(_is_win32 TARGET test10 PROPERTY WIN32_EXECUTABLE) +if (_is_win32) +    message(FATAL_ERROR "test10 is a WIN32 executable when it should not be") +endif() +get_property(_is_bundle TARGET test10 PROPERTY MACOSX_BUNDLE) +if (_is_bundle) +    message(FATAL_ERROR "test10 is an OS/X bundle when it should not be") +endif() +get_property(_labels TEST test10 PROPERTY LABELS) +if (NOT _labels STREQUAL "somelabel") +    message(FATAL_ERROR "test10 LABELS property was \"${_labels}\", expected \"somelabel\"") +endif() +get_property(_run_serial TEST test10 PROPERTY RUN_SERIAL) +if (NOT _run_serial) +    message(FATAL_ERROR "test10 LABELS property was \"${_run_serial}\", expected TRUE") +endif() + +get_property(_is_win32 TARGET test11 PROPERTY WIN32_EXECUTABLE) +if (_is_win32) +    message(FATAL_ERROR "test11 is a WIN32 executable when it should not be") +endif() +get_property(_is_bundle TARGET test11 PROPERTY MACOSX_BUNDLE) +if (_is_bundle) +    message(FATAL_ERROR "test11 is an OS/X bundle when it should not be") +endif() +get_property(_labels TEST test11 PROPERTY LABELS) +if (NOT _labels STREQUAL "somelabel") +    message(FATAL_ERROR "test11 LABELS property was \"${_labels}\", expected \"somelabel\"") +endif() +get_property(_run_serial TEST test11 PROPERTY RUN_SERIAL) +if (NOT _run_serial) +    message(FATAL_ERROR "test11 LABELS property was \"${_run_serial}\", expected TRUE") +endif() diff --git a/tests/ECMAddTests/multi_tests/test10.cpp b/tests/ECMAddTests/multi_tests/test10.cpp new file mode 100644 index 00000000..a34a39df --- /dev/null +++ b/tests/ECMAddTests/multi_tests/test10.cpp @@ -0,0 +1,8 @@ +#include "testhelper.h" + +int main() +{ +    make_test_file("test10.txt"); +    return 0; +} + diff --git a/tests/ECMAddTests/multi_tests/test11.cpp b/tests/ECMAddTests/multi_tests/test11.cpp new file mode 100644 index 00000000..82641bbc --- /dev/null +++ b/tests/ECMAddTests/multi_tests/test11.cpp @@ -0,0 +1,8 @@ +#include "testhelper.h" + +int main() +{ +    make_test_file("test11.txt"); +    return 0; +} + diff --git a/tests/ECMAddTests/single_tests/CMakeLists.txt b/tests/ECMAddTests/single_tests/CMakeLists.txt index 6af3857b..de1ae6f6 100644 --- a/tests/ECMAddTests/single_tests/CMakeLists.txt +++ b/tests/ECMAddTests/single_tests/CMakeLists.txt @@ -19,13 +19,12 @@ file(REMOVE      "${CMAKE_CURRENT_BINARY_DIR}/test4.txt"      "${CMAKE_CURRENT_BINARY_DIR}/test5.txt"      "${CMAKE_CURRENT_BINARY_DIR}/test6.txt" +    "${CMAKE_CURRENT_BINARY_DIR}/test7.txt"      )  ecm_add_test(test1.cpp      LINK_LIBRARIES testhelper      ) -# check target exists -get_property(_dummy TARGET test1 PROPERTY TYPE)  # check test exists  get_property(_dummy TEST test1 PROPERTY TIMEOUT)  get_property(_is_win32 TARGET test1 PROPERTY WIN32_EXECUTABLE) @@ -42,7 +41,6 @@ ecm_add_test(test2.cpp      LINK_LIBRARIES testhelper      TEST_NAME named_test      ) -get_property(_dummy TARGET named_test PROPERTY TYPE)  get_property(_dummy TEST named_test PROPERTY TIMEOUT)  get_property(_is_win32 TARGET named_test PROPERTY WIN32_EXECUTABLE)  if (_is_win32) @@ -58,7 +56,6 @@ ecm_add_test(test3.cpp      LINK_LIBRARIES testhelper      NAME_PREFIX prefix_      ) -get_property(_dummy TARGET test3 PROPERTY TYPE)  get_property(_dummy TEST prefix_test3 PROPERTY TIMEOUT)  get_property(_is_win32 TARGET test3 PROPERTY WIN32_EXECUTABLE)  if (_is_win32) @@ -74,7 +71,6 @@ ecm_add_test(test4.cpp      LINK_LIBRARIES testhelper      GUI      ) -get_property(_dummy TARGET test4 PROPERTY TYPE)  get_property(_dummy TEST test4 PROPERTY TIMEOUT)  get_property(_is_win32 TARGET test4 PROPERTY WIN32_EXECUTABLE)  if (NOT _is_win32) @@ -91,9 +87,10 @@ ecm_add_test(test5.cpp      TEST_NAME combined_test      NAME_PREFIX another_prefix_      GUI +    PROPERTIES +        LABELS "lab" +        RUN_SERIAL TRUE      ) -get_property(_dummy TARGET combined_test PROPERTY TYPE) -get_property(_dummy TEST another_prefix_combined_test PROPERTY TIMEOUT)  get_property(_is_win32 TARGET combined_test PROPERTY WIN32_EXECUTABLE)  if (NOT _is_win32)      message(FATAL_ERROR "combined_test is not a WIN32 executable when it should be") @@ -102,13 +99,20 @@ get_property(_is_bundle TARGET combined_test PROPERTY MACOSX_BUNDLE)  if (NOT _is_bundle)      message(FATAL_ERROR "combined_test is not an OS/X bundle when it should be")  endif() +get_property(_labels TEST another_prefix_combined_test PROPERTY LABELS) +if (NOT _labels STREQUAL "lab") +    message(FATAL_ERROR "another_prefix_combined_test LABELS property was \"${_labels}\", expected \"lab\"") +endif() +get_property(_run_serial TEST another_prefix_combined_test PROPERTY RUN_SERIAL) +if (NOT _run_serial) +    message(FATAL_ERROR "another_prefix_combined_test LABELS property was \"${_run_serial}\", expected TRUE") +endif()  ecm_add_test(test6.cpp test6body.cpp      LINK_LIBRARIES testhelper      TEST_NAME multifile_test      ) -get_property(_dummy TARGET multifile_test PROPERTY TYPE)  get_property(_dummy TEST multifile_test PROPERTY TIMEOUT)  get_property(_is_win32 TARGET multifile_test PROPERTY WIN32_EXECUTABLE)  if (_is_win32) @@ -120,3 +124,22 @@ if (_is_bundle)  endif() +ecm_add_test(test7.cpp +    LINK_LIBRARIES testhelper +    PROPERTIES +        LABELS "somelabel" +    ) +get_property(_dummy TEST test7 PROPERTY TIMEOUT) +get_property(_is_win32 TARGET test7 PROPERTY WIN32_EXECUTABLE) +if (_is_win32) +    message(FATAL_ERROR "test7 is a WIN32 executable when it should not be") +endif() +get_property(_is_bundle TARGET test7 PROPERTY MACOSX_BUNDLE) +if (_is_bundle) +    message(FATAL_ERROR "test7 is an OS/X bundle when it should not be") +endif() +get_property(_labels TEST test7 PROPERTY LABELS) +if (NOT _labels STREQUAL "somelabel") +    message(FATAL_ERROR "test7 LABELS property was \"${_labels}\", expected \"somelabel\"") +endif() + diff --git a/tests/ECMAddTests/single_tests/test7.cpp b/tests/ECMAddTests/single_tests/test7.cpp new file mode 100644 index 00000000..069859e7 --- /dev/null +++ b/tests/ECMAddTests/single_tests/test7.cpp @@ -0,0 +1,8 @@ +#include "testhelper.h" + +int main() +{ +    make_test_file("test7.txt"); +    return 0; +} + | 
