tests: cmake: Add sysbuild snippets test
Adds a new test that ensures sysbuild snippets work and are applied correctly Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
This commit is contained in:
parent
0711f42e3a
commit
06fd7389bd
12 changed files with 115 additions and 0 deletions
9
tests/cmake/sysbuild_snippets/CMakeLists.txt
Normal file
9
tests/cmake/sysbuild_snippets/CMakeLists.txt
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
cmake_minimum_required(VERSION 3.20.0)
|
||||
|
||||
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
|
||||
project(test_snippets)
|
||||
|
||||
FILE(GLOB app_sources src/*.c)
|
||||
target_sources(app PRIVATE ${app_sources})
|
||||
13
tests/cmake/sysbuild_snippets/Kconfig
Normal file
13
tests/cmake/sysbuild_snippets/Kconfig
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
# Copyright 2024 Nordic Semiconductor ASA
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
menu "Zephyr"
|
||||
source "Kconfig.zephyr"
|
||||
endmenu
|
||||
|
||||
# Test values set by the snippet config overlays and tested by the test logic
|
||||
config TEST_FOO_VAL
|
||||
int "Test value"
|
||||
default 12
|
||||
help
|
||||
This option's value should be overridden by sysbuild.
|
||||
22
tests/cmake/sysbuild_snippets/Kconfig.sysbuild
Normal file
22
tests/cmake/sysbuild_snippets/Kconfig.sysbuild
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
# Copyright 2024 Nordic Semiconductor ASA
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
config TEST_FOO_VAL
|
||||
int "Test value"
|
||||
default 0
|
||||
help
|
||||
This option's value should be overridden by the 'foo' snippet config overlay.
|
||||
|
||||
config EXPECTED_SB_TEST_FOO_VAL
|
||||
int "Expected sysbuild test value"
|
||||
default 999999
|
||||
help
|
||||
Expected sysbuild value for the test.
|
||||
|
||||
config EXPECTED_APP_TEST_FOO_VAL
|
||||
int "Expected application test value"
|
||||
default 999999
|
||||
help
|
||||
Expected application value for the test.
|
||||
|
||||
source "${ZEPHYR_BASE}/share/sysbuild/Kconfig"
|
||||
1
tests/cmake/sysbuild_snippets/prj.conf
Normal file
1
tests/cmake/sysbuild_snippets/prj.conf
Normal file
|
|
@ -0,0 +1 @@
|
|||
CONFIG_ZTEST=y
|
||||
7
tests/cmake/sysbuild_snippets/src/main.c
Normal file
7
tests/cmake/sysbuild_snippets/src/main.c
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
/*
|
||||
* Copyright (c) 2024 Nordic Semiconductor ASA
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/* Empty file */
|
||||
11
tests/cmake/sysbuild_snippets/sysbuild/CMakeLists.txt
Normal file
11
tests/cmake/sysbuild_snippets/sysbuild/CMakeLists.txt
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
cmake_minimum_required(VERSION 3.20.0)
|
||||
|
||||
set(SNIPPET_ROOT "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
set(sysbuild_snippets_SNIPPET_ROOT "${CMAKE_CURRENT_SOURCE_DIR}" CACHE INTERNAL "")
|
||||
set(EXTRA_ZEPHYR_MODULES "${CMAKE_CURRENT_SOURCE_DIR}/test_module" CACHE INTERNAL "test_module directory")
|
||||
|
||||
find_package(Sysbuild REQUIRED HINTS $ENV{ZEPHYR_BASE})
|
||||
|
||||
project(sysbuild LANGUAGES)
|
||||
|
|
@ -0,0 +1 @@
|
|||
CONFIG_TEST_FOO_VAL=18382
|
||||
|
|
@ -0,0 +1 @@
|
|||
SB_CONFIG_TEST_FOO_VAL=464372
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
name: foo
|
||||
append:
|
||||
SB_EXTRA_CONF_FILE: sb.conf
|
||||
EXTRA_CONF_FILE: app.conf
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
function(${SYSBUILD_CURRENT_MODULE_NAME}_post_cmake)
|
||||
ExternalProject_Get_Property(${DEFAULT_IMAGE} BINARY_DIR)
|
||||
import_kconfig(CONFIG_ ${BINARY_DIR}/zephyr/.config)
|
||||
|
||||
if("${SB_CONFIG_TEST_FOO_VAL}" STREQUAL "${CONFIG_TEST_FOO_VAL}")
|
||||
message(FATAL_ERROR "Values match (sysbuild and app): ${SB_CONFIG_TEST_FOO_VAL} and ${CONFIG_TEST_FOO_VAL}")
|
||||
else()
|
||||
message(NOTICE "Values diverge (sysbuild and app)")
|
||||
endif()
|
||||
|
||||
if("${SB_CONFIG_EXPECTED_SB_TEST_FOO_VAL}" STREQUAL "${SB_CONFIG_TEST_FOO_VAL}")
|
||||
message(NOTICE "Values match (sysbuild and snippet): ${SB_CONFIG_EXPECTED_SB_TEST_FOO_VAL} and ${SB_CONFIG_TEST_FOO_VAL}")
|
||||
else()
|
||||
message(FATAL_ERROR "Values diverge (sysbuild and snippet): ${SB_CONFIG_EXPECTED_SB_TEST_FOO_VAL} and ${SB_CONFIG_TEST_FOO_VAL}")
|
||||
endif()
|
||||
|
||||
if("${SB_CONFIG_EXPECTED_APP_TEST_FOO_VAL}" STREQUAL "${CONFIG_TEST_FOO_VAL}")
|
||||
message(NOTICE "Values match (app and snippet): ${SB_CONFIG_EXPECTED_APP_TEST_FOO_VAL} and ${CONFIG_TEST_FOO_VAL}")
|
||||
else()
|
||||
message(FATAL_ERROR "Values diverge (app and snippet): ${SB_CONFIG_EXPECTED_APP_TEST_FOO_VAL} and ${CONFIG_TEST_FOO_VAL}")
|
||||
endif()
|
||||
endfunction()
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
build:
|
||||
sysbuild-cmake: .
|
||||
20
tests/cmake/sysbuild_snippets/testcase.yaml
Normal file
20
tests/cmake/sysbuild_snippets/testcase.yaml
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
common:
|
||||
sysbuild: true
|
||||
tags: sysbuild_snippets sysbuild
|
||||
platform_allow:
|
||||
- native_sim
|
||||
integration_platforms:
|
||||
- native_sim
|
||||
|
||||
tests:
|
||||
# Test the initial state with no snippets applied
|
||||
buildsystem.sysbuild.snippets.none:
|
||||
extra_args:
|
||||
- SB_CONFIG_EXPECTED_SB_TEST_FOO_VAL=0
|
||||
- SB_CONFIG_EXPECTED_APP_TEST_FOO_VAL=12
|
||||
# Test the `foo` snippet in sysbuild
|
||||
buildsystem.sysbuild.snippets.applied:
|
||||
extra_args:
|
||||
- SNIPPET=foo
|
||||
- SB_CONFIG_EXPECTED_SB_TEST_FOO_VAL=464372
|
||||
- SB_CONFIG_EXPECTED_APP_TEST_FOO_VAL=18382
|
||||
Loading…
Reference in a new issue