Blame test/generate-gcov-report.sh

Packit Service b8eee4
#!/bin/bash -e
Packit Service b8eee4
Packit Service b8eee4
if [[ $# -lt 2 ]]; then
Packit Service b8eee4
    echo "Usage: ./generate-gcov-report.sh <rel-target-dir> <srcdir> [<srcdir> ... ]"
Packit Service b8eee4
    exit 1
Packit Service b8eee4
fi
Packit Service b8eee4
Packit Service b8eee4
target_dir=$1
Packit Service b8eee4
shift
Packit Service b8eee4
source_dirs=$*
Packit Service b8eee4
Packit Service b8eee4
if [[ "${target_dir:0:1}" != '/' ]]; then
Packit Service b8eee4
    target_dir="$PWD/$target_dir"
Packit Service b8eee4
fi
Packit Service b8eee4
summary_file="$target_dir/summary.txt"
Packit Service b8eee4
Packit Service b8eee4
mkdir -p "$target_dir"
Packit Service b8eee4
rm -f "$target_dir"/*.gcov
Packit Service b8eee4
Packit Service b8eee4
for dir in $source_dirs; do
Packit Service b8eee4
	pushd "$dir" > /dev/null
Packit Service b8eee4
	for file in *.c; do
Packit Service b8eee4
		find ./ -name "*${file/\.c/.gcda}" -exec gcov {} \; > /dev/null
Packit Service b8eee4
	done
Packit Service b8eee4
	find ./ -name "*.gcov" \! -path "*/`basename "$target_dir"`/*" -exec mv {} "$target_dir" \;
Packit Service b8eee4
	popd > /dev/null
Packit Service b8eee4
done
Packit Service b8eee4
Packit Service b8eee4
echo "========== coverage report ========" > "$summary_file"
Packit Service b8eee4
for file in "$target_dir"/*.gcov; do
Packit Service b8eee4
	total=`grep -v " -:" "$file" | wc -l`
Packit Service b8eee4
	missing=`grep "#####" "$file" | wc -l`
Packit Service b8eee4
	hit=$((total - missing));
Packit Service b8eee4
	percent=$((($hit * 100)/$total))
Packit Service b8eee4
	fname=`basename "$file"`
Packit Service b8eee4
	printf "%-32s total lines: %4s not tested: %4s (%3s%%)\n" "$fname" "$total" "$missing" "$percent">> "$summary_file"
Packit Service b8eee4
done
Packit Service b8eee4
echo "========== =============== ========" >> "$summary_file"