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));