Skip to content

Commit ef42418

Browse files
committed
CMake: tests: Support skipping unsupported test with reason
Add a new argument `TEST_SKIPPED` to `mbed_greentea_add_test()` to indicate a test is skipped and give a reason (e.g. the test does not support the target and/or configuration used). This is achieved with a custom target in place of an executable while keeping the same target name. The skipping message is printed at both configuration and build stages.
1 parent fb77a38 commit ef42418

File tree

1 file changed

+49
-29
lines changed

1 file changed

+49
-29
lines changed

tools/cmake/mbed_greentea.cmake

Lines changed: 49 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,12 @@ set(MBED_ROOT ${CMAKE_CURRENT_LIST_DIR}/../.. CACHE INTERNAL "")
1414
# TEST_INCLUDE_DIRS - Test suite include directories for the test
1515
# TEST_SOURCES - Test suite sources
1616
# TEST_REQUIRED_LIBS - Test suite required libraries
17+
# TEST_SKIPPED - Reason if suite is skipped
1718
#
1819
# calling the macro:
20+
# if(MBED_TEST_BAREMETAL)
21+
# set(skip_reason "RTOS required")
22+
# endif()
1923
# mbed_greentea_add_test(
2024
# TEST_NAME
2125
# mbed-platform-system-reset
@@ -27,11 +31,16 @@ set(MBED_ROOT ${CMAKE_CURRENT_LIST_DIR}/../.. CACHE INTERNAL "")
2731
# TEST_REQUIRED_LIBS
2832
# mbed-kvstore
2933
# mbed-xyz
34+
# TEST_SKIPPED
35+
# ${skip_reason}
3036
# )
3137

3238
macro(mbed_greentea_add_test)
3339
set(options)
34-
set(singleValueArgs TEST_NAME)
40+
set(singleValueArgs
41+
TEST_NAME
42+
TEST_SKIPPED
43+
)
3544
set(multipleValueArgs
3645
TEST_INCLUDE_DIRS
3746
TEST_SOURCES
@@ -43,42 +52,53 @@ macro(mbed_greentea_add_test)
4352
"${multipleValueArgs}"
4453
${ARGN}
4554
)
46-
add_subdirectory(${MBED_ROOT} build)
55+
if(NOT "${MBED_GREENTEA_TEST_SKIPPED}" STREQUAL "")
56+
set(msg "Skipping ${MBED_GREENTEA_TEST_NAME}: ${MBED_GREENTEA_TEST_SKIPPED}")
57+
message(DEBUG "${msg}")
58+
add_custom_target(${MBED_GREENTEA_TEST_NAME}
59+
ALL
60+
COMMAND ${CMAKE_COMMAND} -E echo ${msg}
61+
)
62+
else()
4763

48-
add_executable(${MBED_GREENTEA_TEST_NAME})
64+
add_subdirectory(${MBED_ROOT} build)
4965

50-
# Explicitly enable BUILD_TESTING until CTest is added to the Greentea client
51-
set(BUILD_TESTING ON)
66+
add_executable(${MBED_GREENTEA_TEST_NAME})
5267

53-
target_include_directories(${MBED_GREENTEA_TEST_NAME}
54-
PRIVATE
55-
.
56-
${MBED_GREENTEA_TEST_INCLUDE_DIRS}
57-
)
68+
# Explicitly enable BUILD_TESTING until CTest is added to the Greentea client
69+
set(BUILD_TESTING ON)
5870

59-
target_sources(${MBED_GREENTEA_TEST_NAME}
60-
PRIVATE
61-
${MBED_GREENTEA_TEST_SOURCES}
62-
)
71+
target_include_directories(${MBED_GREENTEA_TEST_NAME}
72+
PRIVATE
73+
.
74+
${MBED_GREENTEA_TEST_INCLUDE_DIRS}
75+
)
6376

64-
if(MBED_TEST_BAREMETAL)
65-
list(APPEND MBED_GREENTEA_TEST_REQUIRED_LIBS mbed-baremetal)
66-
else()
67-
list(APPEND MBED_GREENTEA_TEST_REQUIRED_LIBS mbed-os)
68-
endif()
77+
target_sources(${MBED_GREENTEA_TEST_NAME}
78+
PRIVATE
79+
${MBED_GREENTEA_TEST_SOURCES}
80+
)
6981

70-
list(APPEND MBED_GREENTEA_TEST_REQUIRED_LIBS greentea::client_userio mbed-greentea-io mbed-unity mbed-utest)
82+
if(MBED_TEST_BAREMETAL)
83+
list(APPEND MBED_GREENTEA_TEST_REQUIRED_LIBS mbed-baremetal)
84+
else()
85+
list(APPEND MBED_GREENTEA_TEST_REQUIRED_LIBS mbed-os)
86+
endif()
7187

72-
target_link_libraries(${MBED_GREENTEA_TEST_NAME}
73-
PRIVATE
74-
${MBED_GREENTEA_TEST_REQUIRED_LIBS}
75-
)
88+
list(APPEND MBED_GREENTEA_TEST_REQUIRED_LIBS greentea::client_userio mbed-greentea-io mbed-unity mbed-utest)
89+
90+
target_link_libraries(${MBED_GREENTEA_TEST_NAME}
91+
PRIVATE
92+
${MBED_GREENTEA_TEST_REQUIRED_LIBS}
93+
)
94+
95+
mbed_set_post_build(${MBED_GREENTEA_TEST_NAME})
7696

77-
mbed_set_post_build(${MBED_GREENTEA_TEST_NAME})
97+
option(VERBOSE_BUILD "Have a verbose build process")
98+
if(VERBOSE_BUILD)
99+
set(CMAKE_VERBOSE_MAKEFILE ON)
100+
endif()
78101

79-
option(VERBOSE_BUILD "Have a verbose build process")
80-
if(VERBOSE_BUILD)
81-
set(CMAKE_VERBOSE_MAKEFILE ON)
82-
endif()
102+
endif() # NOT MBED_GREENTEA_TEST_SKIPPED
83103

84104
endmacro()

0 commit comments

Comments
 (0)