123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- name: Build & Test Terminal.Gui with .NET Core
- on:
- push:
- branches: [ v2_release, v2_develop ]
- paths-ignore:
- - '**.md'
- pull_request:
- branches: [ v2_release, v2_develop ]
- paths-ignore:
- - '**.md'
-
- jobs:
- build_and_test_debug:
- runs-on: ${{ matrix.os }}
- 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:
- # Build (Debug)
- - 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: Install dependencies
- run: |
- dotnet restore
- - name: Build Debug
- run: dotnet build --configuration Debug --no-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: MacOS - Patch test runner settings to stop on fail
- if: runner.os == 'macOS'
- run: |
- brew install gnu-sed
- gsed -i 's/"stopOnFail": false/"stopOnFail": true/g' UnitTests/xunit.runner.json
- - name: Windows/Linux - Patch test runner settings to stop on fail
- if: runner.os != 'macOS'
- run: |
- sed -i 's/"stopOnFail": false/"stopOnFail": true/g' UnitTests/xunit.runner.json
- - name: Set VSTEST_DUMP_PATH
- shell: bash
- run: echo "{VSTEST_DUMP_PATH}={logs/${{ runner.os }}/}" >> $GITHUB_ENV
- - name: Test
- run: |
- dotnet test --verbosity normal --collect:"XPlat Code Coverage" --settings UnitTests/coverlet.runsettings --diag:logs/${{ runner.os }}/logs.txt --blame --blame-crash --blame-hang --blame-hang-timeout 60s --blame-crash-collect-always
-
- # mv -v UnitTests/TestResults/*/*.* UnitTests/TestResults/
- - name: Upload Test Logs
- if: always()
- uses: actions/upload-artifact@v4
- with:
- name: test-logs-${{ runner.os }}
- path: |
- logs/
- UnitTests/TestResults/
-
- build_release:
- # Ensure that RELEASE builds are not broken
- runs-on: ubuntu-latest
- 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: Build Release Terminal.Gui
- run: dotnet build Terminal.Gui/Terminal.Gui.csproj --configuration Release
- - name: Pack Release Terminal.Gui
- run: dotnet pack Terminal.Gui/Terminal.Gui.csproj --configuration Release --output ./local_packages
- - name: Build Release Solution
- run: dotnet build --configuration Release
- # Note: this step is currently not writing to the gist for some reason
- # - name: Create Test Coverage Badge
- # uses: simon-k/[email protected]
- # 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}}"
|