Fixes #3761, #2886 - Draw and Layout performance issues #8271
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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}}" |