| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- name: Build & Run Integration Tests
- on:
- push:
- branches: [ v2_release, v2_develop ]
- paths-ignore:
- - '**.md'
- pull_request:
- branches: [ v2_release, v2_develop ]
- paths-ignore:
- - '**.md'
- jobs:
- build:
- uses: ./.github/workflows/quick-build.yml
- integration_tests:
- name: Integration Tests
- runs-on: ${{ matrix.os }}
- needs: build
- strategy:
- fail-fast: false # Let all OSes finish even if one fails
- matrix:
- os: [ ubuntu-latest, windows-latest, macos-latest ]
- timeout-minutes: 15
- 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: test-build-artifacts
- path: .
- - name: Restore NuGet packages
- run: dotnet restore
- - name: Disable Windows Defender (Windows only)
- if: runner.os == 'Windows'
- shell: powershell
- run: |
- Add-MpPreference -ExclusionPath "${{ github.workspace }}"
- Add-MpPreference -ExclusionProcess "dotnet.exe"
- Add-MpPreference -ExclusionProcess "testhost.exe"
- Add-MpPreference -ExclusionProcess "VSTest.Console.exe"
- - name: Set VSTEST_DUMP_PATH
- shell: bash
- run: echo "VSTEST_DUMP_PATH=logs/IntegrationTests/${{ runner.os }}/" >> $GITHUB_ENV
- - name: Run IntegrationTests
- shell: bash
- run: |
- if [ "${{ runner.os }}" == "Linux" ]; then
- # Run with coverage on Linux only
- dotnet test Tests/IntegrationTests \
- --no-build \
- --verbosity minimal \
- --collect:"XPlat Code Coverage" \
- --settings Tests/IntegrationTests/runsettings.coverage.xml \
- --diag:logs/IntegrationTests/${{ runner.os }}/logs.txt \
- --blame \
- --blame-crash \
- --blame-hang \
- --blame-hang-timeout 60s \
- --blame-crash-collect-always
- else
- # Run without coverage on Windows/macOS for speed
- dotnet test Tests/IntegrationTests \
- --no-build \
- --verbosity minimal \
- --settings Tests/IntegrationTests/runsettings.xml \
- --diag:logs/IntegrationTests/${{ runner.os }}/logs.txt \
- --blame \
- --blame-crash \
- --blame-hang \
- --blame-hang-timeout 60s \
- --blame-crash-collect-always
- fi
- - name: Upload Integration Test Logs
- if: always()
- uses: actions/upload-artifact@v4
- with:
- name: integration_tests-logs-${{ runner.os }}
- path: |
- logs/IntegrationTests/
- TestResults/
- - name: Upload Integration Tests Coverage to Codecov
- if: matrix.os == 'ubuntu-latest' && always()
- uses: codecov/codecov-action@v4
- with:
- files: TestResults/**/coverage.cobertura.xml
- flags: integrationtests
- name: IntegrationTests-${{ runner.os }}
- token: ${{ secrets.CODECOV_TOKEN }}
- fail_ci_if_error: false
|