blob: 93a6f5614a8f15740b3aee63395841a5737be2bb [file] [log] [blame]
#!/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