Merge branch 'ci/split_system_build_test' into 'master'

test(system): restructured system build test test-apps

Closes IDF-14206

See merge request espressif/esp-idf!42320
This commit is contained in:
Marius Vikhammer
2025-10-27 14:32:43 +08:00
109 changed files with 441 additions and 52 deletions

View File

@@ -0,0 +1,8 @@
# Documentation: .gitlab/ci/README.md#manifest-file-to-control-the-buildtest-apps
components/esp_http_client/test_apps:
disable:
- if: CONFIG_NAME == "client_only_mbedtls" and IDF_TARGET not in ["esp32c3"]
reason: Testing on one target is enough
depends_components:
- esp_http_client

View File

@@ -6,6 +6,7 @@ from pytest_embedded_idf.utils import idf_parametrize
@pytest.mark.generic
@idf_parametrize('config', ['default'], indirect=['config'])
@idf_parametrize('target', ['supported_targets'], indirect=['target'])
def test_esp_http_client(dut: Dut) -> None:
dut.run_all_single_board_cases()

View File

@@ -1,3 +1,5 @@
# Documentation: .gitlab/ci/README.md#manifest-file-to-control-the-buildtest-apps
components/esp_libc/test_apps/newlib:
components/esp_libc/test_apps/no_rvfplib:
disable:
- if: ESP_ROM_HAS_RVFPLIB != 1

View File

@@ -0,0 +1,10 @@
# The following lines of boilerplate have to be in your project's
# CMakeLists in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.22)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
# "Trim" the build. Include the minimal set of components, main, and anything it depends on.
idf_build_set_property(MINIMAL_BUILD ON)
project(test_build)

View File

@@ -0,0 +1,6 @@
| Supported Targets | ESP32-C2 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-P4 |
| ----------------- | -------- | -------- | -------- | --------- | -------- |
This project tests building with the no_rvfplib configuration.
This project uses MINIMAL_BUILD=y to reduce build time and dependencies.

View File

@@ -0,0 +1,8 @@
/*
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Unlicense OR CC0-1.0
*/
void app_main(void)
{
}

View File

@@ -0,0 +1,7 @@
# Documentation: .gitlab/ci/README.md#manifest-file-to-control-the-buildtest-apps
components/esp_phy/test_apps/phy_multiple_init_data:
disable:
- if: IDF_TARGET == "esp32p4" # Update with caps here when IDF-7460 is resolved
depends_components:
- esp_phy

View File

@@ -0,0 +1,10 @@
# The following lines of boilerplate have to be in your project's
# CMakeLists in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.22)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
# "Trim" the build. Include the minimal set of components, main, and anything it depends on.
idf_build_set_property(MINIMAL_BUILD ON)
project(test_build)

View File

@@ -0,0 +1,6 @@
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-H2 | ESP32-H21 | ESP32-H4 | ESP32-S2 | ESP32-S3 |
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | --------- | -------- | -------- | -------- |
This project tests building with the phy_multiple_init_data configuration.
This project uses MINIMAL_BUILD=y to reduce build time and dependencies.

View File

@@ -0,0 +1,3 @@
idf_component_register(SRCS "test_main.c"
INCLUDE_DIRS "."
REQUIRES esp_phy)

View File

@@ -0,0 +1,8 @@
/*
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Unlicense OR CC0-1.0
*/
void app_main(void)
{
}

View File

@@ -1 +1,2 @@
CONFIG_RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH=y
CONFIG_COMPILER_OPTIMIZATION_SIZE=y

View File

@@ -1,12 +1,15 @@
# Documentation: .gitlab/ci/README.md#manifest-file-to-control-the-buildtest-apps
components/freertos/test_apps/build_tests/freertos_build_test:
disable:
- if: CONFIG_NAME == "timers_disabled" and IDF_TARGET != "esp32"
components/freertos/test_apps/build_tests/orig_inc_path:
enable:
- if: IDF_TARGET in ["esp32"]
reason: The feature only depends on the build system, nothing target-specific that needs to be tested
components/freertos/test_apps/freertos:
disable:
- if: CONFIG_NAME == "smp" and IDF_TARGET == "esp32p4"
temporary: true
reason: target(s) not supported yet
components/freertos/test_apps/orig_inc_path:
enable:
- if: IDF_TARGET in ["esp32"]
reason: The feature only depends on the build system, nothing target-specific that needs to be tested

View File

@@ -0,0 +1,6 @@
cmake_minimum_required(VERSION 3.22)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
idf_build_set_property(MINIMAL_BUILD ON)
project(freertos_build_test)

View File

@@ -0,0 +1,6 @@
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-H2 | ESP32-H21 | ESP32-H4 | ESP32-P4 | ESP32-S2 | ESP32-S3 |
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | --------- | -------- | -------- | -------- | -------- |
This project tests building with different FreeRTOS configurations.
This project uses MINIMAL_BUILD=y to reduce build time and dependencies.

View File

@@ -0,0 +1,2 @@
idf_component_register(SRCS "test_main.c"
INCLUDE_DIRS ".")

View File

@@ -0,0 +1,8 @@
/*
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
void app_main(void)
{
}

View File

@@ -84,3 +84,8 @@ components/spi_flash/test_apps/mspi_test:
- esp_driver_spi
- esptool_py # Some flash related kconfigs are listed here.
- esp_hal_mspi
components/spi_flash/test_apps/no_flash_delay:
disable:
- if: IDF_TARGET not in ["esp32c3"]
reason: Testing on a single target is sufficient

View File

@@ -0,0 +1,10 @@
# The following lines of boilerplate have to be in your project's
# CMakeLists in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.22)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
# "Trim" the build. Include the minimal set of components, main, and anything it depends on.
idf_build_set_property(MINIMAL_BUILD ON)
project(test_build)

View File

@@ -0,0 +1,6 @@
| Supported Targets | ESP32-C3 |
| ----------------- | -------- |
This project tests building with the no_flash_delay configuration.
This project uses MINIMAL_BUILD=y to reduce build time and dependencies.

View File

@@ -0,0 +1,2 @@
idf_component_register(SRCS "test_main.c"
INCLUDE_DIRS ".")

View File

@@ -0,0 +1,8 @@
/*
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Unlicense OR CC0-1.0
*/
void app_main(void)
{
}

View File

@@ -0,0 +1,10 @@
# The following lines of boilerplate have to be in your project's
# CMakeLists in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.22)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
# "Trim" the build. Include the minimal set of components, main, and anything it depends on.
idf_build_set_property(MINIMAL_BUILD ON)
project(test_build)

View File

@@ -0,0 +1,6 @@
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-H2 | ESP32-H21 | ESP32-H4 | ESP32-P4 | ESP32-S2 | ESP32-S3 |
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | --------- | -------- | -------- | -------- | -------- |
This project tests building with the spi_flash_opts configuration.
This project uses MINIMAL_BUILD=y to reduce build time and dependencies.

View File

@@ -0,0 +1,2 @@
idf_component_register(SRCS "test_main.c"
INCLUDE_DIRS ".")

View File

@@ -0,0 +1,8 @@
/*
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Unlicense OR CC0-1.0
*/
void app_main(void)
{
}

View File

@@ -949,7 +949,6 @@ tools/test_apps/protocols/mqtt/publish_connect_test/main/publish_test.c
tools/test_apps/security/secure_boot/main/secure_boot_main.c
tools/test_apps/security/secure_boot/main/secure_boot_main_esp32.c
tools/test_apps/system/bootloader_sections/main/test_main.c
tools/test_apps/system/build_test/main/test_main.c
tools/test_apps/system/cxx_no_except/main/main.cpp
tools/test_apps/system/gdb_loadable_elf/main/hello_world_main.c
tools/test_apps/system/longjmp_test/main/hello_world_main.c

View File

@@ -4,12 +4,36 @@ tools/test_apps/system/bootloader_sections:
disable:
- if: CONFIG_NAME == "rtc_retain" and SOC_RTC_FAST_MEM_SUPPORTED != 1
tools/test_apps/system/build_test:
tools/test_apps/system/build_tests/client_only_mbedtls:
disable:
- if: CONFIG_NAME == "no_rvfplib" and ESP_ROM_HAS_RVFPLIB != 1
- if: CONFIG_NAME == "usb_serial_jtag" AND SOC_USB_SERIAL_JTAG_SUPPORTED != 1
- if: CONFIG_NAME == "usb_console_ets_printf" AND SOC_USB_OTG_SUPPORTED != 1
- if: CONFIG_NAME == "phy_multiple_init_data" AND IDF_TARGET == "esp32p4" # Update with caps here when IDF-7460 is resolved
- if: IDF_TARGET not in ["esp32c3"]
reason: Testing on a single target is sufficient
tools/test_apps/system/build_tests/custom_mac:
disable:
- if: IDF_TARGET not in ["esp32c3"]
reason: Testing on a single target is sufficient
tools/test_apps/system/build_tests/no_esp_cert_bundle:
disable:
- if: IDF_TARGET not in ["esp32c3"]
reason: Testing on a single target is sufficient
tools/test_apps/system/build_tests/no_hwsg:
disable:
- if: SOC_ASSIST_DEBUG_SUPPORTED != 1
tools/test_apps/system/build_tests/panic_silent_reboot:
disable:
- if: IDF_TARGET != "esp32"
tools/test_apps/system/build_tests/trax_esp32:
disable:
- if: IDF_TARGET != "esp32"
tools/test_apps/system/build_tests/trax_esp32s2:
disable:
- if: IDF_TARGET != "esp32s2"
tools/test_apps/system/clang_build_test:
enable:

View File

@@ -1,9 +0,0 @@
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-H2 | ESP32-H21 | ESP32-H4 | ESP32-P4 | ESP32-S2 | ESP32-S3 |
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | --------- | -------- | -------- | -------- | -------- |
This project is for testing if the application can be built with a particular sdkconfig setting.
To add new configuration, create one more sdkconfig.ci.NAME file in this directory.
To make the configuration target-specific, add a CONFIG_IDF_TARGET="name" line.
If you need to test for anything other than building, create another test project.

View File

@@ -1,3 +0,0 @@
void app_main(void)
{
}

View File

@@ -1,6 +0,0 @@
# Config to test that console can build with all outputs set to none (both primary and secondary)
# Using ESP32-C3 because it supports a secondary console output (i.e., USJ)
CONFIG_IDF_TARGET="esp32c3"
CONFIG_ESP_CONSOLE_NONE=y
CONFIG_ESP_CONSOLE_SECONDARY_NONE=y

View File

@@ -1,11 +0,0 @@
# Any of a set of configurations that will trigger timing tuning
CONFIG_IDF_TARGET="esp32s3"
CONFIG_SPI_FLASH_HPM_ENA=y
CONFIG_ESPTOOLPY_FLASHFREQ_120M=y
CONFIG_BOOTLOADER_FLASH_DC_AWARE=y
CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
CONFIG_COMPILER_OPTIMIZATION_SIZE=y
CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE=y

View File

@@ -1,2 +0,0 @@
CONFIG_ETH_USE_SPI_ETHERNET=n
CONFIG_ETH_USE_ESP32_EMAC=n

View File

@@ -1,4 +0,0 @@
CONFIG_SECURE_FLASH_ENC_ENABLED=y
CONFIG_SECURE_FLASH_ENCRYPTION_MODE_RELEASE=y
CONFIG_NVS_SEC_KEY_PROTECT_USING_FLASH_ENC=y
CONFIG_PARTITION_TABLE_OFFSET=0xC000

View File

@@ -1,2 +0,0 @@
CONFIG_COMPILER_OPTIMIZATION_SIZE=y
CONFIG_RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH=y

View File

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

View File

@@ -1,2 +0,0 @@
CONFIG_ESP_CONSOLE_USB_CDC=y
CONFIG_ESP_CONSOLE_USB_CDC_SUPPORT_ETS_PRINTF=y

View File

@@ -4,4 +4,7 @@ cmake_minimum_required(VERSION 3.22)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
# We dont set minimal build here as chip rev. kconfig
# potentially affect all components
project(test_build)

View File

@@ -0,0 +1,6 @@
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-H2 | ESP32-H21 | ESP32-H4 | ESP32-P4 | ESP32-S2 | ESP32-S3 |
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | --------- | -------- | -------- | -------- | -------- |
This project tests building with the esp32_rev3 configuration.
This project uses MINIMAL_BUILD=y to reduce build time and dependencies.

View File

@@ -0,0 +1,2 @@
idf_component_register(SRCS "test_main.c"
INCLUDE_DIRS ".")

View File

@@ -0,0 +1,8 @@
/*
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Unlicense OR CC0-1.0
*/
void app_main(void)
{
}

View File

@@ -0,0 +1,10 @@
# The following lines of boilerplate have to be in your project's
# CMakeLists in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.22)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
# "Trim" the build. Include the minimal set of components, main, and anything it depends on.
idf_build_set_property(MINIMAL_BUILD ON)
project(test_build)

View File

@@ -0,0 +1,6 @@
| Supported Targets | ESP32-C3 |
| ----------------- | -------- |
This project tests building with the client_only_mbedtls configuration.
This project uses MINIMAL_BUILD=y to reduce build time and dependencies.

View File

@@ -0,0 +1,2 @@
idf_component_register(SRCS "test_main.c"
INCLUDE_DIRS ".")

View File

@@ -0,0 +1,8 @@
/*
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Unlicense OR CC0-1.0
*/
void app_main(void)
{
}

View File

@@ -0,0 +1,10 @@
# The following lines of boilerplate have to be in your project's
# CMakeLists in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.22)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
# "Trim" the build. Include the minimal set of components, main, and anything it depends on.
idf_build_set_property(MINIMAL_BUILD ON)
project(test_build)

View File

@@ -0,0 +1,6 @@
| Supported Targets | ESP32-C3 |
| ----------------- | -------- |
This project tests building with the custom_mac configuration.
This project uses MINIMAL_BUILD=y to reduce build time and dependencies.

View File

@@ -0,0 +1,2 @@
idf_component_register(SRCS "test_main.c"
INCLUDE_DIRS ".")

View File

@@ -0,0 +1,8 @@
/*
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Unlicense OR CC0-1.0
*/
void app_main(void)
{
}

View File

@@ -0,0 +1,11 @@
# The following lines of boilerplate have to be in your project's
# CMakeLists in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.22)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
# Do not use minimal build for this app as these are global options
# we want to compile all files with
project(test_build)

View File

@@ -0,0 +1,6 @@
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-H2 | ESP32-H21 | ESP32-H4 | ESP32-P4 | ESP32-S2 | ESP32-S3 |
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | --------- | -------- | -------- | -------- | -------- |
This project tests building with misc global configurations
This project do NOT use MINIMAL_BUILD to ensure all components are built with the config.

View File

@@ -0,0 +1,2 @@
idf_component_register(SRCS "test_main.c"
INCLUDE_DIRS ".")

View File

@@ -0,0 +1,8 @@
/*
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Unlicense OR CC0-1.0
*/
void app_main(void)
{
}

View File

@@ -0,0 +1,10 @@
# The following lines of boilerplate have to be in your project's
# CMakeLists in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.22)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
# "Trim" the build. Include the minimal set of components, main, and anything it depends on.
idf_build_set_property(MINIMAL_BUILD ON)
project(test_build)

View File

@@ -0,0 +1,6 @@
| Supported Targets | ESP32-C3 |
| ----------------- | -------- |
This project tests building with the no_esp_cert_bundle configuration.
This project uses MINIMAL_BUILD=y to reduce build time and dependencies.

View File

@@ -0,0 +1,2 @@
idf_component_register(SRCS "test_main.c"
INCLUDE_DIRS ".")

View File

@@ -0,0 +1,8 @@
/*
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Unlicense OR CC0-1.0
*/
void app_main(void)
{
}

View File

@@ -0,0 +1,10 @@
# The following lines of boilerplate have to be in your project's
# CMakeLists in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.22)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
# "Trim" the build. Include the minimal set of components, main, and anything it depends on.
idf_build_set_property(MINIMAL_BUILD ON)
project(test_build)

View File

@@ -0,0 +1,6 @@
| Supported Targets | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-H2 | ESP32-P4 |
| ----------------- | -------- | -------- | -------- | -------- | --------- | -------- | -------- |
This project tests building with the no_hwsg configuration.
This project uses MINIMAL_BUILD=y to reduce build time and dependencies.

View File

@@ -0,0 +1,2 @@
idf_component_register(SRCS "test_main.c"
INCLUDE_DIRS ".")

View File

@@ -0,0 +1,8 @@
/*
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Unlicense OR CC0-1.0
*/
void app_main(void)
{
}

View File

@@ -0,0 +1,10 @@
# The following lines of boilerplate have to be in your project's
# CMakeLists in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.22)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
# "Trim" the build. Include the minimal set of components, main, and anything it depends on.
idf_build_set_property(MINIMAL_BUILD ON)
project(test_build)

View File

@@ -0,0 +1,6 @@
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-H2 | ESP32-H21 | ESP32-H4 | ESP32-P4 | ESP32-S2 | ESP32-S3 |
| ----------------- | ----- | -------- | -------- | -------- | -------- | --------- | -------- | --------- | -------- | -------- | -------- | -------- |
This project tests building with the panic_handler_iram configuration.
This project uses MINIMAL_BUILD=y to reduce build time and dependencies.

View File

@@ -0,0 +1,2 @@
idf_component_register(SRCS "test_main.c"
INCLUDE_DIRS ".")

View File

@@ -0,0 +1,8 @@
/*
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Unlicense OR CC0-1.0
*/
void app_main(void)
{
}

View File

@@ -0,0 +1,10 @@
# The following lines of boilerplate have to be in your project's
# CMakeLists in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.22)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
# "Trim" the build. Include the minimal set of components, main, and anything it depends on.
idf_build_set_property(MINIMAL_BUILD ON)
project(test_build)

View File

@@ -0,0 +1,6 @@
| Supported Targets | ESP32 |
| ----------------- | ----- |
This project tests building with the panic_silent_reboot configuration.
This project uses MINIMAL_BUILD=y to reduce build time and dependencies.

View File

@@ -0,0 +1,2 @@
idf_component_register(SRCS "test_main.c"
INCLUDE_DIRS ".")

View File

@@ -0,0 +1,8 @@
/*
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Unlicense OR CC0-1.0
*/
void app_main(void)
{
}

View File

@@ -0,0 +1,10 @@
# The following lines of boilerplate have to be in your project's
# CMakeLists in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.22)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
# "Trim" the build. Include the minimal set of components, main, and anything it depends on.
idf_build_set_property(MINIMAL_BUILD ON)
project(test_build)

Some files were not shown because too many files have changed in this diff Show More