Skip to content

Commit 33c8ac7

Browse files
authored
docs: support multiple failed old assertions in verifier (#344)
* docs: support multiple failed old assertions in verifier
1 parent c9f246f commit 33c8ac7

File tree

3 files changed

+20
-10
lines changed

3 files changed

+20
-10
lines changed

src/FluentAssertions.Analyzers.FluentAssertionAnalyzerDocs.Nunit4/Nunit4AnalyzerTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using FluentAssertions;
12
using NUnit.Framework;
23
using NUnit.Framework.Legacy;
34

src/FluentAssertions.Analyzers.FluentAssertionAnalyzerDocs.Nunit4/Program.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace FluentAssertions.Analyzers.FluentAssertionAnalyzerDocs;
88

99
public class Program
1010
{
11-
public static Task Main(string[] args) => new Nunit4DocsGenerator().Execute();
11+
public static Task Main(string[] args) => ProgramUtils.RunMain<Nunit4DocsGenerator, Nunit4DocsVerifier>(args);
1212

1313
private class Nunit4DocsGenerator : DocsGenerator
1414
{
@@ -24,4 +24,9 @@ protected override void ResetTestFramework()
2424
NUnit.Framework.Internal.TestExecutionContext.CurrentContext.CurrentResult.AssertionResults.Clear();
2525
}
2626
}
27+
private class Nunit4DocsVerifier : DocsVerifier
28+
{
29+
protected override string TestAttribute => "Test"; // NUnit.Framework.TestAttribute
30+
protected override string TestFile => Path.Join(Environment.CurrentDirectory, "Nunit4AnalyzerTests.cs");
31+
}
2732
}

src/FluentAssertions.Analyzers.FluentAssertionAnalyzerDocsGenerator/DocsVerifier.cs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,18 @@ public async Task Execute()
2222

2323
var issues = new StringBuilder();
2424

25-
void ValidateAssertions(IEnumerable<ExpressionStatementSyntax> oldAssertions, ExpressionStatementSyntax newAssertion, MethodDeclarationSyntax method, string className)
25+
void ValidateAssertions(IEnumerable<ExpressionStatementSyntax> oldAssertions, ExpressionStatementSyntax newAssertion, MethodDeclarationSyntax method)
2626
{
2727
foreach (var oldAssertion in oldAssertions)
2828
{
2929
if (!oldAssertion.WithoutTrivia().IsEquivalentTo(newAssertion.WithoutTrivia()))
3030
{
31-
issues.AppendLine($"[{className}] {method.Identifier} - actual: {oldAssertion.ToFullString()} expected: {newAssertion.ToFullString()}");
31+
issues.AppendLine($"[{TestFile.Split('\\')[^1]}] {method.Identifier} - actual: {oldAssertion.ToFullString()} expected: {newAssertion.ToFullString()}");
3232
}
3333
}
3434
}
3535

36-
Console.WriteLine($"File: {Path.GetFileName(tree.FilePath)}");
36+
Console.WriteLine($"File: {Path.GetFileName(TestFile)}");
3737

3838
var root = await tree.GetRootAsync();
3939
var methods = root.DescendantNodes().OfType<MethodDeclarationSyntax>();
@@ -45,22 +45,26 @@ void ValidateAssertions(IEnumerable<ExpressionStatementSyntax> oldAssertions, Ex
4545

4646
var (oldAssertions, newAssertion) = GetAssertionsFromMethod(method);
4747

48-
ValidateAssertions(oldAssertions, newAssertion, method, tree.FilePath.Split('\\')[^1]);
48+
ValidateAssertions(oldAssertions, newAssertion, method);
4949

5050
if (methodsMap.TryGetValue($"{method.Identifier.Text}_Failure", out var methodFailure))
5151
{
5252
var (oldAssertionsFailure, newAssertionFailure) = GetAssertionsFromMethod(methodFailure);
5353

54-
ValidateAssertions(oldAssertionsFailure, newAssertionFailure, methodFailure, tree.FilePath.Split('\\')[^1]);
54+
ValidateAssertions(oldAssertionsFailure, newAssertionFailure, methodFailure);
5555
}
5656

57-
if (methodsMap.TryGetValue($"{method.Identifier.Text}_Failure_OldAssertion", out var testWithFailureOldAssertion)
58-
&& methodsMap.TryGetValue($"{method.Identifier.Text}_Failure_NewAssertion", out var testWithFailureNewAssertion))
57+
if (methodsMap.TryGetValue($"{method.Identifier.Text}_Failure_NewAssertion", out var testWithFailureNewAssertion))
5958
{
60-
var (oldAssertionsFailure, _) = GetAssertionsFromMethod(testWithFailureOldAssertion);
59+
var testWithFailureOldAssertions = methodsMap.Where(x => x.Key.StartsWith($"{method.Identifier.Text}_Failure_OldAssertion")).Select(x => x.Value);
60+
6161
var (_, newAssertionFailure) = GetAssertionsFromMethod(testWithFailureNewAssertion);
62+
foreach (var testWithFailureOldAssertion in testWithFailureOldAssertions)
63+
{
64+
var (oldAssertionsFailure, _) = GetAssertionsFromMethod(testWithFailureOldAssertion);
6265

63-
ValidateAssertions(oldAssertionsFailure, newAssertionFailure, testWithFailureOldAssertion, tree.FilePath.Split('\\')[^1]);
66+
ValidateAssertions(oldAssertionsFailure, newAssertionFailure, testWithFailureOldAssertion);
67+
}
6468
}
6569
}
6670

0 commit comments

Comments
 (0)