Skip to content

Merge pull request #2031 from maxberger/master #1654

Merge pull request #2031 from maxberger/master

Merge pull request #2031 from maxberger/master #1654

Workflow file for this run

name: Test
on: [push, pull_request]
jobs:
test-ubuntu-python-newest:
name: Test Ubuntu:latest Python:newest
needs: lint
strategy:
matrix:
os: [ubuntu-latest]
python-version: ['3.14']
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install Test dependencies
run: pip install tox
- name: Test with newest Python on latest Ubuntu
run: tox -c pyproject.toml -e py
test-python-32bit:
name: Test Ubuntu:latest Python:32-bit
needs: [lint, test-ubuntu-python-newest]
strategy:
matrix:
os: [ubuntu-latest]
python-version: ['3.11']
runs-on: ${{ matrix.os }}
container:
image: i386/python:${{ matrix.python-version }}
volumes:
- /home/runner/work/_temp:/__e/node24
steps:
- name: Update system
run: |
apt-get update
- name: Fix checkout and upload-artifact
run: |
apt-get install -y nodejs npm
mkdir -p /__e/node24/bin
ln -sf $(which node) /__e/node24/bin/node
ln -sf $(which npm) /__e/node24/bin/npm
ln -sf $(which npx) /__e/node24/bin/npx
- name: Install git
run: |
apt-get install -y git
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
- name: Install Python dependencies
run: |
apt-get install -y tox rust-all cargo
- name: Activate Python virtual environment
run: |
python3 -m venv venv
. venv/bin/activate
pip install --upgrade pip
- name: Test 32-bit
run: |
. venv/bin/activate
tox -c /__w/Radicale/Radicale/pyproject.toml -e py
test-ubuntu-python-oldest:
name: Test Ubuntu:latest Python:oldest
needs: [lint, test-ubuntu-python-newest, test-python-32bit]
strategy:
matrix:
os: [ubuntu-latest]
python-version: ['3.9']
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install Test dependencies
run: pip install tox
- name: Test with oldest Python on Ubuntu
run: tox -c pyproject.toml -e py
test-otheros-python-newest:
name: Test MacOS/Windows:latest Python:newest
needs: [lint, test-ubuntu-python-newest, test-python-32bit]
strategy:
matrix:
os: [macos-latest, windows-latest]
python-version: ['3.14']
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install Test dependencies
run: pip install tox
- name: Test with latest Python on other OS
run: tox -c pyproject.toml -e py
test-otheros-python-oldest:
name: Test MacOS/Windows:latest Python:oldest
needs: [lint, test-ubuntu-python-oldest, test-otheros-python-newest]
strategy:
matrix:
os: [macos-latest, windows-latest]
python-version: ['3.9']
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install Test dependencies
run: pip install tox
- name: Test with oldest Python on other OS
run: tox -c pyproject.toml -e py
test-python-versions:
name: Test Ubuntu/MacOS/Windows:latest Python:Matrix
needs: [lint, test-otheros-python-oldest, test-otheros-python-newest, test-ubuntu-python-oldest, test-ubuntu-python-newest]
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ['3.10', '3.11', '3.12', '3.13', 'pypy-3.9', 'pypy-3.10', 'pypy-3.11']
exclude:
- os: windows-latest
python-version: 'pypy-3.9'
- os: windows-latest
python-version: 'pypy-3.10'
- os: windows-latest
python-version: 'pypy-3.11'
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install Test dependencies
run: pip install tox
- name: Test with older Python
run: tox -c pyproject.toml -e py
coveralls-test:
name: Coveralls:Test
needs: [test-ubuntu-python-newest, test-python-32bit]
if: github.event_name == 'push'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: '3.14'
- name: Install Test dependencies
run: pip install tox
- name: Test
run: tox -c pyproject.toml -e py
- name: Install Coveralls
if: github.event_name == 'push'
run: pip install coveralls
- name: Upload coverage to Coveralls
if: github.event_name == 'push'
env:
COVERALLS_PARALLEL: true
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: coveralls --service=github
coveralls-finish:
name: Coveralls:Finish
needs: coveralls-test
if: github.event_name == 'push'
runs-on: ubuntu-latest
steps:
- uses: actions/setup-python@v5
with:
python-version: 3.x
- name: Install Coveralls
run: pip install coveralls
- name: Finish Coveralls parallel builds
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: coveralls --service=github --finish
js-test:
name: JS Type Check
runs-on: ubuntu-latest
needs: test-ubuntu-python-newest
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v5
with:
node-version: 24
- name: JS Type Check
run: |
set -o pipefail
npx -p typescript tsc -p radicale/web/jsconfig.json | npx typescript-xunit-xml > tsc-results.xml
- uses: mikepenz/action-junit-report@v6
if: ${{ failure() && (github.event.pull_request.head.repo.full_name != github.repository) }}
with:
report_paths: 'tsc-results.xml'
annotate_only: true # forked repo cannot write to checks so just do annotations
- uses: mikepenz/action-junit-report@v6
if: ${{ always() && github.event.pull_request.head.repo.full_name == github.repository }}
with:
report_paths: 'tsc-results.xml'
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: '3.14'
- name: Install tox
run: pip install tox
- name: Lint
run: tox -c pyproject.toml -e flake8,mypy,isort
integ-test:
timeout-minutes: 60
runs-on: ubuntu-latest
needs: test-ubuntu-python-newest
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: '3.12'
- name: Install uv
run: pip install uv
- name: Install Playwright Browsers
run: uv run --extra integ_test playwright install --with-deps
- name: Run Integration Tests
run: uv run --extra integ_test pytest --junitxml=pytest-results.xml integ_tests
- uses: mikepenz/action-junit-report@v6
if: ${{ failure() && (github.event.pull_request.head.repo.full_name != github.repository) }}
with:
report_paths: 'pytest-results.xml'
annotate_only: true # forked repo cannot write to checks so just do annotations
- uses: mikepenz/action-junit-report@v6
if: ${{ always() && github.event.pull_request.head.repo.full_name == github.repository }}
with:
report_paths: 'pytest-results.xml'