Skip to content

Code quality

Code quality #15

Workflow file for this run

name: Tox Tests
on:
push:
branches: [master, main, v0.6]
pull_request:
branches: [master, main, v0.6]
jobs:
tests:
name: "Ubuntu ${{ matrix.ubuntu }} / ${{ matrix.tox-env }}"
runs-on: ubuntu-latest
container:
image: ubuntu:${{ matrix.ubuntu }}
options: --init
strategy:
fail-fast: false
matrix:
include:
# ── Python 2.7 (bionic & focal only) ─────────────────
- ubuntu: bionic
tox-env: py27
stats-env: ",stats"
python-pkg: "python3.8"
python-dev-pkg: "python-all-dev python3.8-dev"
python-venv-pkg: "python3.8-venv"
python-bin: python3.8
extra-pkgs: "python-setuptools python-msgpack python-prctl
python-qt4"
start-tor: false
deadsnakes-ppa: false
- ubuntu: bionic
tox-env: py27-portable
python-pkg: "python3.8"
python-dev-pkg: "python-all-dev python3.8-dev"
python-venv-pkg: "python3.8-venv"
python-bin: python3.8
extra-pkgs: "python-setuptools python-msgpack python-prctl
python-qt4"
start-tor: false
deadsnakes-ppa: false
- ubuntu: focal
tox-env: py27
stats-env: ",stats"
python-pkg: "python3.9 python3-pip"
python-dev-pkg: "python-all-dev python3.9-dev"
python-venv-pkg: "python3.9-venv"
python-bin: python3.9
extra-pkgs: "python-setuptools"
start-tor: false
deadsnakes-ppa: false
- ubuntu: focal
tox-env: py27-portable
python-pkg: "python3.9 python3-pip"
python-dev-pkg: "python-all-dev python3.9-dev"
python-venv-pkg: "python3.9-venv"
python-bin: python3.9
extra-pkgs: "python-setuptools"
start-tor: false
deadsnakes-ppa: false
# ── Python 3 ─────────────────────────────────────────
- ubuntu: bionic
tox-env: py38
stats-env: ",stats"
python-pkg: python3.8
python-dev-pkg: python3.8-dev
python-venv-pkg: python3.8-venv
python-bin: python3.8
extra-pkgs: ""
start-tor: false
deadsnakes-ppa: true
- ubuntu: focal
tox-env: py39
stats-env: ",stats"
python-pkg: python3.9
python-dev-pkg: python3.9-dev
python-venv-pkg: python3.9-venv
python-bin: python3.9
extra-pkgs: ""
start-tor: false
deadsnakes-ppa: true
- ubuntu: jammy
tox-env: py310
stats-env: ",stats"
python-pkg: python3
python-dev-pkg: python3-dev
python-venv-pkg: ""
python-bin: python3
extra-pkgs: ""
start-tor: false
deadsnakes-ppa: false
env:
DEBIAN_FRONTEND: noninteractive
LANG: en_US.UTF-8
LANGUAGE: "en_US:en"
LC_ALL: en_US.UTF-8
steps:
- name: Install base packages
run: |
apt-get update -q
apt-get install -yq --no-install-suggests --no-install-recommends \
software-properties-common
- name: Add deadsnakes PPA
if: matrix.deadsnakes-ppa
run: add-apt-repository -y ppa:deadsnakes/ppa
- name: Install system dependencies
run: |
apt-get install -yq --no-install-suggests --no-install-recommends \
build-essential libcap-dev libffi-dev \
libssl-dev python3-dev python3-pip \
${{ matrix.python-pkg }} ${{ matrix.python-dev-pkg }} \
${{ matrix.python-venv-pkg }} ${{ matrix.extra-pkgs }} \
language-pack-en qt5dxcb-plugin tor xvfb git sudo dumb-init
# actions/checkout@v4 needs Node 20 → glibc 2.28+.
# Bionic (glibc 2.27) and Gitea runners use a manual git clone.
- name: Checkout repository
if: env.GITEA_ACTIONS != 'true' && matrix.ubuntu != 'bionic'
uses: actions/checkout@v4
- name: Checkout repository (manual)
if: env.GITEA_ACTIONS == 'true' || matrix.ubuntu == 'bionic'
env:
TOKEN: ${{ github.token }}
run: |
git config --global --add safe.directory "$PWD"
git init
SERVER="${GITHUB_SERVER_URL#https://}"
git remote add origin "https://x-access-token:${TOKEN}@${SERVER}/${GITHUB_REPOSITORY}.git"
git fetch --depth 1 origin "${GITHUB_SHA}"
git checkout FETCH_HEAD
- name: Install tox
run: |
${{ matrix.python-bin }} -m pip install --upgrade pip setuptools wheel
${{ matrix.python-bin }} -m pip install --upgrade tox virtualenv
- name: Create unprivileged user
run: |
useradd -m builder
chown -R builder:builder .
# TODO: fix tor tests
# - name: Start tor
# if: matrix.start-tor
# run: service tor start
- name: Run tox ${{ matrix.tox-env }}
run: runuser -u builder -- tox -e "reset,${{ matrix.tox-env }}${{ matrix.stats-env }}"