Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 3 additions & 17 deletions tests/Moq.Analyzers.Test/Common/DiagnosticExtensionsTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@ namespace Moq.Analyzers.Test.Common;

public class DiagnosticExtensionsTests
{
private static readonly MetadataReference CorlibReference;
private static readonly MetadataReference SystemRuntimeReference;

#pragma warning disable RS2008 // Enable analyzer release tracking (test-only descriptor)
#pragma warning disable ECS1300 // Test-only descriptor; inline init is simpler than static constructor
private static readonly DiagnosticDescriptor TestRule = new(
Expand All @@ -19,17 +16,6 @@ public class DiagnosticExtensionsTests
#pragma warning restore ECS1300
#pragma warning restore RS2008

#pragma warning disable S3963 // Static fields should be initialized inline - conflicts with ECS1300
static DiagnosticExtensionsTests()
{
CorlibReference = MetadataReference.CreateFromFile(typeof(object).Assembly.Location);
string runtimeDir = Path.GetDirectoryName(typeof(object).Assembly.Location)!;
SystemRuntimeReference = MetadataReference.CreateFromFile(Path.Combine(runtimeDir, "System.Runtime.dll"));
}
#pragma warning restore S3963

private static MetadataReference[] CoreReferences => [CorlibReference, SystemRuntimeReference];

// Overload #1: SyntaxNode + rule + messageArgs
[Fact]
public void CreateDiagnostic_FromSyntaxNode_Basic()
Expand Down Expand Up @@ -169,7 +155,7 @@ public void CreateDiagnostic_FromOperation_DelegatesToSyntax()
CSharpCompilation compilation = CSharpCompilation.Create(
"Test",
new[] { tree },
CoreReferences,
CompilationHelper.CoreReferences,
new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary));
SemanticModel model = compilation.GetSemanticModel(tree);
MethodDeclarationSyntax methodDecl = root.DescendantNodes().OfType<MethodDeclarationSyntax>().First();
Expand All @@ -189,7 +175,7 @@ public void CreateDiagnostic_FromOperation_WithProperties()
CSharpCompilation compilation = CSharpCompilation.Create(
"Test",
new[] { tree },
CoreReferences,
CompilationHelper.CoreReferences,
new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary));
SemanticModel model = compilation.GetSemanticModel(tree);
MethodDeclarationSyntax methodDecl = root.DescendantNodes().OfType<MethodDeclarationSyntax>().First();
Expand All @@ -210,7 +196,7 @@ public void CreateDiagnostic_FromOperation_WithAdditionalLocationsAndProperties_
CSharpCompilation compilation = CSharpCompilation.Create(
"Test",
new[] { tree },
CoreReferences,
CompilationHelper.CoreReferences,
new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary));
SemanticModel model = compilation.GetSemanticModel(tree);
MethodDeclarationSyntax methodDecl = root.DescendantNodes().OfType<MethodDeclarationSyntax>().First();
Expand Down
50 changes: 12 additions & 38 deletions tests/Moq.Analyzers.Test/Common/EventSyntaxExtensionsTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,6 @@ namespace Moq.Analyzers.Test.Common;

public class EventSyntaxExtensionsTests
{
private static readonly MetadataReference CorlibReference;
private static readonly MetadataReference SystemRuntimeReference;

#pragma warning disable S3963 // "static fields" should be initialized inline - conflicts with ECS1300
static EventSyntaxExtensionsTests()
{
CorlibReference = MetadataReference.CreateFromFile(typeof(object).Assembly.Location);
string runtimeDir = Path.GetDirectoryName(typeof(object).Assembly.Location)!;
SystemRuntimeReference = MetadataReference.CreateFromFile(Path.Combine(runtimeDir, "System.Runtime.dll"));
}
#pragma warning restore S3963

private static MetadataReference[] CoreReferences => [CorlibReference, SystemRuntimeReference];

[Fact]
public void GetEventParameterTypes_ActionDelegate_ReturnsTypeArguments()
{
Expand Down Expand Up @@ -112,7 +98,7 @@ class C
{
int[] Field;
}";
(SemanticModel model, SyntaxTree tree) = CreateCompilation(code);
(SemanticModel model, SyntaxTree tree) = CompilationHelper.CreateCompilation(code);
VariableDeclaratorSyntax fieldSyntax = tree.GetRoot()
.DescendantNodes().OfType<VariableDeclaratorSyntax>().First();
IFieldSymbol field = (IFieldSymbol)model.GetDeclaredSymbol(fieldSyntax)!;
Expand Down Expand Up @@ -204,7 +190,7 @@ class C
{
int[] Field;
}";
(SemanticModel model, SyntaxTree tree) = CreateCompilation(code);
(SemanticModel model, SyntaxTree tree) = CompilationHelper.CreateCompilation(code);
KnownSymbols knownSymbols = new KnownSymbols(model.Compilation);
VariableDeclaratorSyntax fieldSyntax = tree.GetRoot()
.DescendantNodes().OfType<VariableDeclaratorSyntax>().First();
Expand All @@ -227,7 +213,7 @@ void M()
}
void SomeMethod() {}
}";
(SemanticModel model, SyntaxTree tree) = CreateCompilation(code);
(SemanticModel model, SyntaxTree tree) = CompilationHelper.CreateCompilation(code);
InvocationExpressionSyntax invocation = tree.GetRoot()
.DescendantNodes().OfType<InvocationExpressionSyntax>().First();

Expand Down Expand Up @@ -255,7 +241,7 @@ void M()
}
void SomeMethod(int x) {}
}";
(SemanticModel model, SyntaxTree tree) = CreateCompilation(code);
(SemanticModel model, SyntaxTree tree) = CompilationHelper.CreateCompilation(code);
InvocationExpressionSyntax invocation = tree.GetRoot()
.DescendantNodes().OfType<InvocationExpressionSyntax>().First();

Expand Down Expand Up @@ -283,7 +269,7 @@ void M()
}
void SomeMethod(int x) {}
}";
(SemanticModel model, SyntaxTree tree) = CreateCompilation(code);
(SemanticModel model, SyntaxTree tree) = CompilationHelper.CreateCompilation(code);
InvocationExpressionSyntax invocation = tree.GetRoot()
.DescendantNodes().OfType<InvocationExpressionSyntax>().First();

Expand Down Expand Up @@ -319,7 +305,7 @@ void SomeMethod(int selector) {}
class C { event MyDelegate MyEvent; }",
"MyEvent");

(SemanticModel model, SyntaxTree tree) = CreateCompilation(code);
(SemanticModel model, SyntaxTree tree) = CompilationHelper.CreateCompilation(code);
InvocationExpressionSyntax invocation = tree.GetRoot()
.DescendantNodes().OfType<InvocationExpressionSyntax>().First();

Expand Down Expand Up @@ -354,7 +340,7 @@ void SomeMethod(int selector, int a, string b) {}
class C { event MyDelegate MyEvent; }",
"MyEvent");

(SemanticModel model, SyntaxTree tree) = CreateCompilation(code);
(SemanticModel model, SyntaxTree tree) = CompilationHelper.CreateCompilation(code);
InvocationExpressionSyntax invocation = tree.GetRoot()
.DescendantNodes().OfType<InvocationExpressionSyntax>().First();

Expand Down Expand Up @@ -382,7 +368,7 @@ void M()
}
void SomeMethod() {}
}";
(SemanticModel model, SyntaxTree tree) = CreateCompilation(code);
(SemanticModel model, SyntaxTree tree) = CompilationHelper.CreateCompilation(code);
KnownSymbols knownSymbols = new KnownSymbols(model.Compilation);
InvocationExpressionSyntax invocation = tree.GetRoot()
.DescendantNodes().OfType<InvocationExpressionSyntax>().First();
Expand Down Expand Up @@ -412,7 +398,7 @@ void M()
}
void SomeMethod(int x) {}
}";
(SemanticModel model, SyntaxTree tree) = CreateCompilation(code);
(SemanticModel model, SyntaxTree tree) = CompilationHelper.CreateCompilation(code);
KnownSymbols knownSymbols = new KnownSymbols(model.Compilation);
InvocationExpressionSyntax invocation = tree.GetRoot()
.DescendantNodes().OfType<InvocationExpressionSyntax>().First();
Expand Down Expand Up @@ -450,7 +436,7 @@ void SomeMethod(int selector, int a) {}
class C { event MyDelegate MyEvent; }",
"MyEvent");

(SemanticModel model, SyntaxTree tree) = CreateCompilation(code);
(SemanticModel model, SyntaxTree tree) = CompilationHelper.CreateCompilation(code);
KnownSymbols knownSymbols = new KnownSymbols(model.Compilation);
InvocationExpressionSyntax invocation = tree.GetRoot()
.DescendantNodes().OfType<InvocationExpressionSyntax>().First();
Expand All @@ -474,22 +460,10 @@ class C { event MyDelegate MyEvent; }",
// and RaisesEventArgumentsShouldMatchEventSignatureAnalyzerTests, which exercise all
// branching logic (too few args, too many args, wrong type, matching types, with/without
// eventName).
private static (SemanticModel Model, SyntaxTree Tree) CreateCompilation(string code)
{
SyntaxTree tree = CSharpSyntaxTree.ParseText(code);
CSharpCompilation compilation = CSharpCompilation.Create(
"TestAssembly",
new[] { tree },
CoreReferences,
new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary));
SemanticModel model = compilation.GetSemanticModel(tree);
return (model, tree);
}

#pragma warning disable ECS0900 // Boxing needed to cast to IEventSymbol from GetDeclaredSymbol
private static ITypeSymbol GetEventFieldType(string code, string eventName)
{
(SemanticModel model, SyntaxTree tree) = CreateCompilation(code);
(SemanticModel model, SyntaxTree tree) = CompilationHelper.CreateCompilation(code);
VariableDeclaratorSyntax variable = tree.GetRoot()
.DescendantNodes()
.OfType<VariableDeclaratorSyntax>()
Expand All @@ -503,7 +477,7 @@ private static (ITypeSymbol EventType, KnownSymbols KnownSymbols) GetEventFieldT
string code,
string eventName)
{
(SemanticModel model, SyntaxTree tree) = CreateCompilation(code);
(SemanticModel model, SyntaxTree tree) = CompilationHelper.CreateCompilation(code);
KnownSymbols knownSymbols = new KnownSymbols(model.Compilation);
VariableDeclaratorSyntax variable = tree.GetRoot()
.DescendantNodes()
Expand Down
Loading
Loading