param( [string][Alias('c')]$Configuration = "Release", [string][Alias('o')]$Output = "CoverageOutput", [string][Alias('rt')]$ReportType = "lcov" ) function Install-Tools { dotnet tool restore } function Print-Environment { dotnet --version } function Prepare-Output { if (Test-Path -Path $Output) { Remove-Item $Output -Recurse } } function Run-Tests { dotnet test $PSScriptRoot/bitwarden.tests.sln /p:CoverletOutputFormatter="cobertura" --collect:"XPlat Code Coverage" --results-directory:"$Output" -c $Configuration dotnet tool run reportgenerator -reports:$Output/**/*.cobertura.xml -targetdir:$Output -reporttypes:"$ReportType" } Write-Host "Collecting Code Coverage" Install-Tools Print-Environment Prepare-Output Run-Tests