name: Run the test suite on: push: branches: [main] pull_request: workflow_dispatch: schedule: - cron: '0 6 * * 1' jobs: test: strategy: fail-fast: false matrix: os: [ubuntu-latest] python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "pypy-3.8", "pypy-3.9"] include: - os: macos-latest python-version: "3.7" - os: windows-latest python-version: "3.7" - os: macos-latest python-version: "3.11" - os: windows-latest python-version: "3.11" - os: macos-latest python-version: "pypy-3.9" - os: windows-latest python-version: "pypy-3.9" runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} cache: pip cache-dependency-path: setup.cfg - name: Install the project and its test dependencies run: pip install --no-binary=setuptools,wheel .[test] coverage[toml] - name: Test with pytest run: | python -m coverage run -m pytest -W always python -m coverage xml - name: Send coverage data to Codecov uses: codecov/codecov-action@v3 with: file: coverage.xml mypy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Install the project and its Mypy dependencies run: pip install --no-binary=setuptools,wheel .[types] - name: Test with Mypy run: mypy