name: Turborepo Native Library Tests
on:
  push:
    branches: [main]
    paths-ignore:
      - "docs/**"
  pull_request:

permissions:
  actions: write
  contents: read
  pull-requests: read

jobs:
  js_native_packages:
    name: "@turbo/repository (${{matrix.os.name}}, Node ${{matrix.node-version}})"
    timeout-minutes: 30
    runs-on: ${{ matrix.os.runner }}
    strategy:
      fail-fast: false
      matrix:
        os:
          - name: ubuntu
            runner: ubuntu-latest
          - name: macos
            runner: macos-latest
        node-version:
          - 18
          - 20
          - 22
    env:
      TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
      TURBO_TEAM: ${{ vars.TURBO_TEAM }}
      TURBO_CACHE: remote:rw

    steps:
      - name: Determine fetch depth
        id: fetch-depth
        run: |
          echo "depth=$(( ${{ github.event.pull_request.commits || 1 }} + 1 ))" >> $GITHUB_OUTPUT

      - name: Checkout
        uses: actions/checkout@v4
        with:
          ref: ${{ github.ref }}
          fetch-depth: ${{ steps.fetch-depth.outputs.depth  }}

      - name: Setup Turborepo Environment
        uses: ./.github/actions/setup-turborepo-environment
        with:
          github-token: "${{ secrets.GITHUB_TOKEN }}"
          node-version: ${{ matrix.node-version }}

      - name: Install Global Turbo
        uses: ./.github/actions/install-global-turbo

      - name: Run tests
        # Manually set TURBO_API to an empty string to override Hetzner env
        run: |
          TURBO_API= turbo run test --filter "turborepo-repository" --color --env-mode=strict
        env:
          NODE_VERSION: ${{ matrix.node-version }}
