zephyr/tests/ztest/fail/CMakeLists.txt
Alberto Escolar Piedras 28edb220cd tests: Support targeting unit_testing with and without qualifier
For tests that support both targeting unit_testing and
other targets, we check in the cmake code the BOARD variable.
Let's allow users to set this to either of unit_testing
or unit_testing/unit_testing so it behaves like for other
tests.

Signed-off-by: Alberto Escolar Piedras <alberto.escolar.piedras@nordicsemi.no>
2024-10-25 18:51:10 +01:00

44 lines
1.9 KiB
CMake

# Copyright (c) 2022 Google LLC
# SPDX-License-Identifier: Apache-2.0
cmake_minimum_required(VERSION 3.20.0)
include(ExternalProject)
if(BOARD STREQUAL "unit_testing" OR BOARD STREQUAL "unit_testing/unit_testing")
find_package(Zephyr COMPONENTS unittest REQUIRED HINTS $ENV{ZEPHYR_BASE})
set(target testbinary)
# Set the target binary for the 'core' external project. The path to this must match the one set
# below in ExternalProject_Add's CMAKE_INSTALL_PREFIX
add_compile_definitions(FAIL_TARGET_BINARY="${CMAKE_BINARY_DIR}/core/bin/testbinary")
else()
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
set(target app)
# Set the target binary for the 'core' external project. The path to this must match the one set
# below in ExternalProject_Add's CMAKE_INSTALL_PREFIX
add_compile_definitions(FAIL_TARGET_BINARY="${CMAKE_BINARY_DIR}/core/bin/zephyr.exe")
endif()
# Create the project and set the sources for the target
project(fail)
target_sources(${target} PRIVATE src/main.cpp)
# Find which CONFIG_ZTEST_FAIL_TEST_* choice was set so we can pass it to the external project
# Once we find the config, we'll need to prepend a '-D' and append '=y' so we can pass it to the
# 'core' project as a cmake argument.
get_cmake_property(_vars VARIABLES)
string(REGEX MATCHALL "(^|;)CONFIG_ZTEST_FAIL_TEST_[A-Za-z0-9_]+" fail_test_config "${_vars}")
list(FILTER fail_test_config EXCLUDE REGEX "^$")
list(TRANSFORM fail_test_config PREPEND "-D")
list(TRANSFORM fail_test_config APPEND "=y")
string(REPLACE ";" " " fail_test_config "${fail_test_config}")
# Add the 'core' external project which will mirror the configs of this project.
ExternalProject_Add(core
SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/core
CMAKE_ARGS
-DBOARD:STRING=${BOARD}${BOARD_QUALIFIERS}
-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/core
${fail_test_config}
)
add_dependencies(${target} core)