name: Build and Test Bandit

on: [push, pull_request]

jobs:
  format:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: [3.8]
    steps:
    - name: Checkout repository
      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 tox
    - name: Run tox
      run: tox run -e format

  pep8:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: [3.8]
    steps:
    - name: Checkout repository
      uses: actions/checkout@v4
      with:
        fetch-depth: 2
    - 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 tox
    - name: Run tox
      run: tox run -e pep8

  tests:
    strategy:
      matrix:
        python-version: [
          ["3.8", "38"],
          ["3.9", "39"],
          ["3.10", "310"],
          ["3.11", "311"],
          ["3.12", "312"],
          ["3.13.0-a - 3.13", "313"],
        ]
        os: [ubuntu-latest, macos-latest]
    runs-on: ${{ matrix.os }}
    name: ${{ matrix.os }} (${{ matrix.python-version[0] }})
    steps:
    - name: Checkout repository
      uses: actions/checkout@v4
    - name: Set up Python ${{ matrix.python-version[0] }}
      uses: actions/setup-python@v5
      with:
        python-version: ${{ matrix.python-version[0] }}
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install tox
    - name: Run tox
      run: tox run -e py${{ matrix.python-version[1] }}
