name: Tests
on:
  push:
    branches:
      - master
  # Run tests against the forked branch, but
  # do not allow access to secrets
  # https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflows-in-forked-repositories
  pull_request:

env:
  SDK_VERSION: "9.0.x"

jobs:
  run-tests:
    runs-on: [self-hosted, k3s, linux, amd64]
    steps:
      - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1

      # Install .NET — use GITHUB_ENV (not GITHUB_PATH) to set PATH because
      # ARC self-hosted runner pods don't pick up GITHUB_PATH between steps.
      - name: Install .NET SDK
        run: |
          DOTNET_INSTALL_DIR="$HOME/.dotnet"
          mkdir -p "$DOTNET_INSTALL_DIR"
          curl -fsSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --channel 10.0 --install-dir "$DOTNET_INSTALL_DIR"
          echo "DOTNET_ROOT=$DOTNET_INSTALL_DIR" >> "$GITHUB_ENV"
          echo "PATH=$DOTNET_INSTALL_DIR:$PATH" >> "$GITHUB_ENV"

      - name: Run DotNet CLI Tests
        run: |
          export PATH="$HOME/.dotnet:$PATH"
          dotnet test Jellyfin.sln \
            --configuration Release \
            --collect:"XPlat Code Coverage" \
            --settings tests/coverletArgs.runsettings \
            --verbosity minimal \
            --filter "Category!=RequiresDocker&FullyQualifiedName!~Integration"

      - name: Merge code coverage results
        uses: danielpalme/ReportGenerator-GitHub-Action@ee0ae774f6d3afedcbd1683c1ab21b83670bdf8e # v5.5.1
        with:
          reports: "**/coverage.cobertura.xml"
          targetdir: "merged/"
          reporttypes: "Cobertura"

      # TODO - which action / tool to use to publish code coverage results?
      # - name: Publish code coverage results
