Feat/tab switch fields #405
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: Rust | |
| on: | |
| push: | |
| branches: [ "main" ] | |
| pull_request: | |
| branches: [ "main" ] | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: rust-${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| env: | |
| CARGO_TERM_COLOR: always | |
| # Build gitcomet in headless mode (no GPUI system deps required). | |
| # The UI-only code paths are behind #[cfg(feature = "ui-gpui")] guards. | |
| APP_FEATURES: "--no-default-features --features gix" | |
| jobs: | |
| fmt: | |
| name: Rustfmt | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: rustfmt | |
| - name: Cache Rust artifacts | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Check formatting | |
| run: cargo fmt --all --check | |
| audit: | |
| name: Dependency audit (cargo-audit) | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache Rust artifacts | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Install cargo-audit | |
| run: cargo install cargo-audit --locked | |
| - name: Run cargo-audit | |
| run: | | |
| cargo audit \ | |
| --ignore RUSTSEC-2025-0052 \ | |
| --ignore RUSTSEC-2024-0384 \ | |
| --ignore RUSTSEC-2024-0436 \ | |
| --ignore RUSTSEC-2025-0134 | |
| clippy: | |
| name: Clippy | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache Rust artifacts | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Clippy (core + state + git backends) | |
| run: cargo clippy -p gitcomet-core -p gitcomet-state -p gitcomet-git -p gitcomet-git-gix -- -D warnings | |
| - name: Clippy (shared UI crate) | |
| run: cargo clippy -p gitcomet-ui -- -D warnings | |
| - name: Clippy (GPUI UI crate -- intentionally skipped on headless CI) | |
| run: | | |
| echo "Skipping cargo clippy -p gitcomet-ui-gpui in this job." | |
| echo "Reason: GPUI requires native windowing/system dependencies that are not available in headless CI." | |
| - name: Clippy (app — headless) | |
| run: cargo clippy -p gitcomet $APP_FEATURES -- -D warnings | |
| build: | |
| name: Build | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache Rust artifacts | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Build (core + state + backend) | |
| run: cargo build -p gitcomet-core -p gitcomet-state -p gitcomet-git-gix --verbose | |
| - name: Build (app — headless) | |
| run: cargo build -p gitcomet $APP_FEATURES --verbose | |
| # Core merge algorithm correctness — Phase 1A/1B/1C portability tests | |
| merge-algorithm: | |
| name: Merge algorithm parity (t6403/t6427) | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 60 | |
| needs: build | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache Rust artifacts | |
| uses: Swatinem/rust-cache@v2 | |
| - name: t6403/t6427 merge algorithm portability | |
| run: cargo test -p gitcomet-core --test merge_algorithm --verbose | |
| - name: Conflict label formatting (Phase 1C) | |
| run: cargo test -p gitcomet-core --test conflict_label_formatting --verbose | |
| - name: Meld algorithm parity (Phase 5) | |
| run: cargo test -p gitcomet-core --lib meld_tests --verbose | |
| - name: Core library unit tests | |
| run: cargo test -p gitcomet-core --lib --verbose | |
| - name: State management (conflict session, reducers, effects) | |
| run: cargo test -p gitcomet-state --verbose | |
| # Fixture harness and corpus — Phase 2/3A regression gates | |
| merge-regression: | |
| name: Merge regression suite (fixtures + corpus) | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 60 | |
| needs: build | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache Rust artifacts | |
| uses: Swatinem/rust-cache@v2 | |
| - name: KDiff3-style fixture harness (Phase 2) | |
| run: cargo test -p gitcomet-core --test merge_fixture_harness --verbose | |
| - name: Permutation corpus (Phase 3A — 243 sampled cases) | |
| run: cargo test -p gitcomet-core --test merge_permutation_corpus --verbose | |
| - name: Real-world merge extraction (Phase 3C) | |
| run: cargo test -p gitcomet-core --test merge_git_extraction --verbose | |
| # E2E integration with git mergetool/difftool — Phase 4A/4B | |
| tool-integration: | |
| name: Git mergetool/difftool E2E parity | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 60 | |
| needs: build | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache Rust artifacts | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Build gitcomet binary (headless) | |
| run: cargo build -p gitcomet $APP_FEATURES | |
| - name: Git mergetool E2E (Phase 4A — t7610 parity) | |
| run: cargo test -p gitcomet $APP_FEATURES --test mergetool_git_integration --verbose | |
| - name: Git difftool E2E (Phase 4B — t7800 parity) | |
| run: cargo test -p gitcomet $APP_FEATURES --test difftool_git_integration --verbose | |
| - name: Standalone tool-mode E2E (exit codes + validation) | |
| run: cargo test -p gitcomet $APP_FEATURES --test standalone_tool_mode_integration --verbose | |
| - name: Mergetool/difftool runtime unit tests (bin target) | |
| run: cargo test -p gitcomet $APP_FEATURES --bin gitcomet --verbose | |
| # Backend integration — mergetool launcher, status, conflict checkout | |
| backend-integration: | |
| name: Git backend integration | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 60 | |
| needs: build | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache Rust artifacts | |
| uses: Swatinem/rust-cache@v2 | |
| - name: Git CLI migration scoreboard | |
| run: cargo test -p gitcomet-git-gix --test git_cli_scoreboard -- --nocapture | |
| - name: Status and mergetool backend integration | |
| run: cargo test -p gitcomet-git-gix --verbose |