name: Build on: pull_request: push: branches: - master merge_group: schedule: - cron: "00 01 * * *" env: MSRV: "1.76" jobs: check: name: Check (msrv) runs-on: ubuntu-latest if: github.repository == 'helix-editor/helix' || github.event_name != 'schedule' steps: - name: Checkout sources uses: actions/checkout@v4 - name: Install MSRV toolchain uses: dtolnay/rust-toolchain@master with: toolchain: ${{ env.MSRV }} - uses: Swatinem/rust-cache@v2 with: shared-key: "build" - name: Run cargo check run: cargo check test: name: Test Suite runs-on: ${{ matrix.os }} if: github.repository == 'helix-editor/helix' || github.event_name != 'schedule' env: RUST_BACKTRACE: 1 HELIX_LOG_LEVEL: info steps: - name: Checkout sources uses: actions/checkout@v4 - name: Install MSRV toolchain uses: dtolnay/rust-toolchain@master with: toolchain: ${{ env.MSRV }} - uses: Swatinem/rust-cache@v2 with: shared-key: "build" - name: Cache test tree-sitter grammar uses: actions/cache@v4 with: path: runtime/grammars key: ${{ runner.os }}-stable-v${{ env.CACHE_VERSION }}-tree-sitter-grammars-${{ hashFiles('languages.toml') }} restore-keys: ${{ runner.os }}-stable-v${{ env.CACHE_VERSION }}-tree-sitter-grammars- - name: Run cargo test run: cargo test --workspace - name: Run cargo integration-test run: cargo integration-test strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] lints: name: Lints runs-on: ubuntu-latest if: github.repository == 'helix-editor/helix' || github.event_name != 'schedule' steps: - name: Checkout sources uses: actions/checkout@v4 - name: Install MSRV toolchain uses: dtolnay/rust-toolchain@master with: toolchain: ${{ env.MSRV }} components: rustfmt, clippy - uses: Swatinem/rust-cache@v2 with: shared-key: "build" - name: Run cargo fmt run: cargo fmt --all --check - name: Run cargo clippy run: cargo clippy --workspace --all-targets -- -D warnings - name: Run cargo doc run: cargo doc --no-deps --workspace --document-private-items env: RUSTDOCFLAGS: -D warnings docs: name: Docs runs-on: ubuntu-latest if: github.repository == 'helix-editor/helix' || github.event_name != 'schedule' steps: - name: Checkout sources uses: actions/checkout@v4 - name: Install MSRV toolchain uses: dtolnay/rust-toolchain@master with: toolchain: ${{ env.MSRV }} - uses: Swatinem/rust-cache@v2 with: shared-key: "build" - name: Validate queries run: cargo xtask query-check - name: Validate themes run: cargo xtask theme-check - name: Generate docs run: cargo xtask docgen - name: Check uncommitted documentation changes run: | git diff git diff-files --quiet \ || (echo "Run 'cargo xtask docgen', commit the changes and push again" \ && exit 1)