name: .NET Core

on:
  push:
    branches: [ main, develop ]
    paths-ignore:
      - '**.md'
  pull_request:
    branches: [ main, develop ]
    paths-ignore:
      - '**.md'
      
jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3

    - name: Setup .NET Core
      uses: actions/setup-dotnet@v3
      with:
        dotnet-version: 7.0

    - name: Install dependencies
      run: |
        dotnet restore

    - name: Build Debug
      run: dotnet build --configuration Debug --no-restore

    - name: Test
      run: |
        sed -i 's/"stopOnFail": false/"stopOnFail": true/g' UnitTests/xunit.runner.json
        dotnet test --no-restore --verbosity normal --collect:"XPlat Code Coverage"  --settings UnitTests/coverlet.runsettings
        mv -v UnitTests/TestResults/*/*.* UnitTests/TestResults/

    # Note: this step is currently not writing to the gist for some reason
    - name: Create Test Coverage Badge
      uses: simon-k/dotnet-code-coverage-badge@v1.0.0
      id: create_coverage_badge
      with:
        label: Unit Test Coverage
        color: brightgreen
        path: UnitTests/TestResults/coverage.opencover.xml
        gist-filename: code-coverage.json
        # https://gist.github.com/migueldeicaza/90ef67a684cb71db1817921a970f8d27
        gist-id: 90ef67a684cb71db1817921a970f8d27
        gist-auth-token: ${{ secrets.GIST_AUTH_TOKEN }}   

    - name: Print Code Coverage
      run: |
        echo "Code coverage percentage: ${{steps.create_coverage_badge.outputs.percentage}}%"
        echo "Badge data: ${{steps.create_coverage_badge.outputs.badge}}"
