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