Coverage for test binaries is excluded.
Summary: Coverage for test binaries is excluded. Reviewers: teon.banek Reviewed By: teon.banek Subscribers: pullbot, buda Differential Revision: https://phabricator.memgraph.io/D161
This commit is contained in:
parent
f304dfef28
commit
08c43e7c87
26
coverage
26
coverage
@ -1,12 +1,12 @@
|
||||
#!/bin/bash
|
||||
|
||||
working_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
|
||||
# coverage applies only on unit tests
|
||||
unit_test_dir='build/tests/unit'
|
||||
coverage_dir='build/coverage'
|
||||
coverage_file='coverage.info'
|
||||
|
||||
|
||||
# execute unit tests to generate coverage files
|
||||
pushd ${unit_test_dir}
|
||||
ctest -R unit
|
||||
@ -14,18 +14,39 @@ popd
|
||||
|
||||
# generate coverage info files for each unit test binary
|
||||
# + exclude stl, tests and libs
|
||||
cd ${working_dir}
|
||||
binary_path="${unit_test_dir}/CMakeFiles"
|
||||
all_coverage_info=""
|
||||
for dir in $binary_path/*.dir; do
|
||||
pushd ${dir}
|
||||
lcov --gcov-tool ${working_dir}/llvm-gcov -c -d . -o ${coverage_file}
|
||||
lcov -r ${coverage_file} '/usr/*' '*/libs/*' '*/tests/*' -o ${coverage_file}
|
||||
test_coverage_file=${working_dir}/${dir}/${coverage_file}
|
||||
if [ -f ${coverage_file} ]; then
|
||||
if [ -s ${coverage_file} ]; then
|
||||
char_no=`wc -c ${coverage_file} | awk '{print $1}'`
|
||||
if [ "${char_no}" -eq "0" ]; then
|
||||
echo "PASS: ${test_coverage_file} contains 0 chars."
|
||||
popd
|
||||
continue
|
||||
fi
|
||||
else
|
||||
echo "PASS: ${test_coverage_file} is empty."
|
||||
popd
|
||||
continue
|
||||
fi
|
||||
else
|
||||
echo "PASS: ${test_coverage_file} doesn't exist."
|
||||
popd
|
||||
continue
|
||||
fi
|
||||
all_coverage_info+=" -a ${working_dir}/${dir}/${coverage_file}"
|
||||
popd
|
||||
done
|
||||
|
||||
# merge all info files into total coverage info and generate html
|
||||
echo ${all_coverage_info}
|
||||
cd ${working_dir}
|
||||
mkdir -p ${coverage_dir}
|
||||
pushd ${coverage_dir}
|
||||
lcov ${all_coverage_info} -o ${coverage_file}
|
||||
@ -33,5 +54,6 @@ genhtml ${coverage_file}
|
||||
popd
|
||||
|
||||
# generage coberatura xml file (compatible with Jenkins)
|
||||
cd ${working_dir}
|
||||
python libs/lcov-to-cobertura-xml/lcov_cobertura/lcov_cobertura.py \
|
||||
${coverage_dir}/${coverage_file} -o ${coverage_dir}/coverage.xml
|
||||
|
@ -20,7 +20,7 @@ foreach(test_cpp ${test_type_cpps})
|
||||
add_executable(${target_name} ${test_cpp})
|
||||
set_property(TARGET ${target_name} PROPERTY CXX_STANDARD ${cxx_standard})
|
||||
if(${TEST_COVERAGE})
|
||||
set_target_properties(${target_name} PROPERTIES COMPILE_FLAGS "-g -O0 -Wall --coverage -fprofile-arcs -ftest-coverage")
|
||||
set_target_properties(${target_name} PROPERTIES COMPILE_FLAGS "-g -O0 -Wall -fprofile-arcs -ftest-coverage")
|
||||
set_target_properties(${target_name} PROPERTIES LINK_FLAGS "--coverage -fprofile-arcs -ftest-coverage")
|
||||
endif()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user