diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6b636e0ce..1cc3e8cae 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -250,7 +250,7 @@ test_multi_heap_on_host: - wl_host_test script: - cd components/heap/test_multi_heap_host - - make test + - ./test_all_configs.sh test_build_system: stage: test diff --git a/components/heap/test_multi_heap_host/Makefile b/components/heap/test_multi_heap_host/Makefile index 9c9c09a5c..f0d5ab1fc 100644 --- a/components/heap/test_multi_heap_host/Makefile +++ b/components/heap/test_multi_heap_host/Makefile @@ -1,18 +1,49 @@ -test: test_poisoning_disabled \ - test_poisoning_light \ - test_poisoning_comprehensive +TEST_PROGRAM=test_multi_heap +all: $(TEST_PROGRAM) -test_poisoning_disabled: - @echo ==== HEAP_POISONING_DISABLED ==== - CPPFLAGS= $(MAKE) -f Makefile.test clean test +SOURCE_FILES = $(abspath \ + ../multi_heap.c \ + ../multi_heap_poisoning.c \ + test_multi_heap.cpp \ + main.cpp \ + ) -test_poisoning_light: - @echo ==== HEAP_POISONING_LIGHT ==== - CPPFLAGS=-DCONFIG_HEAP_POISONING_LIGHT $(MAKE) -f Makefile.test clean test +INCLUDE_FLAGS = -I../include -I../../../tools/catch -test_poisoning_comprehensive: - @echo ==== HEAP_POISONING_COMPREHENSIVE ==== - CPPFLAGS=-DCONFIG_HEAP_POISONING_COMPREHENSIVE $(MAKE) -f Makefile.test clean test +GCOV ?= gcov -%: - CPPFLAGS=-DCONFIG_HEAP_POISONING_COMPREHENSIVE $(MAKE) -f Makefile.test $@ +CPPFLAGS += $(INCLUDE_FLAGS) -D CONFIG_LOG_DEFAULT_LEVEL -g -fstack-protector-all -m32 +CFLAGS += -Wall -Werror -fprofile-arcs -ftest-coverage +CXXFLAGS += -std=c++11 -Wall -Werror -fprofile-arcs -ftest-coverage +LDFLAGS += -lstdc++ -fprofile-arcs -ftest-coverage -m32 + +OBJ_FILES = $(filter %.o, $(SOURCE_FILES:.cpp=.o) $(SOURCE_FILES:.c=.o)) + +COVERAGE_FILES = $(OBJ_FILES:.o=.gc*) + +$(TEST_PROGRAM): $(OBJ_FILES) + g++ $(LDFLAGS) -o $(TEST_PROGRAM) $(OBJ_FILES) + +$(OUTPUT_DIR): + mkdir -p $(OUTPUT_DIR) + +test: $(TEST_PROGRAM) + ./$(TEST_PROGRAM) + +$(COVERAGE_FILES): $(TEST_PROGRAM) test + +coverage.info: $(COVERAGE_FILES) + find ../ -name "*.gcno" -exec $(GCOV) -r -pb {} + + lcov --capture --directory $(abspath ../) --no-external --output-file coverage.info --gcov-tool $(GCOV) + +coverage_report: coverage.info + genhtml coverage.info --output-directory coverage_report + @echo "Coverage report is in coverage_report/index.html" + +clean: + rm -f $(OBJ_FILES) $(TEST_PROGRAM) + rm -f $(COVERAGE_FILES) *.gcov + rm -rf coverage_report/ + rm -f coverage.info + +.PHONY: clean all test diff --git a/components/heap/test_multi_heap_host/Makefile.test b/components/heap/test_multi_heap_host/Makefile.test deleted file mode 100644 index f0d5ab1fc..000000000 --- a/components/heap/test_multi_heap_host/Makefile.test +++ /dev/null @@ -1,49 +0,0 @@ -TEST_PROGRAM=test_multi_heap -all: $(TEST_PROGRAM) - -SOURCE_FILES = $(abspath \ - ../multi_heap.c \ - ../multi_heap_poisoning.c \ - test_multi_heap.cpp \ - main.cpp \ - ) - -INCLUDE_FLAGS = -I../include -I../../../tools/catch - -GCOV ?= gcov - -CPPFLAGS += $(INCLUDE_FLAGS) -D CONFIG_LOG_DEFAULT_LEVEL -g -fstack-protector-all -m32 -CFLAGS += -Wall -Werror -fprofile-arcs -ftest-coverage -CXXFLAGS += -std=c++11 -Wall -Werror -fprofile-arcs -ftest-coverage -LDFLAGS += -lstdc++ -fprofile-arcs -ftest-coverage -m32 - -OBJ_FILES = $(filter %.o, $(SOURCE_FILES:.cpp=.o) $(SOURCE_FILES:.c=.o)) - -COVERAGE_FILES = $(OBJ_FILES:.o=.gc*) - -$(TEST_PROGRAM): $(OBJ_FILES) - g++ $(LDFLAGS) -o $(TEST_PROGRAM) $(OBJ_FILES) - -$(OUTPUT_DIR): - mkdir -p $(OUTPUT_DIR) - -test: $(TEST_PROGRAM) - ./$(TEST_PROGRAM) - -$(COVERAGE_FILES): $(TEST_PROGRAM) test - -coverage.info: $(COVERAGE_FILES) - find ../ -name "*.gcno" -exec $(GCOV) -r -pb {} + - lcov --capture --directory $(abspath ../) --no-external --output-file coverage.info --gcov-tool $(GCOV) - -coverage_report: coverage.info - genhtml coverage.info --output-directory coverage_report - @echo "Coverage report is in coverage_report/index.html" - -clean: - rm -f $(OBJ_FILES) $(TEST_PROGRAM) - rm -f $(COVERAGE_FILES) *.gcov - rm -rf coverage_report/ - rm -f coverage.info - -.PHONY: clean all test diff --git a/components/heap/test_multi_heap_host/test_all_configs.sh b/components/heap/test_multi_heap_host/test_all_configs.sh new file mode 100755 index 000000000..46ee8a0d3 --- /dev/null +++ b/components/heap/test_multi_heap_host/test_all_configs.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# +# Run the test suite with all configurations enabled +# + +FAIL=0 + +for FLAGS in "CONFIG_HEAP_POISONING_NONE" "CONFIG_HEAP_POISONING_LIGHT" "CONFIG_HEAP_POISONING_COMPREHENSIVE"; do + echo "==== Testing with config: ${FLAGS} ====" + CPPFLAGS="-D${FLAGS}" make clean test || FAIL=1 +done + +make clean + +if [ $FAIL == 0 ]; then + echo "All configurations passed" +else + echo "Some configurations failed, see log." + exit 1 +fi