diff options
| author | Kostya <mail@sartin.in> | 2026-08-20 10:24:22 +0300 |
|---|---|---|
| committer | Kostya <mail@sartin.in> | 2026-08-20 10:24:22 +0300 |
| commit | 8089a72ef6065a2a01304aa1cc251d9950731527 (patch) | |
| tree | 0e6f7869ab75ff03f9a3353dde3405fdab26f2be /tools | |
| parent | cc772de4f973bcfba5d99dbfcfe80513d3261b0c (diff) | |
| download | guess-market-8089a72ef6065a2a01304aa1cc251d9950731527.tar.gz guess-market-8089a72ef6065a2a01304aa1cc251d9950731527.tar.xz guess-market-8089a72ef6065a2a01304aa1cc251d9950731527.zip | |
Add JaCoCo coverage reporting to test.sh
Vendor jacocoagent.jar/jacococli.jar under lib/jacoco/ (excluded from
the shipped classpath), attach the agent during test runs, and
generate an HTML+XML report into build/coverage after tests pass.
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/_util.sh | 2 | ||||
| -rw-r--r-- | tools/test.sh | 20 |
2 files changed, 20 insertions, 2 deletions
diff --git a/tools/_util.sh b/tools/_util.sh index fa7e3b5..fde4797 100644 --- a/tools/_util.sh +++ b/tools/_util.sh | |||
| @@ -29,7 +29,7 @@ if [ ! -x "$JAR" ]; then | |||
| 29 | fi | 29 | fi |
| 30 | 30 | ||
| 31 | is_shippable_jar() { | 31 | is_shippable_jar() { |
| 32 | case "$1" in *-sources.jar | *-javadoc.jar) return 1 ;; *) return 0 ;; esac | 32 | case "$1" in *-sources.jar | *-javadoc.jar | lib/jacoco/*) return 1 ;; *) return 0 ;; esac |
| 33 | } | 33 | } |
| 34 | LIBCP="" | 34 | LIBCP="" |
| 35 | for j in lib/*/*.jar; do | 35 | for j in lib/*/*.jar; do |
diff --git a/tools/test.sh b/tools/test.sh index 4eaeb82..e867871 100644 --- a/tools/test.sh +++ b/tools/test.sh | |||
| @@ -35,7 +35,7 @@ echo "=== Running tests ===" | |||
| 35 | 35 | ||
| 36 | TEST_CP="$PROD_CP${SEP}build/test-classes" | 36 | TEST_CP="$PROD_CP${SEP}build/test-classes" |
| 37 | for j in lib/*/*.jar; do | 37 | for j in lib/*/*.jar; do |
| 38 | case "$j" in *junit-platform-console-standalone*) continue ;; esac | 38 | case "$j" in *junit-platform-console-standalone* | lib/jacoco/*) continue ;; esac |
| 39 | TEST_CP="$TEST_CP$SEP$j" | 39 | TEST_CP="$TEST_CP$SEP$j" |
| 40 | done | 40 | done |
| 41 | 41 | ||
| @@ -43,5 +43,23 @@ AGENT_JAR=$(ls lib/mockito/byte-buddy-agent-*.jar 2>/dev/null | head -n 1) | |||
| 43 | AGENT_ARG="" | 43 | AGENT_ARG="" |
| 44 | [ -n "$AGENT_JAR" ] && AGENT_ARG="-javaagent:$AGENT_JAR" | 44 | [ -n "$AGENT_JAR" ] && AGENT_ARG="-javaagent:$AGENT_JAR" |
| 45 | 45 | ||
| 46 | JACOCO_AGENT=lib/jacoco/jacocoagent.jar | ||
| 47 | JACOCO_CLI=lib/jacoco/jacococli.jar | ||
| 48 | mkdir -p build/coverage | ||
| 49 | [ -n "$AGENT_ARG" ] && AGENT_ARG="$AGENT_ARG " | ||
| 50 | AGENT_ARG="$AGENT_ARG-javaagent:$JACOCO_AGENT=destfile=build/coverage/jacoco.exec" | ||
| 51 | |||
| 46 | java $AGENT_ARG -jar "$JUNIT_JAR" execute \ | 52 | java $AGENT_ARG -jar "$JUNIT_JAR" execute \ |
| 47 | --class-path "$TEST_CP" --scan-class-path --details=summary | 53 | --class-path "$TEST_CP" --scan-class-path --details=summary |
| 54 | |||
| 55 | echo "=== Generating coverage report ===" | ||
| 56 | CLASSFILES="" | ||
| 57 | SOURCEFILES="" | ||
| 58 | for m in $MODULES; do | ||
| 59 | CLASSFILES="$CLASSFILES --classfiles build/classes/$m" | ||
| 60 | [ -d "$m/src/main/java" ] && SOURCEFILES="$SOURCEFILES --sourcefiles $m/src/main/java" | ||
| 61 | done | ||
| 62 | java -jar "$JACOCO_CLI" report build/coverage/jacoco.exec \ | ||
| 63 | $CLASSFILES $SOURCEFILES \ | ||
| 64 | --html build/coverage/html --xml build/coverage/jacoco.xml | ||
| 65 | echo " build/coverage/html/index.html" | ||