name: Python codeqa/test on: push: branches: [main] pull_request: jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: python-version: 3.x - uses: actions/cache@v2 with: path: ~/.cache/pip key: pip-lint - name: Install dependencies run: pip install black isort pyproject-flake8 - name: Run black run: black --check --diff src tests - name: Run isort run: isort -c --diff src tests - name: Run flake8 run: pflake8 src tests test: strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-10.15, macos-11, windows-latest] python-version: ["3.7", "3.8", "3.9", "3.10", "pypy-3.7"] exclude: - os: macos-10.15 python-version: "3.8" - os: macos-10.15 python-version: "3.9" - os: macos-10.15 python-version: "pypy-3.7" - os: macos-11 python-version: "3.8" - os: macos-11 python-version: "3.9" - os: macos-11 python-version: "pypy-3.7" - os: windows-latest python-version: "3.8" - os: windows-latest python-version: "3.9" - os: windows-latest python-version: "pypy-3.7" runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} - uses: actions/cache@v2 with: path: ~/.cache/pip key: pip-test-${{ matrix.python-version }}-${{ matrix.os }} - name: Install the project run: "pip install --no-binary=:all: ." - name: Install test dependencies run: pip install .[test] coverage[toml] - name: Test with pytest run: | coverage run -m pytest -W always coverage xml - name: Send coverage data to Codecov uses: codecov/codecov-action@v1 with: file: coverage.xml