diff --git a/.github/workflows/requirements.txt b/.github/workflows/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..3897d01e15d796e9b2ee7cd84367ab8f48071217 --- /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 0000000000000000000000000000000000000000..e39e7fd67923d5c5d49fbe926fa5a786183ff684 --- /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 }}