#! /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