Skip to content

Commit 3c14430

Browse files
authored
use LaunchForTextAsync (#1391)
1 parent 6502254 commit 3c14430

File tree

5 files changed

+71
-31
lines changed

5 files changed

+71
-31
lines changed

src/Verify.Tests/VerifyDirectoryTests.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,20 @@
11
public class VerifyDirectoryTests
22
{
33
static string directoryPathToVerify = Path.Combine(AttributeReader.GetSolutionDirectory(), "ToVerify");
4+
#if NET8_0_OR_GREATER
5+
6+
#region AddTextFileConvention
7+
[ModuleInitializer]
8+
public static void InitTextFileConvention() =>
9+
FileExtensions.AddTextFileConvention(
10+
path =>
11+
{
12+
var name = Path.GetFileName(path);
13+
return name.Equals("TextDocWithoutExtension", StringComparison.OrdinalIgnoreCase);
14+
});
15+
#endregion
16+
17+
#endif
418

519
[Fact]
620
public Task WithDirectory() =>

src/Verify/FilePair.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,15 @@ public FilePair(string extension, string receivedPath, string verifiedPath)
1111
IsText = FileExtensions.IsTextExtension(extension);
1212
}
1313

14+
public FilePair(string extension, string receivedPath, string verifiedPath, bool isText)
15+
{
16+
Guards.AgainstBadExtension(extension);
17+
Extension = extension;
18+
ReceivedPath = receivedPath;
19+
VerifiedPath = verifiedPath;
20+
IsText = isText;
21+
}
22+
1423
public string Extension { get; }
1524
public string ReceivedPath { get; }
1625
public string VerifiedPath { get; }

src/Verify/Target.cs

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -58,38 +58,37 @@ public Target(string extension, Stream data, string? name = null)
5858

5959
public Target(string extension, StringBuilder data, string? name = null)
6060
{
61-
Guards.AgainstBadExtension(extension);
6261
Guard.NotEmpty(name);
63-
if (!FileExtensions.IsTextExtension(extension))
64-
{
65-
throw new(
66-
$"""
67-
Don't pass text for a binary extension.
68-
If {extension} is a text extension then use `FileExtensions.AddTextExtension("{extension}")` at initialization;
69-
Otherwise use `Target(string extension, Stream data, string? name)`.
70-
""");
71-
}
62+
ValidateExtension(extension);
7263

7364
Extension = extension;
7465
Name = name;
7566
streamData = null;
7667
stringBuilderData = data;
7768
}
7869

79-
public Target(string extension, string data, string? name = null)
70+
static void ValidateExtension(string extension)
8071
{
8172
Guards.AgainstBadExtension(extension);
82-
Guard.NotEmpty(name, nameof(name));
83-
if (!FileExtensions.IsTextExtension(extension))
73+
if (extension == "noextension" ||
74+
FileExtensions.IsTextExtension(extension))
8475
{
85-
throw new(
86-
$"""
87-
Don't pass a text for a binary extension.
88-
If {extension} is a text extension then use `FileExtensions.AddTextExtension("{extension}")` at initialization;
89-
Otherwise use `Target(string extension, Stream data, string? name)`.
90-
""");
76+
return;
9177
}
9278

79+
throw new(
80+
$"""
81+
Don't pass text for a binary extension.
82+
If {extension} is a text extension then use `FileExtensions.AddTextExtension("{extension}")` at initialization;
83+
Otherwise use `Target(string extension, Stream data, string? name)`.
84+
""");
85+
}
86+
87+
public Target(string extension, string data, string? name = null)
88+
{
89+
Guard.NotEmpty(name, nameof(name));
90+
ValidateExtension(extension);
91+
9392
Extension = extension;
9493
Name = name;
9594
stringBuilderData = new(data);

src/Verify/Verifier/InnerVerifier.cs

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,8 @@ public InnerVerifier(string directory, string name, VerifySettings? settings = n
135135
new(
136136
target.Extension,
137137
$"{prefix}.received.{target.Extension}",
138-
$"{prefix}.verified.{target.Extension}");
138+
$"{prefix}.verified.{target.Extension}",
139+
target.IsString);
139140

140141
getIndexedFileNames = (target, index) =>
141142
{
@@ -144,13 +145,15 @@ public InnerVerifier(string directory, string name, VerifySettings? settings = n
144145
return new(
145146
target.Extension,
146147
$"{prefix}#{index}.received.{target.Extension}",
147-
$"{prefix}#{index}.verified.{target.Extension}");
148+
$"{prefix}#{index}.verified.{target.Extension}",
149+
target.IsString);
148150
}
149151

150152
return new(
151153
target.Extension,
152154
$"{prefix}#{target.Name}.{index}.received.{target.Extension}",
153-
$"{prefix}#{target.Name}.{index}.verified.{target.Extension}");
155+
$"{prefix}#{target.Name}.{index}.verified.{target.Extension}",
156+
target.IsString);
154157
};
155158
}
156159

@@ -185,15 +188,17 @@ void InitForDirectoryConvention(Namer namer, string typeAndMethod, string verifi
185188
return new(
186189
target.Extension,
187190
Path.Combine(receivedDirectory, fileName),
188-
Path.Combine(verifiedDirectory, fileName));
191+
Path.Combine(verifiedDirectory, fileName),
192+
target.IsString);
189193
};
190194
getIndexedFileNames = (target, index) =>
191195
{
192196
var fileName = $"{target.NameOrTarget}#{index}.{target.Extension}";
193197
return new(
194198
target.Extension,
195199
Path.Combine(receivedDirectory, fileName),
196-
Path.Combine(verifiedDirectory, fileName));
200+
Path.Combine(verifiedDirectory, fileName),
201+
target.IsString);
197202
};
198203

199204
IoHelpers.DeleteDirectory(receivedDirectory);
@@ -207,12 +212,14 @@ void InitForDirectoryConvention(Namer namer, string typeAndMethod, string verifi
207212
new(
208213
target.Extension,
209214
Path.Combine(directoryPrefix, $"{target.NameOrTarget}.received.{target.Extension}"),
210-
Path.Combine(directoryPrefix, $"{target.NameOrTarget}.verified.{target.Extension}"));
215+
Path.Combine(directoryPrefix, $"{target.NameOrTarget}.verified.{target.Extension}"),
216+
target.IsString);
211217
getIndexedFileNames = (target, index) =>
212218
new(
213219
target.Extension,
214220
Path.Combine(directoryPrefix, $"{target.NameOrTarget}#{index}.received.{target.Extension}"),
215-
Path.Combine(directoryPrefix, $"{target.NameOrTarget}#{index}.verified.{target.Extension}"));
221+
Path.Combine(directoryPrefix, $"{target.NameOrTarget}#{index}.verified.{target.Extension}"),
222+
target.IsString);
216223

217224
IoHelpers.DeleteFiles(directoryPrefix, "*.received.*");
218225
}
@@ -257,13 +264,15 @@ void InitForFileConvention(Namer namer, string typeAndMethod, string receivedPar
257264
return new(
258265
target.Extension,
259266
$"{pathPrefixReceived}.received.{target.Extension}",
260-
$"{pathPrefixVerified}.verified.{target.Extension}");
267+
$"{pathPrefixVerified}.verified.{target.Extension}",
268+
target.IsString);
261269
}
262270

263271
return new(
264272
target.Extension,
265273
$"{pathPrefixReceived}#{target.Name}.received.{target.Extension}",
266-
$"{pathPrefixVerified}#{target.Name}.verified.{target.Extension}");
274+
$"{pathPrefixVerified}#{target.Name}.verified.{target.Extension}",
275+
target.IsString);
267276
};
268277
getIndexedFileNames = (target, index) =>
269278
{
@@ -272,13 +281,15 @@ void InitForFileConvention(Namer namer, string typeAndMethod, string receivedPar
272281
return new(
273282
target.Extension,
274283
$"{pathPrefixReceived}#{index}.received.{target.Extension}",
275-
$"{pathPrefixVerified}#{index}.verified.{target.Extension}");
284+
$"{pathPrefixVerified}#{index}.verified.{target.Extension}",
285+
target.IsString);
276286
}
277287

278288
return new(
279289
target.Extension,
280290
$"{pathPrefixReceived}#{target.Name}.{index}.received.{target.Extension}",
281-
$"{pathPrefixVerified}#{target.Name}.{index}.verified.{target.Extension}");
291+
$"{pathPrefixVerified}#{target.Name}.{index}.verified.{target.Extension}",
292+
target.IsString);
282293
};
283294

284295
MatchingFileFinder.DeleteReceived(receivedPrefix, directory);

src/Verify/Verifier/VerifyEngine.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,14 @@ async Task<bool> RunDiffAutoCheck(FilePair file, bool autoVerify)
252252

253253
if (diffEnabled)
254254
{
255-
await DiffRunner.LaunchAsync(file.ReceivedPath, file.VerifiedPath, VerifierSettings.Encoding);
255+
if (file.IsText)
256+
{
257+
await DiffRunner.LaunchForTextAsync(file.ReceivedPath, file.VerifiedPath, VerifierSettings.Encoding);
258+
}
259+
else
260+
{
261+
await DiffRunner.LaunchAsync(file.ReceivedPath, file.VerifiedPath, VerifierSettings.Encoding);
262+
}
256263
}
257264

258265
return autoVerify;

0 commit comments

Comments
 (0)