Skip to content

Commit aa796e8

Browse files
committed
comparers should apply to text
1 parent 79dc115 commit aa796e8

File tree

3 files changed

+32
-9
lines changed

3 files changed

+32
-9
lines changed

src/Verify/Compare/Comparer.cs

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
1-
using System;
2-
using System.IO;
1+
using System.IO;
32
using System.Threading.Tasks;
43
using Verify;
54

65
static class Comparer
76
{
8-
public static async Task<CompareResult> Text(FilePair file, string scrubbedInput, bool ignoreTrailingWhitespace)
7+
public static async Task<CompareResult> Text(FilePair file, string scrubbedInput, VerifySettings settings)
98
{
10-
scrubbedInput = Scrub(scrubbedInput, ignoreTrailingWhitespace);
9+
scrubbedInput = Scrub(scrubbedInput, settings.ignoreTrailingWhitespace);
1110
FileHelpers.DeleteIfEmpty(file.Verified);
1211
if (!File.Exists(file.Verified))
1312
{
@@ -16,8 +15,9 @@ public static async Task<CompareResult> Text(FilePair file, string scrubbedInput
1615
}
1716

1817
var verifiedText = await FileHelpers.ReadText(file.Verified);
19-
verifiedText = Scrub(verifiedText, ignoreTrailingWhitespace);
20-
if (string.Equals(verifiedText, scrubbedInput))
18+
verifiedText = Scrub(verifiedText, settings.ignoreTrailingWhitespace);
19+
20+
if (await CompareStrings(scrubbedInput, verifiedText, settings))
2121
{
2222
return CompareResult.Equal;
2323
}
@@ -26,6 +26,29 @@ public static async Task<CompareResult> Text(FilePair file, string scrubbedInput
2626
return CompareResult.NotEqual;
2727
}
2828

29+
static Task<bool> CompareStrings(string scrubbedInput, string verifiedText, VerifySettings settings)
30+
{
31+
var extension = settings.ExtensionOrTxt();
32+
if (settings.comparer != null)
33+
{
34+
using var stream1 = MemoryStream(scrubbedInput);
35+
using var stream2 = MemoryStream(verifiedText);
36+
return settings.comparer(settings, stream1, stream2);
37+
}
38+
if (SharedVerifySettings.TryGetComparer(extension, out var comparer))
39+
{
40+
using var stream1 = MemoryStream(scrubbedInput);
41+
using var stream2 = MemoryStream(verifiedText);
42+
return comparer(settings, stream1, stream2);
43+
}
44+
return Task.FromResult(string.Equals(verifiedText, scrubbedInput));
45+
}
46+
47+
static MemoryStream MemoryStream(string text)
48+
{
49+
return new MemoryStream(FileHelpers.Utf8NoBOM.GetBytes(text));
50+
}
51+
2952
static string Scrub(string scrubbedInput, bool ignoreTrailingWhitespace)
3053
{
3154
scrubbedInput = scrubbedInput.Replace("\r\n", "\n");

src/Verify/Verifier/InnerVerifier_Stream.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ static async Task<CompareResult> GetResult(VerifySettings settings, FilePair fil
6565
{
6666
var readAsString = await stream.ReadAsString();
6767
var scrubbedInput = ApplyScrubbers.Apply(readAsString, settings.instanceScrubbers);
68-
return await Comparer.Text(file, scrubbedInput, settings.ignoreTrailingWhitespace);
68+
return await Comparer.Text(file, scrubbedInput, settings);
6969
}
7070

7171
return await Comparer.Streams(settings, stream, file);
@@ -94,7 +94,7 @@ async Task VerifyInfo(VerifyEngine engine, VerifySettings settings, object? info
9494

9595
var scrubbedInput = ApplyScrubbers.Apply(formatJson, settings.instanceScrubbers);
9696

97-
var result = await Comparer.Text(file, scrubbedInput, settings.ignoreTrailingWhitespace);
97+
var result = await Comparer.Text(file, scrubbedInput, settings);
9898
engine.HandleCompareResult(result, file);
9999
}
100100
}

src/Verify/Verifier/InnerVerifier_Text.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public async Task Verify(string input, VerifySettings? settings = null)
2020

2121
var scrubbedInput = ApplyScrubbers.Apply(input, settings.instanceScrubbers);
2222

23-
var result = await Comparer.Text(file, scrubbedInput, settings.ignoreTrailingWhitespace);
23+
var result = await Comparer.Text(file, scrubbedInput, settings);
2424
engine.HandleCompareResult(result, file);
2525
await engine.ThrowIfRequired();
2626
}

0 commit comments

Comments
 (0)