Merge pull request #2031 from maxberger/master #1654
This file contains hidden or 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: 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' |