| #!/bin/bash | 
 |  | 
 | # Copyright (c) 2009 The Chromium OS Authors. All rights reserved. | 
 | # Use of this source code is governed by a BSD-style license that can be | 
 | # found in the LICENSE file. | 
 |  | 
 | # Calculates the test-coverage percentage for non-test files in the | 
 | # update_engine directory. Requires a file 'app.info' to contain the | 
 | # results of running the unittests while collecting coverage data. | 
 |  | 
 | cat app.info | awk -F '[,:]' ' | 
 |  | 
 | BEGIN { OFS = ":"; } | 
 |  | 
 | /^SF:/{ FILEN = $2; } | 
 |  | 
 | /^end_of_record$/{ FILEN = ""; } | 
 |  | 
 | /^DA:/{ print FILEN, $2, $3; } | 
 |  | 
 | ' | sort | awk -F : ' | 
 | BEGIN { | 
 |   OFS = ":"; | 
 |   FILEN = ""; | 
 |   LINE = ""; | 
 |   HITS = 0; | 
 | } | 
 | { | 
 |   NEWFILEN = $1; | 
 |   NEWLINE = $2; | 
 |   if ((NEWFILEN == FILEN) && (NEWLINE == LINE)) { | 
 |     HITS += $3 | 
 |   } else { | 
 |     if (FILEN != "") { | 
 |       print FILEN, LINE, HITS; | 
 |     } | 
 |     FILEN = NEWFILEN; | 
 |     LINE = NEWLINE; | 
 |     HITS = $3; | 
 |   } | 
 | } | 
 | ' | grep '^.*\/trunk\/src\/platform\/update_engine\/' | \ | 
 | fgrep -v '_unittest.cc:' | \ | 
 | fgrep -v '/test_utils.' | \ | 
 | fgrep -v '/test_http_server.cc' | \ | 
 | fgrep -v '/testrunner.cc' | \ | 
 | fgrep -v '/mock' | \ | 
 | fgrep -v '.pb.cc' | \ | 
 | awk -F : ' | 
 |  | 
 | function printfile() { | 
 |   if (FNAME != "") | 
 |     printf "%-40s %4d / %4d: %5.1f%%\n", FNAME, FILE_GOOD_LINES, | 
 |         (FILE_BAD_LINES + FILE_GOOD_LINES), | 
 |         (FILE_GOOD_LINES * 100) / (FILE_BAD_LINES + FILE_GOOD_LINES); | 
 | } | 
 |  | 
 | BEGIN { | 
 |   FNAME = ""; | 
 |   FILE_BAD_LINES = 0; | 
 |   FILE_GOOD_LINES = 0; | 
 | } | 
 | { | 
 |   // calc filename | 
 |   ARR_SIZE = split($1, PARTS, "/"); | 
 |   NEWFNAME = PARTS[ARR_SIZE]; | 
 |   if (NEWFNAME != FNAME) { | 
 |     printfile(); | 
 |     FILE_BAD_LINES = 0; | 
 |     FILE_GOOD_LINES = 0; | 
 |     FNAME = NEWFNAME; | 
 |   } | 
 |   if ($3 == "0") { | 
 |     BAD_LINES += 1; | 
 |     FILE_BAD_LINES += 1; | 
 |   } else { | 
 |     GOOD_LINES += 1; | 
 |     FILE_GOOD_LINES += 1; | 
 |   } | 
 | } | 
 |  | 
 | END { | 
 |   printfile(); | 
 |   print "---\nSummary: tested " GOOD_LINES " / " (BAD_LINES + GOOD_LINES); | 
 |   printf( | 
 |     "Test coverage: %.1f%%\n", | 
 |     ((GOOD_LINES * 100) / (BAD_LINES + GOOD_LINES))); | 
 | } | 
 | ' |