fix: Add compatibility with protobuf==5.x #534
Workflow file for this run
This file contains 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: Tests | |
# Controls when the action will run. | |
on: | |
pull_request: | |
push: | |
branches: [ $default-branch ] | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
concurrency: | |
group: tests-${{ github.head_ref }} | |
cancel-in-progress: true | |
jobs: | |
style-check: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.8 | |
- name: Install black | |
run: pip install black==22.3.0 | |
- name: Check diff | |
run: black --diff --check . | |
docs: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python 3.9 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.9" | |
- name: Install nox. | |
run: python -m pip install nox | |
- name: Build the documentation. | |
run: nox -s docs | |
unit: | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
python: ['3.6', '3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] | |
variant: ['cpp', 'python', 'upb'] | |
# TODO(https://github.com/googleapis/proto-plus-python/issues/389): | |
# Remove the 'cpp' implementation once support for Protobuf 3.x is dropped. | |
# The 'cpp' implementation requires Protobuf == 3.x however version 3.x | |
# does not support Python 3.11 and newer. The 'cpp' implementation | |
# must be excluded from the test matrix for these runtimes. | |
exclude: | |
- variant: "cpp" | |
python: 3.11 | |
- variant: "cpp" | |
python: 3.12 | |
- variant: "cpp" | |
python: 3.13 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python }} | |
allow-prereleases: true | |
- name: Install nox | |
run: | | |
pip install nox | |
# Trim the Python version string | |
- name: Trim python version | |
run: | | |
PYTHON_VERSION_TRIMMED=${{ matrix.python }} | |
PYTHON_VERSION_TRIMMED=$(echo $PYTHON_VERSION_TRIMMED | cut -c1-4) | |
echo "PYTHON_VERSION_TRIMMED=$PYTHON_VERSION_TRIMMED" >> $GITHUB_ENV | |
- name: Run unit tests | |
env: | |
COVERAGE_FILE: .coverage-${{ matrix.variant }}-${{ env.PYTHON_VERSION_TRIMMED }} | |
run: | | |
nox -s "unit-${{ env.PYTHON_VERSION_TRIMMED }}(implementation='${{ matrix.variant }}')" | |
- name: Upload coverage results | |
uses: actions/upload-artifact@v4 | |
with: | |
name: coverage-artifact-${{ matrix.variant }}-${{ env.PYTHON_VERSION_TRIMMED }} | |
path: .coverage-${{ matrix.variant }}-${{ env.PYTHON_VERSION_TRIMMED }} | |
prerelease: | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
python: ['3.12'] | |
variant: ['python', 'upb'] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python }} | |
allow-prereleases: true | |
- name: Install nox | |
run: | | |
pip install nox | |
- name: Run unit tests | |
env: | |
COVERAGE_FILE: .coverage-prerelease-${{ matrix.variant }} | |
run: | | |
nox -s "prerelease_deps(implementation='${{ matrix.variant }}')" | |
- name: Upload coverage results | |
uses: actions/upload-artifact@v4 | |
with: | |
name: coverage-artifact-prerelease-${{ matrix.variant }} | |
path: .coverage-prerelease-${{ matrix.variant }} | |
cover: | |
runs-on: ubuntu-latest | |
needs: | |
- unit | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.10" | |
- name: Install coverage | |
run: | | |
python -m pip install --upgrade setuptools pip wheel | |
python -m pip install coverage | |
- name: Download coverage results | |
uses: actions/download-artifact@v4 | |
with: | |
path: .coverage-results/ | |
- name: Report coverage results | |
run: | | |
find .coverage-results -type f -name '*.zip' -exec unzip {} \; | |
coverage combine .coverage-results/**/.coverage* | |
coverage report --show-missing --fail-under=100 |