| adlr@google.com | 3defe6a | 2009-12-04 20:57:17 +0000 | [diff] [blame] | 1 | #!/bin/bash | 
 | 2 |  | 
 | 3 | # Copyright (c) 2009 The Chromium OS Authors. All rights reserved. | 
 | 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 | # update_engine directory. Requires a file 'app.info' to contain the | 
 | 9 | # results of running the unittests while collecting coverage data. | 
 | 10 |  | 
 | 11 | cat app.info | awk -F '[,:]' ' | 
 | 12 |  | 
 | 13 | BEGIN { OFS = ":"; } | 
 | 14 |  | 
 | 15 | /^SF:/{ FILEN = $2; } | 
 | 16 |  | 
 | 17 | /^end_of_record$/{ FILEN = ""; } | 
 | 18 |  | 
 | 19 | /^DA:/{ print FILEN, $2, $3; } | 
 | 20 |  | 
 | 21 | ' | sort | awk -F : ' | 
 | 22 | BEGIN { | 
 | 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\/update_engine\/' | \ | 
 | 43 | fgrep -v '_unittest.cc:' | \ | 
 | 44 | fgrep -v '/test_utils.' | \ | 
 | 45 | fgrep -v '/test_http_server.cc' | \ | 
 | 46 | fgrep -v '/testrunner.cc' | \ | 
 | 47 | fgrep -v '/mock' | \ | 
 | 48 | fgrep -v '.pb.cc' | \ | 
 | 49 | awk -F : ' | 
 | 50 |  | 
 | 51 | function printfile() { | 
 | 52 |   if (FNAME != "") | 
 | 53 |     printf "%-40s %4d / %4d: %5.1f%%\n", FNAME, FILE_GOOD_LINES, | 
 | 54 |         (FILE_BAD_LINES + FILE_GOOD_LINES), | 
 | 55 |         (FILE_GOOD_LINES * 100) / (FILE_BAD_LINES + FILE_GOOD_LINES); | 
 | 56 | } | 
 | 57 |  | 
 | 58 | BEGIN { | 
 | 59 |   FNAME = ""; | 
 | 60 |   FILE_BAD_LINES = 0; | 
 | 61 |   FILE_GOOD_LINES = 0; | 
 | 62 | } | 
 | 63 | { | 
 | 64 |   // calc filename | 
 | 65 |   ARR_SIZE = split($1, PARTS, "/"); | 
 | 66 |   NEWFNAME = PARTS[ARR_SIZE]; | 
 | 67 |   if (NEWFNAME != FNAME) { | 
 | 68 |     printfile(); | 
 | 69 |     FILE_BAD_LINES = 0; | 
 | 70 |     FILE_GOOD_LINES = 0; | 
 | 71 |     FNAME = NEWFNAME; | 
 | 72 |   } | 
 | 73 |   if ($3 == "0") { | 
 | 74 |     BAD_LINES += 1; | 
 | 75 |     FILE_BAD_LINES += 1; | 
 | 76 |   } else { | 
 | 77 |     GOOD_LINES += 1; | 
 | 78 |     FILE_GOOD_LINES += 1; | 
 | 79 |   } | 
 | 80 | } | 
 | 81 |  | 
 | 82 | END { | 
 | 83 |   printfile(); | 
 | 84 |   print "---\nSummary: tested " GOOD_LINES " / " (BAD_LINES + GOOD_LINES); | 
| Gilad Arnold | ab3bb45 | 2012-05-22 09:08:12 -0700 | [diff] [blame] | 85 |   printf( | 
 | 86 |     "Test coverage: %.1f%%\n", | 
 | 87 |     ((GOOD_LINES * 100) / (BAD_LINES + GOOD_LINES))); | 
| adlr@google.com | 3defe6a | 2009-12-04 20:57:17 +0000 | [diff] [blame] | 88 | } | 
 | 89 | ' |