Skip to content

Commit a033ffa

Browse files
committed
.
1 parent ed17bc9 commit a033ffa

File tree

4 files changed

+46
-11
lines changed

4 files changed

+46
-11
lines changed

src/Verify/Naming/GetFileNames.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
delegate FilePair GetFileNames(Target target);
1+
delegate FilePair GetFileNames(StringOrStream target);
22

3-
delegate FilePair GetIndexedFileNames(Target target, string index);
3+
delegate FilePair GetIndexedFileNames(StringOrStream target, string index);

src/Verify/Target.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,26 @@
22

33
public readonly struct Target
44
{
5-
readonly StringBuilder? stringBuilderData;
6-
readonly Stream? streamData;
5+
internal readonly StringBuilder? stringBuilderData;
6+
internal readonly Stream? streamData;
77
public string Extension { get; }
88
public string? Name { get; } = null;
99
public bool PerformConversion { get; } = true;
1010
public string NameOrTarget => Name ?? "target";
1111

12+
public StringBuilder StringBuilderData
13+
{
14+
get
15+
{
16+
if (stringBuilderData is null)
17+
{
18+
throw new("Use StreamData.");
19+
}
20+
21+
return stringBuilderData;
22+
}
23+
}
24+
1225
public Stream StreamData
1326
{
1427
get

src/Verify/Verifier/InnerVerifier_Inner.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,16 @@ async Task<VerifyResult> VerifyInner(object? root, Func<Task>? cleanup, IEnumera
2727
settings.TypeName ?? typeName,
2828
settings.MethodName ?? methodName);
2929

30-
await engine.HandleResults(resultTargets);
30+
await engine.HandleResults(
31+
resultTargets.Select(_ =>
32+
new StringOrStream
33+
{
34+
Extension = _.Extension,
35+
Name = _.Name,
36+
Stream = _.streamData,
37+
StringBuilder = _.stringBuilderData,
38+
})
39+
.ToList());
3140

3241
await cleanup();
3342

src/Verify/Verifier/VerifyEngine.cs

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,16 @@ class VerifyEngine(
2323
public IReadOnlyList<FilePair> Equal => equal;
2424
public IReadOnlyList<FilePair> AutoVerified => autoVerified;
2525

26-
static async Task<EqualityResult> GetResult(VerifySettings settings, FilePair file, Target target, bool previousTextFailed)
26+
static async Task<EqualityResult> GetResult(VerifySettings settings, FilePair file, StringOrStream target, bool previousTextFailed)
2727
{
2828
try
2929
{
30-
if (target.TryGetStringBuilder(out var value))
30+
if (target.StringBuilder != null)
3131
{
32-
return await Comparer.Text(file, value, settings);
32+
return await Comparer.Text(file, target.StringBuilder, settings);
3333
}
3434

35-
using var stream = target.StreamData;
35+
using var stream = target.Stream!;
3636
stream.MoveToStart();
3737
return await FileComparer.DoCompare(settings, file, previousTextFailed, stream);
3838
}
@@ -48,7 +48,7 @@ static async Task<EqualityResult> GetResult(VerifySettings settings, FilePair fi
4848
}
4949
}
5050

51-
public async Task HandleResults(List<Target> targetList)
51+
public async Task HandleResults(List<StringOrStream> targetList)
5252
{
5353
if (targetList.Count == 1)
5454
{
@@ -61,7 +61,7 @@ public async Task HandleResults(List<Target> targetList)
6161

6262
var textHasFailed = false;
6363

64-
async Task Inner(FilePair file, Target target)
64+
async Task Inner(FilePair file, StringOrStream target)
6565
{
6666
var result = await GetResult(settings, file, target, textHasFailed);
6767

@@ -290,4 +290,17 @@ static void AcceptChanges(in FilePair file)
290290
File.Delete(file.VerifiedPath);
291291
File.Move(file.ReceivedPath, file.VerifiedPath);
292292
}
293+
}
294+
295+
class StringOrStream
296+
{
297+
public required string? Name { get; init; }
298+
//TODO: should be nullable
299+
public required string Extension { get; init; }
300+
[MemberNotNullWhen(true, nameof(IsString))]
301+
public StringBuilder? StringBuilder { get; init; }
302+
[MemberNotNullWhen(false, nameof(IsString))]
303+
public Stream? Stream { get; init; }
304+
public string NameOrTarget => Name ?? "target";
305+
public bool IsString => StringBuilder != null;
293306
}

0 commit comments

Comments
 (0)