77 lines
1.9 KiB
Bash
Executable File
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
|