Skip to content

Action to run conformance test #437

Action to run conformance test

Action to run conformance test #437

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: Verify runner
# run: conformance_test_runner --help
- 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 ./script.sh