xref: /aosp_15_r20/external/libchrome-gestures/tools/local_coverage_rate.sh (revision aed3e5085e770be5b69ce25295ecf6ddf906af95)
1#!/bin/bash
2
3# Copyright 2011 The ChromiumOS Authors
4# Use of this source code is governed by a BSD-style license that can be
5# found in the LICENSE file.
6
7# Calculates the test-coverage percentage for non-test files in the
8# gestures directory. Requires a file 'app.info' to contain the
9# results of running the unittests while collecting coverage data.
10
11cat $1 | awk -F '[,:]' '
12
13BEGIN { OFS = ":"; }
14
15/^SF:/{ FILEN = $2; }
16
17/^end_of_record$/{ FILEN = ""; }
18
19/^DA:/{ print FILEN, $2, $3; }
20
21' | sort | awk -F : '
22BEGIN {
23  OFS = ":";
24  FILEN = "";
25  LINE = "";
26  HITS = 0;
27}
28{
29  NEWFILEN = $1;
30  NEWLINE = $2;
31  if ((NEWFILEN == FILEN) && (NEWLINE == LINE)) {
32    HITS += $3
33  } else {
34    if (FILEN != "") {
35      print FILEN, LINE, HITS;
36    }
37    FILEN = NEWFILEN;
38    LINE = NEWLINE;
39    HITS = $3;
40  }
41}
42' | grep '^.*\/trunk\/src\/platform\/gestures\/' | \
43fgrep -v '_unittest.cc:' | \
44fgrep -v '/test_main.cc' | \
45fgrep -v '/mock' | \
46awk -F : '
47
48function printfile() {
49  if (FNAME != "")
50    printf "%-40s %4d / %4d: %5.1f%%\n", FNAME, FILE_GOOD_LINES,
51        (FILE_BAD_LINES + FILE_GOOD_LINES),
52        (FILE_GOOD_LINES * 100) / (FILE_BAD_LINES + FILE_GOOD_LINES);
53}
54
55BEGIN {
56  FNAME = "";
57  FILE_BAD_LINES = 0;
58  FILE_GOOD_LINES = 0;
59}
60{
61  // calc filename
62  ARR_SIZE = split($1, PARTS, "/");
63  NEWFNAME = PARTS[ARR_SIZE];
64  if (NEWFNAME != FNAME) {
65    printfile();
66    FILE_BAD_LINES = 0;
67    FILE_GOOD_LINES = 0;
68    FNAME = NEWFNAME;
69  }
70  if ($3 == "0") {
71    BAD_LINES += 1;
72    FILE_BAD_LINES += 1;
73  } else {
74    GOOD_LINES += 1;
75    FILE_GOOD_LINES += 1;
76  }
77}
78
79END {
80  printfile();
81  print "---\nSummary: tested " GOOD_LINES " / " (BAD_LINES + GOOD_LINES);
82  printf "Test coverage: %.1f%%\n", \
83    ((GOOD_LINES * 100) / (BAD_LINES + GOOD_LINES));
84}
85'
86