mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-12-09 13:15:15 -05:00
FreeRTOS-Plus: Unit testing Infrastructure and examples (#72)
* Added CMock as submodule * Makefile added * Removed TEMP from Makefile * Added configuration files and header files * Update Makefile * Test runner working * make clean * Example added with README * Update README.md * Restored +TCP files * Cleared +TCP changes * removed comments from Makefile * Update README.md * Update README.md * Update README.md * Updated Test/Unit-test/readme.md
This commit is contained in:
parent
5003d17fed
commit
95a3a02f95
23 changed files with 1936 additions and 2 deletions
110
FreeRTOS-Plus/Test/Unit-Tests/Makefile
Normal file
110
FreeRTOS-Plus/Test/Unit-Tests/Makefile
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
#CC := /usr/local/bin/gcc
|
||||
#GCOV := /usr/local/bin/gcov
|
||||
|
||||
EXECUTABLE=cmock_test
|
||||
ROOT_DIR ?= $(shell pwd)
|
||||
|
||||
CONFIGURATION_DIR ?= ${ROOT_DIR}/tools/configuration
|
||||
|
||||
CMOCK_DIR ?= ${ROOT_DIR}/../CMock
|
||||
CMOCK_SRC_DIR ?= ${CMOCK_DIR}/src
|
||||
CMOCK_INCLUDE_DIR ?= ${CMOCK_SRC_DIR}
|
||||
CMOCK_LIB_DIR ?= ${CMOCK_DIR}/lib
|
||||
|
||||
UNITY_DIR ?= ${CMOCK_DIR}/vendor/unity
|
||||
UNITY_SRC_DIR ?= ${UNITY_DIR}/src
|
||||
UNITY_INCLUDE_DIR ?= ${UNITY_SRC_DIR}
|
||||
UNITY_BIN_DIR ?= ${UNITY_DIR}/auto
|
||||
UNITY_FIXTURE_DIR ?= ${UNITY_DIR}/extras/fixture/src
|
||||
UNITY_MEMORY_DIR ?= ${UNITY_DIR}/extras/memory/src
|
||||
|
||||
BUILD_DIR ?= ${ROOT_DIR}/build
|
||||
LIB_DIR ?= ${ROOT_DIR}/build/lib
|
||||
BIN_DIR ?= ${ROOT_DIR}/build/bin
|
||||
MOCKS_DIR ?= ${ROOT_DIR}/build/mocks
|
||||
GEN_DIR ?= ${ROOT_DIR}/build/generated
|
||||
|
||||
SRC_DIR ?= ${ROOT_DIR}/../../Source/FreeRTOS-Plus-TCP/test
|
||||
|
||||
EXAMPLE_DIR ?= ${ROOT_DIR}/tests/example
|
||||
|
||||
CONFIG_FILES_DIR ?= $(ROOT_DIR)/Config_files
|
||||
TEST_DIR ?= test
|
||||
|
||||
KERNEL_INCLUDES ?= ${ROOT_DIR}/../../../FreeRTOS/Source/include
|
||||
|
||||
# ${FREE_RTOS_INCLUDE_DIR}/FreeRTOS_IP.h -I ${FREE_RTOS_INCLUDE_DIR}
|
||||
|
||||
INCLUDE_DIR ?= -I ${ROOT_DIR} -I ${ROOT_DIR}/tests/example -I $(CONFIG_FILES_DIR) -I ${CMOCK_INCLUDE_DIR} -I ${UNITY_INCLUDE_DIR} -I ${MOCKS_DIR} -I ${UNITY_FIXTURE_DIR} -I ${SRC_DIR} -I ${UNITY_MEMORY_DIR}
|
||||
|
||||
MOCK_HEADERS ?= ${ROOT_DIR}/tests/example/some_value.h
|
||||
|
||||
CODE_COVERAGE ?= -fprofile-arcs -ftest-coverage -fprofile-generate
|
||||
|
||||
.PHONY: all clean directories mocks coverage run
|
||||
|
||||
all: ${LIB_DIR}/libcmock.so ${LIB_DIR}/libunity.so directories mocks ${BIN_DIR}/${EXECUTABLE}
|
||||
|
||||
directories:
|
||||
mkdir -p ${BUILD_DIR}
|
||||
mkdir -p ${MOCKS_DIR}
|
||||
mkdir -p ${LIB_DIR}
|
||||
mkdir -p ${BIN_DIR}
|
||||
mkdir -p ${GEN_DIR}
|
||||
|
||||
mocks: directories
|
||||
cd ${BUILD_DIR} && ruby ${CMOCK_LIB_DIR}/cmock.rb -o${CONFIGURATION_DIR}/project.yml ${MOCK_HEADERS}
|
||||
@echo "\n"
|
||||
|
||||
${LIB_DIR}/libcmock.so: ${CMOCK_SRC_DIR}/cmock.c ${CMOCK_SRC_DIR}/cmock.h Makefile ${LIB_DIR}/libunity.so
|
||||
${CC} -o $@ -shared -fPIC $< ${INCLUDE_DIR}
|
||||
@echo "\n"
|
||||
|
||||
${LIB_DIR}/libunity.so: ${UNITY_SRC_DIR}/unity.c ${CMOCK_SRC_DIR}/cmock.h Makefile directories
|
||||
${CC} -o $@ -shared -fPIC $< -I ${UNITY_INCLUDE_DIR}
|
||||
@echo "\n"
|
||||
|
||||
#=============================================================================================
|
||||
#============== LIST ALL THE HEADERS YOU WANT TO MOCK IN SIMILAR MANNER =====================
|
||||
${LIB_DIR}/mock_some_value.o: ${MOCKS_DIR}/mock_some_value.c mocks Makefile
|
||||
${CC} -c $< -o $@ ${INCLUDE_DIR} -fPIC
|
||||
|
||||
COMMON_OBJECTS ?= ${LIB_DIR}/mock_some_value.o
|
||||
|
||||
|
||||
#=============================================================================================
|
||||
#======================== LIST ALL THE TEST SOURCE FILES HERE ================================
|
||||
TEST_FILES ?= ${EXAMPLE_DIR}/hello_world_test.c
|
||||
|
||||
#=============================================================================================
|
||||
#===================== LIST ALL THE SOURCE FILES UNDER TEST HERE =============================
|
||||
SOURCE_FILES ?= ${EXAMPLE_DIR}/hello_world.c
|
||||
#---------------------------------------------------------------------------------------------
|
||||
#=============================================================================================
|
||||
|
||||
|
||||
${LIB_DIR}/libcommon.so: ${COMMON_OBJECTS}
|
||||
${CC} -o $@ -shared -fPIC $+ ${INCLUDE_DIR} ${CODE_COVERAGE} -lgcov
|
||||
|
||||
|
||||
${GEN_DIR}/${EXECUTABLE}_test_runner.c: mocks Makefile ${LIB_DIR}/libunity.so ${LIB_DIR}/libcmock.so
|
||||
ruby ${UNITY_BIN_DIR}/generate_test_runner.rb ${CONFIGURATION_DIR}/project.yml ${ROOT_DIR}/tests/example/hello_world_test.c $@
|
||||
@echo "\n"
|
||||
|
||||
|
||||
${BIN_DIR}/${EXECUTABLE}: ${GEN_DIR}/${EXECUTABLE}_test_runner.c ${TEST_FILES} ${SOURCE_FILES} ${LIB_DIR}/libcommon.so
|
||||
${CC} --coverage -o $@ $+ ${INCLUDE_DIR} -L ${LIB_DIR} -Wl,-rpath,${LIB_DIR} -lunity -lcmock -lcommon
|
||||
@echo "\n"
|
||||
|
||||
clean:
|
||||
@rm -rf build
|
||||
@rm -f *.gcda *.gcno
|
||||
@echo "Cleaned...\n"
|
||||
|
||||
run: ${BIN_DIR}/${EXECUTABLE}
|
||||
${BIN_DIR}/${EXECUTABLE}
|
||||
|
||||
coverage: run
|
||||
lcov --base-directory . --directory . -c --rc lcov_branch_coverage=1 --rc genhtml_branch_coverage=1 -o build/cmock_test.info
|
||||
genhtml build/cmock_test.info --branch-coverage --output-directory build/coverage_html
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue