From 98e2c644f26bea2c6d0345a0d71511944b8d7e20 Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Fri, 19 Sep 2014 14:40:57 -0700 Subject: Add acov for coverage gathering/reporting. acov is a tool for gathering coverage information from a device and generating a report from that information. To use: 1. sudo apt-get install lcov 2. Build application/library with coverage information. 3. Push the new binaries to the device. 4. Run tests with the additional environment variables: * GCOV_PREFIX=/data/local/tmp/gcov * GCOV_PREFIX_STRIP=`echo $(ANDROID_BUILD_TOP) | grep -o / | wc -l` 5. Run `acov`. acov will pull all coverage information from the device, push it to the right directories, run lcov, and display the coverage report (currently by opening it in your browser). Bug: 10134489 Change-Id: I604c8ec2e9fa5d23ee9c279b515ff6cfc497dfa7 --- scripts/acov | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100755 scripts/acov (limited to 'scripts') diff --git a/scripts/acov b/scripts/acov new file mode 100755 index 000000000..d6095a881 --- /dev/null +++ b/scripts/acov @@ -0,0 +1,46 @@ +#!/bin/sh +# Copyright (C) 2014 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# +# acov is a tool for gathering coverage information from a device and generating +# a report from that information. To use: +# +# 1. sudo apt-get install lcov +# 2. Build application/library with coverage information. +# 3. Push the new binaries to the device. +# 4. Run tests with the additional environment variables: +# * GCOV_PREFIX=/data/local/tmp/gcov +# * GCOV_PREFIX_STRIP=`echo $(ANDROID_BUILD_TOP) | grep -o / | wc -l` +# 5. Run `acov`. +# +# acov will pull all coverage information from the device, push it to the right +# directories, run lcov, and display the coverage report (currently by opening +# it in your browser). +# + +which lcov +if [ $? -ne 0 ]; then + echo 'lcov not found: running `sudo apt-get install lcov`' + sudo apt-get install lcov +fi + +cd $ANDROID_BUILD_TOP +FILE=cov.info +DIR=$(mktemp -d covreport-XXXXXX) +adb pull /data/local/tmp/gcov +lcov -c -d $ANDROID_PRODUCT_OUT -o $DIR/$FILE +echo "Generating coverage report at $DIR" +genhtml -q -o $DIR $DIR/$FILE +xdg-open $DIR/index.html >/dev/null -- cgit v1.2.3