fortrangoingonforty/armfortas / d9be79c

Browse files

Add coverage measurement script (cargo-llvm-cov / tarpaulin)

Authored by mfwolffe <wolffemf@dukes.jmu.edu>
SHA
d9be79caa1246e6a8bb9a422be372b2a290b0d61
Parents
4a7578b
Tree
8a84e4b

1 changed file

StatusFile+-
A scripts/coverage.sh 46 0
scripts/coverage.shadded
@@ -0,0 +1,46 @@
1
+#!/usr/bin/env bash
2
+# Generate code coverage report for armfortas.
3
+#
4
+# Prerequisites (install one):
5
+#   cargo install cargo-llvm-cov      # recommended — uses LLVM instrumentation
6
+#   cargo install cargo-tarpaulin     # alternative — uses ptrace (Linux only)
7
+#
8
+# Usage:
9
+#   ./scripts/coverage.sh             # HTML report → target/llvm-cov/html/
10
+#   ./scripts/coverage.sh --summary   # terminal summary only
11
+#   ./scripts/coverage.sh --lcov      # LCOV format → target/llvm-cov/lcov.info
12
+
13
+set -euo pipefail
14
+cd "$(git rev-parse --show-toplevel)"
15
+
16
+MODE="${1:-}"
17
+
18
+if command -v cargo-llvm-cov &>/dev/null; then
19
+    echo "Using cargo-llvm-cov"
20
+
21
+    case "$MODE" in
22
+        --summary)
23
+            cargo llvm-cov --workspace --lib
24
+            ;;
25
+        --lcov)
26
+            cargo llvm-cov --workspace --lib --lcov --output-path target/llvm-cov/lcov.info
27
+            echo "LCOV report: target/llvm-cov/lcov.info"
28
+            ;;
29
+        *)
30
+            cargo llvm-cov --workspace --lib --html
31
+            echo "HTML report: target/llvm-cov/html/index.html"
32
+            ;;
33
+    esac
34
+
35
+elif command -v cargo-tarpaulin &>/dev/null; then
36
+    echo "Using cargo-tarpaulin"
37
+    cargo tarpaulin --workspace --lib --out Html --output-dir target/tarpaulin
38
+    echo "HTML report: target/tarpaulin/tarpaulin-report.html"
39
+
40
+else
41
+    echo "Error: no coverage tool found."
42
+    echo "Install one of:"
43
+    echo "  cargo install cargo-llvm-cov"
44
+    echo "  cargo install cargo-tarpaulin"
45
+    exit 1
46
+fi