diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 539a27678..756c36eaa 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -161,11 +161,11 @@ build_esp_idf_tests: expire_in: 6 mos script: - cd tools/unit-test-app - - make help # make sure kconfig tools are built in single process + - MAKEFLAGS= make help # make sure kconfig tools are built in single process - make ut-clean-all-configs - export EXTRA_CFLAGS="-Werror -Werror=deprecated-declarations" - export EXTRA_CXXFLAGS=${EXTRA_CFLAGS} - - make ut-build-all-configs TESTS_ALL=1 + - make ut-build-all-configs - python tools/UnitTestParser.py .build_examples_template: &build_examples_template @@ -863,6 +863,18 @@ UT_001_27: - ESP32_IDF - UT_T1_1 +UT_001_28: + <<: *unit_test_template + tags: + - ESP32_IDF + - UT_T1_1 + +UT_001_29: + <<: *unit_test_template + tags: + - ESP32_IDF + - UT_T1_1 + UT_002_01: <<: *unit_test_template tags: diff --git a/components/bootloader/Makefile.projbuild b/components/bootloader/Makefile.projbuild index 7876635cc..1d569bab3 100644 --- a/components/bootloader/Makefile.projbuild +++ b/components/bootloader/Makefile.projbuild @@ -32,7 +32,8 @@ BOOTLOADER_MAKE= +\ V=$(V) \ BUILD_DIR_BASE=$(BOOTLOADER_BUILD_DIR) \ TEST_COMPONENTS= \ - TESTS_ALL= + TESTS_ALL= \ + EXCLUDE_COMPONENTS= .PHONY: bootloader-clean bootloader-flash bootloader-list-components bootloader $(BOOTLOADER_BIN) diff --git a/components/libsodium/test/component.mk b/components/libsodium/test/component.mk index 572099cae..f59730b83 100644 --- a/components/libsodium/test/component.mk +++ b/components/libsodium/test/component.mk @@ -5,7 +5,9 @@ LS_TESTDIR := ../libsodium/test/default LS_TEST_OBJDIR := libsodium/test/default -ifdef TESTS_ALL +TESTS_ALL ?= 0 + +ifeq ($(TESTS_ALL),1) $(info not linking libsodium tests, use 'TEST_COMPONENTS=libsodium' to test it) else COMPONENT_ADD_LDFLAGS = -Wl,--whole-archive -l$(COMPONENT_NAME) -Wl,--no-whole-archive diff --git a/make/project.mk b/make/project.mk index 01b29bcb3..636e46fc3 100644 --- a/make/project.mk +++ b/make/project.mk @@ -153,7 +153,8 @@ COMPONENTS := $(sort $(foreach comp,$(COMPONENTS),$(lastword $(subst /, ,$(comp) endif # After a full manifest of component names is determined, subtract the ones explicitly omitted by the project Makefile. ifdef EXCLUDE_COMPONENTS -COMPONENTS := $(filter-out $(EXCLUDE_COMPONENTS), $(COMPONENTS)) +COMPONENTS := $(filter-out $(subst ",,$(EXCLUDE_COMPONENTS)), $(COMPONENTS)) +# to keep syntax highlighters happy: ")) endif export COMPONENTS diff --git a/tools/unit-test-app/Makefile b/tools/unit-test-app/Makefile index 05f1dc353..a7b3c45ff 100644 --- a/tools/unit-test-app/Makefile +++ b/tools/unit-test-app/Makefile @@ -5,10 +5,11 @@ PROJECT_NAME := unit-test-app -NON_INTERACTIVE_TARGET += ut-apply-config-% ut-clean-% - include $(IDF_PATH)/make/project.mk +ifeq ($(MAKELEVEL),0) +# Define helper targets only when not recursing + # List of unit-test-app configurations. # Each file in configs/ directory defines a configuration. The format is the # same as sdkconfig file. Configuration is applied on top of sdkconfig.defaults @@ -61,12 +62,22 @@ $(BINARIES_DIR)/%/$(PROJECT_NAME).bin: configs/% cat sdkconfig.defaults > $(BUILDS_DIR)/$*/sdkconfig.defaults echo "" >> $(BUILDS_DIR)/$*/sdkconfig.defaults # in case there is no trailing newline in sdkconfig.defaults cat configs/$* >> $(BUILDS_DIR)/$*/sdkconfig.defaults + # Build, tweaking paths to sdkconfig and sdkconfig.defaults $(summary) BUILD_CONFIG $(BUILDS_DIR)/$* - $(MAKE) defconfig all \ + # 'TEST_COMPONENTS=names' option can be added to configs/$* to limit the set + # of tests to build for given configuration. + # Build all tests if this option is not present. + test_components=`sed -n 's/^TEST_COMPONENTS=\(.*\)/\1/p' configs/$*`; \ + tests_all=`test -n "$${test_components}"; echo $${?}`; \ + exclude_components=`sed -n 's/^EXCLUDE_COMPONENTS=\(.*\)/\1/p' configs/$*`; \ + $(MAKE) defconfig list-components all \ BUILD_DIR_BASE=$(BUILDS_DIR)/$* \ SDKCONFIG=$(BUILDS_DIR)/$*/sdkconfig \ - SDKCONFIG_DEFAULTS=$(BUILDS_DIR)/$*/sdkconfig.defaults + SDKCONFIG_DEFAULTS=$(BUILDS_DIR)/$*/sdkconfig.defaults \ + TEST_COMPONENTS="$${test_components}" \ + TESTS_ALL=$${tests_all} \ + EXCLUDE_COMPONENTS="$${exclude_components}" $(MAKE) print_flash_cmd \ BUILD_DIR_BASE=$(BUILDS_DIR)/$* \ SDKCONFIG=$(BUILDS_DIR)/$*/sdkconfig \ @@ -87,17 +98,32 @@ ut-help: @echo "make ut-build-NAME - Build unit-test-app with configuration provided in configs/NAME." @echo " Build directory will be builds/NAME/, output binaries will be" @echo " under output/NAME/" - @echo "make ut-clean-NAME - Remove build and output directories for configuration NAME." @echo "" @echo "make ut-build-all-configs - Build all configurations defined in configs/ directory." @echo "" + @echo "Above targets determine list of components to be built from configs/NAME files." + @echo "To build custom subset of components use 'make ut-apply-config-NAME' and then 'make all'." + @echo "" @echo "make ut-apply-config-NAME - Generates configuration based on configs/NAME in sdkconfig" @echo " file. After this, normal all/flash targets can be used." @echo " Useful for development/debugging." @echo "" + @echo "make ut-clean-NAME - Remove build and output directories for configuration NAME." + @echo "" help: ut-help .PHONY: ut-build-all-configs ut-clean-all-configs \ $(CONFIG_BUILD_TARGETS) $(CONFIG_CLEAN_TARGETS) $(CONFIG_APPLY_TARGETS) \ ut-help + +NON_INTERACTIVE_TARGET += ut-apply-config-% ut-clean-% ut-build-% \ + ut-build-all-configs ut-clean-all-configs + +else # MAKELEVEL == 0 + +# If recursing, print the actual list of tests being built + +$(info TESTS $(foreach comp,$(TEST_COMPONENT_NAMES),$(patsubst %_test,%,$(comp)))) + +endif # MAKELEVEL == 0 diff --git a/tools/unit-test-app/components/unity/Kconfig b/tools/unit-test-app/components/unity/Kconfig new file mode 100644 index 000000000..642d76f9d --- /dev/null +++ b/tools/unit-test-app/components/unity/Kconfig @@ -0,0 +1,15 @@ +menu "Unity test framework" + +config UNITY_FREERTOS_PRIORITY + int "Priority of Unity test task" + default 5 + +config UNITY_FREERTOS_CPU + int "CPU to run Unity test task on" + default 0 + +config UNITY_FREERTOS_STACK_SIZE + int "Stack size of Unity test task, in bytes" + default 8192 + +endmenu diff --git a/tools/unit-test-app/components/unity/include/unity_config.h b/tools/unit-test-app/components/unity/include/unity_config.h index bb672ccc9..19f73b1ce 100644 --- a/tools/unit-test-app/components/unity/include/unity_config.h +++ b/tools/unit-test-app/components/unity/include/unity_config.h @@ -8,10 +8,12 @@ // Adapt Unity to our environment, disable FP support #include +#include /* Some definitions applicable to Unity running in FreeRTOS */ -#define UNITY_FREERTOS_PRIORITY 5 -#define UNITY_FREERTOS_CPU 0 +#define UNITY_FREERTOS_PRIORITY CONFIG_UNITY_FREERTOS_PRIORITY +#define UNITY_FREERTOS_CPU CONFIG_UNITY_FREERTOS_CPU +#define UNITY_FREERTOS_STACK_SIZE CONFIG_UNITY_FREERTOS_STACK_SIZE #define UNITY_EXCLUDE_FLOAT #define UNITY_EXCLUDE_DOUBLE diff --git a/tools/unit-test-app/configs/default b/tools/unit-test-app/configs/default index bc5fdcd23..a01e42947 100644 --- a/tools/unit-test-app/configs/default +++ b/tools/unit-test-app/configs/default @@ -1 +1 @@ -# default config — nothing to set here +EXCLUDE_COMPONENTS=libsodium diff --git a/tools/unit-test-app/configs/libsodium b/tools/unit-test-app/configs/libsodium new file mode 100644 index 000000000..f43b22a4c --- /dev/null +++ b/tools/unit-test-app/configs/libsodium @@ -0,0 +1,2 @@ +TEST_COMPONENTS=libsodium +CONFIG_UNITY_FREERTOS_STACK_SIZE=12288 diff --git a/tools/unit-test-app/configs/psram b/tools/unit-test-app/configs/psram index 9af51eb10..34f865f04 100644 --- a/tools/unit-test-app/configs/psram +++ b/tools/unit-test-app/configs/psram @@ -1 +1,2 @@ +EXCLUDE_COMPONENTS=libsodium CONFIG_SPIRAM_SUPPORT=y diff --git a/tools/unit-test-app/configs/single_core b/tools/unit-test-app/configs/single_core index d9a4763e1..a985c851a 100644 --- a/tools/unit-test-app/configs/single_core +++ b/tools/unit-test-app/configs/single_core @@ -1,2 +1,3 @@ +EXCLUDE_COMPONENTS=libsodium CONFIG_MEMMAP_SMP=n CONFIG_FREERTOS_UNICORE=y diff --git a/tools/unit-test-app/main/app_main.c b/tools/unit-test-app/main/app_main.c index f1c18fcbf..1dbcdd3b0 100644 --- a/tools/unit-test-app/main/app_main.c +++ b/tools/unit-test-app/main/app_main.c @@ -19,6 +19,6 @@ void app_main() // Note: if unpinning this task, change the way run times are calculated in // unity_platform - xTaskCreatePinnedToCore(unityTask, "unityTask", 8192, NULL, + xTaskCreatePinnedToCore(unityTask, "unityTask", UNITY_FREERTOS_STACK_SIZE, NULL, UNITY_FREERTOS_PRIORITY, NULL, UNITY_FREERTOS_CPU); }