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 18, 2023
1 parent abe5b9f commit 81662df
Show file tree
Hide file tree
Showing 15 changed files with 209 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 @@ -105,4 +105,8 @@ public abstract class NonSubstitutableMemberReceivedDiagnosticVerifier : CSharpD
[CombinatoryTheory]
[InlineData]
public abstract Task ReportsNoDiagnostics_WhenUsingUnfortunatelyNamedMethod(string method);

[CombinatoryTheory]
[InlineData]
public abstract Task ReportsNoDiagnostics_WhenSubscribingToEvent(string method);
}
Original file line number Diff line number Diff line change
Expand Up @@ -668,4 +668,28 @@ public void Test()

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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -737,4 +737,28 @@ public void Test()

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);
}
}
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 @@ -41,4 +41,6 @@ public interface INonSubstitutableMemberReceivedDiagnosticVerifier
Task ReportsDiagnostics_WhenSettingValueForInternalVirtualMember_AndInternalsVisibleToAppliedToWrongAssembly(string method, string call, string message);

Task ReportsNoDiagnostics_WhenSettingValueForProtectedInternalVirtualMember(string method, string call);

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 @@ -105,4 +105,8 @@ public abstract class NonSubstitutableMemberReceivedDiagnosticVerifier : VisualB
[CombinatoryTheory]
[InlineData]
public abstract Task ReportsNoDiagnostics_WhenUsingUnfortunatelyNamedMethod(string method);

[CombinatoryTheory]
[InlineData]
public abstract Task ReportsNoDiagnostics_WhenSubscribingToEvent(string method);
}
Original file line number Diff line number Diff line change
Expand Up @@ -620,4 +620,27 @@ End Class

await VerifyNoDiagnostic(source);
}

public override async Task ReportsNoDiagnostics_WhenSubscribingToEvent(string method)
{
var source = $@"
Imports NSubstitute
Imports NSubstitute.ReceivedExtensions
Imports System
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 @@ -600,6 +600,29 @@ End Namespace
await VerifyNoDiagnostic(source);
}

public override async Task ReportsNoDiagnostics_WhenSubscribingToEvent(string method)
{
var source = $@"
Imports NSubstitute
Imports NSubstitute.ReceivedExtensions
Imports System
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);
}

public override async Task ReportsDiagnostics_WhenSettingValueForInternalVirtualMember_AndInternalsVisibleToNotApplied(string method, string call, string message)
{
var source = $@"Imports NSubstitute
Expand Down
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 81662df

Please sign in to comment.