diff --git a/tests/ImageSharp.Tests/TestUtilities/TestEnvironment.cs b/tests/ImageSharp.Tests/TestUtilities/TestEnvironment.cs index 9d15023ead..85d5fffdc7 100644 --- a/tests/ImageSharp.Tests/TestUtilities/TestEnvironment.cs +++ b/tests/ImageSharp.Tests/TestUtilities/TestEnvironment.cs @@ -57,10 +57,17 @@ namespace SixLabors.ImageSharp.Tests new BmpConfigurationModule() ); - configuration.SetDecoder(ImageFormats.Png, SystemDrawingReferenceDecoder.Instance); - configuration.SetEncoder(ImageFormats.Png, SystemDrawingReferenceEncoder.Png); - configuration.AddImageFormatDetector(new PngImageFormatDetector()); - + if (!IsLinux) + { + configuration.SetDecoder(ImageFormats.Png, SystemDrawingReferenceDecoder.Instance); + configuration.SetEncoder(ImageFormats.Png, SystemDrawingReferenceEncoder.Png); + configuration.AddImageFormatDetector(new PngImageFormatDetector()); + } + else + { + new PngConfigurationModule().Configure(configuration); + } + return configuration; } diff --git a/tests/ImageSharp.Tests/TestUtilities/TestImageExtensions.cs b/tests/ImageSharp.Tests/TestUtilities/TestImageExtensions.cs index 063137ea98..14d83d295e 100644 --- a/tests/ImageSharp.Tests/TestUtilities/TestImageExtensions.cs +++ b/tests/ImageSharp.Tests/TestUtilities/TestImageExtensions.cs @@ -90,7 +90,6 @@ namespace SixLabors.ImageSharp.Tests /// The extension /// A boolean indicating whether we should debug save + compare against a grayscale image, smaller in size. /// A boolean indicating whether to append the pixel type to the output file name. - /// Custom decoder /// public static Image CompareToReferenceOutput( this Image image, @@ -99,16 +98,14 @@ namespace SixLabors.ImageSharp.Tests object testOutputDetails = null, string extension = "png", bool grayscale = false, - bool appendPixelTypeToFileName = true, - IImageDecoder decoder = null) + bool appendPixelTypeToFileName = true) where TPixel : struct, IPixel { using (Image referenceImage = GetReferenceOutputImage( provider, testOutputDetails, extension, - appendPixelTypeToFileName, - decoder)) + appendPixelTypeToFileName)) { comparer.VerifySimilarity(referenceImage, image); } @@ -119,8 +116,7 @@ namespace SixLabors.ImageSharp.Tests public static Image GetReferenceOutputImage(this ITestImageProvider provider, object testOutputDetails = null, string extension = "png", - bool appendPixelTypeToFileName = true, - IImageDecoder decoder = null) + bool appendPixelTypeToFileName = true) where TPixel : struct, IPixel { string referenceOutputFile = provider.Utility.GetReferenceOutputFileName(extension, testOutputDetails, appendPixelTypeToFileName); @@ -130,7 +126,7 @@ namespace SixLabors.ImageSharp.Tests throw new Exception("Reference output file missing: " + referenceOutputFile); } - decoder = decoder ?? TestEnvironment.GetReferenceDecoder(referenceOutputFile); + IImageDecoder decoder = TestEnvironment.GetReferenceDecoder(referenceOutputFile); return Image.Load(referenceOutputFile, decoder); } @@ -141,15 +137,13 @@ namespace SixLabors.ImageSharp.Tests ImageComparer comparer, object testOutputDetails = null, string extension = "png", - bool appendPixelTypeToFileName = true, - IImageDecoder decoder = null) + bool appendPixelTypeToFileName = true) where TPixel : struct, IPixel { using (Image referenceImage = provider.GetReferenceOutputImage( testOutputDetails, extension, - appendPixelTypeToFileName, - decoder)) + appendPixelTypeToFileName)) { return comparer.CompareImages(referenceImage, image); } diff --git a/tests/ImageSharp.Tests/TestUtilities/Tests/TestEnvironmentTests.cs b/tests/ImageSharp.Tests/TestUtilities/Tests/TestEnvironmentTests.cs index a5bf0a46c4..79478cba25 100644 --- a/tests/ImageSharp.Tests/TestUtilities/Tests/TestEnvironmentTests.cs +++ b/tests/ImageSharp.Tests/TestUtilities/Tests/TestEnvironmentTests.cs @@ -14,6 +14,8 @@ using Xunit.Abstractions; // ReSharper disable InconsistentNaming namespace SixLabors.ImageSharp.Tests { + using SixLabors.ImageSharp.Formats.Png; + public class TestEnvironmentTests { public TestEnvironmentTests(ITestOutputHelper output) @@ -67,8 +69,10 @@ namespace SixLabors.ImageSharp.Tests [InlineData("lol/foo.png", typeof(SystemDrawingReferenceEncoder))] [InlineData("lol/Baz.JPG", typeof(JpegEncoder))] [InlineData("lol/Baz.gif", typeof(GifEncoder))] - public void GetReferenceEncoder_ReturnsCorrectEncoders(string fileName, Type expectedEncoderType) + public void GetReferenceEncoder_ReturnsCorrectEncoders_Windows(string fileName, Type expectedEncoderType) { + if (TestEnvironment.IsLinux) return; + IImageEncoder encoder = TestEnvironment.GetReferenceEncoder(fileName); Assert.IsType(expectedEncoderType, encoder); } @@ -77,8 +81,34 @@ namespace SixLabors.ImageSharp.Tests [InlineData("lol/foo.png", typeof(SystemDrawingReferenceDecoder))] [InlineData("lol/Baz.JPG", typeof(JpegDecoder))] [InlineData("lol/Baz.gif", typeof(GifDecoder))] - public void GetReferenceDecoder_ReturnsCorrectEncoders(string fileName, Type expectedDecoderType) + public void GetReferenceDecoder_ReturnsCorrectEncoders_Windows(string fileName, Type expectedDecoderType) + { + if (TestEnvironment.IsLinux) return; + + IImageDecoder decoder = TestEnvironment.GetReferenceDecoder(fileName); + Assert.IsType(expectedDecoderType, decoder); + } + + [Theory] + [InlineData("lol/foo.png", typeof(PngEncoder))] + [InlineData("lol/Baz.JPG", typeof(JpegEncoder))] + [InlineData("lol/Baz.gif", typeof(GifEncoder))] + public void GetReferenceEncoder_ReturnsCorrectEncoders_Linux(string fileName, Type expectedEncoderType) { + if (!TestEnvironment.IsLinux) return; + + IImageEncoder encoder = TestEnvironment.GetReferenceEncoder(fileName); + Assert.IsType(expectedEncoderType, encoder); + } + + [Theory] + [InlineData("lol/foo.png", typeof(PngDecoder))] + [InlineData("lol/Baz.JPG", typeof(JpegDecoder))] + [InlineData("lol/Baz.gif", typeof(GifDecoder))] + public void GetReferenceDecoder_ReturnsCorrectEncoders_Linux(string fileName, Type expectedDecoderType) + { + if (!TestEnvironment.IsLinux) return; + IImageDecoder decoder = TestEnvironment.GetReferenceDecoder(fileName); Assert.IsType(expectedDecoderType, decoder); }