summary refs log tree commit diff
path: root/pkgs/build-support/setup-hooks/make-coverage-analysis-report.sh
blob: 9108b4c50355c96eeb8a539b1fa0c868f128e45f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
postPhases+=" coverageReportPhase"

coverageReportPhase() {
    lcov --directory . --capture --output-file app.info
    set -o noglob
    lcov --remove app.info ${lcovFilter:-"/nix/store/*"} > app2.info
    set +o noglob
    mv app2.info app.info

    mkdir -p $out/coverage
    genhtml app.info $lcovExtraTraceFiles -o $out/coverage > log

    # Grab the overall coverage percentage so that Hydra can plot it over time.
    mkdir -p $out/nix-support
    lineCoverage="$(sed 's/.*lines\.*: \([0-9\.]\+\)%.*/\1/; t ; d' log)"
    functionCoverage="$(sed 's/.*functions\.*: \([0-9\.]\+\)%.*/\1/; t ; d' log)"
    if [ -z "$lineCoverage" -o -z "$functionCoverage" ]; then
        echo "failed to get coverage statistics"
        exit 1
    fi
    echo "lineCoverage $lineCoverage %" >> $out/nix-support/hydra-metrics
    echo "functionCoverage $functionCoverage %" >> $out/nix-support/hydra-metrics

    echo "report coverage $out/coverage" >> $out/nix-support/hydra-build-products
}