name: ci
on: [push, pull_request]

jobs:
  tests:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-20.04, windows-2019]
        python-version: ["3.10", "3.9", "3.8", "3.7", "3.6"]
        environment: ['3.8', '3.10', '3.9', '3.7', '3.6', 'interpreter']
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
        with:
          submodules: recursive

      - uses: actions/setup-python@v2
        if: ${{ matrix.environment != 'interpreter' }}
        with:
          python-version: ${{ matrix.environment }}

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

      - name: Install dependencies
        run: 'pip install .[testing]'

      - name: Run tests
        run: python -m pytest
        env:
          JEDI_TEST_ENVIRONMENT: ${{ matrix.environment }}

  code-quality:
    runs-on: ubuntu-20.04
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
        with:
          submodules: recursive

      - name: Install dependencies
        run: 'pip install .[qa]'

      - name: Run tests
        run: |
          python -m flake8 jedi setup.py
          python -m mypy jedi sith.py

  coverage:
    runs-on: ubuntu-20.04

    steps:
      - name: Checkout code
        uses: actions/checkout@v2
        with:
          submodules: recursive

      - name: Install dependencies
        run: 'pip install .[testing] coverage'

      - name: Run tests
        run: |
          python -m coverage run --source jedi -m pytest
          python -m coverage report

      - name: Upload coverage data
        run: |
          pip install --quiet codecov coveralls
          python -m coverage xml
          python -m coverage report -m
          bash <(curl -s https://codecov.io/bash) -X gcov -X coveragepy -X search -X fix -X xcode -f coverage.xml