name: CI

on:
  push:
    branches: [master, ci]
  pull_request:
    branches: [master]
  workflow_dispatch:

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest]
        python: [3.9, "3.10"]

    steps:
      - uses: actions/checkout@v2
      - name: Set up Python ${{ matrix.python }}
        uses: actions/setup-python@v2
        with:
          python-version: ${{ matrix.python }}
      - name: Install dependencies
        run: |
          pip install -q --upgrade pip
          pip install -q --upgrade codecov coverage black flake8 codacy-coverage
      - name: Build and install
        run: |
          make install
      - name: Lint
        run: |
          black --check --diff src
          flake8 --count --per-file-ignores="__init__.py:F401" src
      - name: Tests
        run: |
          coverage run -m unittest discover -v - s src
          coverage xml
      - name: Upload coverage to Codecov
        uses: codecov/codecov-action@v1
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
          files: ./coverage.xml
      - name: Run codacy-coverage-reporter
        if: runner.os == 'Linux'
        uses: codacy/codacy-coverage-reporter-action@master
        with:
          project-token: ${{ secrets.CODACY_PROJECT_TOKEN }}
          coverage-reports: coverage.xml
