From e9d55fde9fd87dcb289422e5fa4f36e6ae33e99e Mon Sep 17 00:00:00 2001
From: "Olof Lagerkvist (LTRData)"
Date: Thu, 15 Oct 2026 22:15:17 +0200
Subject: [PATCH 1/2] test: add FreeBSD-aware SkiaSharp xUnit fact
---
Rendering.Tests/NotOnFreeBsdFact.cs | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
create mode 100644 Rendering.Tests/NotOnFreeBsdFact.cs
diff --git a/Rendering.Tests/NotOnFreeBsdFact.cs b/Rendering.Tests/NotOnFreeBsdFact.cs
new file mode 100644
index 0000000..535da0e
--- /dev/null
+++ b/Rendering.Tests/NotOnFreeBsdFact.cs
@@ -0,0 +1,18 @@
+using System;
+using Xunit;
+
+namespace LTRData.Rendering.Tests;
+
+///
+/// Skips native SkiaSharp rendering tests on FreeBSD, where compatible native assets are unavailable.
+///
+public sealed class NotOnFreeBsdFactAttribute : FactAttribute
+{
+ public NotOnFreeBsdFactAttribute()
+ {
+ if (OperatingSystem.IsFreeBSD())
+ {
+ Skip = "SkiaSharp native assets used by the rendering tests are not supported on FreeBSD.";
+ }
+ }
+}
From c599a6857c2039ce9542ad1b1dfc8ac9cdd255e8 Mon Sep 17 00:00:00 2001
From: "Olof Lagerkvist (LTRData)"
Date: Thu, 15 Oct 2026 22:15:27 +0200
Subject: [PATCH 2/2] test: skip SkiaSharp rendering checks on FreeBSD
---
Rendering.Tests/SkiaRenderingTests.cs | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/Rendering.Tests/SkiaRenderingTests.cs b/Rendering.Tests/SkiaRenderingTests.cs
index df6e07e..877251c 100644
--- a/Rendering.Tests/SkiaRenderingTests.cs
+++ b/Rendering.Tests/SkiaRenderingTests.cs
@@ -11,7 +11,7 @@ namespace LTRData.Rendering.Tests;
public class SkiaRenderingTests
{
- [Fact]
+ [NotOnFreeBsdFact]
public void PlotPngContainsTheCurveAndEncoderLeavesInputsOpen()
{
var viewport = new PlotViewport(new NumericRange(-1, 1), new NumericRange(-1, 1), new CanvasSize(200, 100));
@@ -31,7 +31,7 @@ public void PlotPngContainsTheCurveAndEncoderLeavesInputsOpen()
Assert.Equal(SKColors.White, bitmap.GetPixel(100, 10));
}
- [Fact]
+ [NotOnFreeBsdFact]
public void InvalidSampleCreatesAVisibleGap()
{
var viewport = new PlotViewport(new NumericRange(-1, 1), new NumericRange(-1, 1), new CanvasSize(200, 100));
@@ -45,7 +45,7 @@ public void InvalidSampleCreatesAVisibleGap()
Assert.NotEqual(SKColors.White, bitmap.GetPixel(20, 50));
}
- [Fact]
+ [NotOnFreeBsdFact]
public void DiagramUsesMeasuredFontAndProducesNonemptyPng()
{
var diagram = ExpressionDiagram.FromSyntax(MathParser.Default.Parse("sin(x) + x^2").Root!);
@@ -70,7 +70,7 @@ public void DiagramUsesMeasuredFontAndProducesNonemptyPng()
Assert.True(darkPixels > 30, "Labels must contain visible glyphs, not just node outlines.");
}
- [Fact]
+ [NotOnFreeBsdFact]
public void OffscreenAxesAreOmitted()
{
using var surface = SKSurface.Create(new SKImageInfo(100, 100));