diff --git a/.github/workflows/pr-build-check.yaml b/.github/workflows/pr-build-check.yaml index ac6ed6de..d2f5e2f1 100644 --- a/.github/workflows/pr-build-check.yaml +++ b/.github/workflows/pr-build-check.yaml @@ -3,6 +3,7 @@ name: PR build check (Compile against Java 25 using Maven) on: pull_request: types: [opened, synchronize, reopened] + workflow_dispatch: permissions: contents: read @@ -29,3 +30,32 @@ jobs: - name: Maven clean install (compile only) run: mvn -B -ntp -DskipTests clean install + + - name: Smoke run demos (fail on runtime exceptions) + if: always() + shell: bash + run: | + set -euo pipefail + mkdir -p tmp + export JAVA_TOOL_OPTIONS="-Djava.io.tmpdir=$(pwd)/tmp" + + java --enable-preview --add-modules=jdk.incubator.vector \ + -jar target/JavaDemos-25.0.jar > run.log 2>&1 || { + echo "Non-zero exit code:" + cat run.log + exit 1 + } + + # Fail if stack trace frames OR 'Exception in thread "main"' appear + if grep -F -q 'Exception in thread "main"'; then + echo "Detected stack trace or 'Exception in thread \"main\"':" + cat run.log + exit 1 + fi + + - name: Upload run.log on failure + if: failure() + uses: actions/upload-artifact@v4 + with: + name: run-log + path: run.log \ No newline at end of file diff --git a/src/main/java/org/javademos/init/Java17.java b/src/main/java/org/javademos/init/Java17.java index 43c61796..9475f3f7 100644 --- a/src/main/java/org/javademos/init/Java17.java +++ b/src/main/java/org/javademos/init/Java17.java @@ -43,7 +43,8 @@ public static ArrayList getDemos() { // JEP 414 java17DemoPool.add(new VectorAPIDemo()); // JEP 415 - java17DemoPool.add(new ContextSpecificDeserializationFiltersDemo()); + //now should fail + java17DemoPool.add(new ContextSpecificDeserializationFiltersDemo()) // older demos created with "non-JEP" style java17DemoPool.add(new String12Demo());