Fixed friction suggestions (#144) #35
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: Conformance | |
| # Cross-language interop: builds each implementation's test agent and asserts | |
| # they speak the one wire protocol. The suite is single-host — one Python | |
| # process spawns every language's agent as a local subprocess and they talk over | |
| # loopback (TCP + TLS) — so every toolchain is installed on the one runner. | |
| # Runs when any implementation or the conformance harness itself changes. | |
| on: | |
| push: | |
| branches: | |
| - master | |
| paths: | |
| - 'python-lib/**' | |
| - 'python-lib-blocking/**' | |
| - 'rust-lib-async/**' | |
| - 'rust-lib-sync/**' | |
| - 'golang-lib/**' | |
| - 'c-lib/**' | |
| - 'cpp-lib-sync/**' | |
| - 'cpp-lib-async/**' | |
| - 'zig-lib/**' | |
| - 'java-lib/**' | |
| - 'javascript-lib/**' | |
| - 'csharp-lib/**' | |
| - 'lua-lib/**' | |
| - 'browser-lib/**' | |
| - 'conformance/**' | |
| - '.github/workflows/conformance.yml' | |
| pull_request: | |
| branches: | |
| - master | |
| paths: | |
| - 'python-lib/**' | |
| - 'python-lib-blocking/**' | |
| - 'rust-lib-async/**' | |
| - 'rust-lib-sync/**' | |
| - 'golang-lib/**' | |
| - 'c-lib/**' | |
| - 'cpp-lib-sync/**' | |
| - 'cpp-lib-async/**' | |
| - 'zig-lib/**' | |
| - 'java-lib/**' | |
| - 'javascript-lib/**' | |
| - 'csharp-lib/**' | |
| - 'lua-lib/**' | |
| - 'browser-lib/**' | |
| - 'conformance/**' | |
| - '.github/workflows/conformance.yml' | |
| jobs: | |
| interop: | |
| name: Cross-language interop | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| # OpenSSL headers for the C / C++ / Zig agents (CMake + gcc/g++ and zig | |
| # build are provided by the runner image and the actions below), plus | |
| # Lua and its two rocks (LuaSocket, LuaSec) for the Lua agent. The | |
| # suite skips Lua pairings when the interpreter or rocks are missing, | |
| # so without this they would silently not run. Node and .NET are | |
| # already on the runner image. | |
| - name: Install OpenSSL headers and Lua | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libssl-dev lua5.4 liblua5.4-dev luarocks | |
| sudo luarocks install luasocket | |
| sudo luarocks install luasec | |
| - uses: dtolnay/rust-toolchain@stable | |
| - uses: actions/setup-go@v6 | |
| with: | |
| go-version: 'stable' | |
| - uses: actions/setup-java@v5 | |
| with: | |
| distribution: temurin | |
| java-version: '21' | |
| - uses: mlugg/setup-zig@v2 | |
| with: | |
| version: 0.16.0 | |
| # Node >= 22 for the browser-lib conformance shim, which drives the | |
| # browser Socket via Node's built-in global WebSocket (added in 22). The | |
| # trusted `ws` agent needs no Node; it uses the `websockets` PyPI package | |
| # pulled in by python-lib's `test` group. | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: '22' | |
| - uses: astral-sh/setup-uv@v7 | |
| with: | |
| enable-cache: true | |
| # The pytest fixtures build each agent on demand (cargo / go build / cmake | |
| # / zig build / javac) and then exercise every cross-language pairing. | |
| - name: Run conformance suite | |
| run: uv run --project python-lib --group test pytest conformance/ -v |