Skip to content

Fixed friction suggestions (#144) #35

Fixed friction suggestions (#144)

Fixed friction suggestions (#144) #35

Workflow file for this run

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