Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ public Task TestLevelUsage()
return Verify(target, settings);
}
```
<sup><a href='/src/Tests/Tests.cs#L111-L122' title='Snippet source file'>snippet source</a> | <a href='#snippet-TestLevelUsage' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Tests/Tests.cs#L133-L144' title='Snippet source file'>snippet source</a> | <a href='#snippet-TestLevelUsage' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

Or Fluently
Expand All @@ -185,5 +185,5 @@ public Task TestLevelUsageFluent()
.UseDiffPlex();
}
```
<sup><a href='/src/Tests/Tests.cs#L124-L134' title='Snippet source file'>snippet source</a> | <a href='#snippet-TestLevelUsageFluent' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Tests/Tests.cs#L146-L156' title='Snippet source file'>snippet source</a> | <a href='#snippet-TestLevelUsageFluent' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->
2 changes: 1 addition & 1 deletion src/Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<Project>
<PropertyGroup>
<NoWarn>CS1591;CS0649;NU1608;NU1109</NoWarn>
<Version>3.3.0</Version>
<Version>3.3.1</Version>
<AssemblyVersion>1.0.0</AssemblyVersion>
<LangVersion>preview</LangVersion>
<PackageTags>DiffPlex, Verify</PackageTags>
Expand Down
23 changes: 23 additions & 0 deletions src/Tests/Tests.CompactEmptyReceived.verified.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
Type: VerifyException,
Message:
Directory: {ProjectDirectory}
NotEqual:
- Received: Tests.CompactEmptyReceivedFake.received.txt
Verified: Tests.CompactEmptyReceivedFake.verified.txt

FileContent:

NotEqual:

Received: Tests.CompactEmptyReceivedFake.received.txt
Verified: Tests.CompactEmptyReceivedFake.verified.txt
Compare Result:
[BOF]
- First
- Second
- Third
[EOF]


}
3 changes: 3 additions & 0 deletions src/Tests/Tests.CompactEmptyReceivedFake.verified.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
First
Second
Third
22 changes: 22 additions & 0 deletions src/Tests/Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,28 @@ public Task AtTestLevelCompact()
settings));
}

[Test]
public Task CompactEmptyReceived()
{
var settings = new VerifySettings();
settings.UseMethodName("CompactEmptyReceivedFake");
settings.DisableDiff();
settings.UseDiffPlex(OutputType.Compact);
// Scrub every line so the received content is empty. The resulting diff is all
// deletions (every line has a null Position), which used to throw
// ArgumentOutOfRangeException in the Compact formatter.
settings.ScrubLines(_ => true);

return ThrowsTask(() =>
Verify(
"""
First
Second
Third
""",
settings));
}

[Test]
public Task AtTestLevelMinimal()
{
Expand Down
7 changes: 5 additions & 2 deletions src/Verify.DiffPlex/VerifyDiffPlex.cs
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,11 @@ static StringBuilder CompactCompare(string received, string verified)
var diff = InlineDiffBuilder.Diff(verified, received);
var builder = new StringBuilder();

// ReSharper disable once RedundantSuppressNullableWarningExpression
var prefixLength = diff.Lines.Max(_ => _.Position).ToString()!.Length;
// Position is null for deleted lines. When the received side is empty the diff is
// all deletions, so Max returns null; fall back to 0 (a single-digit width) to avoid
// a negative spacePrefix length.
var maxPosition = diff.Lines.Max(_ => _.Position) ?? 0;
var prefixLength = maxPosition.ToString().Length;
var spacePrefix = new string(' ', prefixLength - 1);

static bool IsChanged(DiffPiece? line) => line?.Type is ChangeType.Inserted or ChangeType.Deleted;
Expand Down
Loading