11fb04e25405d5ec75aea4a099819d6feca348ff6mtklein@google.com#!/bin/sh
21fb04e25405d5ec75aea4a099819d6feca348ff6mtklein@google.com
31fb04e25405d5ec75aea4a099819d6feca348ff6mtklein@google.com# Run from Skia trunk something like this:
41fb04e25405d5ec75aea4a099819d6feca348ff6mtklein@google.com#   $ tools/coverage.sh tests
51fb04e25405d5ec75aea4a099819d6feca348ff6mtklein@google.com# or
61fb04e25405d5ec75aea4a099819d6feca348ff6mtklein@google.com#   $ tools/coverage.sh gm
71fb04e25405d5ec75aea4a099819d6feca348ff6mtklein@google.com
81fb04e25405d5ec75aea4a099819d6feca348ff6mtklein@google.comset -x
91fb04e25405d5ec75aea4a099819d6feca348ff6mtklein@google.comset -e
101fb04e25405d5ec75aea4a099819d6feca348ff6mtklein@google.com
111fb04e25405d5ec75aea4a099819d6feca348ff6mtklein@google.comCOMMAND=$@
121fb04e25405d5ec75aea4a099819d6feca348ff6mtklein@google.comGCOV=$(realpath tools/gcov_shim)
131fb04e25405d5ec75aea4a099819d6feca348ff6mtklein@google.com
141fb04e25405d5ec75aea4a099819d6feca348ff6mtklein@google.comQUIET=-q
151fb04e25405d5ec75aea4a099819d6feca348ff6mtklein@google.com
161fb04e25405d5ec75aea4a099819d6feca348ff6mtklein@google.com# Build all of Skia.
171fb04e25405d5ec75aea4a099819d6feca348ff6mtklein@google.com./gyp_skia
181fb04e25405d5ec75aea4a099819d6feca348ff6mtklein@google.comninja -C out/Coverage
191fb04e25405d5ec75aea4a099819d6feca348ff6mtklein@google.com
201fb04e25405d5ec75aea4a099819d6feca348ff6mtklein@google.com# Generate a zero-baseline so files not covered by $COMMAND will still show up in the report.
211fb04e25405d5ec75aea4a099819d6feca348ff6mtklein@google.com# This reads the .gcno files that are created at compile time.
221fb04e25405d5ec75aea4a099819d6feca348ff6mtklein@google.comlcov $QUIET --gcov-tool=$GCOV -c -b out/Coverage -d out/Coverage -o /tmp/baseline -i
231fb04e25405d5ec75aea4a099819d6feca348ff6mtklein@google.com
241fb04e25405d5ec75aea4a099819d6feca348ff6mtklein@google.com# Running the binary generates the real coverage information, the .gcda files.
251fb04e25405d5ec75aea4a099819d6feca348ff6mtklein@google.comout/Coverage/$COMMAND
261fb04e25405d5ec75aea4a099819d6feca348ff6mtklein@google.comlcov $QUIET --gcov-tool=$GCOV -c -b out/Coverage -d out/Coverage -o /tmp/coverage
271fb04e25405d5ec75aea4a099819d6feca348ff6mtklein@google.com
281fb04e25405d5ec75aea4a099819d6feca348ff6mtklein@google.comlcov $QUIET -a /tmp/baseline -a /tmp/coverage -o /tmp/merged
291fb04e25405d5ec75aea4a099819d6feca348ff6mtklein@google.com
30a1a097ee814d05a92487d85db8ad02e1d852fd6fcommit-bot@chromium.orggenhtml $QUIET /tmp/merged --legend -o out/Coverage/report
311fb04e25405d5ec75aea4a099819d6feca348ff6mtklein@google.comxdg-open out/Coverage/report/index.html
32