Skip to content

Pin pytest to latest version 8.2.0 #488

Pin pytest to latest version 8.2.0

Pin pytest to latest version 8.2.0 #488

Workflow file for this run

name: Build and Test
on:
push:
branches:
- master
pull_request:
branches:
- master
types:
- opened
- synchronize
- reopened
- closed
jobs:
matrix-builder:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
inverted_matrix: ${{ steps.set-matrix.outputs.inverted_matrix }}
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.9
architecture: x64
- id: set-matrix
env:
PY_VERSIONS: "[\"3.7\", \"3.8\", \"3.9\", \"3.10\", \"3.11\", \"3.12\", \"pypy-3.9\", \"pypy-3.10\"]"
OS_NAMES: "[\"ubuntu-20.04\"]" #, windows-latest, macOS-latest]
CELERY_VERSIONS: "[\">=4.0.0,<5.0.0\", \">=5.0.0,<6.0.0\"]"
run: |
python -m pip install --upgrade pip
MATRIX=$(python .github/workflows/resolve_versions.py matrix -c "$PY_VERSIONS" -o "$OS_NAMES" -n "celery" -s "$CELERY_VERSIONS")
echo "matrix=$MATRIX" >> $GITHUB_OUTPUT
INV_MATRIX=$(python .github/workflows/resolve_versions.py matrix -c "$PY_VERSIONS" -o "$OS_NAMES" -n "celery" -s "$CELERY_VERSIONS" --invert)
echo "inverted_matrix=$INV_MATRIX" >> $GITHUB_OUTPUT
unsupported:
name: Skipping on Python ${{ matrix.python-version }} and ${{ matrix.os }} with celery${{ matrix.celery }}
needs: matrix-builder
strategy:
matrix: ${{ fromJSON(needs.matrix-builder.outputs.inverted_matrix) }}
fail-fast: false
runs-on: ubuntu-latest
steps:
- name: Prepare badges
id: badges
run: |
CELERY_MAJOR=$(echo "${{ matrix.celery }}" | sed -r 's/^([^.]+).*$/\1/; s/^[^0-9]*([0-9]+).*$/\1/')
echo "celery=${CELERY_MAJOR}" >> $GITHUB_OUTPUT
echo "source_name=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT
echo "source_branch=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT
echo "source_tag=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
[[ "${{ matrix.python-version }}" == pypy* ]] \
&& echo "python=$(echo "${{ matrix.python-version }}" | cut -d '-' -f1-2)" >> $GITHUB_OUTPUT \
|| echo "python=${{ matrix.python-version }}" >> $GITHUB_OUTPUT
[[ "${{ matrix.os }}" == ubuntu* ]] && echo "platform=linux" >> $GITHUB_OUTPUT || echo "Not on linux"
[[ "${{ matrix.os }}" == windows* ]] && echo "platform=windows" >> $GITHUB_OUTPUT || echo "Not on window"
[[ "${{ matrix.os }}" == macOS* ]] && echo "platform=apple" >> $GITHUB_OUTPUT || echo "Not on macOS"
- name: Badge Creation (master) (unsupported)
uses: RubbaBoy/[email protected]
if: github.event.pull_request.merged == true && steps.badges.outcome == 'success'
with:
NAME: m_${{ steps.badges.outputs.platform }}_${{ steps.badges.outputs.python }}_celery${{ steps.badges.outputs.celery }}
ICON: 'https://simpleicons.vercel.app/${{ steps.badges.outputs.platform }}/ffffff'
LABEL: "celery-pubsub (in master)"
STATUS: "Unsupported"
COLOR: yellow
GITHUB_TOKEN: ${{ secrets.BADGES_TOKEN }}
- name: Badge Creation (tag) (unsupported)
uses: RubbaBoy/[email protected]
if: github.event_name == 'push' && github.ref_type == 'tag' && steps.badges.outcome == 'success'
with:
NAME: ${{ steps.badges.outputs.source_tag }}_${{ steps.badges.outputs.platform }}_${{ steps.badges.outputs.python }}_celery${{ steps.badges.outputs.celery }}
ICON: 'https://simpleicons.vercel.app/${{ steps.badges.outputs.platform }}/ffffff'
LABEL: "celery-pubsub ${{ steps.badges.outputs.source_tag }}"
STATUS: "Unsupported"
COLOR: yellow
GITHUB_TOKEN: ${{ secrets.BADGES_TOKEN }}
build:
name: Test on Python ${{ matrix.python-version }} and ${{ matrix.os }} with celery${{ matrix.celery }}
needs: matrix-builder
runs-on: ${{ matrix.os }}
strategy:
matrix: ${{ fromJSON(needs.matrix-builder.outputs.matrix) }}
fail-fast: false
timeout-minutes: 5
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
architecture: x64
- name: Show system
run: |
python --version
uname -a
lsb_release -a
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install -r requirements_test.txt
pip install "celery${{ matrix.celery }}"
pip install pytest-github-actions-annotate-failures
- name: Check with black
run: black --check .
- name: Check with mypy
if: ${{ !startsWith(matrix.python-version, 'pypy') }}
run: mypy
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics --exclude .github
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics --exclude .github
- name: Test with pytest
run: |
coverage run -m pytest -v -s tests
coverage report
- name: Code Climate Coverage Action
uses: paambaati/[email protected]
env:
# According to CodeClimate documentation, this is not considered a sensitive value.
# https://docs.codeclimate.com/docs/finding-your-test-coverage-token#regenerating-a-repos-test-reporter-id
CC_TEST_REPORTER_ID: 4967416d540739937e0eebfb13a3cf2f8dfbddd762f2b1ec800e83d18fb5efbb
with:
coverageCommand: coverage xml
debug: true
- name: Prepare badges
id: badges
run: |
CELERY_MAJOR=$(echo "${{ matrix.celery }}" | sed -r 's/^([^.]+).*$/\1/; s/^[^0-9]*([0-9]+).*$/\1/')
echo "celery=${CELERY_MAJOR}" >> $GITHUB_OUTPUT
echo "source_name=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT
echo "source_branch=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT
echo "source_tag=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
[[ "${{ matrix.python-version }}" == pypy* ]] \
&& echo "python=$(echo "${{ matrix.python-version }}" | cut -d '-' -f1-2)" >> $GITHUB_OUTPUT \
|| echo "python=${{ matrix.python-version }}" >> $GITHUB_OUTPUT
[[ "${{ matrix.os }}" == ubuntu* ]] && echo "platform=linux" >> $GITHUB_OUTPUT || echo "Not on linux"
[[ "${{ matrix.os }}" == windows* ]] && echo "platform=windows" >> $GITHUB_OUTPUT || echo "Not on window"
[[ "${{ matrix.os }}" == macOS* ]] && echo "platform=apple" >> $GITHUB_OUTPUT || echo "Not on macOS"
- name: Badge Creation (master) (success)
uses: RubbaBoy/[email protected]
if: github.event.pull_request.merged == true && steps.badges.outcome == 'success'
with:
NAME: m_${{ steps.badges.outputs.platform }}_${{ steps.badges.outputs.python }}_celery${{ steps.badges.outputs.celery }}
ICON: 'https://simpleicons.vercel.app/${{ steps.badges.outputs.platform }}/ffffff'
LABEL: "celery-pubsub (in master)"
STATUS: "Supported"
COLOR: green
GITHUB_TOKEN: ${{ secrets.BADGES_TOKEN }}
- name: Badge Creation (master) (failure)
uses: RubbaBoy/[email protected]
if: github.event.pull_request.merged == true && steps.badges.outcome != 'success'
with:
NAME: m_${{ steps.badges.outputs.platform }}_${{ steps.badges.outputs.python }}_celery${{ steps.badges.outputs.celery }}
ICON: 'https://simpleicons.vercel.app/${{ steps.badges.outputs.platform }}/ffffff'
LABEL: "celery-pubsub (in master)"
STATUS: "Failed"
COLOR: red
GITHUB_TOKEN: ${{ secrets.BADGES_TOKEN }}
- name: Badge Creation (tag) (success)
uses: RubbaBoy/[email protected]
if: github.event_name == 'push' && github.ref_type == 'tag' && steps.badges.outcome == 'success'
with:
NAME: ${{ steps.badges.outputs.source_tag }}_${{ steps.badges.outputs.platform }}_${{ steps.badges.outputs.python }}_celery${{ steps.badges.outputs.celery }}
ICON: 'https://simpleicons.vercel.app/${{ steps.badges.outputs.platform }}/ffffff'
LABEL: "celery-pubsub ${{ steps.badges.outputs.source_tag }}"
STATUS: "Supported"
COLOR: green
GITHUB_TOKEN: ${{ secrets.BADGES_TOKEN }}
- name: Badge Creation (tag) (failure)
uses: RubbaBoy/[email protected]
if: github.event_name == 'push' && github.ref_type == 'tag' && steps.badges.outcome != 'success'
with:
NAME: ${{ steps.badges.outputs.source_tag }}_${{ steps.badges.outputs.platform }}_${{ steps.badges.outputs.python }}_celery${{ steps.badges.outputs.celery }}
ICON: 'https://simpleicons.vercel.app/${{ steps.badges.outputs.platform }}/ffffff'
LABEL: "celery-pubsub ${{ steps.badges.outputs.source_tag }}"
STATUS: "Failed"
COLOR: red
GITHUB_TOKEN: ${{ secrets.BADGES_TOKEN }}