name: Code Coverage

on:
  push:
    branches: [ 'main*' ]
    paths-ignore:
    - '**.md'
  pull_request:
    branches: [ 'main*' ]
    paths-ignore:
    - '**.md'

jobs:
  build-test-report:
    runs-on: ${{ matrix.os }}

    strategy:
      fail-fast: false
      matrix:
        os: [windows-latest]

    steps:
    - uses: actions/checkout@v4
      with:
        fetch-depth: 0 # fetching all

    - name: Setup dotnet
      uses: actions/setup-dotnet@v3

    - name: Install dependencies
      run: dotnet restore

    - name: dotnet build
      run: dotnet build --configuration Release --no-restore --property:ExposeExperimentalFeatures=true

#    - name: dotnet test
#      run: dotnet test --collect:"XPlat Code Coverage" --results-directory:"TestResults" --configuration Release --no-build -- RunConfiguration.DisableAppDomain=true

    - name: dotnet test
      run: dotnet test --collect:"Code Coverage" --results-directory:"TestResults" --configuration Release --no-build -- RunConfiguration.DisableAppDomain=true

    - name: Process code coverage
      run: .\build\process-codecoverage.ps1
      shell: powershell

    - name: Install report tool
      run: dotnet tool install -g dotnet-reportgenerator-globaltool

    - name: Merging test results
      run: reportgenerator -reports:TestResults/**/*.xml -targetdir:TestResults -reporttypes:Cobertura -assemblyFilters:"-microsoft.data.sqlclient*;-grpc.core*;-opentracing*"

    - uses: codecov/codecov-action@v3.1.4
      with:
        file: TestResults/Cobertura.xml
        env_vars: OS
        name: Code Coverage for ${{ matrix.os }}
