mirror of
https://github.com/ajisaacs/OpenNest.git
synced 2026-10-10 11:04:13 -04:00
113 lines
3.9 KiB
YAML
113 lines
3.9 KiB
YAML
name: Cross-platform tests
|
|
|
|
on:
|
|
pull_request:
|
|
push:
|
|
branches: [master]
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
unit-tests:
|
|
name: Unit tests (${{ matrix.project }})
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 30
|
|
strategy:
|
|
fail-fast: false
|
|
max-parallel: 4
|
|
matrix:
|
|
project:
|
|
- OpenNest.Tests
|
|
- OpenNest.Engine.Tests
|
|
- OpenNest.IO.Tests
|
|
- OpenNest.Server.Tests
|
|
steps:
|
|
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
|
|
with:
|
|
persist-credentials: false
|
|
- uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4
|
|
with:
|
|
dotnet-version: '8.0.x'
|
|
- name: Run ${{ matrix.project }}
|
|
run: dotnet test "${{ matrix.project }}/${{ matrix.project }}.csproj"
|
|
|
|
synthetic-nests:
|
|
name: Six synthetic Irregular nests
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
steps:
|
|
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
|
|
with:
|
|
persist-credentials: false
|
|
- uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4
|
|
with:
|
|
dotnet-version: '8.0.x'
|
|
- name: Test fail-closed final CI check
|
|
run: python3 scripts/test_ci_results.py -v
|
|
- name: Check six synthetic Irregular nests
|
|
timeout-minutes: 6
|
|
run: |
|
|
python3 scripts/test_check_synthetic_nests.py -v
|
|
python3 scripts/check-synthetic-nests.py --parallel 2
|
|
|
|
# Preserve the existing check name for required-status consumers.
|
|
tests:
|
|
name: tests
|
|
needs: [unit-tests, synthetic-nests]
|
|
if: ${{ always() }}
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 5
|
|
steps:
|
|
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
|
|
with:
|
|
persist-credentials: false
|
|
- name: Require every test job to succeed
|
|
env:
|
|
UNIT_TEST_RESULT: ${{ needs.unit-tests.result }}
|
|
SYNTHETIC_RESULT: ${{ needs.synthetic-nests.result }}
|
|
run: bash scripts/check-ci-results.sh "$UNIT_TEST_RESULT" "$SYNTHETIC_RESULT"
|
|
|
|
windows-desktop:
|
|
# WinForms tests need a Windows desktop runtime; the Linux job can only
|
|
# cross-compile them. FrontEnd.Tests run here too, alongside the desktop.
|
|
runs-on: windows-2022
|
|
timeout-minutes: 20
|
|
defaults:
|
|
run:
|
|
shell: pwsh
|
|
env:
|
|
DOTNET_CLI_TELEMETRY_OPTOUT: '1'
|
|
DOTNET_NOLOGO: '1'
|
|
steps:
|
|
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
|
|
with:
|
|
persist-credentials: false
|
|
- uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4
|
|
with:
|
|
dotnet-version: '8.0.x'
|
|
- name: Run Windows desktop and front-end tests
|
|
# A test silent for 5 minutes is killed and named in the log, with a
|
|
# mini dump in TestResults, instead of holding the runner until the
|
|
# job timeout.
|
|
run: |
|
|
$failed = @()
|
|
foreach ($project in @('OpenNest.WinForms.Tests', 'OpenNest.FrontEnd.Tests')) {
|
|
dotnet test "$project/$project.csproj" -c Release --blame-hang-timeout 5m --blame-hang-dump-type mini --logger "trx;LogFileName=$project.trx" --results-directory TestResults
|
|
if ($LASTEXITCODE -ne 0) { $failed += $project }
|
|
}
|
|
if ($failed.Count -gt 0) { throw "Failed: $($failed -join ', ')" }
|
|
- name: Test acceptance evidence checker
|
|
run: python scripts/test_windows_acceptance.py -v
|
|
- name: Verify named Windows acceptance coverage
|
|
if: always()
|
|
run: python scripts/windows_acceptance.py --results TestResults
|
|
- name: Upload test results
|
|
if: always()
|
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
|
|
with:
|
|
name: windows-desktop-test-results
|
|
path: TestResults/
|
|
if-no-files-found: warn
|
|
retention-days: 14
|