1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
name: Tests
on:
pull_request:
branches:
- main
- dev
- "maintain/*"
paths-ignore:
- "docs/**"
- "news/**"
- "*.md"
push:
branches:
- main
- dev
- "maintain/*"
paths-ignore:
- "docs/**"
- "news/**"
- "*.md"
concurrency:
group: ${{ github.event.number || github.run_id }}
cancel-in-progress: true
jobs:
Testing:
env:
PYTHONDEVMODE: 1
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
python-version: [3.9, "3.10", 3.11, 3.12, 3.13, 3.14]
os: [ubuntu-latest, windows-latest, macos-latest]
install-via: [pip]
include:
- python-version: 3.12
os: ubuntu-latest
install-via: script
- python-version: pypy-3.11
os: ubuntu-latest
install-via: pip
steps:
- uses: actions/checkout@v6.0.1
- name: Setup Python Versions
uses: actions/setup-python@v6
with:
python-version: |
3.9
3.10
3.11
3.12
3.13
3.14
allow-prereleases: true
if: matrix.os != 'macos-latest'
- name: Setup Python Versions
uses: actions/setup-python@v6
with:
python-version: |
3.10
3.11
3.12
3.13
3.14
allow-prereleases: true
if: matrix.os == 'macos-latest'
- name: Setup Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
cache: pip
allow-prereleases: true
- name: Cache venv
uses: actions/cache@v5.0.1
with:
path: .venv
key: venv-${{ runner.os }}-${{ matrix.python-version }}-${{ hashFiles('pdm.lock') }}
- name: Install uv
uses: astral-sh/setup-uv@v7.1.6
with:
version: "latest"
- name: Install current PDM via pip
if: matrix.install-via == 'pip'
run: python -m pip install -U .
- name: Install current PDM via script
if: matrix.install-via == 'script'
run: |
shasum -a256 --check install-pdm.py.sha256
python install-pdm.py --version head
echo "$HOME/.local/bin" >> $GITHUB_PATH
- name: Install Dev Dependencies
run: |
pdm install -v -Gtest
pdm run pip install -U setuptools
pdm info
# - name: Setup tmate session
# uses: mxschmitt/action-tmate@v3.22
- name: Run Tests
run: pdm run pytest -n auto --cov=pdm --cov-config=pyproject.toml --cov-report=xml tests
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v5.5.2
with:
token: ${{ secrets.CODECOV_TOKEN }}
file: ./coverage.xml
flags: unittests
Pack:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6.0.1
with:
fetch-depth: 0
- uses: actions/setup-python@v6
with:
python-version: 3.x
- name: Install PDM
run: |
python -m pip install .
pdm self add pdm-packer
- name: Pack pdm
run: pdm pack
- name: Test zipapp
run: python pdm.pyz --version
|