name: tests on: push: branches: [main] pull_request: jobs: backend-tests: runs-on: ubuntu-latest permissions: contents: write steps: - uses: actions/checkout@v4 - uses: actions/setup-dotnet@v4 with: dotnet-version: 10.0.x - name: Restore working-directory: backend run: dotnet restore TeleWave.slnx - name: Test + coverage working-directory: backend run: > dotnet test TeleWave.slnx -c Release --no-restore --collect:"XPlat Code Coverage" --results-directory ./coverage --logger "console;verbosity=normal" # Бейдж покрытия обновляем только для main (не для PR/форков): генерируем SVG и # force-пушим в отдельную orphan-ветку badges — README ссылается на её raw-URL. - name: Coverage badge if: github.event_name == 'push' && github.ref == 'refs/heads/main' working-directory: backend env: TOKEN: ${{ secrets.COVERAGE_TOKEN || secrets.GITEA_TOKEN }} run: | dotnet tool install --global dotnet-reportgenerator-globaltool export PATH="$PATH:$HOME/.dotnet/tools" reportgenerator \ "-reports:coverage/**/coverage.cobertura.xml" \ "-targetdir:coverage/badges" \ "-reporttypes:Badges" \ "-assemblyfilters:+TeleWave.Domain;+TeleWave.Application" \ "-classfilters:-System.*" BADGE=coverage/badges/badge_linecoverage.svg test -f "$BADGE" || { echo "badge not generated"; exit 1; } WORK=$(mktemp -d) cp "$BADGE" "$WORK/coverage.svg" cd "$WORK" git init -q -b badges git add coverage.svg git -c user.name=gitea-actions -c user.email=actions@local \ commit -q -m "coverage badge [skip ci]" git push -f \ "https://gitea-actions:${TOKEN}@gitea.hsrv.site/mrleo1nid/TeleWave.git" badges