Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update tests to stop relying on DiagnosticAnalyzerTestBase #2988

Merged
merged 6 commits into from
Nov 1, 2019
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

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public sealed class EquatableAnalyzer : DiagnosticAnalyzer
private static readonly LocalizableString s_localizableMessageImplementIEquatable = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ImplementIEquatableWhenOverridingObjectEqualsMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources));
private static readonly LocalizableString s_localizableDescriptionImplementIEquatable = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.ImplementIEquatableWhenOverridingObjectEqualsDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources));

private static readonly DiagnosticDescriptor s_implementIEquatableDescriptor = new DiagnosticDescriptor(
internal static readonly DiagnosticDescriptor ImplementIEquatableDescriptor = new DiagnosticDescriptor(
ImplementIEquatableRuleId,
s_localizableTitleImplementIEquatable,
s_localizableMessageImplementIEquatable,
Expand All @@ -33,7 +33,7 @@ public sealed class EquatableAnalyzer : DiagnosticAnalyzer
private static readonly LocalizableString s_localizableMessageOverridesObjectEquals = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.OverrideObjectEqualsMessage), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources));
private static readonly LocalizableString s_localizableDescriptionOverridesObjectEquals = new LocalizableResourceString(nameof(MicrosoftCodeQualityAnalyzersResources.OverrideObjectEqualsDescription), MicrosoftCodeQualityAnalyzersResources.ResourceManager, typeof(MicrosoftCodeQualityAnalyzersResources));

private static readonly DiagnosticDescriptor s_overridesObjectEqualsDescriptor = new DiagnosticDescriptor(
internal static readonly DiagnosticDescriptor OverridesObjectEqualsDescriptor = new DiagnosticDescriptor(
OverrideObjectEqualsRuleId,
s_localizableTitleOverridesObjectEquals,
s_localizableMessageOverridesObjectEquals,
Expand All @@ -43,7 +43,7 @@ public sealed class EquatableAnalyzer : DiagnosticAnalyzer
description: s_localizableDescriptionOverridesObjectEquals,
helpLinkUri: "http://go.microsoft.com/fwlink/?LinkId=734909");

public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => ImmutableArray.Create(s_implementIEquatableDescriptor, s_overridesObjectEqualsDescriptor);
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => ImmutableArray.Create(ImplementIEquatableDescriptor, OverridesObjectEqualsDescriptor);

public override void Initialize(AnalysisContext context)
{
Expand Down Expand Up @@ -99,12 +99,12 @@ private static void AnalyzeSymbol(SymbolAnalysisContext context, INamedTypeSymbo

if (overridesObjectEquals && !implementsEquatable && namedType.TypeKind == TypeKind.Struct)
{
context.ReportDiagnostic(namedType.CreateDiagnostic(s_implementIEquatableDescriptor, namedType));
context.ReportDiagnostic(namedType.CreateDiagnostic(ImplementIEquatableDescriptor, namedType));
}

if (!overridesObjectEquals && implementsEquatable)
{
context.ReportDiagnostic(namedType.CreateDiagnostic(s_overridesObjectEqualsDescriptor, namedType));
context.ReportDiagnostic(namedType.CreateDiagnostic(OverridesObjectEqualsDescriptor, namedType));
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,27 +1,22 @@
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.

using System.Globalization;
using Microsoft.CodeAnalysis.Diagnostics;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Testing;
using Test.Utilities;
using Xunit;
using VerifyCS = Test.Utilities.CSharpCodeFixVerifier<
Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.AbstractTypesShouldNotHaveConstructorsAnalyzer,
Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.AbstractTypesShouldNotHaveConstructorsFixer>;
using VerifyVB = Test.Utilities.VisualBasicCodeFixVerifier<
Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.AbstractTypesShouldNotHaveConstructorsAnalyzer,
Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.AbstractTypesShouldNotHaveConstructorsFixer>;

namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.UnitTests
{
public partial class CA1012Tests : DiagnosticAnalyzerTestBase
public class CA1012Tests
{
protected override DiagnosticAnalyzer GetBasicDiagnosticAnalyzer()
{
return new AbstractTypesShouldNotHaveConstructorsAnalyzer();
}

protected override DiagnosticAnalyzer GetCSharpDiagnosticAnalyzer()
{
return new AbstractTypesShouldNotHaveConstructorsAnalyzer();
}

[Fact]
public void TestCSPublicAbstractClass()
public async Task TestCSPublicAbstractClass()
{
var code = @"
public abstract class C
Expand All @@ -31,23 +26,23 @@ public C()
}
}
";
VerifyCSharp(code, GetCA1012CSharpResultAt(2, 23, "C"));
await VerifyCS.VerifyAnalyzerAsync(code, GetCA1012CSharpResultAt(2, 23, "C"));
}

[Fact]
public void TestVBPublicAbstractClass()
public async Task TestVBPublicAbstractClass()
{
var code = @"
Public MustInherit Class C
Public Sub New()
End Sub
End Class
";
VerifyBasic(code, GetCA1012BasicResultAt(2, 26, "C"));
await VerifyVB.VerifyAnalyzerAsync(code, GetCA1012BasicResultAt(2, 26, "C"));
}

[Fact, WorkItem(1432, "https://github.com/dotnet/roslyn-analyzers/issues/1432")]
public void TestCSInternalAbstractClass()
public async Task TestCSInternalAbstractClass()
{
var code = @"
abstract class C
Expand All @@ -57,23 +52,23 @@ public C()
}
}
";
VerifyCSharp(code);
await VerifyCS.VerifyAnalyzerAsync(code);
}

[Fact, WorkItem(1432, "https://github.com/dotnet/roslyn-analyzers/issues/1432")]
public void TestVBInternalAbstractClass()
public async Task TestVBInternalAbstractClass()
{
var code = @"
MustInherit Class C
Public Sub New()
End Sub
End Class
";
VerifyBasic(code);
await VerifyVB.VerifyAnalyzerAsync(code);
}

[Fact]
public void TestCSAbstractClassWithProtectedConstructor()
public async Task TestCSAbstractClassWithProtectedConstructor()
{
var code = @"
public abstract class C
Expand All @@ -83,23 +78,23 @@ protected C()
}
}
";
VerifyCSharp(code);
await VerifyCS.VerifyAnalyzerAsync(code);
}

[Fact]
public void TestVBAbstractClassWithProtectedConstructor()
public async Task TestVBAbstractClassWithProtectedConstructor()
{
var code = @"
Public MustInherit Class C
Protected Sub New()
End Sub
End Class
";
VerifyBasic(code);
await VerifyVB.VerifyAnalyzerAsync(code);
}

[Fact, WorkItem(1432, "https://github.com/dotnet/roslyn-analyzers/issues/1432")]
public void TestCSNestedAbstractClassWithPublicConstructor1()
public async Task TestCSNestedAbstractClassWithPublicConstructor1()
{
var code = @"
public struct C
Expand All @@ -110,11 +105,11 @@ public D() { }
}
}
";
VerifyCSharp(code);
await VerifyCS.VerifyAnalyzerAsync(code);
}

[Fact]
public void TestVBNestedAbstractClassWithPublicConstructor1()
public async Task TestVBNestedAbstractClassWithPublicConstructor1()
{
var code = @"
Public Structure C
Expand All @@ -124,11 +119,11 @@ End Sub
End Class
End Structure
";
VerifyBasic(code, GetCA1012BasicResultAt(3, 23, "D"));
await VerifyVB.VerifyAnalyzerAsync(code, GetCA1012BasicResultAt(3, 23, "D"));
}

[Fact]
public void TestNestedAbstractClassWithPublicConstructor2()
public async Task TestNestedAbstractClassWithPublicConstructor2()
{
var code = @"
public abstract class C
Expand All @@ -139,11 +134,11 @@ public D() { }
}
}
";
VerifyCSharp(code, GetCA1012CSharpResultAt(4, 27, "D"));
await VerifyCS.VerifyAnalyzerAsync(code, GetCA1012CSharpResultAt(4, 27, "D"));
}

[Fact]
public void TestVBNestedAbstractClassWithPublicConstructor2()
public async Task TestVBNestedAbstractClassWithPublicConstructor2()
{
var code = @"
Public MustInherit Class C
Expand All @@ -153,11 +148,11 @@ End Sub
End Class
End Class
";
VerifyBasic(code, GetCA1012BasicResultAt(3, 39, "D"));
await VerifyVB.VerifyAnalyzerAsync(code, GetCA1012BasicResultAt(3, 39, "D"));
}

[Fact, WorkItem(1432, "https://github.com/dotnet/roslyn-analyzers/issues/1432")]
public void TestNestedAbstractClassWithPublicConstructor3()
public async Task TestNestedAbstractClassWithPublicConstructor3()
{
var code = @"
internal abstract class C
Expand All @@ -168,11 +163,11 @@ public D() { }
}
}
";
VerifyCSharp(code);
await VerifyCS.VerifyAnalyzerAsync(code);
}

[Fact, WorkItem(1432, "https://github.com/dotnet/roslyn-analyzers/issues/1432")]
public void TestVBNestedAbstractClassWithPublicConstructor3()
public async Task TestVBNestedAbstractClassWithPublicConstructor3()
{
var code = @"
MustInherit Class C
Expand All @@ -182,19 +177,17 @@ End Sub
End Class
End Class
";
VerifyBasic(code);
await VerifyVB.VerifyAnalyzerAsync(code);
}

internal static readonly string CA1012Message = MicrosoftCodeQualityAnalyzersResources.AbstractTypesShouldNotHaveConstructorsMessage;

private static DiagnosticResult GetCA1012CSharpResultAt(int line, int column, string objectName)
{
return GetCSharpResultAt(line, column, AbstractTypesShouldNotHaveConstructorsAnalyzer.RuleId, string.Format(CultureInfo.CurrentCulture, CA1012Message, objectName));
}
=> new DiagnosticResult(AbstractTypesShouldNotHaveConstructorsAnalyzer.Rule)
.WithLocation(line, column)
.WithArguments(objectName);

private static DiagnosticResult GetCA1012BasicResultAt(int line, int column, string objectName)
{
return GetBasicResultAt(line, column, AbstractTypesShouldNotHaveConstructorsAnalyzer.RuleId, string.Format(CultureInfo.CurrentCulture, CA1012Message, objectName));
}
=> new DiagnosticResult(AbstractTypesShouldNotHaveConstructorsAnalyzer.Rule)
.WithLocation(line, column)
.WithArguments(objectName);
}
}
Loading