fix(tabs): a background pane says which tab it is showing #201
Workflow file for this run
This file contains hidden or 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: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| workflow_dispatch: | |
| jobs: | |
| build-and-test: | |
| name: build & test (${{ matrix.os }}) | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, windows-latest] | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| persist-credentials: false | |
| - name: Set up .NET 10 SDK | |
| uses: actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version: '10.0.x' | |
| - name: Restore | |
| run: dotnet restore SharpMUTerm.slnx | |
| - name: Build | |
| run: dotnet build SharpMUTerm.slnx -c Release --no-restore | |
| # TUnit runs on Microsoft.Testing.Platform; execute each test project directly | |
| # (the classic `dotnet test`/VSTest path is not used by MTP on .NET 10). | |
| # | |
| # Every suite carries `if: ${{ !cancelled() }}` so one failure does not hide the rest. Without it | |
| # the job stops at the first red step, and a Core failure means Graphics through Tui simply do | |
| # not run — which is how a Windows file-sharing defect in Core kept two Tui failures invisible for | |
| # days: nobody knew they were there until Core went green. A cancelled run still stops. | |
| - name: Test — Core | |
| shell: bash | |
| run: dotnet run -c Release --no-build --project tests/SharpMUTerm.Core.Tests/SharpMUTerm.Core.Tests.csproj | |
| - name: Test — Graphics | |
| if: ${{ !cancelled() }} | |
| shell: bash | |
| run: dotnet run -c Release --no-build --project tests/SharpMUTerm.Graphics.Tests/SharpMUTerm.Graphics.Tests.csproj | |
| - name: Test — Scripting | |
| if: ${{ !cancelled() }} | |
| shell: bash | |
| run: dotnet run -c Release --no-build --project tests/SharpMUTerm.Scripting.Tests/SharpMUTerm.Scripting.Tests.csproj | |
| - name: Test — Web | |
| if: ${{ !cancelled() }} | |
| shell: bash | |
| run: dotnet run -c Release --no-build --project tests/SharpMUTerm.Web.Tests/SharpMUTerm.Web.Tests.csproj | |
| - name: Test — Tui | |
| if: ${{ !cancelled() }} | |
| shell: bash | |
| run: dotnet run -c Release --no-build --project tests/SharpMUTerm.Tui.Tests/SharpMUTerm.Tui.Tests.csproj | |
| # End-to-end guard: the headless snapshot must render the workspace (rail, worlds, command | |
| # surface) and exit — catches both UI-render regressions and any return of the stdin-block hang. | |
| - name: Smoke — headless snapshot | |
| if: ${{ !cancelled() }} | |
| shell: bash | |
| run: | | |
| dotnet run -c Release --no-build --project src/SharpMUTerm.Tui/SharpMUTerm.Tui.csproj -- \ | |
| --snapshot --demo-config --size 120x30 --out snapshot.ans </dev/null | |
| test -s snapshot.ans || { echo "snapshot produced no output"; exit 1; } | |
| for token in CONNECTIONS Aetherfall Corvid palette; do | |
| grep -qF "$token" snapshot.ans || { echo "snapshot missing token: $token"; exit 1; } | |
| done | |
| echo "headless snapshot smoke passed ($(wc -c < snapshot.ans) bytes)" |