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:
Jamie McCrae 2024-06-04 08:52:55 +01:00 committed by Benjamin Cabé
parent 0711f42e3a
commit 06fd7389bd
12 changed files with 115 additions and 0 deletions

View 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})

View 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.

View 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"

View file

@ -0,0 +1 @@
CONFIG_ZTEST=y

View file

@ -0,0 +1,7 @@
/*
* Copyright (c) 2024 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: Apache-2.0
*/
/* Empty file */

View 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)

View file

@ -0,0 +1 @@
CONFIG_TEST_FOO_VAL=18382

View file

@ -0,0 +1 @@
SB_CONFIG_TEST_FOO_VAL=464372

View file

@ -0,0 +1,4 @@
name: foo
append:
SB_EXTRA_CONF_FILE: sb.conf
EXTRA_CONF_FILE: app.conf

View file

@ -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()

View file

@ -0,0 +1,2 @@
build:
sysbuild-cmake: .

View 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