Files
Ulf Wiger 53eaa3056a Add ASN.1-to-Java codegen and RLP codec for spend/signed tx subset.
Generate typed records from GajumaruChainObjects.asn, implement Asn1Rlp
and BasicEncoders matching Erlang static serialization, and add golden-vector
equivalence tests against gmser_chain_objects output.
2026-07-22 11:31:15 +02:00

40 lines
1.4 KiB
Bash
Executable File

#! /usr/bin/env bash
# Compile main + Asn1Rlp equivalence tests and run them.
# Prefers Homebrew OpenJDK when /usr/bin/java is a macOS stub.
set -euo pipefail
abs_dir="$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
project_dir="$(dirname "$abs_dir")"
if [[ -x /opt/homebrew/opt/openjdk/bin/javac ]]; then
export PATH="/opt/homebrew/opt/openjdk/bin:$PATH"
elif [[ -x /opt/homebrew/opt/openjdk@25/bin/javac ]]; then
export PATH="/opt/homebrew/opt/openjdk@25/bin:$PATH"
elif [[ -x /opt/homebrew/opt/openjdk@21/bin/javac ]]; then
export PATH="/opt/homebrew/opt/openjdk@21/bin:$PATH"
fi
if ! command -v javac >/dev/null || ! javac -version >/dev/null 2>&1; then
echo "No working JDK found (javac)." >&2
exit 1
fi
classes="$project_dir/build/classes"
test_classes="$project_dir/build/test-classes"
mkdir -p "$classes" "$test_classes"
echo "Using $(javac -version 2>&1)"
# Portable source collection (bash 3.2 has no mapfile)
main_sources=$(find "$project_dir/src/main/java" -name '*.java' | sort)
# shellcheck disable=SC2086
javac --release 21 -d "$classes" $main_sources
test_sources=$(find "$project_dir/src/test/java" -name '*Asn1Rlp*.java' | sort)
# shellcheck disable=SC2086
javac --release 21 -cp "$classes" -d "$test_classes" $test_sources
echo "Running Asn1RlpEquivalenceTest..."
java -cp "$classes:$test_classes" swiss.qpq.gajumaru.core.serialization.Asn1RlpEquivalenceTest