name: Test and lint

on:
  push:
    branches:
      - master
  pull_request:
  workflow_dispatch:

permissions:
  contents: read

concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

jobs:
  tests:
    name: Run tests

    strategy:
      fail-fast: false
      matrix:
        python-version: ["3.5", "3.6", "3.7", "3.8", "3.9.1", "3.9", "3.10", "3.11"]

    runs-on: ubuntu-20.04

    steps:
      - uses: actions/checkout@v3

      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}

      - name: Test typing_inspect
        run: |
          pip install -r test-requirements.txt
          py.test

  linting:
    name: Lint

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: "3"
          cache: "pip"
          cache-dependency-path: "test-requirements.txt"

      - name: Install dependencies
        run: |
          pip install --upgrade pip
          pip install -r test-requirements.txt

      - name: Lint implementation
        run: flake8 --config=.flake8 typing_inspect.py

      - name: Lint tests
        run: flake8 --config=.flake8-tests test_typing_inspect.py
