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

name: Python Portpicker & Portserver

on:
  push:
    branches:
    - 'main'
  pull_request:
    branches:
    - 'main'

jobs:
  build-ubuntu:

    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        python-version: [3.6, 3.7, 3.8, 3.9, '3.10']

    steps:
      - uses: actions/checkout@v2
      - 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
          pip install pytest tox
          if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
      - name: Test with tox
        run: |
          # Run tox using the version of Python in `PATH`
          tox -e py

  build-windows:

    runs-on: windows-latest
    strategy:
      fail-fast: false
      matrix:
        python-version: [3.6, 3.7, 3.8, 3.9, '3.10']

    steps:
      - uses: actions/checkout@v2
      - 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
          pip install pytest tox
          if (Test-Path "requirements.txt") { pip install -r requirements.txt }
      - name: Test with tox
        run: |
          # Run tox using the version of Python in `PATH`
          tox -e py
