diff --git a/.github/workflows/tox-tests.yml b/.github/workflows/tox-tests.yml new file mode 100644 index 0000000..80e40e7 --- /dev/null +++ b/.github/workflows/tox-tests.yml @@ -0,0 +1,58 @@ +name: Tests + +on: + push: + branches: [main] + pull_request: + +jobs: + build: + runs-on: ${{ matrix.platform }} + strategy: + fail-fast: false + matrix: + exclude: + - platform: windows-latest + python-version: [pypy-3.7, pypy-3.8, pypy-3.9, pypy-3.10] + - platform: macos-latest + python-version: [3.7, pypy-3.7] + - platform: ubuntu-latest + python-version: [3.12] + # https://help.github.com/articles/virtual-environments-for-github-actions + platform: + - ubuntu-latest # ubuntu-22.04 + - macos-latest # macOS-12 + - windows-latest # windows-2022 + python-version: [3.7, 3.8, 3.9, '3.10', 3.11, 3.12, pypy-3.7, pypy-3.8, pypy-3.9, pypy-3.10] + + steps: + - uses: actions/checkout@v3 + if: ${{ ! startsWith(matrix.python-version, 'pypy-') }} + - uses: actions/checkout@v1 + if: ${{ startsWith(matrix.python-version, 'pypy-') }} + # Using actions/checkout@v2 or later with pypy causes an error + # https://foss.heptapod.net/pypy/pypy/-/issues/3640 + # py.error.ENOENT: [No such file or directory]: + # listdir('/home/runner/work/tox-gh-actions/tox-gh-actions/.tox/dist/ + # warnings.warn(f\'"{wd.path}" is shallow and may cause errors\')',) + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade setuptools pip wheel + # Use the latest published version for myself :) + python -m pip install --pre tox-gh-actions + - name: Test with tox + run: tox + - name: Upload coverage.xml + if: ${{ matrix.platform == 'ubuntu-latest' && matrix.python-version == '3.12' }} + uses: actions/upload-artifact@v3 + with: + name: tox-gh-actions-coverage + path: coverage.xml + if-no-files-found: error + - name: Upload coverage.xml to codecov + if: ${{ matrix.platform == 'ubuntu-latest' && matrix.python-version == '3.12' }} + uses: codecov/codecov-action@v2 \ No newline at end of file