# Run tests on every push and pull request
name: Tests

on:
  push:
    branches: [main, master, develop]
  pull_request:
    branches: [main, master, develop]

jobs:
  test:
    runs-on: ubuntu-latest
    
    strategy:
      fail-fast: false  # Don't cancel other jobs if one fails
      matrix:
        python-version: ["3.11", "3.12", "3.13"]
    
    steps:
      # 1. Get the code
      - name: Checkout code
        uses: actions/checkout@v4
      
      # 2. Set up Python
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v5
        with:
          python-version: ${{ matrix.python-version }}
      
      # 3. Install system dependencies (for pyzbar QR reading)
      - name: Install system dependencies
        run: |
          sudo apt-get update
          sudo apt-get install -y libzbar0
      
      # 4. Install the package with all dependencies
      - name: Install package
        run: |
          python -m pip install --upgrade pip
          pip install -e ".[dev]"
      
      # 5. Run tests with coverage
      - name: Run tests
        run: |
          pytest --cov=stegasoo --cov-report=xml --cov-report=term-missing
      
      # 6. Upload coverage report (optional - integrates with codecov.io)
      - name: Upload coverage
        uses: codecov/codecov-action@v4
        if: matrix.python-version == '3.11'  # Only upload once
        with:
          files: ./coverage.xml
          fail_ci_if_error: false  # Don't fail if codecov is down
