Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 69 additions & 2 deletions .github/workflows/internals-distcheck-ci.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
name: Internals distcheck CI

# Verification for the internals/distcheck uv package (the dirsql-distcheck
# publishability flows). Consumers (the SDK test workflows' distcheck jobs)
# are deliberately not fanned out to; this lane's own gates are the guard.
# publishability flows). Consumers (the SDK workflows' distcheck jobs) are
# deliberately not fanned out to; this lane runs the flows itself.
on:
pull_request:
paths:
Expand Down Expand Up @@ -30,3 +30,70 @@ jobs:
source: internals/distcheck/src
base: ${{ github.event.pull_request.base.sha || 'origin/main' }}
gates: '["colocated-test", "unit-lint", "integration-lint", "unit-coverage", "mutation"]'

python-flow:
name: dirsql-distcheck python
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6

- name: Install Rust
uses: dtolnay/rust-toolchain@stable

- name: Rust cache
uses: Swatinem/rust-cache@v2
with:
workspaces: ". -> target"

- name: Install uv
uses: astral-sh/setup-uv@v7
with:
python-version: "3.13"

- name: Install dependencies (maturin)
run: uv sync
working-directory: packages/python

- name: Put maturin on PATH
run: echo "$PWD/packages/python/.venv/bin" >> "$GITHUB_PATH"

- name: Run the python flow (build -> pack -> install -> run)
run: uv run --project internals/distcheck dirsql-distcheck python

node-flow:
name: dirsql-distcheck node
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6

- name: Install Rust
uses: dtolnay/rust-toolchain@stable

- name: Rust cache
uses: Swatinem/rust-cache@v2
with:
workspaces: ". -> target"

- name: Install Node
uses: actions/setup-node@v4
with:
node-version: "24"

- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 11

- name: Install uv
uses: astral-sh/setup-uv@v7

- name: Install dependencies
working-directory: packages/ts
run: pnpm install

- name: Build native module + stage platform
working-directory: packages/ts
run: pnpm build

- name: Run the node flow (build -> pack -> install -> run)
run: uv run --project internals/distcheck dirsql-distcheck node
5 changes: 3 additions & 2 deletions internals/distcheck/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ Each flow follows the same shape (mirroring `internals/checks`):
and calls `gate.run`, turning a `DistcheckError` into a non-zero exit.

Every module (except empty `__init__.py`s) carries a colocated `*_test.py`,
gated by `conventions.yml`'s `internals-distcheck` job: `colocated-test`,
gated by `internals-distcheck-ci.yml`'s `internals-distcheck` job: `colocated-test`,
`unit-lint`, `integration-lint`, `unit-coverage`, and `mutation`.

## Test tiers
Expand All @@ -64,7 +64,8 @@ gated by `conventions.yml`'s `internals-distcheck` job: `colocated-test`,
execution is the `dirsql-distcheck <flow>` job, which builds them first.

No e2e tier / attestation: `tests/integration/` is the outermost tier, and the
CI `distcheck` jobs (`python-test.yml` / `ts-test.yml`) run the real flows directly.
`python-flow` / `node-flow` jobs in `internals-distcheck-ci.yml` run the real
flows directly.

```bash
uv run --project internals/distcheck python -m pytest internals/distcheck/src internals/distcheck/tests -q
Expand Down
Loading