Skip to content

Bump version numbers in server.json #6

Bump version numbers in server.json

Bump version numbers in server.json #6

Workflow file for this run

name: Cross-SDK Test Suite
# Finding 32: cross-SDK test workflow that runs Python, TypeScript, and
# Go test suites in parallel and gates merges on cross-SDK ASD drift.
#
# The asd-drift-gate job runs first and acts as a hard precondition:
# if the on-disk TS or Go glyph files don't match what would be
# generated from the canonical Python source, all SDK test jobs are
# skipped and the merge is blocked. This is the enforcement mechanism
# for ADR-001 -- the canonical semantic dictionary is the single source
# of truth, and the SDK files must always be regenerable.
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
permissions:
contents: read
jobs:
# ── Drift gate ────────────────────────────────────────────────────
asd-drift-gate:
name: ASD cross-SDK no-drift gate
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Run gen_asd.py --check
run: |
python3 tools/gen_asd.py --check
echo
echo "ASD cross-SDK files are in sync with canonical Python source."
# ── Python SDK ────────────────────────────────────────────────────
python-tests:
name: Python SDK tests
runs-on: ubuntu-latest
needs: asd-drift-gate
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11", "3.12"]
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install both packages from their pyproject.toml files
# Editable installs of osmp[test] (the SDK with all test extras) and
# osmp_mcp (the MCP server) pull in their declared dependencies
# automatically. The "test" extras group in sdk/python/pyproject.toml
# is the canonical source of truth for what the test suite needs --
# if a new test dep is required, add it to that group, not here.
# CI always matches what real users get from PyPI plus exactly the
# extras the test suite covers.
run: |
python -m pip install --upgrade pip
pip install -e "sdk/python[test]"
pip install -e osmp_mcp
- name: Run pytest
run: |
python -m pytest tests/ -v --tb=short
# ── TypeScript SDK ────────────────────────────────────────────────
typescript-tests:
name: TypeScript SDK tests
runs-on: ubuntu-latest
needs: asd-drift-gate
strategy:
fail-fast: false
matrix:
node-version: ["18.x", "20.x", "22.x"]
steps:
- uses: actions/checkout@v4
- name: Set up Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Install TypeScript SDK dependencies
working-directory: sdk/typescript
run: npm install
- name: Type check
working-directory: sdk/typescript
run: npx tsc --noEmit
- name: Run vitest
working-directory: sdk/typescript
run: npm test
# ── Go SDK ────────────────────────────────────────────────────────
go-tests:
name: Go SDK tests
runs-on: ubuntu-latest
needs: asd-drift-gate
strategy:
fail-fast: false
matrix:
go-version: ["1.21", "1.22", "1.23"]
steps:
- uses: actions/checkout@v4
- name: Set up Go ${{ matrix.go-version }}
uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go-version }}
cache-dependency-path: sdk/go/go.sum
- name: Download modules
working-directory: sdk/go
run: go mod download
- name: Vet
working-directory: sdk/go
run: go vet ./...
- name: Test
working-directory: sdk/go
run: go test -v ./...
# ── Aggregated status check ───────────────────────────────────────
cross-sdk-status:
name: Cross-SDK test status
runs-on: ubuntu-latest
needs: [asd-drift-gate, python-tests, typescript-tests, go-tests]
if: always()
steps:
- name: Check all jobs
run: |
if [[ "${{ needs.asd-drift-gate.result }}" != "success" ]]; then
echo "ASD drift gate failed"
exit 1
fi
if [[ "${{ needs.python-tests.result }}" != "success" ]]; then
echo "Python tests failed"
exit 1
fi
if [[ "${{ needs.typescript-tests.result }}" != "success" ]]; then
echo "TypeScript tests failed"
exit 1
fi
if [[ "${{ needs.go-tests.result }}" != "success" ]]; then
echo "Go tests failed"
exit 1
fi
echo "All cross-SDK tests passed."