[TS PBT] Execute Kotlin properties with fast-check #640
Workflow file for this run
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 | |
| on: | |
| push: | |
| branches: [ "main" ] | |
| pull_request: | |
| branches: [ "main" ] | |
| workflow_dispatch: | |
| env: | |
| JAVA: 11 | |
| JAVA_DISTRIBUTION: zulu | |
| jobs: | |
| ci-core: | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Setup Java JDK | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: ${{ env.JAVA }} | |
| distribution: ${{ env.JAVA_DISTRIBUTION }} | |
| - name: Setup Gradle | |
| uses: gradle/actions/setup-gradle@v4 | |
| - name: Run core tests | |
| run: | | |
| ./gradlew :usvm-core:check :usvm-dataflow:check :usvm-util:check :usvm-sample-language:check | |
| - name: Upload Gradle reports | |
| if: (!cancelled()) | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: gradle-reports-core | |
| path: '**/build/reports/' | |
| retention-days: 1 | |
| ci-jvm: | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Setup Java JDK | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: ${{ env.JAVA }} | |
| distribution: ${{ env.JAVA_DISTRIBUTION }} | |
| - name: Setup Gradle | |
| uses: gradle/actions/setup-gradle@v4 | |
| - name: Run JVM tests | |
| run: ./gradlew :usvm-jvm:check :usvm-jvm:usvm-jvm-api:check :usvm-jvm:usvm-jvm-test-api:check :usvm-jvm:usvm-jvm-util:check :usvm-jvm-dataflow:check :usvm-jvm-instrumentation:check | |
| - name: Upload Gradle reports | |
| if: (!cancelled()) | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: gradle-reports-jvm | |
| path: '**/build/reports/' | |
| retention-days: 1 | |
| ci-python: | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| # 'usvm-python/cpythonadapter/cpython' is a submodule | |
| submodules: true | |
| - name: Setup Java JDK | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: ${{ env.JAVA }} | |
| distribution: ${{ env.JAVA_DISTRIBUTION }} | |
| - name: Setup Gradle | |
| uses: gradle/actions/setup-gradle@v4 | |
| - name: Install CPython optional dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y -q \ | |
| libssl-dev \ | |
| libffi-dev | |
| - name: Run Python tests | |
| run: ./gradlew -PcpythonActivated=true :usvm-python:check | |
| - name: Upload Gradle reports | |
| if: (!cancelled()) | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: gradle-reports-python | |
| path: '**/build/reports/' | |
| retention-days: 1 | |
| ci-ts: | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Setup Java JDK | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: ${{ env.JAVA }} | |
| distribution: ${{ env.JAVA_DISTRIBUTION }} | |
| - name: Setup Gradle | |
| uses: gradle/actions/setup-gradle@v4 | |
| - name: Set up Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| - name: Configure /etc/hosts | |
| run: cat .github/extra/hosts | sudo tee -a /etc/hosts | |
| - name: Set up ArkAnalyzer | |
| run: | | |
| REPO_URL="https://gitcode.com/Lipen/arkanalyzer.git" | |
| DEST_DIR="arkanalyzer" | |
| MAX_RETRIES=10 | |
| RETRY_DELAY=3 # Delay between retries in seconds | |
| BRANCH="neo/2025-09-03" | |
| for ((i=1; i<=MAX_RETRIES; i++)); do | |
| git clone --depth=1 --branch $BRANCH $REPO_URL $DEST_DIR && break | |
| echo "Clone failed, retrying in $RETRY_DELAY seconds..." | |
| sleep "$RETRY_DELAY" | |
| done | |
| if [[ $i -gt $MAX_RETRIES ]]; then | |
| echo "Failed to clone the repository after $MAX_RETRIES attempts." | |
| exit 1 | |
| else | |
| echo "Repository cloned successfully." | |
| fi | |
| echo "ARKANALYZER_DIR=$(realpath $DEST_DIR)" >> $GITHUB_ENV | |
| cd $DEST_DIR | |
| # ArkAnalyzer's bundled TypeScript 4.9 cannot parse syntax from the | |
| # latest floating @types/node, so pin a compatible major before the | |
| # single install. A second install would prune the postinstall-only | |
| # ohos-typescript package because it is absent from package.json. | |
| npm pkg set 'devDependencies.@types/node=18' | |
| npm install | |
| npm run build | |
| - name: Run TS tests | |
| run: ./gradlew :usvm-ts:check :usvm-ts-dataflow:check | |
| - name: Upload Gradle reports | |
| if: (!cancelled()) | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: gradle-reports-ts | |
| path: '**/build/reports/' | |
| retention-days: 1 | |
| ci-ts-pbt: | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Setup Java JDK | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: ${{ env.JAVA }} | |
| distribution: ${{ env.JAVA_DISTRIBUTION }} | |
| - name: Setup Gradle | |
| uses: gradle/actions/setup-gradle@v4 | |
| - name: Set up Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| - name: Run TS PBT integration baseline | |
| run: env -u ARKANALYZER_DIR ETS_IR_PROVIDER=ts-frontend ./gradlew :usvm-ts-pbt:check | |
| lint: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Setup Java JDK | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: 21 | |
| - name: Setup Gradle | |
| uses: gradle/actions/setup-gradle@v4 | |
| - name: Show project list | |
| run: ./gradlew projects | |
| - name: Validate Project List | |
| run: ./gradlew validateProjectList | |
| - name: Run Detekt | |
| run: ./gradlew detektMain detektTest | |
| - name: Upload Detekt SARIF report | |
| uses: github/codeql-action/upload-sarif@v3 | |
| if: success() || failure() | |
| with: | |
| sarif_file: build/reports/detekt/detekt.sarif |