zincware/ZnTrack

View on GitHub
.github/workflows/test.yaml

Summary

Maintainability
Test Coverage
# This workflow will install Python dependencies, run tests
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions

name: tests

on:
  push:
    branches: [ main ]
  pull_request:
  schedule:
    - cron: '14 3 * * 1'  # at 03:14 on Monday.

jobs:
  pytest:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        python-version:
          - "3.12"
          - "3.11"
          - "3.10"
          - 3.9
        os:
          - ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}
      - name: Install Poetry
        uses: snok/install-poetry@v1
        with:
          virtualenvs-create: true
          virtualenvs-in-project: true
      - name: Install package
        run: |
          poetry install --no-interaction
      - name: Setup git user
        run: |
          git config --global user.name "John Doe"
          git config --global user.email johndoe@example.com
          git config --global init.defaultBranch "main"
      - name: Pytest
        run: |
          poetry run python --version
          poetry run coverage run -m pytest --benchmark-autosave -vv
          poetry run coverage xml
          poetry run coverage lcov
          poetry run py.test-benchmark compare --csv=export.csv
      - name: Coveralls
        uses: coverallsapp/github-action@master
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          path-to-lcov: coverage.lcov
      - uses: codecov/codecov-action@v2
        with:
          flags: fulltest
          verbose: true

  nbtest:
    runs-on: ubuntu-latest
    needs: [ pytest ]
    steps:
      - uses: actions/checkout@v2
      - name: Set up Python 3.11
        uses: actions/setup-python@v4
        with:
          python-version: "3.11"
      - name: Install Poetry
        uses: snok/install-poetry@v1
        with:
          virtualenvs-create: true
          virtualenvs-in-project: true
      - name: Install package
        run: |
          poetry install
      - name: Setup git user
        run: |
          git config --global user.name "John Doe"
          git config --global user.email johndoe@example.com
          git config --global init.defaultBranch "main"
      - name: Pytest
        run: |
          poetry run pytest --nbmake ./examples

  doctest:
    runs-on: ubuntu-latest
    needs: [ pytest, nbtest ]
    steps:
      - uses: actions/checkout@v2
      - name: Set up Python 3.11
        uses: actions/setup-python@v4
        with:
          python-version: "3.11"
      - name: Install Poetry
        uses: snok/install-poetry@v1
        with:
          virtualenvs-create: true
          virtualenvs-in-project: true
      - name: Install package
        run: |
          sudo apt install pandoc
          poetry install --with=docs
      - name: Build documentation
        run: |
          cd ./docs
          poetry run make html