alice4space/qutree

View on GitHub
.github/workflows/unit.yaml

Summary

Maintainability
Test Coverage
name: Unit tests

on:
  workflow_call:
  push:
    branches:
      - main
  pull_request:

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: "3.10"
      - uses: pre-commit/action@v3.0.0

  mypy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: "3.10"
      - name: Install nox
        run: pip install nox
      - name: run mypy checks
        run: nox -s mypy

  docs:
    needs: [lint, mypy]
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: "3.10"
      - name: Install nox
        run: pip install nox
      - name: build static docs
        run: nox -s docs

  build:
    needs: [lint, mypy]
    strategy:
      fail-fast: true
      matrix:
        os: [ubuntu-latest]
        python-version: ["3.8", "3.9", "3.10", "3.11"]
        include:
          - os: macos-latest # macos test
            python-version: "3.11"
          - os: windows-latest # windows test
            python-version: "3.11"
    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 }}
      - name: Install nox
        run: pip install nox
      - name: test with pytest
        run: nox -s ci-test
      - name: assess dead fixtures
        if: ${{ matrix.python-version == '3.10' }}
        shell: bash
        run: nox -s dead-fixtures
      - uses: actions/upload-artifact@v4
        if: ${{ matrix.python-version == '3.10' }}
        with:
          name: coverage
          path: coverage.xml

  coverage:
    needs: [build]
    runs-on: ubuntu-latest
    steps:
      - uses: actions/download-artifact@v4
        with:
          name: coverage
          path: coverage.xml
      - name: codecov
        uses: codecov/codecov-action@v3
        with:
          file: ./coverage.xml
          token: ${{ secrets.CODECOV_TOKEN }}
          verbose: true