# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions

name: Exercises check

on:
  push:
    branches:
      - master
      - main
  pull_request:

jobs:
  housekeeping:
    runs-on: ubuntu-22.04
    steps:
    - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11

    - name: Set up Python
      uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c
      with:
        python-version: 3.11.2

    - name: Download & Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install flake8 requests
        git clone https://github.com/exercism/problem-specifications .problem-specifications
        pip install -r requirements-generator.txt

    # - name: Check readmes
    #   run: |
    #     ./bin/check-readmes.sh

    - name: Generate tests
      run: |
       bin/generate_tests.py --verbose -p .problem-specifications --check

    - name: Lint with flake8
      run: |
        # stop the build if there are Python syntax errors or undefined names
        flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
        # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
        flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics

    - name:  Test template status
      continue-on-error: true
      run: |
        ./bin/template_status.py -v -p .problem-specifications

  canonical_sync:
    runs-on: ubuntu-22.04
    needs: housekeeping
    strategy:
      matrix:
        python-version: [3.7, 3.8, 3.9, 3.10.6, 3.11.2]
    steps:
    - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11

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

    - name: Install dataclasses package
      if: ${{ matrix.python-version == '3.6' }}
      run: pip install dataclasses

    - name: Install pytest
      run: pip install pytest~=7.2.2

    - name: Check exercises
      run: |
        ./bin/test_exercises.py
