[bazel] Generate HTML coverage reports
1. Add `lcov` to `apt-requirements.txt` to generate HTML coverage reports.
2. Set up the coverage options in `.bazelrc`.
3. Write a script to generate coverage and emit an HTML report.
This PR does not add coverage support for on-chip tests; that will be added
in a follow-up PR.
Signed-off-by: Chris Frantz <cfrantz@google.com>
diff --git a/rules/scripts/html_coverage_report.template.sh b/rules/scripts/html_coverage_report.template.sh
new file mode 100644
index 0000000..880abcc
--- /dev/null
+++ b/rules/scripts/html_coverage_report.template.sh
@@ -0,0 +1,22 @@
+#!/usr/bin/env bash
+#
+# Copyright lowRISC contributors.
+# Licensed under the Apache License, Version 2.0, see LICENSE for details.
+# SPDX-License-Identifier: Apache-2.0
+
+set -e
+
+if [[ $# == 0 ]]; then
+ ARGS=("//...")
+else
+ ARGS="$@"
+fi
+
+if ! cd "$BUILD_WORKSPACE_DIRECTORY"; then
+ echo "Unable to change to workspace (BUILD_WORKSPACE_DIRECTORY: ${BUILD_WORKSPACE_DIRECTORY})"
+ exit 1
+fi
+
+bazel coverage "${ARGS[@]}"
+genhtml -o bazel-out/_coverage/ bazel-out/_coverage/_coverage_report.dat
+echo "Coverage report: file://$(pwd)/bazel-out/_coverage/index.html"