mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-10-28 00:06:16 -04:00
Kernel timers.c tasks.c Unit Test (#539)
* Test: add multi config ability to build system * Remove Tests that are not implemented yet from the makefile * Fix header check * Test: Unit Test tasks.c * UnitTest: tasks.c Save progress * saving some work 70% coverage * coverage 77% * tasks.c coverage 90% * tasks.c coverage 95% * Cleanup and common header * Cover some extra branches, no_mutex +stack growth * Fix Makefile not to use modified version of c-preprocessor * Remove c-preprocessor errros * Rebase and add some tests * Fortify_source=1 and O0 are mutually exclusive * Style: Uncrustify code * Style: Fix indent * Fix Header checks * Add prototypes * Build: use unifdef instead of the c-preprocessor to generate different configurations * Build: fix makefile cflags * Fix UT after upgrading kernel version * Resolve conflicts and test failures * Comment fix version number * Fix build error * Update FreeRTOS/Test/CMock/Makefile Co-authored-by: Aniruddha Kanhere <60444055+AniruddhaKanhere@users.noreply.github.com> Co-authored-by: Aniruddha Kanhere <60444055+AniruddhaKanhere@users.noreply.github.com>
This commit is contained in:
parent
c00078e729
commit
1ac492d6aa
30 changed files with 9949 additions and 398 deletions
99
FreeRTOS/Test/CMock/coverage.mk
Normal file
99
FreeRTOS/Test/CMock/coverage.mk
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
COVINFO := $(abspath $(SCRATCH_DIR)/..)/$(EXEC_PREFIX).info
|
||||
COVINFO_INITIAL := $(SCRATCH_DIR)/$(EXEC_PREFIX)_initial.info
|
||||
LCOV_LIST := $(addsuffix .info,$(addprefix $(SCRATCH_DIR)/,$(SUITE_UT_SRC:.c=)))
|
||||
PROJ_GCDA_LIST := $(PROJ_SRC_LIST:.c=.gcda)
|
||||
COV_REPORT_DIR := $(SCRATCH_DIR)/coverage
|
||||
COVINFO_COMBINE := $(SCRATCH_DIR)/$(EXEC_PREFIX)_combined.info
|
||||
|
||||
|
||||
GCOV_OPTS := --unconditional-branches --branch-probabilities
|
||||
|
||||
# Cases that run test binaries cannot be run in parallel.
|
||||
.NOTPARALLEL : $(COVINFO) $(LCOV_LIST) $(PROJ_GCDA_LIST)
|
||||
|
||||
# Prevent deletion of intermediate files
|
||||
NO_DELETE : $(MOCK_HDR_LIST) $(MOCK_SRC_LIST) $(MOCK_OBJ_LIST) \
|
||||
$(DEPS_OBJ_LIST) $(SF_OBJ_LIST) $(EXEC_LIST) \
|
||||
$(PROJ_PP_LIST) $(PROJ_OBJ_LIST) $(PROJ_GCDA_LIST) \
|
||||
$(SUITE_OBJ_LIST) $(RUNNER_SRC_LIST) $(RUNNER_OBJ_LIST) \
|
||||
$(COVINFO) $(LCOV_LIST)
|
||||
|
||||
|
||||
# Generate gcov files by default
|
||||
run : gcov
|
||||
|
||||
gcov : $(PROJ_GCDA_LIST)
|
||||
|
||||
clean :
|
||||
rm -rf $(SCRATCH_DIR)
|
||||
rm -f $(BIN_DIR)/$(PROJECT)_utest_*
|
||||
rm -f $(COVINFO)
|
||||
|
||||
libs :
|
||||
make -C $(UT_ROOT_DIR) libs
|
||||
|
||||
define run-test
|
||||
$(1)
|
||||
endef
|
||||
|
||||
$(PROJ_GCDA_LIST) : $(EXEC_LIST)
|
||||
rm -f $(PROJ_DIR)/*.gcda
|
||||
mkdir -p $(BIN_DIR)
|
||||
# run each test case
|
||||
$(foreach bin,$^,$(call run-test,$(bin)))
|
||||
|
||||
# Run and generate lcov
|
||||
lcov : $(COVINFO)
|
||||
|
||||
lcovhtml : $(COVINFO)
|
||||
mkdir -p $(COV_REPORT_DIR)
|
||||
genhtml $(COVINFO) $(LCOV_OPTS) --output-directory $(COV_REPORT_DIR)
|
||||
|
||||
bin: $(EXEC_LIST)
|
||||
|
||||
# Run and append to gcov data files
|
||||
|
||||
# Generate callgraph for coverage filtering
|
||||
$(PROJ_DIR)/callgraph.json : $(PROJ_SRC_LIST)
|
||||
mkdir -p $(PROJ_DIR)
|
||||
#python3 $(UT_ROOT_DIR)/tools/callgraph.py --out $@ $^
|
||||
|
||||
# Generate baseline inital coverage data from .gcno file
|
||||
$(COVINFO_INITIAL) : $(EXEC_LIST)
|
||||
lcov $(LCOV_OPTS) --capture --initial --directory $(SCRATCH_DIR) -o $@
|
||||
|
||||
# Run the test runner and genrate a filtered gcov.json.gz file
|
||||
$(SCRATCH_DIR)/%_utest.info : $(BIN_DIR)/$(EXEC_PREFIX)_%_utest \
|
||||
$(PROJ_DIR)/callgraph.json
|
||||
# Remove any existing coverage data
|
||||
rm -f $(PROJ_DIR)/*.gcda
|
||||
|
||||
# run the testrunner
|
||||
$<
|
||||
|
||||
lcov $(LCOV_OPTS) --directory $(SCRATCH_DIR) --capture -o $@
|
||||
# Gather coverage into a json.gz file
|
||||
|
||||
#gcov $(GCOV_OPTS) $(SCRATCH_DIR)/$*/$(PROJECT).gcda \
|
||||
# --json-format --stdout | gzip > $(subst .info,.json.gz,$@)
|
||||
|
||||
# Filter coverage based on tags in unit test file
|
||||
# $(TOOLS_DIR)/filtercov.py --in $(subst .info,.json.gz,$@) \
|
||||
# --map $(PROJ_DIR)/callgraph.json \
|
||||
# --test $(PROJ_DIR)/$(PROJECT)_utest_$*.c \
|
||||
# --format lcov \
|
||||
# --out $@
|
||||
lcov $(LCOV_OPTS) --summary $@
|
||||
|
||||
# Remove temporary files
|
||||
rm -f $(subst .info,.json.gz,$@)
|
||||
rm -f $(PROJ_GCDA_LIST)
|
||||
|
||||
# Combine lcov from each test bin into one lcov info file for the suite
|
||||
$(COVINFO_COMBINE) : $(LCOV_LIST)
|
||||
lcov $(LCOV_OPTS) -o $@ $(foreach cov,$(LCOV_LIST),--add-tracefile $(cov) )
|
||||
|
||||
# Add baseline / initial coverage generated by gcc to point out untagged functions
|
||||
$(COVINFO) : $(COVINFO_COMBINE) $(COVINFO_INITIAL)
|
||||
lcov $(LCOV_OPTS) -o $@ --add-tracefile $(COVINFO_INITIAL) --add-tracefile $(COVINFO_COMBINE)
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue