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."; + } + } +} 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));