1
0
notamon/run-java-tests.sh

77 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/env bash
compile_contracts() {
pushd rust 1> /dev/null || exit
if [ "$coverage" = true ]; then
cargo partisia-contract build --release --coverage
else
cargo partisia-contract build --release
fi
popd 1> /dev/null || exit
}
run_java_tests() {
if [ "$coverage" = true ]; then
test_with_coverage
else
test_without_coverage
fi
}
merge_and_report() {
pushd contract-java-test 1> /dev/null || exit
# Determine profraw files
find ./target/coverage/profraw/ -type f -name '*.profraw' > ./target/coverage/all-profraw-files
# Merge profraw
rust-profdata merge -sparse --input-files=./target/coverage/all-profraw-files --output=target/coverage/java_test.profdata
# Generate report
find ../rust/target/wasm32-unknown-unknown/release/ -type f -executable -print |
sed "s/^/--object /" |
xargs rust-cov show --ignore-filename-regex=".cargo\.*" --ignore-filename-regex="target\.*" \
--instr-profile=target/coverage/java_test.profdata --Xdemangler=rustfilt --format="html" \
--output-dir=target/coverage/html
popd 1> /dev/null || exit
}
test_with_coverage() {
# Run contract tests
pushd contract-java-test 1> /dev/null || exit
mvn test -Dcoverage
popd 1> /dev/null || exit
merge_and_report
}
test_without_coverage() {
# Run contract tests
pushd contract-java-test 1> /dev/null || exit
mvn test
popd 1> /dev/null || exit
}
help() {
echo "usage: ./run-java-tests.sh [-b][-c][-h]"
echo "-b Build the contracts before running tests (if coverage is enabled also generates the instrumented executables)"
echo "-c Test with coverage enabled"
echo "-h Print this help message"
exit 0
}
while getopts :bch flag; do
case "${flag}" in
b) build=true ;;
c) coverage=true ;;
h) help ;;
*) echo "Invalid option: -$flag." && help ;;
esac
done
if [ "$build" = true ]; then
compile_contracts
fi
run_java_tests