Skip to content

Commit 42a06a1

Browse files
SimonCroppclaude
andcommitted
Merge branch 'main' into Allow-conversion-splitters-for-text-extensions
Conflict was in InnerVerifier_Inner.cs GetTargets, where both sides reworked target conversion/scrubbing. Kept this branch's conversion-splitter rework (inline Scrub, early return when doExtensionConversion is false, 2-arg DoExtensionConversion) and applied main's cleanup-composition fix: Func<Task> composed via .Then() rather than +=, which only awaits the last delegate. Also converted the two += cleanups this branch newly added in InnerVerifier_Stream.cs so stream/memory disposal is actually awaited. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2 parents 7106f58 + 4382641 commit 42a06a1

323 files changed

Lines changed: 1809 additions & 730 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/on-push-do-docs.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ jobs:
66
runs-on: windows-latest
77
steps:
88
- uses: actions/checkout@v4
9+
- uses: actions/setup-dotnet@v4
10+
with:
11+
global-json-file: global.json
912
- name: Run MarkdownSnippets
1013
run: |
1114
dotnet tool install --global MarkdownSnippets.Tool

docs/clipboard.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ The clipboard behavior can be enabled using the following:
2525
```cs
2626
ClipboardAccept.Enable();
2727
```
28-
<sup><a href='/src/Verify.ClipboardAccept.Tests/ClipboardEnabledTests.cs#L12-L14' title='Snippet source file'>snippet source</a> | <a href='#snippet-EnableClipboard' title='Start of snippet'>anchor</a></sup>
28+
<sup><a href='/src/Verify.ClipboardAccept.Tests/ClipboardEnabledTests.cs#L24-L26' title='Snippet source file'>snippet source</a> | <a href='#snippet-EnableClipboard' title='Start of snippet'>anchor</a></sup>
2929
<!-- endSnippet -->
3030

3131

docs/combinations.md

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ public Task BuildAddressExceptionsDisabledTest()
175175
city);
176176
}
177177
```
178-
<sup><a href='/src/StaticSettingsTests/CombinationTests.cs#L185-L201' title='Snippet source file'>snippet source</a> | <a href='#snippet-CombinationSample_CaptureExceptionsFalse' title='Start of snippet'>anchor</a></sup>
178+
<sup><a href='/src/StaticSettingsTests/CombinationTests.cs#L214-L230' title='Snippet source file'>snippet source</a> | <a href='#snippet-CombinationSample_CaptureExceptionsFalse' title='Start of snippet'>anchor</a></sup>
179179
<!-- endSnippet -->
180180

181181

@@ -215,13 +215,32 @@ public class CombinationResultsConverter :
215215

216216
var keyValues = new string[items.Count, keysLength];
217217

218+
// Keys repeat across rows (a column only has as many distinct values as
219+
// its input list), so cache the computed name per distinct key value.
220+
var nameCache = new Dictionary<object, string>();
221+
string? nullName = null;
222+
218223
for (var itemIndex = 0; itemIndex < items.Count; itemIndex++)
219224
{
220225
var item = items[itemIndex];
221226
for (var keyIndex = 0; keyIndex < keysLength; keyIndex++)
222227
{
223228
var key = item.Keys[keyIndex];
224-
var name = VerifierSettings.GetNameForParameter(key, writer.Counter, pathFriendly: false);
229+
string name;
230+
if (key == null)
231+
{
232+
name = nullName ??= VerifierSettings.GetNameForParameter(null, writer.Counter, pathFriendly: false);
233+
}
234+
else if (nameCache.TryGetValue(key, out var cached))
235+
{
236+
name = cached;
237+
}
238+
else
239+
{
240+
name = VerifierSettings.GetNameForParameter(key, writer.Counter, pathFriendly: false);
241+
nameCache[key] = name;
242+
}
243+
225244
keyValues[itemIndex, keyIndex] = name;
226245
var currentKeyLength = maxKeyLengths[keyIndex];
227246
if (name.Length > currentKeyLength)
@@ -353,7 +372,7 @@ public class CombinationResultsConverter :
353372
}
354373
}
355374
```
356-
<sup><a href='/src/Verify/Combinations/CombinationResultsConverter.cs#L1-L166' title='Snippet source file'>snippet source</a> | <a href='#snippet-CombinationResultsConverter.cs' title='Start of snippet'>anchor</a></sup>
375+
<sup><a href='/src/Verify/Combinations/CombinationResultsConverter.cs#L1-L185' title='Snippet source file'>snippet source</a> | <a href='#snippet-CombinationResultsConverter.cs' title='Start of snippet'>anchor</a></sup>
357376
<!-- endSnippet -->
358377

359378

@@ -378,7 +397,7 @@ class CustomCombinationConverter :
378397
string.Join(", ", keys.Select(_ => _.Value));
379398
}
380399
```
381-
<sup><a href='/src/StaticSettingsTests/CombinationTests.cs#L231-L240' title='Snippet source file'>snippet source</a> | <a href='#snippet-CombinationSample_CustomSerializationConverter' title='Start of snippet'>anchor</a></sup>
400+
<sup><a href='/src/StaticSettingsTests/CombinationTests.cs#L260-L269' title='Snippet source file'>snippet source</a> | <a href='#snippet-CombinationSample_CustomSerializationConverter' title='Start of snippet'>anchor</a></sup>
382401
<!-- endSnippet -->
383402

384403
Full control of serialization can be achieved by inheriting from `WriteOnlyJsonConverter<CombinationResults>`.
@@ -397,7 +416,7 @@ static CustomCombinationConverter customConverter = new();
397416
public static void Init() =>
398417
VerifierSettings.AddExtraSettings(_ => _.Converters.Insert(0, customConverter));
399418
```
400-
<sup><a href='/src/StaticSettingsTests/CombinationTests.cs#L203-L211' title='Snippet source file'>snippet source</a> | <a href='#snippet-CombinationSample_CustomSerializationModuleInitializer' title='Start of snippet'>anchor</a></sup>
419+
<sup><a href='/src/StaticSettingsTests/CombinationTests.cs#L232-L240' title='Snippet source file'>snippet source</a> | <a href='#snippet-CombinationSample_CustomSerializationModuleInitializer' title='Start of snippet'>anchor</a></sup>
401420
<!-- endSnippet -->
402421

403422

@@ -528,5 +547,5 @@ Headers can be enabled globally:
528547
public static void EnableIncludeHeaders() =>
529548
CombinationSettings.IncludeHeaders();
530549
```
531-
<sup><a href='/src/StaticSettingsTests/CombinationTests.cs#L243-L249' title='Snippet source file'>snippet source</a> | <a href='#snippet-GlobalCombinationHeader' title='Start of snippet'>anchor</a></sup>
550+
<sup><a href='/src/StaticSettingsTests/CombinationTests.cs#L272-L278' title='Snippet source file'>snippet source</a> | <a href='#snippet-GlobalCombinationHeader' title='Start of snippet'>anchor</a></sup>
532551
<!-- endSnippet -->

docs/comparer.md

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -119,30 +119,41 @@ public static async Task<CompareResult> AreEqual(Stream stream1, Stream stream2)
119119
EnsureAtStart(stream1);
120120
EnsureAtStart(stream2);
121121

122-
var buffer1 = new byte[bufferSize];
123-
var buffer2 = new byte[bufferSize];
124-
125-
while (true)
122+
var buffer1 = ArrayPool<byte>.Shared.Rent(bufferSize);
123+
var buffer2 = ArrayPool<byte>.Shared.Rent(bufferSize);
124+
try
126125
{
127-
var count = await ReadBufferAsync(stream1, buffer1);
128-
129-
//no need to compare size here since only enter on files being same size
130-
131-
if (count == 0)
126+
while (true)
132127
{
133-
return CompareResult.Equal;
134-
}
128+
var count1 = await ReadBufferAsync(stream1, buffer1);
129+
var count2 = await ReadBufferAsync(stream2, buffer2);
135130

136-
await ReadBufferAsync(stream2, buffer2);
131+
// Callers do not always guarantee the streams are the same length
132+
// (e.g. a non-seekable received stream), so a length difference must
133+
// be treated as not-equal instead of a short-circuit to equal.
134+
if (count1 != count2)
135+
{
136+
return CompareResult.NotEqual();
137+
}
137138

138-
for (var i = 0; i < count; i += sizeof(long))
139-
{
140-
if (BitConverter.ToInt64(buffer1, i) != BitConverter.ToInt64(buffer2, i))
139+
if (count1 == 0)
140+
{
141+
return CompareResult.Equal;
142+
}
143+
144+
// Compare exactly the bytes read (a rented buffer's trailing bytes
145+
// are arbitrary, so they must not be included).
146+
if (!buffer1.AsSpan(0, count1).SequenceEqual(buffer2.AsSpan(0, count1)))
141147
{
142148
return CompareResult.NotEqual();
143149
}
144150
}
145151
}
152+
finally
153+
{
154+
ArrayPool<byte>.Shared.Return(buffer1);
155+
ArrayPool<byte>.Shared.Return(buffer2);
156+
}
146157
}
147158

148159
static void EnsureAtStart(Stream stream)
@@ -156,10 +167,13 @@ static void EnsureAtStart(Stream stream)
156167

157168
static async Task<int> ReadBufferAsync(Stream stream, byte[] buffer)
158169
{
170+
// Read up to bufferSize (not buffer.Length): a rented buffer may be
171+
// larger, and both streams must be read in equal-sized chunks so the
172+
// length comparison above stays aligned.
159173
var bytesRead = 0;
160-
while (bytesRead < buffer.Length)
174+
while (bytesRead < bufferSize)
161175
{
162-
var read = await stream.ReadAsync(buffer, bytesRead, buffer.Length - bytesRead);
176+
var read = await stream.ReadAsync(buffer, bytesRead, bufferSize - bytesRead);
163177
if (read == 0)
164178
{
165179
// Reached end of stream.
@@ -172,7 +186,7 @@ static async Task<int> ReadBufferAsync(Stream stream, byte[] buffer)
172186
return bytesRead;
173187
}
174188
```
175-
<sup><a href='/src/Verify/Compare/StreamComparer.cs#L3-L65' title='Snippet source file'>snippet source</a> | <a href='#snippet-DefualtCompare' title='Start of snippet'>anchor</a></sup>
189+
<sup><a href='/src/Verify/Compare/StreamComparer.cs#L3-L79' title='Snippet source file'>snippet source</a> | <a href='#snippet-DefualtCompare' title='Start of snippet'>anchor</a></sup>
176190
<!-- endSnippet -->
177191

178192

docs/guids.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ var target = new GuidTarget
2323

2424
await Verify(target);
2525
```
26-
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L2273-L2286' title='Snippet source file'>snippet source</a> | <a href='#snippet-guid' title='Start of snippet'>anchor</a></sup>
26+
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L2320-L2333' title='Snippet source file'>snippet source</a> | <a href='#snippet-guid' title='Start of snippet'>anchor</a></sup>
2727
<!-- endSnippet -->
2828

2929
Results in the following:

docs/mdsource/temp-directory.source.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,13 @@ snippet: TempDirectoryDirectoryInfoConversion
5959
snippet: TempDirectoryInfoProperty
6060

6161

62+
### Combining paths
63+
64+
A `TempDirectory` can be combined with a relative `string` suffix using the `+` operator. The directory path and suffix are joined with a single separator (an existing leading separator on the suffix is respected). The result is a `string`.
65+
66+
snippet: TempDirectoryAddOperator
67+
68+
6269
### TempDirectory RootDirectory Property
6370

6471
Allows access to the root directory for all TempDirectory instances:

docs/members-throw.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public Task CustomExceptionPropFluent()
3535
.IgnoreMembersThatThrow<CustomException>();
3636
}
3737
```
38-
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L3988-L4007' title='Snippet source file'>snippet source</a> | <a href='#snippet-IgnoreMembersThatThrow' title='Start of snippet'>anchor</a></sup>
38+
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L4035-L4054' title='Snippet source file'>snippet source</a> | <a href='#snippet-IgnoreMembersThatThrow' title='Start of snippet'>anchor</a></sup>
3939
<!-- endSnippet -->
4040

4141
Or globally:
@@ -45,7 +45,7 @@ Or globally:
4545
```cs
4646
VerifierSettings.IgnoreMembersThatThrow<CustomException>();
4747
```
48-
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L3982-L3986' title='Snippet source file'>snippet source</a> | <a href='#snippet-IgnoreMembersThatThrowGlobal' title='Start of snippet'>anchor</a></sup>
48+
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L4029-L4033' title='Snippet source file'>snippet source</a> | <a href='#snippet-IgnoreMembersThatThrowGlobal' title='Start of snippet'>anchor</a></sup>
4949
<!-- endSnippet -->
5050

5151
Result:
@@ -82,7 +82,7 @@ public Task ExceptionMessagePropFluent()
8282
.IgnoreMembersThatThrow<Exception>(_ => _.Message == "Ignore");
8383
}
8484
```
85-
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L2616-L2637' title='Snippet source file'>snippet source</a> | <a href='#snippet-IgnoreMembersThatThrowExpression' title='Start of snippet'>anchor</a></sup>
85+
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L2663-L2684' title='Snippet source file'>snippet source</a> | <a href='#snippet-IgnoreMembersThatThrowExpression' title='Start of snippet'>anchor</a></sup>
8686
<!-- endSnippet -->
8787

8888
Or globally:
@@ -92,7 +92,7 @@ Or globally:
9292
```cs
9393
VerifierSettings.IgnoreMembersThatThrow<Exception>(_ => _.Message == "Ignore");
9494
```
95-
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L2609-L2613' title='Snippet source file'>snippet source</a> | <a href='#snippet-IgnoreMembersThatThrowExpressionGlobal' title='Start of snippet'>anchor</a></sup>
95+
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L2656-L2660' title='Snippet source file'>snippet source</a> | <a href='#snippet-IgnoreMembersThatThrowExpressionGlobal' title='Start of snippet'>anchor</a></sup>
9696
<!-- endSnippet -->
9797

9898
Result:

docs/naming.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -789,7 +789,7 @@ public static string NameWithParent(this Type type)
789789
return type.Name;
790790
}
791791
```
792-
<sup><a href='/src/Verify/Extensions.cs#L114-L126' title='Snippet source file'>snippet source</a> | <a href='#snippet-NameWithParent' title='Start of snippet'>anchor</a></sup>
792+
<sup><a href='/src/Verify/Extensions.cs#L132-L144' title='Snippet source file'>snippet source</a> | <a href='#snippet-NameWithParent' title='Start of snippet'>anchor</a></sup>
793793
<!-- endSnippet -->
794794

795795
Any path calculated in `DerivePathInfo` should be fully qualified to remove the inconsistency of the current directory.

docs/obsolete-members.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public Task WithObsoleteProp()
3131
return Verify(target);
3232
}
3333
```
34-
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L4135-L4156' title='Snippet source file'>snippet source</a> | <a href='#snippet-WithObsoleteProp' title='Start of snippet'>anchor</a></sup>
34+
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L4182-L4203' title='Snippet source file'>snippet source</a> | <a href='#snippet-WithObsoleteProp' title='Start of snippet'>anchor</a></sup>
3535
<!-- endSnippet -->
3636

3737
Result:
@@ -79,7 +79,7 @@ public Task WithObsoletePropIncludedFluent()
7979
.IncludeObsoletes();
8080
}
8181
```
82-
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L4106-L4133' title='Snippet source file'>snippet source</a> | <a href='#snippet-WithObsoletePropIncluded' title='Start of snippet'>anchor</a></sup>
82+
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L4153-L4180' title='Snippet source file'>snippet source</a> | <a href='#snippet-WithObsoletePropIncluded' title='Start of snippet'>anchor</a></sup>
8383
<!-- endSnippet -->
8484

8585
Or globally:
@@ -89,7 +89,7 @@ Or globally:
8989
```cs
9090
VerifierSettings.IncludeObsoletes();
9191
```
92-
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L4100-L4104' title='Snippet source file'>snippet source</a> | <a href='#snippet-WithObsoletePropIncludedGlobally' title='Start of snippet'>anchor</a></sup>
92+
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L4147-L4151' title='Snippet source file'>snippet source</a> | <a href='#snippet-WithObsoletePropIncludedGlobally' title='Start of snippet'>anchor</a></sup>
9393
<!-- endSnippet -->
9494

9595
Result:

docs/recording.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public Task Usage()
2525
return Verify("TheValue");
2626
}
2727
```
28-
<sup><a href='/src/Verify.Tests/RecordingTests.cs#L23-L33' title='Snippet source file'>snippet source</a> | <a href='#snippet-Recording' title='Start of snippet'>anchor</a></sup>
28+
<sup><a href='/src/Verify.Tests/RecordingTests.cs#L54-L64' title='Snippet source file'>snippet source</a> | <a href='#snippet-Recording' title='Start of snippet'>anchor</a></sup>
2929
<!-- endSnippet -->
3030

3131
Results in:
@@ -61,7 +61,7 @@ public Task TryAdd()
6161
return Verify("TheValue");
6262
}
6363
```
64-
<sup><a href='/src/Verify.Tests/RecordingTests.cs#L59-L71' title='Snippet source file'>snippet source</a> | <a href='#snippet-RecordingTryAdd' title='Start of snippet'>anchor</a></sup>
64+
<sup><a href='/src/Verify.Tests/RecordingTests.cs#L90-L102' title='Snippet source file'>snippet source</a> | <a href='#snippet-RecordingTryAdd' title='Start of snippet'>anchor</a></sup>
6565
<!-- endSnippet -->
6666

6767

@@ -85,7 +85,7 @@ public Task RecordingScoped()
8585
return Verify();
8686
}
8787
```
88-
<sup><a href='/src/Verify.Tests/RecordingTests.cs#L82-L97' title='Snippet source file'>snippet source</a> | <a href='#snippet-RecordingScoped' title='Start of snippet'>anchor</a></sup>
88+
<sup><a href='/src/Verify.Tests/RecordingTests.cs#L113-L128' title='Snippet source file'>snippet source</a> | <a href='#snippet-RecordingScoped' title='Start of snippet'>anchor</a></sup>
8989
<!-- endSnippet -->
9090

9191
Results in:
@@ -117,7 +117,7 @@ public Task SameKey()
117117
return Verify("TheValue");
118118
}
119119
```
120-
<sup><a href='/src/Verify.Tests/RecordingTests.cs#L281-L292' title='Snippet source file'>snippet source</a> | <a href='#snippet-RecordingSameKey' title='Start of snippet'>anchor</a></sup>
120+
<sup><a href='/src/Verify.Tests/RecordingTests.cs#L312-L323' title='Snippet source file'>snippet source</a> | <a href='#snippet-RecordingSameKey' title='Start of snippet'>anchor</a></sup>
121121
<!-- endSnippet -->
122122

123123
Results in:
@@ -156,7 +156,7 @@ public Task Identifier()
156156
return Verify(Recording.Stop("identifier"));
157157
}
158158
```
159-
<sup><a href='/src/Verify.Tests/RecordingTests.cs#L99-L109' title='Snippet source file'>snippet source</a> | <a href='#snippet-RecordingIdentifier' title='Start of snippet'>anchor</a></sup>
159+
<sup><a href='/src/Verify.Tests/RecordingTests.cs#L130-L140' title='Snippet source file'>snippet source</a> | <a href='#snippet-RecordingIdentifier' title='Start of snippet'>anchor</a></sup>
160160
<!-- endSnippet -->
161161

162162
Results in:
@@ -188,7 +188,7 @@ public Task Case()
188188
return Verify("TheValue");
189189
}
190190
```
191-
<sup><a href='/src/Verify.Tests/RecordingTests.cs#L303-L314' title='Snippet source file'>snippet source</a> | <a href='#snippet-RecordingIgnoreCase' title='Start of snippet'>anchor</a></sup>
191+
<sup><a href='/src/Verify.Tests/RecordingTests.cs#L334-L345' title='Snippet source file'>snippet source</a> | <a href='#snippet-RecordingIgnoreCase' title='Start of snippet'>anchor</a></sup>
192192
<!-- endSnippet -->
193193

194194
Results in:
@@ -223,7 +223,7 @@ public Task Stop()
223223
return Verify(appends.Where(_ => _.Name != "name1"));
224224
}
225225
```
226-
<sup><a href='/src/Verify.Tests/RecordingTests.cs#L141-L153' title='Snippet source file'>snippet source</a> | <a href='#snippet-RecordingStop' title='Start of snippet'>anchor</a></sup>
226+
<sup><a href='/src/Verify.Tests/RecordingTests.cs#L172-L184' title='Snippet source file'>snippet source</a> | <a href='#snippet-RecordingStop' title='Start of snippet'>anchor</a></sup>
227227
<!-- endSnippet -->
228228

229229
Results in:
@@ -255,7 +255,7 @@ public Task StopNotInResult()
255255
return Verify("other data");
256256
}
257257
```
258-
<sup><a href='/src/Verify.Tests/RecordingTests.cs#L155-L167' title='Snippet source file'>snippet source</a> | <a href='#snippet-RecordingStopNotInResult' title='Start of snippet'>anchor</a></sup>
258+
<sup><a href='/src/Verify.Tests/RecordingTests.cs#L186-L198' title='Snippet source file'>snippet source</a> | <a href='#snippet-RecordingStopNotInResult' title='Start of snippet'>anchor</a></sup>
259259
<!-- endSnippet -->
260260

261261
Results in:
@@ -284,7 +284,7 @@ public void IsRecording()
284284
Assert.True(Recording.IsRecording());
285285
}
286286
```
287-
<sup><a href='/src/Verify.Tests/RecordingTests.cs#L111-L121' title='Snippet source file'>snippet source</a> | <a href='#snippet-IsRecording' title='Start of snippet'>anchor</a></sup>
287+
<sup><a href='/src/Verify.Tests/RecordingTests.cs#L142-L152' title='Snippet source file'>snippet source</a> | <a href='#snippet-IsRecording' title='Start of snippet'>anchor</a></sup>
288288
<!-- endSnippet -->
289289

290290
This can be helpful if the cost of capturing data, to add to recording, is high.
@@ -307,7 +307,7 @@ public Task Clear()
307307
return Verify();
308308
}
309309
```
310-
<sup><a href='/src/Verify.Tests/RecordingTests.cs#L201-L213' title='Snippet source file'>snippet source</a> | <a href='#snippet-RecordingClear' title='Start of snippet'>anchor</a></sup>
310+
<sup><a href='/src/Verify.Tests/RecordingTests.cs#L232-L244' title='Snippet source file'>snippet source</a> | <a href='#snippet-RecordingClear' title='Start of snippet'>anchor</a></sup>
311311
<!-- endSnippet -->
312312

313313
Results in:
@@ -343,7 +343,7 @@ public Task PauseResume()
343343
return Verify();
344344
}
345345
```
346-
<sup><a href='/src/Verify.Tests/RecordingTests.cs#L225-L240' title='Snippet source file'>snippet source</a> | <a href='#snippet-RecordingPauseResume' title='Start of snippet'>anchor</a></sup>
346+
<sup><a href='/src/Verify.Tests/RecordingTests.cs#L256-L271' title='Snippet source file'>snippet source</a> | <a href='#snippet-RecordingPauseResume' title='Start of snippet'>anchor</a></sup>
347347
<!-- endSnippet -->
348348

349349
Results in:

0 commit comments

Comments
 (0)