# Taken from amazon-freertos repository cmake_minimum_required(VERSION 3.13) set(BINARY_DIR ${CMAKE_BINARY_DIR}) # reset coverage counters execute_process( COMMAND lcov --directory ${CMAKE_BINARY_DIR} --base-directory ${CMAKE_BINARY_DIR} --zerocounters COMMAND mkdir -p ${CMAKE_BINARY_DIR}/coverage ) # make the initial/baseline capture a zeroed out files execute_process( COMMAND lcov --directory ${CMAKE_BINARY_DIR} --base-directory ${CMAKE_BINARY_DIR} --initial --capture --rc lcov_branch_coverage=1 --rc genhtml_branch_coverage=1 --output-file=${CMAKE_BINARY_DIR}/base_coverage.info ) file(GLOB files "${CMAKE_BINARY_DIR}/bin/tests/*") set(REPORT_FILE ${CMAKE_BINARY_DIR}/utest_report.txt) file(WRITE ${REPORT_FILE} "") # execute all files in bin directory, gathering the output to show it in CI foreach(testname ${files}) get_filename_component(test ${testname} NAME_WLE ) message("Running ${testname}") execute_process(COMMAND ${testname} OUTPUT_FILE ${CMAKE_BINARY_DIR}/${test}_out.txt) file(READ ${CMAKE_BINARY_DIR}/${test}_out.txt CONTENTS) file(APPEND ${REPORT_FILE} "${CONTENTS}") endforeach() # generate Junit style xml output execute_process(COMMAND ruby ${CMOCK_DIR}/vendor/unity/auto/parse_output.rb -xml ${REPORT_FILE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR} ) # capture data after running the tests execute_process( COMMAND lcov --capture --rc lcov_branch_coverage=1 --rc genhtml_branch_coverage=1 --base-directory ${CMAKE_BINARY_DIR} --directory ${CMAKE_BINARY_DIR} --output-file ${CMAKE_BINARY_DIR}/second_coverage.info ) # combile baseline results (zeros) with the one after running the tests execute_process( COMMAND lcov --base-directory ${CMAKE_BINARY_DIR} --directory ${CMAKE_BINARY_DIR} --add-tracefile ${CMAKE_BINARY_DIR}/base_coverage.info --add-tracefile ${CMAKE_BINARY_DIR}/second_coverage.info --output-file ${CMAKE_BINARY_DIR}/coverage.info --no-external --rc lcov_branch_coverage=1 ) execute_process( COMMAND genhtml --rc lcov_branch_coverage=1 --branch-coverage --output-directory ${CMAKE_BINARY_DIR}/coverage ${CMAKE_BINARY_DIR}/coverage.info )