| #!/bin/bash | |
| # Copyright 2009 The ChromiumOS Authors | |
| # 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))); | |
| } | |
| ' |