name: CI

on: [push,pull_request,workflow_dispatch]

jobs:
  build:
    strategy:
      matrix:
        runs-on: [ubuntu-20.04, ubuntu-latest, macOS-latest]
        python-version: [ '3.6', '3.8', '3.9', '3.11']
        exclude:
          - runs-on: ubuntu-latest
            python-version: '3.6'
          - runs-on: macOS-latest
            python-version: '3.6'
      fail-fast: false

    runs-on: ${{ matrix.runs-on }}

    env:
      AWS_ACCESS_KEY_ID: MOCK_AWS_ACCESS_KEY_ID
      AWS_SECRET_ACCESS_KEY: MOCK_AWS_SECRET_ACCESS_KEY
      AWS_SESSION_TOKEN: MOCK_AWS_SESSION_TOKEN

    steps:
      - uses: actions/checkout@v4
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v5
        with:
          python-version: ${{ matrix.python-version }}
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt
          pip install -r requirements-test.txt
          pip install pytest
      #     - name: Lint with flake8
      #       run: |
      #         pip install flake8
      #         # 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: Check with pycodestyle
        run: |
          pycodestyle -v awscurl
      - name: Test with pytest
        run: |
          python --version
          pytest -v --cov=awscurl --cov-fail-under=77 --cov-report html

