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

name: test the package

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]
  schedule: 
    - cron: '0 0 * * SUN'    

jobs:
  build:

    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        python-version: ["3.9", "3.10", "3.11", "3.12"]
        lxml-version: ["4.2.6", "4.3.5", "4.4.3", "4.5.2", "4.6.5", "4.7.1", "4.8.0", "4.9.1", "4.9.4", "5.0.1", "5.1.0"]
        exclude:
          - python-version: 3.9
            lxml-version: 4.2.6
          - python-version: 3.10
            lxml-version: 4.2.6
          - python-version: 3.10
            lxml-version: 4.3.5
          - python-version: 3.10
            lxml-version: 4.4.3
          - python-version: 3.10
            lxml-version: 4.5.2
          - python-version: 3.11
            lxml-version: 4.2.6
          - python-version: 3.11
            lxml-version: 4.3.5
          - python-version: 3.11
            lxml-version: 4.4.3
          - python-version: 3.11
            lxml-version: 4.5.2
          - python-version: 3.11
            lxml-version: 4.6.5
          - python-version: 3.11
            lxml-version: 4.7.1  
          - python-version: 3.11
            lxml-version: 4.8.0 
          - python-version: 3.12
            lxml-version: 4.2.6
          - python-version: 3.12
            lxml-version: 4.3.5           
          - python-version: 3.12
            lxml-version: 4.4.3
          - python-version: 3.12
            lxml-version: 4.4.3          
          - python-version: 3.12
            lxml-version: 4.5.2
          - python-version: 3.12
            lxml-version: 4.6.5
          - python-version: 3.12
            lxml-version: 4.7.1  
          - python-version: 3.12
            lxml-version: 4.8.0  
          - python-version: 3.12
            lxml-version: 4.9.1


    steps:
    - uses: actions/checkout@v2

    - name: Install lxml dependencies
      run: sudo apt-get install -y libxml2-dev libxslt-dev

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

    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        python -m pip install lxml==${{ matrix.lxml-version }}
        python -m pip install -r dev-requirements.txt
        python -m pip install -r requirements.txt

    - name: Test
      run: |
        make test report-coverage
