aboutsummaryrefslogtreecommitdiff
path: root/contrib/coverage-diff.sh
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2026-03-27 11:00:01 -0700
committerJunio C Hamano <gitster@pobox.com>2026-03-27 11:00:01 -0700
commitd1f07dd50087bef18246feffb963d73b23e2cdd6 (patch)
tree818b60e53f48bf6112eb0e834ef63a777f83de6b /contrib/coverage-diff.sh
parentebd8fa7e1291e4f82992db763e271ca261dd750b (diff)
parent671df48df895fdf259b48a7f90b70b7c75fc4059 (diff)
downloadgit-d1f07dd50087bef18246feffb963d73b23e2cdd6.tar.xz
Merge branch 'ps/build-tweaks'
Tweak the build infrastructure by moving tools around. * ps/build-tweaks: meson: precompile "git-compat-util.h" meson: compile compatibility sources separately git-compat-util.h: move warning infra to prepare for PCHs builds: move build scripts into "tools/" contrib: move "update-unicode.sh" script into "tools/" contrib: move "coverage-diff.sh" script into "tools/" contrib: move "coccinelle/" directory into "tools/" Introduce new "tools/" directory
Diffstat (limited to 'contrib/coverage-diff.sh')
-rwxr-xr-xcontrib/coverage-diff.sh103
1 files changed, 0 insertions, 103 deletions
diff --git a/contrib/coverage-diff.sh b/contrib/coverage-diff.sh
deleted file mode 100755
index 6ce9603568..0000000000
--- a/contrib/coverage-diff.sh
+++ /dev/null
@@ -1,103 +0,0 @@
-#!/bin/sh
-
-# Usage: Run 'contrib/coverage-diff.sh <version1> <version2>' from source-root
-# after running
-#
-# make coverage-test
-# make coverage-report
-#
-# while checked out at <version2>. This script combines the *.gcov files
-# generated by the 'make' commands above with 'git diff <version1> <version2>'
-# to report new lines that are not covered by the test suite.
-
-V1=$1
-V2=$2
-
-diff_lines () {
- perl -e '
- my $line_num;
- while (<>) {
- # Hunk header? Grab the beginning in postimage.
- if (/^@@ -\d+(?:,\d+)? \+(\d+)(?:,\d+)? @@/) {
- $line_num = $1;
- next;
- }
-
- # Have we seen a hunk? Ignore "diff --git" etc.
- next unless defined $line_num;
-
- # Deleted line? Ignore.
- if (/^-/) {
- next;
- }
-
- # Show only the line number of added lines.
- if (/^\+/) {
- print "$line_num\n";
- }
- # Either common context or added line appear in
- # the postimage. Count it.
- $line_num++;
- }
- '
-}
-
-files=$(git diff --name-only "$V1" "$V2" -- \*.c)
-
-# create empty file
->coverage-data.txt
-
-for file in $files
-do
- git diff "$V1" "$V2" -- "$file" |
- diff_lines |
- sort >new_lines.txt
-
- if ! test -s new_lines.txt
- then
- continue
- fi
-
- hash_file=$(echo $file | sed "s/\//\#/")
-
- if ! test -s "$hash_file.gcov"
- then
- continue
- fi
-
- sed -ne '/#####:/{
- s/ #####://
- s/:.*//
- s/ //g
- p
- }' "$hash_file.gcov" |
- sort >uncovered_lines.txt
-
- comm -12 uncovered_lines.txt new_lines.txt |
- sed -e 's/$/\)/' -e 's/^/ /' >uncovered_new_lines.txt
-
- grep -q '[^[:space:]]' <uncovered_new_lines.txt &&
- echo $file >>coverage-data.txt &&
- git blame -s "$V2" -- "$file" |
- sed 's/\t//g' |
- grep -f uncovered_new_lines.txt >>coverage-data.txt &&
- echo >>coverage-data.txt
-
- rm -f new_lines.txt uncovered_lines.txt uncovered_new_lines.txt
-done
-
-cat coverage-data.txt
-
-echo "Commits introducing uncovered code:"
-
-commit_list=$(awk '/^[0-9a-f]{7,}/ { print $1 }' coverage-data.txt | sort -u)
-
-(
- for commit in $commit_list
- do
- git log --no-decorate --pretty=format:'%an %h: %s' -1 $commit
- echo
- done
-) | sort
-
-rm coverage-data.txt