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