Skip to content

chore/ci: linter with reviewdog #1841

chore/ci: linter with reviewdog

chore/ci: linter with reviewdog #1841

Workflow file for this run

name: Run Tox tests
on:
push:
branches:
- master
- releases/*
pull_request:
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-22.04, windows-latest]
python-version: [
"3.9",
"3.10",
"3.11",
"3.12",
"3.13-dev", # Not yet released, so we need to use -dev to get the release candidate
"pypy-3.9",
]
include:
- os: macos-latest
python-version: "3.11"
exclude:
- os: windows-latest
python-version: 'pypy-3.9'
name: Test Python ${{ matrix.python-version }} on ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 20
- name: Setup python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
architecture: x64
- name: Install system library(linux)
if: runner.os == 'linux'
run: |
sudo apt-get update -q -y
sudo apt-get install -q -y libarchive-dev graphviz
- name: Download libarchive(Windows)
if: runner.os == 'Windows'
uses: carlosperate/download-file-action@v2
with:
file-url: "https://libarchive.org/downloads/libarchive-v3.5.3-win64.zip"
file-name: "libarchive-v3.5.3-win64.zip"
- name: Install libarchive(Windows)
if: runner.os == 'Windows'
run: |
$file = "libarchive-v3.5.3-win64.zip"
Expand-Archive -LiteralPath $file -DestinationPath $env:GITHUB_WORKSPACE
choco install graphviz
- name: Install dependencies
run: |
pip install -U pip tox wheel setuptools setuptools_scm[toml]
pip install tox-gh-actions coveralls coverage[toml]
- name: Test project with tox
if: runner.os != 'Windows'
run: |
tox
coverage xml -o cobertura.xml
env:
PYTEST_ADDOPTS: "--cov-config=pyproject.toml --cov --cov-append --benchmark-skip"
- name: Test project with tox (windows)
if: runner.os == 'Windows'
run: |
echo LIBARCHIVE="${env:LIBARCHIVE}"
tox
coverage xml -o cobertura.xml
env:
LIBARCHIVE: "${{ github.workspace }}\\libarchive\\bin\\archive.dll"
PYTEST_ADDOPTS: "--cov-config=pyproject.toml --cov --cov-append --benchmark-skip"
- name: Send coverage to coveralls
run: |
coveralls
env:
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COVERALLS_PARALLEL: true
COVERALLS_FLAG_NAME: py-${{ matrix.python-version }}-${{ matrix.os }}
- uses: actions/setup-java@v4
if: runner.os != 'Windows'
with:
distribution: 'temurin'
java-version: '21'
- name: Send coverage to codacy
if: runner.os != 'Windows'
run: |
curl -LS -o codacy-coverage-reporter-assembly.jar "$(curl -LSs https://api.github.com/repos/codacy/codacy-coverage-reporter/releases/latest | jq -r '.assets | map({name, browser_download_url} | select(.name | endswith(".jar"))) | .[0].browser_download_url')"
java -jar codacy-coverage-reporter-assembly.jar report -l Python -t ${PROJECT_TOKEN} --partial -r cobertura.xml
env:
PROJECT_TOKEN: ${{ secrets.CODACY_PROJECT_TOKEN }}
linter:
name: Linter checks
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 20
- name: Setup python
uses: actions/setup-python@v5
with:
python-version: '3.12'
architecture: x64
- name: Setup reviewdog
run: |
/usr/bin/sh ./utils/reviewdog_install.sh -b ${RUNNER_TEMP} v0.20.3
- name: Install dependencies
run: |
pip install -U pip tox wheel setuptools setuptools_scm[toml]
- name: Lint check
run: |
tox -e check | reviewdog -f flake8 -reporter=github-check -fail-level=error
echo $?
env:
REVIEWDOG_TOKEN: ${{ secrets.REVIEWDOG_TOKEN }}
- name: MyPy check
run: |
tox -e mypy | reviewdog -f mypy -reporter=github-check -fail-level=error
echo $?
env:
REVIEWDOG_TOKEN: ${{ secrets.REVIEWDOG_TOKEN }}
- name: docs build and link check
run: |
tox -e docs
test_slow_tests:
name: Test slow test cases
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 20
- name: Setup python
uses: actions/setup-python@v5
with:
python-version: '3.11'
architecture: x64
- name: Install system library(linux)
run: |
sudo apt-get update -q -y
sudo apt-get install -q -y libarchive-dev
- name: Install dependencies
run: |
pip install -U pip setuptools setuptools_scm[toml]
pip install tox tox-gh-actions
- name: Test project with tox
run: tox
env:
PYTEST_ADDOPTS: "--no-cov --run-slow -k extract_high_compression_rate"
test_on_aarch64:
name: Test on ${{ matrix.arch }}
runs-on: ubuntu-22.04
strategy:
matrix:
arch: [aarch64]
distro: [ubuntu22.04]
steps:
- name: Checkout 🛎️
uses: actions/checkout@v4
with:
fetch-depth: 20
- name: Setup reviewdog
uses: reviewdog/action-setup@v1
with:
reviewdog_version: latest
- name: Build & run test
uses: uraimo/run-on-arch-action@v2
with:
arch: ${{ matrix.arch }}
distro: ${{ matrix.distro }}
githubToken: ${{ github.token }}
install: |
apt-get update -q -y
apt-get install -q -y p7zip-full python3 python3-pip python3-cffi build-essential gcc git libffi-dev python3-dev libarchive-dev
python3 -m pip install -U pip tox setuptools setuptools_scm[toml] coverage[toml] coveralls
run: |
git config --global --add safe.directory ${GITHUB_WORKSPACE}
python3 -c "import platform;print('Machine type:', platform.machine())"
python3 -m tox -e py310
coveralls
env: |
PYTEST_ADDOPTS: "--cov-config=pyproject.toml --cov --cov-append --benchmark-skip"
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COVERALLS_PARALLEL: true
COVERALLS_FLAG_NAME: py-${{ matrix.python-version }}-${{ matrix.os }}
finish:
runs-on: ubuntu-latest
name: finish parallel build
needs: build
steps:
- name: Tell Coveralls that the parallel build is finished
run: |
curl -k \
https://coveralls.io/webhook?repo_token=$COVERALLS_REPO_TOKEN \
-d "payload[build_num]=$GITHUB_SHA&payload[status]=done"
env:
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '21'
- name: Send coverage to codacy
run: |
curl -LS -o codacy-coverage-reporter-assembly.jar "$(curl -LSs https://api.github.com/repos/codacy/codacy-coverage-reporter/releases/latest | jq -r '.assets | map({name, browser_download_url} | select(.name | endswith(".jar"))) | .[0].browser_download_url')"
java -jar codacy-coverage-reporter-assembly.jar final -t ${PROJECT_TOKEN}
env:
PROJECT_TOKEN: ${{ secrets.CODACY_PROJECT_TOKEN }}