name: Build & Run Unit Tests on: push: branches: [ v2_release, v2_develop ] paths-ignore: - '**.md' pull_request: branches: [ v2_release, v2_develop ] paths-ignore: - '**.md' jobs: # Call the build workflow to build the solution once build: uses: ./.github/workflows/build.yml non_parallel_unittests: name: Non-Parallel Unit Tests runs-on: ${{ matrix.os }} needs: build strategy: # Turn off fail-fast to let all runners run even if there are errors fail-fast: true matrix: os: [ ubuntu-latest, windows-latest, macos-latest ] timeout-minutes: 10 steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup .NET Core uses: actions/setup-dotnet@v4 with: dotnet-version: 8.x dotnet-quality: 'ga' - name: Download build artifacts uses: actions/download-artifact@v4 with: name: build-artifacts path: . - name: Restore NuGet packages run: dotnet restore # Test # Note: The --blame and VSTEST_DUMP_PATH stuff is needed to diagnose the test runner crashing on ubuntu/mac # See https://github.com/microsoft/vstest/issues/2952 for why the --blame stuff below is needed. # Without it, the test runner crashes on ubuntu (but not Windows or mac) - name: Set VSTEST_DUMP_PATH shell: bash run: echo "{VSTEST_DUMP_PATH}={logs/UnitTests/${{ runner.os }}/}" >> $GITHUB_ENV - name: Run UnitTests run: | dotnet test Tests/UnitTests --no-build --verbosity normal --collect:"XPlat Code Coverage" --settings Tests/UnitTests/coverlet.runsettings --diag:logs/UnitTests/${{ runner.os }}/logs.txt --blame --blame-crash --blame-hang --blame-hang-timeout 60s --blame-crash-collect-always -- xunit.stopOnFail=false # mv -v Tests/UnitTests/TestResults/*/*.* TestResults/UnitTests/ - name: Upload Test Logs if: always() uses: actions/upload-artifact@v4 with: name: non_parallel_unittests-logs-${{ runner.os }} path: | logs/UnitTests TestResults/UnitTests/ parallel_unittests: name: Parallel Unit Tests runs-on: ${{ matrix.os }} needs: build strategy: # Turn off fail-fast to let all runners run even if there are errors fail-fast: true matrix: os: [ ubuntu-latest, windows-latest, macos-latest ] timeout-minutes: 10 steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup .NET Core uses: actions/setup-dotnet@v4 with: dotnet-version: 8.x dotnet-quality: 'ga' - name: Download build artifacts uses: actions/download-artifact@v4 with: name: build-artifacts path: . - name: Restore NuGet packages run: dotnet restore # Test # Note: The --blame and VSTEST_DUMP_PATH stuff is needed to diagnose the test runner crashing on ubuntu/mac # See https://github.com/microsoft/vstest/issues/2952 for why the --blame stuff below is needed. # Without it, the test runner crashes on ubuntu (but not Windows or mac) - name: Set VSTEST_DUMP_PATH shell: bash run: echo "{VSTEST_DUMP_PATH}={logs/UnitTestsParallelizable/${{ runner.os }}/}" >> $GITHUB_ENV - name: Run UnitTestsParallelizable run: | dotnet test Tests/UnitTestsParallelizable --no-build --verbosity normal --collect:"XPlat Code Coverage" --settings Tests/UnitTestsParallelizable/coverlet.runsettings --diag:logs/UnitTestsParallelizable/${{ runner.os }}/logs.txt --blame --blame-crash --blame-hang --blame-hang-timeout 60s --blame-crash-collect-always -- xunit.stopOnFail=false # mv -v Tests/UnitTestsParallelizable/TestResults/*/*.* TestResults/UnitTestsParallelizable/ - name: Upload UnitTestsParallelizable Logs if: always() uses: actions/upload-artifact@v4 with: name: parallel_unittests-logs-${{ runner.os }} path: | logs/UnitTestsParallelizable/ TestResults/UnitTestsParallelizable/