| #!/bin/bash |
| |
| # Copyright (c) 2012 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. |
| |
| # Builds, runs unit tests, then collects and processes coverage data for update |
| # engine binaries. In the case where lcov/genhtml are missing, it will just |
| # build and run the unit tests. |
| |
| DO_COVERAGE=$(which lcov genhtml > /dev/null 2>&1 && echo 1) |
| |
| set -ex |
| |
| ./build debug=1 |
| if [[ $DO_COVERAGE ]]; then |
| lcov --directory . --zerocounters |
| fi |
| ./run_unittests |
| if [[ $DO_COVERAGE ]]; then |
| lcov --directory . --capture --output-file app.info |
| |
| # We try to use genhtml with --no-function-coverage, if it is supported. The |
| # problem w/ function coverage is that every template instantiation of a |
| # method counts as a different method, so if we instantiate a method twice, |
| # once for testing and once for prod, the method is tested, but it shows only |
| # 50% function coverage b/c it thinks we didn't test the prod version. |
| GENHTML_NO_FUNC_COV=$(genhtml --help | grep -q function-coverage && |
| echo --no-function-coverage) |
| genhtml $GENHTML_NO_FUNC_CONV --output-directory html app.info |
| ./local_coverage_rate |
| fi |