Skip to content

Commit

Permalink
Merge pull request #203 from nsubstitute/GH-202-received-event-subscr…
Browse files Browse the repository at this point in the history
…iption

GH-202 - do not report NS500 for event subscriptions
  • Loading branch information
tpodolak authored Jul 30, 2023
2 parents abe5b9f + 60d6225 commit 3edadcb
Show file tree
Hide file tree
Showing 8 changed files with 105 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,27 @@ End Namespace
";
await VerifyNoDiagnostic(source);
}

public override async Task ReportsNoDiagnostics_WhenSubscribingToEvent(string method)
{
var source = @$"Imports NSubstitute
Imports System
Imports NSubstitute.ReceivedExtensions
Imports NUnit.Framework
Namespace MyNamespace
Public Class Foo
Public Event SomeEvent As Action
End Class
Public Class FooTests
Public Sub Test()
Dim substitute = NSubstitute.Substitute.[For] (Of Foo)()
AddHandler substitute.{method}.SomeEvent, Arg.Any (Of Action)()
End Sub
End Class
End Namespace";

await VerifyNoDiagnostic(source);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -288,4 +288,27 @@ End Namespace
";
await VerifyNoDiagnostic(source);
}

public override async Task ReportsNoDiagnostics_WhenSubscribingToEvent(string method)
{
var source = @$"Imports NSubstitute
Imports System
Imports NSubstitute.ReceivedExtensions
Imports NUnit.Framework
Namespace MyNamespace
Public Class Foo
Public Event SomeEvent As Action
End Class
Public Class FooTests
Public Sub Test()
Dim substitute = NSubstitute.Substitute.[For] (Of Foo)()
AddHandler {method}.SomeEvent, Arg.Any (Of Action)()
End Sub
End Class
End Namespace";

await VerifyNoDiagnostic(source);
}
}
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 3edadcb

Please sign in to comment.