Index: src/platform/update_engine/local_coverage_rate.sh |
diff --git a/src/platform/update_engine/local_coverage_rate.sh b/src/platform/update_engine/local_coverage_rate.sh |
new file mode 100755 |
index 0000000000000000000000000000000000000000..33c06a70fa35dcbb6090584aca493a11cacc6437 |
--- /dev/null |
+++ b/src/platform/update_engine/local_coverage_rate.sh |
@@ -0,0 +1,87 @@ |
+#!/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)); |
+} |
+' |