Kotlin expectations: config.select passes against the Java agent now … #111
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI Build | |
| on: | |
| push: | |
| branches: [main] | |
| paths-ignore: | |
| - 'docs/**' | |
| - '*.md' | |
| pull_request: | |
| branches: [main] | |
| concurrency: | |
| group: ci-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@cf277c60eb25467037889841efdb72551f06f6c3 # v4 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| cache: maven | |
| - name: Cache the Maven distribution the wrapper uses | |
| uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 | |
| with: | |
| path: ~/.m2/wrapper | |
| key: maven-wrapper-${{ hashFiles('.mvn/wrapper/maven-wrapper.properties') }} | |
| - name: Build with Maven | |
| run: ./mvnw clean verify -B | |
| - name: Upload test results | |
| if: always() | |
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 | |
| with: | |
| name: test-results | |
| path: '**/target/surefire-reports/' | |
| retention-days: 7 | |
| # The SDK targets and releases on Java 17, but Error Prone (which runs NullAway) needs | |
| # JDK 21. The parent pom's errorprone profile activates on JDK 21+, so this job is the one | |
| # that enforces Error Prone's bug checks and the @NullMarked packages at ERROR. | |
| errorprone: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 | |
| - name: Set up JDK 21 | |
| uses: actions/setup-java@cf277c60eb25467037889841efdb72551f06f6c3 # v4 | |
| with: | |
| java-version: '21' | |
| distribution: 'temurin' | |
| cache: maven | |
| - name: Cache the Maven distribution the wrapper uses | |
| uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 | |
| with: | |
| path: ~/.m2/wrapper | |
| key: maven-wrapper-${{ hashFiles('.mvn/wrapper/maven-wrapper.properties') }} | |
| - name: Build with Maven (Error Prone and NullAway enforced) | |
| run: ./mvnw -B clean verify | |
| # Issue #14 only reproduced when the JVM was starved of cores: the agent's lock release | |
| # and the client's next prompt race on one CPU. Pin the contention tests to one core so | |
| # the window stays open in CI. | |
| contention: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| steps: | |
| - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@cf277c60eb25467037889841efdb72551f06f6c3 # v4 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| cache: maven | |
| - name: Cache the Maven distribution the wrapper uses | |
| uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 | |
| with: | |
| path: ~/.m2/wrapper | |
| key: maven-wrapper-${{ hashFiles('.mvn/wrapper/maven-wrapper.properties') }} | |
| - name: Contention tests pinned to one CPU | |
| run: taskset -c 0 ./mvnw -B -pl acp-core -am test -Dtest='MultiPromptSyncSessionTest,AcpAgentSessionPromptLockTest' -Dsurefire.failIfNoSpecifiedTests=false | |
| # Lincheck model checks the SDK's concurrent state (the *LincheckTest classes): every | |
| # interleaving of seeded, bounded scenarios against a sequential specification. The build | |
| # runs them with a small budget; this job explores ten times as many scenarios. Scenarios and | |
| # interleavings come from a fixed seed, so a failure reproduces locally with the same | |
| # -Dlincheck.scale. | |
| lincheck: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@cf277c60eb25467037889841efdb72551f06f6c3 # v4 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| cache: maven | |
| - name: Cache the Maven distribution the wrapper uses | |
| uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 | |
| with: | |
| path: ~/.m2/wrapper | |
| key: maven-wrapper-${{ hashFiles('.mvn/wrapper/maven-wrapper.properties') }} | |
| # Install first rather than -am: a -Dtest filter would also reach the JSON modules, | |
| # which scan acp-core's test-jar for their contract tests. | |
| - name: Install the modules under test | |
| run: ./mvnw -B -q install -DskipTests -Dpmd.skip -Dcpd.skip | |
| - name: Lincheck model checking, extended budget | |
| run: ./mvnw -B -pl acp-core,acp-streamable-http-jetty test -Dtest='*LincheckTest' -Dlincheck.scale=10 |