name: CATENets Tests

on:
  push:
    branches: [main, release]
  pull_request:
    types: [opened, synchronize, reopened]
  schedule:
    - cron:  '0 0 * * 0'


jobs:
  Linter:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        python-version: [3.8]
        os: [ubuntu-latest]
    steps:
      - uses: actions/checkout@v2
        with:
          submodules: true
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v1
        with:
          python-version: ${{ matrix.python-version }}
      - name: Install dependencies
        run: pip install -r requirements_dev.txt
      - name: pre-commit validation
        run: pre-commit run --files catenets/*
      - name: Security checks
        run: |
            bandit -r catenets/*

  Library:
    needs: [Linter]
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        python-version: ['3.7', '3.8', '3.9', "3.10"]
        os: [macos-latest, ubuntu-latest, windows-latest]
    steps:
      - uses: actions/checkout@v2
        with:
          submodules: true
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v1
        with:
          python-version: ${{ matrix.python-version }}
      - name: Install MacOS dependencies
        run: |
            brew install libomp
        if: ${{ matrix.os == 'macos-latest' }}
      - name: Install dependencies
        run: |
            pip install -r requirements_dev.txt
            pip install .
      - name: Test with pytest Unix
        run: pytest -vvvsx -m "not slow"
        if: ${{ matrix.os != 'windows-latest' }}
      - name: Test with pytest Windows
        run: |
            cd tests\datasets
            pytest -vvvsx -m "not slow"
            cd ..\..

            cd tests\models\torch
            pytest -vvvsx -m "not slow"
        if: ${{ matrix.os == 'windows-latest' }}
