Skip to content

Commit

Permalink
GH-202 - do not report NS500 for event subscriptions
Browse files Browse the repository at this point in the history
  • Loading branch information
tpodolak committed Feb 17, 2023
1 parent 7f3bd36 commit 98b8c15
Show file tree
Hide file tree
Showing 8 changed files with 69 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ protected AbstractUnusedReceivedAnalyzer(IDiagnosticDescriptorsProvider diagnost
public sealed override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; }

private static readonly ImmutableHashSet<OperationKind> PossibleParents =
ImmutableHashSet.Create(OperationKind.PropertyReference, OperationKind.Invocation);
ImmutableHashSet.Create(OperationKind.PropertyReference, OperationKind.Invocation, OperationKind.EventReference);

protected sealed override void InitializeAnalyzer(AnalysisContext context)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,30 @@ public void Test()
substitute.{method};
}}
}}
}}";
await VerifyNoDiagnostic(source);
}

public override async Task ReportsNoDiagnostics_WhenSubscribingToEvent(string method)
{
var source = $@"using NSubstitute;
using NSubstitute.ReceivedExtensions;
using System;
namespace MyNamespace
{{
public class Foo
{{
public event Action SomeEvent;
}}
public class FooTests
{{
public void Test()
{{
var substitute = NSubstitute.Substitute.For<Foo>();
substitute.{method}.SomeEvent += Arg.Any<Action>();
}}
}}
}}";
await VerifyNoDiagnostic(source);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -300,6 +300,30 @@ public void Test()
{method};
}}
}}
}}";
await VerifyNoDiagnostic(source);
}

public override async Task ReportsNoDiagnostics_WhenSubscribingToEvent(string method)
{
var source = $@"using NSubstitute;
using NSubstitute.ReceivedExtensions;
using System;
namespace MyNamespace
{{
public class Foo
{{
public event Action SomeEvent;
}}
public class FooTests
{{
public void Test()
{{
var substitute = NSubstitute.Substitute.For<Foo>();
{method}.SomeEvent += Arg.Any<Action>();
}}
}}
}}";
await VerifyNoDiagnostic(source);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,8 @@ public abstract class UnusedReceivedDiagnosticVerifier : CSharpDiagnosticVerifie
[CombinatoryTheory]
[InlineData]
public abstract Task ReportsNoDiagnostics_WhenUsedWithUnfortunatelyNamedMethod(string method);

[CombinatoryTheory]
[InlineData]
public abstract Task ReportsNoDiagnostics_WhenSubscribingToEvent(string method);
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,6 @@ public interface IUnusedReceivedDiagnosticVerifier
Task ReportNoDiagnostics_WhenUsedWithInvokingDelegate(string method);

Task ReportsNoDiagnostics_WhenUsedWithUnfortunatelyNamedMethod(string method);

Task ReportsNoDiagnostics_WhenSubscribingToEvent(string method);
}
Original file line number Diff line number Diff line change
Expand Up @@ -208,4 +208,9 @@ End Namespace
";
await VerifyNoDiagnostic(source);
}

public override Task ReportsNoDiagnostics_WhenSubscribingToEvent(string method)
{
throw new System.NotImplementedException();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -288,4 +288,9 @@ End Namespace
";
await VerifyNoDiagnostic(source);
}

public override Task ReportsNoDiagnostics_WhenSubscribingToEvent(string method)
{
throw new System.NotImplementedException();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,8 @@ public abstract class UnusedReceivedDiagnosticVerifier : VisualBasicDiagnosticVe
[CombinatoryTheory]
[InlineData]
public abstract Task ReportsNoDiagnostics_WhenUsedWithUnfortunatelyNamedMethod(string method);

[CombinatoryTheory]
[InlineData]
public abstract Task ReportsNoDiagnostics_WhenSubscribingToEvent(string method);
}

0 comments on commit 98b8c15

Please sign in to comment.