Skip to content

Add GitHub action for unit tests #2

Add GitHub action for unit tests

Add GitHub action for unit tests #2

Workflow file for this run

name: Unit Tests
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
workflow_dispatch:
env:
DOTNET_NOLOGO: true
DOTNET_CLI_TELEMETRY_OPTOUT: true
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
jobs:
test:
name: ${{ matrix.os }}-${{ matrix.arch }} / ${{ matrix.framework }}
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
include:
# ---------- Windows x64 ----------
- { runner: windows-latest, os: windows, arch: x64, framework: net462 }
- { runner: windows-latest, os: windows, arch: x64, framework: net6.0 }
- { runner: windows-latest, os: windows, arch: x64, framework: net8.0 }
- { runner: windows-latest, os: windows, arch: x64, framework: net9.0 }
# ---------- Windows ARM64 ----------
# .NET Framework (net462) is not supported on ARM64.
- { runner: windows-11-arm, os: windows, arch: arm64, framework: net6.0 }
- { runner: windows-11-arm, os: windows, arch: arm64, framework: net8.0 }
- { runner: windows-11-arm, os: windows, arch: arm64, framework: net9.0 }
# ---------- Linux x64 ----------
- { runner: ubuntu-latest, os: linux, arch: x64, framework: net6.0 }
- { runner: ubuntu-latest, os: linux, arch: x64, framework: net8.0 }
- { runner: ubuntu-latest, os: linux, arch: x64, framework: net9.0 }
# ---------- Linux ARM64 ----------
- { runner: ubuntu-24.04-arm, os: linux, arch: arm64, framework: net6.0 }
- { runner: ubuntu-24.04-arm, os: linux, arch: arm64, framework: net8.0 }
- { runner: ubuntu-24.04-arm, os: linux, arch: arm64, framework: net9.0 }
# ---------- macOS ARM64 (Apple Silicon) ----------
- { runner: macos-latest, os: macos, arch: arm64, framework: net6.0 }
- { runner: macos-latest, os: macos, arch: arm64, framework: net8.0 }
- { runner: macos-latest, os: macos, arch: arm64, framework: net9.0 }
# ---------- macOS x64 (Intel) ----------
- { runner: macos-13, os: macos, arch: x64, framework: net6.0 }
- { runner: macos-13, os: macos, arch: x64, framework: net8.0 }
- { runner: macos-13, os: macos, arch: x64, framework: net9.0 }
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install SkiaSharp Linux dependencies
if: matrix.os == 'linux'
run: |
sudo apt-get update
sudo apt-get install -y libfontconfig1
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: |
6.0.x
8.0.x
9.0.x
- name: NuGet cache
uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: nuget-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('**/*.csproj') }}
restore-keys: |
nuget-${{ runner.os }}-${{ runner.arch }}-
- name: Restore
run: dotnet restore UglyToad.PdfPig.Rendering.Skia.Tests/UglyToad.PdfPig.Rendering.Skia.Tests.csproj
- name: Build
run: >
dotnet build UglyToad.PdfPig.Rendering.Skia.Tests/UglyToad.PdfPig.Rendering.Skia.Tests.csproj
--framework ${{ matrix.framework }}
--configuration Release
--no-restore
- name: Test
run: >
dotnet test UglyToad.PdfPig.Rendering.Skia.Tests/UglyToad.PdfPig.Rendering.Skia.Tests.csproj
--framework ${{ matrix.framework }}
--configuration Release
--no-build
--logger "trx;LogFileName=test-results.trx"
--logger "console;verbosity=normal"
--results-directory ./TestResults
- name: Upload test results
if: always()
uses: actions/upload-artifact@v4
with:
name: test-results-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.framework }}
path: ./TestResults/**/*.trx
if-no-files-found: ignore