name: "[CI] Test branch"

on: [push]

permissions:
  contents: read

jobs:
  unitlint:
    if: github.repository == 'aws-cloudformation/cfn-lint' && github.ref_name == 'main'
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        python: ["3.10", "3.11", "3.12", "3.13", "3.14"]

    steps:
      - uses: actions/checkout@v6
      - name: Setup Python
        uses: actions/setup-python@v6
        with:
          python-version: ${{ matrix.python }}
      - name: Install Tox
        run: pip install tox tox-gh
      - name: Run Tox
        run: tox
        env:
          TOX_GH_MAJOR_MINOR: ${{ matrix.python }}
          PYTEST_ADDOPTS: '-m "data or (not data)"'
      - uses: codecov/codecov-action@v7
        if: matrix.os == 'ubuntu-latest'
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
          file: ./coverage.xml # optional
          name: py${{ matrix.python }}-${{ matrix.os }}
          flags: unittests # optional
          fail_ci_if_error: true # optional (default = false)
  integration:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        python: ["3.10"]
    steps:
      - uses: actions/checkout@v6
      - name: Setup Python
        uses: actions/setup-python@v6
        with:
          python-version: ${{ matrix.python }}
      - name: Install cfn-lint
        run: |
          pip3 install -e .
      - name: Run cfn-lint
        run: |
          cfn-lint test/fixtures/templates/good/generic.yaml
          cat test/fixtures/templates/good/generic.yaml | cfn-lint
  dependencies:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest]
        python: ["3.10"]
    steps:
      - uses: actions/checkout@v6
      - name: Setup Python
        uses: actions/setup-python@v6
        with:
          python-version: ${{ matrix.python }}
      - name: Install cfn-lint
        run: |
          pip3 install -e .
          pip install --upgrade pip
          pip install --upgrade setuptools
      - uses: pypa/gh-action-pip-audit@v1.1.0
        with:
          ignore-vulns: |
            GHSA-r9hx-vwmv-q579
            PYSEC-2022-43012
            PYSEC-2024-60
