aboutsummaryrefslogtreecommitdiff
path: root/scripts/test/cov-exclude
blob: 5cb9b1282d7e96e665bc289a229d21b6e318df10 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/perl -p -i

use warnings;
use strict;
our $excluding;

# This script is meant to post-process a .gcov file for an input source
# that was annotated with LCOV_EXCL_START, LCOV_EXCL_STOP, and LCOV_EXCL_LINE
# entries.  It doesn't understand the LCOV_EXCL_BR* variations.
#
# It replaces unreached reached lines with x:, and reached excluded lines
# with !!!num:.

BEGIN { our $excluding = 0; }

if (m/LCOV_EXCL_START/) {
  $excluding = 1;
}
if ($excluding and m/LCOV_EXCL_STOP/) {
  $excluding = 0;
}

my $exclude_this = (m/LCOV_EXCL_LINE/);

if ($excluding or $exclude_this) {
  s{^\s*\#\#+:}{        x:};
  s{^   (\s*)(\d+):}{$1!!!$2:};
}

if (eof and $excluding) {
    warn "Runaway LCOV_EXCL_START in $ARGV";
    $excluding = 0;
}