name: PR Checks

on:
  pull_request:
  push:
    branches:
      - main

permissions:
  contents: read

jobs:
  smoke-and-tests:
    runs-on: ubuntu-latest

    steps:
      - name: Check out repository
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
        with:
          fetch-depth: 0

      - name: Set up Node.js
        uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
        with:
          node-version: 22

      - name: Set up Bun
        uses: oven-sh/setup-bun@4bc047ad259df6fc24a6c9b0f9a0cb08cf17fbe5 # v2.0.1
        with:
          bun-version: 1.3.11

      - name: Set up Python
        uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0
        with:
          python-version: "3.12"
          cache: "pip"
          cache-dependency-path: python/requirements.txt

      - name: Install dependencies
        run: bun install --frozen-lockfile

      - name: Smoke check
        run: bun run smoke

      - name: Full unit test suite
        run: bun test --max-concurrency=1

      - name: Install Python test dependencies
        run: python -m pip install -r python/requirements.txt

      - name: Python unit tests
        run: python -m pytest -q python/tests

      - name: Suspicious PR intent scan
        run: bun run security:pr-scan -- --base ${{ github.event.pull_request.base.sha || 'origin/main' }}
      - name: Provider tests
        run: bun run test:provider

      - name: Provider recommendation tests
        run: npm run test:provider-recommendation
