diff --git a/.github/workflows/external-tests.yml b/.github/workflows/external-tests.yml index 2e8576b9d..15e6d3e78 100644 --- a/.github/workflows/external-tests.yml +++ b/.github/workflows/external-tests.yml @@ -55,7 +55,7 @@ jobs: - name: Build Rust binary shell: bash - run: make build + run: make build-e2e - name: Verify Windows DLL has no unexpected dependencies if: matrix.os == 'windows-latest' diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml index 43426ef91..ccc206329 100644 --- a/.github/workflows/python.yml +++ b/.github/workflows/python.yml @@ -15,6 +15,8 @@ on: env: CARGO_TERM_COLOR: always MACOSX_DEPLOYMENT_TARGET: "13.0" + CARGO_PROFILE_RELEASE_LTO: thin + CARGO_PROFILE_RELEASE_CODEGEN_UNITS: 16 jobs: test: @@ -31,7 +33,11 @@ jobs: persist-credentials: false - name: Install Rust - uses: dtolnay/rust-toolchain@stable + uses: actions-rust-lang/setup-rust-toolchain@v1.15.4 + with: + cache: true + cache-on-failure: true + cache-key: "v1-rust-python" - name: Setup uv uses: astral-sh/setup-uv@v5 @@ -43,6 +49,8 @@ jobs: working-directory: packages/fff-python shell: bash run: | - uv sync --all-extras + # --no-install-project: uv would otherwise build the wheel via + # maturin's PEP 517 backend, then `maturin develop` builds it again. + uv sync --all-extras --no-install-project uv run maturin develop --release uv run pytest -v diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 1d60b0f57..159b05c81 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -47,7 +47,8 @@ jobs: components: rustfmt, clippy - name: Run tests - run: cargo test --no-default-features --features zlob --workspace --exclude fff-nvim + # fff-python requires full python o3 machinery which is very slow + run: cargo test --no-default-features --features zlob --workspace --exclude fff-nvim --exclude fff-python stress-test: name: Fuzz Tests diff --git a/Makefile b/Makefile index 5d8e2beea..c968f9015 100644 --- a/Makefile +++ b/Makefile @@ -45,6 +45,11 @@ sync-js-api-check: build: cargo build --release --no-default-features --features zlob +# Only the crates the e2e suites load (nvim lua tests + C/bun/node FFI tests), +# skipping fff-python (pyo3) and fff-mcp (tokio/rmcp) which e2e never touches. +build-e2e: + cargo build --release -p fff-nvim -p fff-c --no-default-features --features zlob + build-c-lib: cargo build --release -p fff-c --no-default-features --features zlob @@ -90,7 +95,7 @@ test-setup: fi test-rust: - cargo test --workspace --no-default-features --features zlob --exclude fff-nvim + cargo test --workspace --no-default-features --features zlob --exclude fff-nvim --exclude fff-python # Watcher rescan harness: asserts that editing, build output, git activity and # preview reads all stay on the incremental path instead of re-walking the tree.