Action to run conformance test #442
Workflow file for this run
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: 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 |