stax 0.96.3

Fast stacked Git branches and PRs
Documentation
name: Rust Tests

on:
  pull_request:
  push:
    branches: [main]

permissions:
  contents: read

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

env:
  RUSTFLAGS: "-C link-arg=-fuse-ld=mold"
  CARGO_INCREMENTAL: "0"

jobs:
  quality:
    name: Formatting and Clippy
    runs-on: ubuntu-latest
    steps:
      - name: Check out repository
        uses: actions/checkout@v7
      - name: Install quality-gate dependencies
        run: sudo apt-get update && sudo apt-get install -y mold ripgrep
      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@master
        with:
          toolchain: 1.96.1
          components: rustfmt, clippy
      - name: Cache cargo build
        uses: Swatinem/rust-cache@v2
        with:
          key: ubuntu-latest-quality
      - name: Run quality gates
        run: make lint

  gui-quality:
    name: GPUI Compile and Clippy
    runs-on: macos-latest
    env:
      RUSTFLAGS: ""
    steps:
      - name: Check out repository
        uses: actions/checkout@v7
      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@master
        with:
          toolchain: 1.96.1
          components: clippy
      - name: Install cargo-nextest
        uses: taiki-e/install-action@v2
        with:
          tool: nextest@0.9.114
      - name: Cache cargo build
        uses: Swatinem/rust-cache@v2
        with:
          key: macos-latest-gui
      - name: Check GPUI package
        run: cargo check -p stax-gui --locked
      - name: Test GPUI package
        run: cargo nextest run -p stax-gui --locked
      - name: Lint GPUI package
        # Clippy also lints the local stax path dependency. Mirror the reviewed
        # legacy allowances from scripts/clippy-lint.sh while keeping other warnings fatal.
        run: |
          cargo clippy -p stax-gui --all-targets --locked --no-deps -- \
            -D warnings \
            -A clippy::assertions_on_constants \
            -A clippy::bool_assert_comparison \
            -A clippy::clone_on_copy \
            -A clippy::collapsible_if \
            -A clippy::collapsible_match \
            -A clippy::double_comparisons \
            -A clippy::if_same_then_else \
            -A clippy::items_after_test_module \
            -A clippy::len_zero \
            -A clippy::let_and_return \
            -A clippy::manual_checked_ops \
            -A clippy::needless_borrow \
            -A clippy::needless_lifetimes \
            -A clippy::too_many_arguments \
            -A clippy::to_string_in_format_args \
            -A clippy::type_complexity \
            -A clippy::unnecessary_map_or \
            -A clippy::unnecessary_sort_by \
            -A clippy::useless_format \
            -A clippy::useless_vec
      - name: Test developer app bundle
        run: make gui-app-test
      - name: Build developer app bundle
        run: make gui-app
      - name: Test GUI release packaging
        run: make gui-release-test

  unit-tests:
    name: Unit Tests
    runs-on: ubuntu-latest
    steps:
      - name: Check out repository
        uses: actions/checkout@v7
      - name: Install mold linker
        run: sudo apt-get update && sudo apt-get install -y mold
      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@master
        with:
          toolchain: 1.96.1
      - name: Install cargo-nextest
        uses: taiki-e/install-action@v2
        with:
          tool: nextest@0.9.114
      - name: Cache cargo build
        uses: Swatinem/rust-cache@v2
        with:
          key: ubuntu-latest-test-container
      - name: Run unit tests
        env:
          RUST_MIN_STACK: 4194304
        run: cargo nextest run --lib --bins --cargo-profile test-container

  integration-tests:
    name: Integration Tests
    runs-on: ubuntu-latest
    steps:
      - name: Check out repository
        uses: actions/checkout@v7
      - name: Install mold linker
        run: sudo apt-get update && sudo apt-get install -y mold
      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@master
        with:
          toolchain: 1.96.1
      - name: Install cargo-nextest
        uses: taiki-e/install-action@v2
        with:
          tool: nextest@0.9.114
      - name: Cache cargo build
        uses: Swatinem/rust-cache@v2
        with:
          key: ubuntu-latest-test-container
      - name: Run integration tests
        env:
          RUST_MIN_STACK: 4194304
        run: cargo nextest run --tests --cargo-profile test-container