name: test on: push: branches-ignore: [deploy] pull_request: branches: [main] jobs: test: runs-on: ${{ matrix.os }} continue-on-error: ${{ matrix.experimental }} strategy: matrix: os: [ubuntu-latest] python-version: ['3.10', '3.11', '3.12'] experimental: [false] include: - os: ubuntu-latest python-version: '3.13-dev' experimental: true - os: macos-latest python-version: '3.11' experimental: true fail-fast: false steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} cache: 'pip' cache-dependency-path: pyproject.toml # experimental targets generally lack lxml wheels - name: Install libxml2 and libxslt development packages if: ${{ matrix.experimental }} run: sudo apt install libxml2-dev libxslt-dev python3-dev # macos needs newer bash - name: Install macos deps if: ${{ matrix.os == 'macos-latest' }} run: | brew install bash gnu-sed # enable gnu-sed usage as "sed" echo "/usr/local/opt/gnu-sed/libexec/gnubin" >> $GITHUB_PATH - name: Install dependencies run: | python -m pip install --upgrade pip pip install ".[test]" pytest-github-actions-annotate-failures - name: Test with pytest env: PY_COLORS: 1 # forcibly enable pytest colors run: | pytest --cov --cov-report=term --cov-report=xml -v - name: Submit code coverage to codecov if: ${{ matrix.os == 'ubuntu-latest' }} uses: codecov/codecov-action@v3 with: files: ./coverage.xml lint: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Python 3 uses: actions/setup-python@v5 with: python-version: '3.x' - name: Install dependencies run: | python -m pip install --upgrade pip pip install . pylint - name: Run linting tools run: pylint --exit-zero src/pkgdev format: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - uses: psf/black@stable