1# Taken from amazon-freertos repository
2cmake_minimum_required(VERSION 3.13)
3set(BINARY_DIR ${CMAKE_BINARY_DIR})
4# reset coverage counters
5execute_process(
6            COMMAND lcov --directory ${CMAKE_BINARY_DIR}
7                         --base-directory ${CMAKE_BINARY_DIR}
8                         --zerocounters
9
10            COMMAND mkdir -p  ${CMAKE_BINARY_DIR}/coverage
11        )
12# make the initial/baseline capture a zeroed out files
13execute_process( COMMAND lcov --directory ${CMAKE_BINARY_DIR}
14                         --base-directory ${CMAKE_BINARY_DIR}
15                         --initial
16                         --capture
17                         --rc lcov_branch_coverage=1
18                         --rc genhtml_branch_coverage=1
19                         --output-file=${CMAKE_BINARY_DIR}/base_coverage.info
20        )
21file(GLOB files "${CMAKE_BINARY_DIR}/bin/tests/*")
22
23set(REPORT_FILE ${CMAKE_BINARY_DIR}/utest_report.txt)
24file(WRITE ${REPORT_FILE} "")
25# execute all files in bin directory, gathering the output to show it in CI
26foreach(testname ${files})
27    get_filename_component(test
28                           ${testname}
29                           NAME_WLE
30            )
31    message("Running ${testname}")
32    execute_process(COMMAND ${testname} OUTPUT_FILE ${CMAKE_BINARY_DIR}/${test}_out.txt)
33
34    file(READ ${CMAKE_BINARY_DIR}/${test}_out.txt CONTENTS)
35    file(APPEND ${REPORT_FILE} "${CONTENTS}")
36endforeach()
37
38# generate Junit style xml output
39execute_process(COMMAND ruby
40    ${CMOCK_DIR}/vendor/unity/auto/parse_output.rb
41                    -xml ${REPORT_FILE}
42                    WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
43            )
44
45# capture data after running the tests
46execute_process(
47            COMMAND lcov --capture
48                         --rc lcov_branch_coverage=1
49                         --rc genhtml_branch_coverage=1
50                         --base-directory ${CMAKE_BINARY_DIR}
51                         --directory ${CMAKE_BINARY_DIR}
52                         --output-file ${CMAKE_BINARY_DIR}/second_coverage.info
53        )
54
55# combile baseline results (zeros) with the one after running the tests
56execute_process(
57            COMMAND lcov --base-directory ${CMAKE_BINARY_DIR}
58                         --directory ${CMAKE_BINARY_DIR}
59                         --add-tracefile ${CMAKE_BINARY_DIR}/base_coverage.info
60                         --add-tracefile ${CMAKE_BINARY_DIR}/second_coverage.info
61                         --output-file ${CMAKE_BINARY_DIR}/coverage.info
62                         --no-external
63                         --rc lcov_branch_coverage=1
64        )
65execute_process(
66            COMMAND genhtml --rc lcov_branch_coverage=1
67                            --branch-coverage
68                            --output-directory ${CMAKE_BINARY_DIR}/coverage
69                                ${CMAKE_BINARY_DIR}/coverage.info
70        )
71