Files
j3270/test_all.sh
T
rudi 59925c2787
Build and Test j3270 / Build JAR & Run Tests (Java 17) (push) Successful in 34s
Build and Test j3270 / Build JAR & Run Tests (Java 11) (push) Successful in 42s
Build and Test j3270 / Build JAR & Run Tests (Java 21) (push) Successful in 1m13s
Release j3270 / Build & Publish Release (push) Successful in 1m8s
Add headless server and setup script
2026-09-08 11:38:38 -04:00

99 lines
3.4 KiB
Bash
Executable File

#!/bin/sh
set -e
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
cd "$SCRIPT_DIR"
echo "=== Running j3270 Test Suite ==="
# 1. First build the core libraries
sh "$SCRIPT_DIR/build_all.sh"
# 2. Locate Java toolchain
JAVAC_BIN=""
JAVA_BIN=""
if [ -n "$JAVA_HOME" ] && [ -x "$JAVA_HOME/bin/javac" ] && [ -x "$JAVA_HOME/bin/java" ]; then
JAVAC_BIN="$JAVA_HOME/bin/javac"
JAVA_BIN="$JAVA_HOME/bin/java"
elif command -v javac >/dev/null 2>&1 && command -v java >/dev/null 2>&1; then
if javac -version >/dev/null 2>&1; then
JAVAC_BIN="$(command -v javac)"
JAVA_BIN="$(command -v java)"
fi
fi
if [ -z "$JAVAC_BIN" ] || [ -z "$JAVA_BIN" ]; then
if [ -x /usr/libexec/java_home ]; then
MAC_JAVA_HOME="$(/usr/libexec/java_home 2>/dev/null || true)"
if [ -n "$MAC_JAVA_HOME" ] && [ -x "$MAC_JAVA_HOME/bin/javac" ] && [ -x "$MAC_JAVA_HOME/bin/java" ]; then
export JAVA_HOME="$MAC_JAVA_HOME"
JAVAC_BIN="$JAVA_HOME/bin/javac"
JAVA_BIN="$JAVA_HOME/bin/java"
fi
fi
fi
if [ -z "$JAVAC_BIN" ] || [ -z "$JAVA_BIN" ]; then
for h in /usr/lib/jvm/default-java \
/usr/lib/jvm/java-21-openjdk* \
/usr/lib/jvm/java-17-openjdk* \
/usr/lib/jvm/java-11-openjdk* \
/Library/Java/JavaVirtualMachines/*/Contents/Home \
/opt/homebrew/opt/openjdk/libexec/openjdk.jdk/Contents/Home \
/opt/homebrew/opt/openjdk; do
if [ -d "$h" ] && [ -x "$h/bin/javac" ] && [ -x "$h/bin/java" ]; then
export JAVA_HOME="$h"
JAVAC_BIN="$JAVA_HOME/bin/javac"
JAVA_BIN="$JAVA_HOME/bin/java"
break
fi
done
fi
if [ -z "$JAVAC_BIN" ] || [ -z "$JAVA_BIN" ]; then
echo "ERROR: Java toolchain (javac, java) not found."
exit 1
fi
BUILD_DIR="$SCRIPT_DIR/build"
TEST_BUILD_DIR="$BUILD_DIR/test-classes"
REPORTS_DIR="$BUILD_DIR/reports/tests"
rm -rf "$TEST_BUILD_DIR"
mkdir -p "$TEST_BUILD_DIR" "$REPORTS_DIR"
# 3. Ensure JUnit standalone runner is present
JUNIT_JAR="$BUILD_DIR/junit-platform-console-standalone.jar"
JUNIT_URL="https://repo1.maven.org/maven2/org/junit/platform/junit-platform-console-standalone/1.10.2/junit-platform-console-standalone-1.10.2.jar"
if [ ! -f "$JUNIT_JAR" ]; then
echo "Downloading JUnit 5 test runner..."
if command -v curl >/dev/null 2>&1; then
curl -sLo "$JUNIT_JAR" "$JUNIT_URL" || true
elif command -v wget >/dev/null 2>&1; then
wget -qO "$JUNIT_JAR" "$JUNIT_URL" || true
fi
fi
# 4. If JUnit standalone runner is available, compile & run tests directly
if [ -f "$JUNIT_JAR" ] && [ -s "$JUNIT_JAR" ]; then
echo "Compiling tests..."
find "$SCRIPT_DIR/lib3270j/src/test/java" "$SCRIPT_DIR/j3270/src/test/java" -name "*.java" > "$BUILD_DIR/test_sources.txt"
"$JAVAC_BIN" -cp "$BUILD_DIR/lib3270j:$BUILD_DIR/j3270:$JUNIT_JAR" -d "$TEST_BUILD_DIR" @"$BUILD_DIR/test_sources.txt"
rm -f "$BUILD_DIR/test_sources.txt"
echo "Executing JUnit tests..."
"$JAVA_BIN" -Djava.awt.headless=true -jar "$JUNIT_JAR" \
--class-path "$BUILD_DIR/lib3270j:$BUILD_DIR/j3270:$TEST_BUILD_DIR" \
--scan-class-path \
--reports-dir="$REPORTS_DIR"
echo "=== All Tests Passed Successfully ==="
else
echo "JUnit standalone runner not available. Verifying with Gradle if available..."
if command -v gradle >/dev/null 2>&1; then
gradle test --info
else
echo "Build verified."
fi
fi