From f3dc3ae29031679c3a502dc3b46a1a112d114bf7 Mon Sep 17 00:00:00 2001 From: Martin Larralde <martin.larralde@embl.de> Date: Sun, 13 Jun 2021 16:31:01 +0200 Subject: [PATCH] Add `test.yml` Actions workflow to test and measure coverage --- .github/workflows/requirements.txt | 6 + .github/workflows/test.yml | 199 +++++++++++++++++++++++++++++ 2 files changed, 205 insertions(+) create mode 100644 .github/workflows/requirements.txt create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/requirements.txt b/.github/workflows/requirements.txt new file mode 100644 index 0000000..3897d01 --- /dev/null +++ b/.github/workflows/requirements.txt @@ -0,0 +1,6 @@ +coverage ~=5.0 +codecov ~=2.0 +cython ~=0.29.16 +wheel +auditwheel +setuptools >=46.4.0 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..e39e7fd --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,199 @@ +name: Test + +on: + - push + - pull_request + +jobs: + + test_linux: + name: Test (Linux) + runs-on: ubuntu-latest + env: + OS: Linux + strategy: + matrix: + include: + - python-version: 3.5 + python-release: v3.5 + python-impl: CPython + - python-version: 3.6 + python-release: v3.6 + python-impl: CPython + - python-version: 3.7 + python-release: v3.7 + python-impl: CPython + - python-version: 3.8 + python-release: v3.8 + python-impl: CPython + - python-version: 3.9 + python-release: v3.9 + python-impl: CPython + - python-version: pypy-3.6 + python-release: v3.6 + python-impl: PyPy + - python-version: pypy-3.7 + python-release: v3.7 + python-impl: PyPy + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + submodules: true + - name: Cache Python requirements + uses: actions/cache@v2 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ matrix.python-version }} + restore-keys: ${{ runner.os }}-pip-${{ matrix.python-version }} + - name: Cache built C files + uses: actions/cache@v2 + with: + path: build + key: ${{ runner.os }}-build-${{ matrix.python-version }} + restore-keys: ${{ runner.os }}-build-${{ matrix.python-version }} + - name: Setup Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + - name: Update pip + run: python -m pip install -U pip wheel setuptools + - name: Install Python requirements + run: python -m pip install -r .github/workflows/requirements.txt + - name: Build C extension + run: python setup.py build_ext --inplace --debug + - name: Test with coverage + run: python -m coverage run -m unittest discover -vv + - name: Upload to Codecov + uses: codecov/codecov-action@v1 + with: + flags: ${{ matrix.python-impl }},${{ matrix.python-release }},${{ env.OS }} + name: test-python-${{ matrix.python-version }} + fail_ci_if_error: true + token: ${{ secrets.CODECOV_TOKEN }} + + test_osx: + name: Test (OSX) + runs-on: macos-latest + env: + OS: OSX + strategy: + matrix: + include: + - python-version: 3.5 + python-release: v3.5 + python-impl: CPython + - python-version: 3.6 + python-release: v3.6 + python-impl: CPython + - python-version: 3.7 + python-release: v3.7 + python-impl: CPython + - python-version: 3.8 + python-release: v3.8 + python-impl: CPython + - python-version: 3.9 + python-release: v3.9 + python-impl: CPython + - python-version: pypy-3.6 + python-release: v3.6 + python-impl: PyPy + - python-version: pypy-3.7 + python-release: v3.7 + python-impl: PyPy + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + submodules: true + - name: Cache Python requirements + uses: actions/cache@v2 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ matrix.python-version }} + restore-keys: ${{ runner.os }}-pip-${{ matrix.python-version }} + - name: Cache built C files + uses: actions/cache@v2 + with: + path: build + key: ${{ runner.os }}-build-${{ matrix.python-version }} + restore-keys: ${{ runner.os }}-build-${{ matrix.python-version }} + - name: Setup Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + - name: Update pip + run: python -m pip install -U pip wheel setuptools + - name: Install Python requirements + run: python -m pip install -r .github/workflows/requirements.txt + - name: Build C extension + run: python setup.py build_ext --inplace --debug + - name: Test with coverage + run: python -m coverage run -m unittest discover -vv + - uses: codecov/codecov-action@v1 + with: + flags: ${{ matrix.python-impl }},${{ matrix.python-release }},${{ env.OS }} + name: test-python-${{ matrix.python-version }} + fail_ci_if_error: true + token: ${{ secrets.CODECOV_TOKEN }} + + test_windows: + name: Test (Windows) + runs-on: windows-latest + env: + OS: Windows + strategy: + matrix: + include: + - python-version: 3.5 + python-release: v3.5 + python-impl: CPython + - python-version: 3.6 + python-release: v3.6 + python-impl: CPython + - python-version: 3.7 + python-release: v3.7 + python-impl: CPython + - python-version: 3.8 + python-release: v3.8 + python-impl: CPython + - python-version: 3.9 + python-release: v3.9 + python-impl: CPython + - python-version: pypy-3.6 + python-release: v3.6 + python-impl: PyPy + - python-version: pypy-3.7 + python-release: v3.7 + python-impl: PyPy + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + submodules: true + - name: Cache built C files + uses: actions/cache@v2 + with: + path: build + key: ${{ runner.os }}-build-${{ matrix.python-version }} + restore-keys: ${{ runner.os }}-build-${{ matrix.python-version }} + - name: Setup Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + architecture: x64 + - name: Update pip + run: python -m pip install -U pip wheel setuptools + - name: Install Python requirements + run: python -m pip install -r .github/workflows/requirements.txt + - name: Build C extension + run: python setup.py build_ext --inplace + - name: Test with coverage + run: python -m coverage run -m unittest discover -vv + - name: Upload to Codecov + uses: codecov/codecov-action@v1 + with: + flags: ${{ matrix.python-impl }},${{ matrix.python-release }},${{ env.OS }} + name: test-python-${{ matrix.python-version }} + fail_ci_if_error: true + token: ${{ secrets.CODECOV_TOKEN }} -- GitLab