cairo-language-server 2.20.0

The Cairo Language Server
Documentation
name: Cairo Update Check

on:
  workflow_dispatch:
    inputs:
      no_slack:
        description: "Skip sending Slack notification on failure"
        type: boolean
        default: false
  schedule:
    - cron: "0 0 * * 1-5"

concurrency:
  group: ${{ github.workflow }}
  cancel-in-progress: true

jobs:
  build-test:
    name: build tests
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
      - uses: dtolnay/rust-toolchain@stable
      - uses: software-mansion/setup-scarb@v1
      - uses: taiki-e/install-action@v2
        with:
          tool: nextest@0.9.98

      - name: Build xtasks
        run: cargo build -p xtask

      - name: Upgrade Cairo to latest main commit
        run: |
          CAIRO_REV=$(git ls-remote --refs "https://github.com/starkware-libs/cairo" main | awk '{print $1}')
          echo "::notice::Checking Cairo commit: https://github.com/starkware-libs/cairo/commit/$CAIRO_REV"
          cargo xtask upgrade cairo --rev "$CAIRO_REV"

      - name: Upgrade Lint to latest main commit
        run: |
          LINT_REV=$(git ls-remote --refs "https://github.com/software-mansion/cairo-lint" main | awk '{print $1}')
          echo "::notice::Checking Lint commit: https://github.com/software-mansion/cairo-lint/$LINT_REV"
          cargo xtask upgrade cairolint --rev "$LINT_REV"

      - name: nextest archive
        run: cargo nextest archive --workspace --all-features --cargo-profile ci --archive-file 'nextest-archive.tar.zst'
      - uses: actions/upload-artifact@v7
        with:
          name: nextest-archive
          path: nextest-archive.tar.zst

  test:
    name: test ${{ matrix.partition }}/6
    runs-on: ubuntu-latest
    needs:
      - build-test
    strategy:
      fail-fast: false
      matrix:
        partition: [ 1, 2, 3, 4, 5, 6 ]
    steps:
      - uses: actions/checkout@v7
      - uses: dtolnay/rust-toolchain@stable
      - uses: software-mansion/setup-scarb@v1
        with:
          scarb-version: nightly
          cache: false
      # For debugger lens tests.
      - uses: foundry-rs/setup-snfoundry@v6
        with:
          starknet-foundry-version: nightly-2026-04-06
      - uses: taiki-e/install-action@v2
        with:
          tool: nextest@0.9.98
      - uses: actions/download-artifact@v8
        with:
          name: nextest-archive
      - name: nextest partition ${{ matrix.partition }}/6
        run: cargo nextest run --profile ci --partition 'count:${{ matrix.partition }}/6' --archive-file 'nextest-archive.tar.zst'

  notify_failed:
    runs-on: ubuntu-latest
    if: failure() && !(inputs.no_slack)
    needs: [ build-test, test ]
    steps:
      - name: Notify the team about workflow failure
        uses: slackapi/slack-github-action@v3.0.3
        with:
          webhook: ${{ secrets.SLACK_CAIRO_UPDATE_CHECK_FAILURE_WEBHOOK_URL }}
          webhook-type: webhook-trigger
          payload: |
            url: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"