node-fontnik/scripts/coverage.sh
rafay.khan ddffc4f398
Build and package binaries with prebuildify instead of node-pre-gyp (#184)
* Use prebuildify to package binaries

* Deprecate node-pre-gyp
2023-04-24 12:34:08 +03:00

30 lines
1.0 KiB
Bash
Executable File

#!/usr/bin/env bash
set -eu
set -o pipefail
# http://clang.llvm.org/docs/UsersManual.html#profiling-with-instrumentation
# https://www.bignerdranch.com/blog/weve-got-you-covered/
# automatically setup environment
./scripts/setup.sh --config local.env
source local.env
make clean
export CXXFLAGS="-fprofile-instr-generate -fcoverage-mapping"
export LDFLAGS="-fprofile-instr-generate"
mason install llvm-cov ${MASON_LLVM_RELEASE}
mason link llvm-cov ${MASON_LLVM_RELEASE}
make debug
rm -f *profraw
rm -f *gcov
rm -f *profdata
LLVM_PROFILE_FILE="code-%p.profraw" npm test
CXX_MODULE="./lib/binding/fontnik.node"
llvm-profdata merge -output=code.profdata code-*.profraw
llvm-cov report ${CXX_MODULE} -instr-profile=code.profdata -use-color
llvm-cov show ${CXX_MODULE} -instr-profile=code.profdata src/*.cpp -filename-equivalence -use-color
llvm-cov show ${CXX_MODULE} -instr-profile=code.profdata src/*.cpp -filename-equivalence -use-color --format html > /tmp/coverage.html
echo "open /tmp/coverage.html for HTML version of this report"