Skip to content

Action to run conformance test #442

Action to run conformance test

Action to run conformance test #442

Workflow file for this run

name: CI
on:
push:
branches:
- main
pull_request:
branches:
- '**'
permissions:
contents: read
jobs:
test-dependencies:
name: Check running without dependencies
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install uv with Python 3.12
uses: astral-sh/setup-uv@v5
with:
version: "0.7.5"
python-version: "3.12"
- name: Install betterproto2
working-directory: ./betterproto2
run: uv sync --locked
- name: Install betterproto2_compiler
working-directory: ./betterproto2_compiler
run: uv sync --locked
- name: Compile test files
working-directory: ./betterproto2_compiler
shell: bash
run: uv run poe generate
- name: Move compiled files to betterproto2
shell: bash
run: cp -r betterproto2_compiler/tests/outputs betterproto2/tests
- name: Execute test suite
working-directory: ./betterproto2
run: uv run poe test
- name: Add Pydantic
working-directory: ./betterproto2
run: uv sync --locked --extra=pydantic
- name: Execute test suite
working-directory: ./betterproto2
run: uv run poe test
- name: Add all but Pydantic
working-directory: ./betterproto2
run: uv sync --locked --extra=grpclib --extra=grpcio --extra=protobuf
- name: Execute test suite
working-directory: ./betterproto2
run: uv run poe test
- name: Add grpclib
working-directory: ./betterproto2
run: uv sync --locked --extra=grpclib
- name: Execute test suite
working-directory: ./betterproto2
run: uv run poe test
- name: Add all but grpclib
working-directory: ./betterproto2
run: uv sync --locked --extra=pydantic --extra=grpcio --extra=protobuf
- name: Execute test suite
working-directory: ./betterproto2
run: uv run poe test
- name: Add grpcio
working-directory: ./betterproto2
run: uv sync --locked --extra=grpcio
- name: Execute test suite
working-directory: ./betterproto2
run: uv run poe test
- name: Add all but grpcio
working-directory: ./betterproto2
run: uv sync --locked --extra=pydantic --extra=grpclib --extra=protobuf
- name: Execute test suite
working-directory: ./betterproto2
run: uv run poe test
- name: Add protobuf
working-directory: ./betterproto2
run: uv sync --locked --extra=protobuf
- name: Execute test suite
working-directory: ./betterproto2
run: uv run poe test
- name: Add all but protobuf
working-directory: ./betterproto2
run: uv sync --locked --extra=pydantic --extra=grpclib --extra=grpcio
- name: Execute test suite
working-directory: ./betterproto2
run: uv run poe test
tests:
name: ${{ matrix.os }} / ${{ matrix.python-version }}
runs-on: ${{ matrix.os }}-latest
strategy:
fail-fast: false
matrix:
os: [Ubuntu, MacOS, Windows]
python-version: ['3.10', '3.11', '3.12', '3.13']
steps:
- uses: actions/checkout@v4
- name: Install uv with Python ${{ matrix.python-version }}
uses: astral-sh/setup-uv@v5
with:
version: "0.7.5"
python-version: ${{ matrix.python-version }}
- name: Install betterproto2
working-directory: ./betterproto2
run: uv sync --locked --all-extras --all-groups
- name: Install betterproto2_compiler
working-directory: ./betterproto2_compiler
run: uv sync --locked --all-extras --all-groups
- name: Test betterproto2_compiler
working-directory: ./betterproto2_compiler
shell: bash
run: uv run poe test
- name: Compile test files
working-directory: ./betterproto2_compiler
shell: bash
run: uv run poe generate
- name: Move compiled files to betterproto2
shell: bash
run: cp -r betterproto2_compiler/tests/outputs betterproto2/tests
- name: Execute test suite
working-directory: ./betterproto2
shell: bash
run: uv run poe test
conformance:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Node.js
uses: actions/setup-node@v6
with:
node-version: 24
- name: Install conformance runner
run: npm install -g protobuf-conformance
- name: Install uv with Python 3.10
uses: astral-sh/setup-uv@v5
with:
version: "0.7.5"
python-version: "3.10"
- name: Install betterproto2
working-directory: ./betterproto2
run: uv sync --locked --all-extras --all-groups
- name: Install betterproto2_compiler
working-directory: ./betterproto2_compiler
run: uv sync --locked --all-extras --all-groups
- name: Compile test files
working-directory: ./betterproto2_compiler
shell: bash
run: uv run poe generate
- name: Move compiled files to betterproto2
shell: bash
run: cp -r betterproto2_compiler/tests/outputs betterproto2/tests
- name: Create test script
shell: bash
working-directory: ./betterproto2
run: |
echo '#!/bin/bash' > script.sh
echo 'python -m tests.conformance.main' >> script.sh
chmod +x script.sh
- name: Run conformance tests
working-directory: ./betterproto2
run: |
uv run conformance_test_runner --failure_list tests/conformance/failing_tests.txt ./script.sh