name: CI

on: push

jobs:

  mypy:
    name: 'MyPy'
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Setup python
        uses: actions/setup-python@v2
        with:
          python-version: '3.9'

      - name: Install dependencies
        run: pip install -U . --upgrade-strategy eager -r requirements-test.txt

      - name: Run MyPy check
        run: mypy tractor/ --ignore-missing-imports

  testing:

    name: '${{ matrix.os }} Python ${{ matrix.python }} - ${{ matrix.spawn_backend }}'
    timeout-minutes: 9
    runs-on: ${{ matrix.os }}

    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, windows-latest]
        python: ['3.9']
        spawn_backend: ['trio', 'mp']

    steps:

      - name: Checkout
        uses: actions/checkout@v2

      - name: Setup python
        uses: actions/setup-python@v2
        with:
          python-version: '${{ matrix.python }}'

      - name: Install dependencies
        run: pip install -U . -r requirements-test.txt -r requirements-docs.txt --upgrade-strategy eager

      - name: Run tests
        run: pytest tests/ --spawn-backend=${{ matrix.spawn_backend }} -rs

  testing-msgspec:
    # runs py3.9 jobs on all OS's but with optional `msgspec` dep installed
    name: '${{ matrix.os }} Python ${{ matrix.python }} - ${{ matrix.spawn_backend }} - msgspec'
    timeout-minutes: 10
    runs-on: ${{ matrix.os }}

    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, windows-latest]
        python: ['3.9']
        spawn_backend: ['trio', 'mp']

    steps:

      - name: Checkout
        uses: actions/checkout@v2

      - name: Setup python
        uses: actions/setup-python@v2
        with:
          python-version: '${{ matrix.python }}'

      - name: Install dependencies
        run: pip install -U .[msgspec] -r requirements-test.txt -r requirements-docs.txt --upgrade-strategy eager

      - name: Run tests
        run: pytest tests/ --spawn-backend=${{ matrix.spawn_backend }} -rs