Update analyzer tests to use Microsoft.AspNetCore.Analyzer.Testing

This commit is contained in:
Pranav K 2018-05-04 08:45:48 -07:00
parent 9f0d3712eb
commit f52c9c0f97
23 changed files with 298 additions and 603 deletions

View File

@ -5,81 +5,82 @@
<PropertyGroup Label="Package Versions">
<AngleSharpPackageVersion>0.9.9</AngleSharpPackageVersion>
<BenchmarkDotNetPackageVersion>0.10.13</BenchmarkDotNetPackageVersion>
<InternalAspNetCoreSdkPackageVersion>2.2.0-preview1-17047</InternalAspNetCoreSdkPackageVersion>
<MicrosoftAspNetCoreAntiforgeryPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreAntiforgeryPackageVersion>
<MicrosoftAspNetCoreAuthenticationCookiesPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreAuthenticationCookiesPackageVersion>
<MicrosoftAspNetCoreAuthenticationCorePackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreAuthenticationCorePackageVersion>
<MicrosoftAspNetCoreAuthenticationPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreAuthenticationPackageVersion>
<MicrosoftAspNetCoreAuthorizationPolicyPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreAuthorizationPolicyPackageVersion>
<MicrosoftAspNetCoreBenchmarkRunnerSourcesPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreBenchmarkRunnerSourcesPackageVersion>
<MicrosoftAspNetCoreChunkingCookieManagerSourcesPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreChunkingCookieManagerSourcesPackageVersion>
<MicrosoftAspNetCoreCookiePolicyPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreCookiePolicyPackageVersion>
<MicrosoftAspNetCoreCorsPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreCorsPackageVersion>
<MicrosoftAspNetCoreDiagnosticsAbstractionsPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreDiagnosticsAbstractionsPackageVersion>
<MicrosoftAspNetCoreDiagnosticsPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreDiagnosticsPackageVersion>
<MicrosoftAspNetCoreHostingAbstractionsPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreHostingAbstractionsPackageVersion>
<MicrosoftAspNetCoreHostingPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreHostingPackageVersion>
<MicrosoftAspNetCoreHtmlAbstractionsPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreHtmlAbstractionsPackageVersion>
<MicrosoftAspNetCoreHttpExtensionsPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreHttpExtensionsPackageVersion>
<MicrosoftAspNetCoreHttpPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreHttpPackageVersion>
<MicrosoftAspNetCoreJsonPatchPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreJsonPatchPackageVersion>
<MicrosoftAspNetCoreLocalizationPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreLocalizationPackageVersion>
<MicrosoftAspNetCoreLocalizationRoutingPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreLocalizationRoutingPackageVersion>
<MicrosoftAspNetCoreMvcRazorExtensionsPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreMvcRazorExtensionsPackageVersion>
<MicrosoftAspNetCoreRangeHelperSourcesPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreRangeHelperSourcesPackageVersion>
<MicrosoftAspNetCoreRazorDesignPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreRazorDesignPackageVersion>
<MicrosoftAspNetCoreRazorLanguagePackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreRazorLanguagePackageVersion>
<MicrosoftAspNetCoreRazorRuntimePackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreRazorRuntimePackageVersion>
<MicrosoftAspNetCoreRazorTagHelpersTestingSourcesPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreRazorTagHelpersTestingSourcesPackageVersion>
<MicrosoftAspNetCoreResponseCachingAbstractionsPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreResponseCachingAbstractionsPackageVersion>
<MicrosoftAspNetCoreResponseCachingPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreResponseCachingPackageVersion>
<MicrosoftAspNetCoreRoutingAbstractionsPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreRoutingAbstractionsPackageVersion>
<MicrosoftAspNetCoreRoutingPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreRoutingPackageVersion>
<MicrosoftAspNetCoreServerIISIntegrationPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreServerIISIntegrationPackageVersion>
<MicrosoftAspNetCoreServerKestrelPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreServerKestrelPackageVersion>
<MicrosoftAspNetCoreSessionPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreSessionPackageVersion>
<MicrosoftAspNetCoreStaticFilesPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreStaticFilesPackageVersion>
<MicrosoftAspNetCoreTestHostPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreTestHostPackageVersion>
<MicrosoftAspNetCoreTestingPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreTestingPackageVersion>
<MicrosoftAspNetCoreWebUtilitiesPackageVersion>2.2.0-preview1-34135</MicrosoftAspNetCoreWebUtilitiesPackageVersion>
<InternalAspNetCoreSdkPackageVersion>2.2.0-preview1-17048</InternalAspNetCoreSdkPackageVersion>
<MicrosoftAspNetCoreAnalyzerTestingPackageVersion>2.2.0-a-preview1-a2-16496</MicrosoftAspNetCoreAnalyzerTestingPackageVersion>
<MicrosoftAspNetCoreAntiforgeryPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreAntiforgeryPackageVersion>
<MicrosoftAspNetCoreAuthenticationCookiesPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreAuthenticationCookiesPackageVersion>
<MicrosoftAspNetCoreAuthenticationCorePackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreAuthenticationCorePackageVersion>
<MicrosoftAspNetCoreAuthenticationPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreAuthenticationPackageVersion>
<MicrosoftAspNetCoreAuthorizationPolicyPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreAuthorizationPolicyPackageVersion>
<MicrosoftAspNetCoreBenchmarkRunnerSourcesPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreBenchmarkRunnerSourcesPackageVersion>
<MicrosoftAspNetCoreChunkingCookieManagerSourcesPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreChunkingCookieManagerSourcesPackageVersion>
<MicrosoftAspNetCoreCookiePolicyPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreCookiePolicyPackageVersion>
<MicrosoftAspNetCoreCorsPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreCorsPackageVersion>
<MicrosoftAspNetCoreDiagnosticsAbstractionsPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreDiagnosticsAbstractionsPackageVersion>
<MicrosoftAspNetCoreDiagnosticsPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreDiagnosticsPackageVersion>
<MicrosoftAspNetCoreHostingAbstractionsPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreHostingAbstractionsPackageVersion>
<MicrosoftAspNetCoreHostingPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreHostingPackageVersion>
<MicrosoftAspNetCoreHtmlAbstractionsPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreHtmlAbstractionsPackageVersion>
<MicrosoftAspNetCoreHttpExtensionsPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreHttpExtensionsPackageVersion>
<MicrosoftAspNetCoreHttpPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreHttpPackageVersion>
<MicrosoftAspNetCoreJsonPatchPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreJsonPatchPackageVersion>
<MicrosoftAspNetCoreLocalizationPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreLocalizationPackageVersion>
<MicrosoftAspNetCoreLocalizationRoutingPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreLocalizationRoutingPackageVersion>
<MicrosoftAspNetCoreMvcRazorExtensionsPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreMvcRazorExtensionsPackageVersion>
<MicrosoftAspNetCoreRangeHelperSourcesPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreRangeHelperSourcesPackageVersion>
<MicrosoftAspNetCoreRazorDesignPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreRazorDesignPackageVersion>
<MicrosoftAspNetCoreRazorLanguagePackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreRazorLanguagePackageVersion>
<MicrosoftAspNetCoreRazorRuntimePackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreRazorRuntimePackageVersion>
<MicrosoftAspNetCoreRazorTagHelpersTestingSourcesPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreRazorTagHelpersTestingSourcesPackageVersion>
<MicrosoftAspNetCoreResponseCachingAbstractionsPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreResponseCachingAbstractionsPackageVersion>
<MicrosoftAspNetCoreResponseCachingPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreResponseCachingPackageVersion>
<MicrosoftAspNetCoreRoutingAbstractionsPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreRoutingAbstractionsPackageVersion>
<MicrosoftAspNetCoreRoutingPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreRoutingPackageVersion>
<MicrosoftAspNetCoreServerIISIntegrationPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreServerIISIntegrationPackageVersion>
<MicrosoftAspNetCoreServerKestrelPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreServerKestrelPackageVersion>
<MicrosoftAspNetCoreSessionPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreSessionPackageVersion>
<MicrosoftAspNetCoreStaticFilesPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreStaticFilesPackageVersion>
<MicrosoftAspNetCoreTestHostPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreTestHostPackageVersion>
<MicrosoftAspNetCoreTestingPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreTestingPackageVersion>
<MicrosoftAspNetCoreWebUtilitiesPackageVersion>2.2.0-preview1-34136</MicrosoftAspNetCoreWebUtilitiesPackageVersion>
<MicrosoftAspNetWebApiClientPackageVersion>5.2.4</MicrosoftAspNetWebApiClientPackageVersion>
<MicrosoftCodeAnalysisCSharpPackageVersion>2.8.0</MicrosoftCodeAnalysisCSharpPackageVersion>
<MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion>2.8.0</MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion>
<MicrosoftCodeAnalysisRazorPackageVersion>2.2.0-preview1-34135</MicrosoftCodeAnalysisRazorPackageVersion>
<MicrosoftCodeAnalysisCSharpPackageVersion>2.8.0-beta3</MicrosoftCodeAnalysisCSharpPackageVersion>
<MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion>2.8.0-beta3</MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion>
<MicrosoftCodeAnalysisRazorPackageVersion>2.2.0-preview1-34136</MicrosoftCodeAnalysisRazorPackageVersion>
<MicrosoftDiaSymReaderNativePackageVersion>1.7.0</MicrosoftDiaSymReaderNativePackageVersion>
<MicrosoftExtensionsCachingMemoryPackageVersion>2.2.0-preview1-34135</MicrosoftExtensionsCachingMemoryPackageVersion>
<MicrosoftExtensionsClosedGenericMatcherSourcesPackageVersion>2.2.0-preview1-34135</MicrosoftExtensionsClosedGenericMatcherSourcesPackageVersion>
<MicrosoftExtensionsConfigurationJsonPackageVersion>2.2.0-preview1-34135</MicrosoftExtensionsConfigurationJsonPackageVersion>
<MicrosoftExtensionsConfigurationPackageVersion>2.2.0-preview1-34135</MicrosoftExtensionsConfigurationPackageVersion>
<MicrosoftExtensionsCopyOnWriteDictionarySourcesPackageVersion>2.2.0-preview1-34135</MicrosoftExtensionsCopyOnWriteDictionarySourcesPackageVersion>
<MicrosoftExtensionsDependencyInjectionPackageVersion>2.2.0-preview1-34135</MicrosoftExtensionsDependencyInjectionPackageVersion>
<MicrosoftExtensionsCachingMemoryPackageVersion>2.2.0-preview1-34136</MicrosoftExtensionsCachingMemoryPackageVersion>
<MicrosoftExtensionsClosedGenericMatcherSourcesPackageVersion>2.2.0-preview1-34136</MicrosoftExtensionsClosedGenericMatcherSourcesPackageVersion>
<MicrosoftExtensionsConfigurationJsonPackageVersion>2.2.0-preview1-34136</MicrosoftExtensionsConfigurationJsonPackageVersion>
<MicrosoftExtensionsConfigurationPackageVersion>2.2.0-preview1-34136</MicrosoftExtensionsConfigurationPackageVersion>
<MicrosoftExtensionsCopyOnWriteDictionarySourcesPackageVersion>2.2.0-preview1-34136</MicrosoftExtensionsCopyOnWriteDictionarySourcesPackageVersion>
<MicrosoftExtensionsDependencyInjectionPackageVersion>2.2.0-preview1-34136</MicrosoftExtensionsDependencyInjectionPackageVersion>
<MicrosoftExtensionsDependencyModelPackageVersion>2.2.0-preview1-26424-04</MicrosoftExtensionsDependencyModelPackageVersion>
<MicrosoftExtensionsDiagnosticAdapterPackageVersion>2.2.0-preview1-34135</MicrosoftExtensionsDiagnosticAdapterPackageVersion>
<MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>2.2.0-preview1-34135</MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>
<MicrosoftExtensionsFileProvidersCompositePackageVersion>2.2.0-preview1-34135</MicrosoftExtensionsFileProvidersCompositePackageVersion>
<MicrosoftExtensionsFileProvidersEmbeddedPackageVersion>2.2.0-preview1-34135</MicrosoftExtensionsFileProvidersEmbeddedPackageVersion>
<MicrosoftExtensionsFileSystemGlobbingPackageVersion>2.2.0-preview1-34135</MicrosoftExtensionsFileSystemGlobbingPackageVersion>
<MicrosoftExtensionsHashCodeCombinerSourcesPackageVersion>2.2.0-preview1-34135</MicrosoftExtensionsHashCodeCombinerSourcesPackageVersion>
<MicrosoftExtensionsLocalizationPackageVersion>2.2.0-preview1-34135</MicrosoftExtensionsLocalizationPackageVersion>
<MicrosoftExtensionsLoggingAbstractionsPackageVersion>2.2.0-preview1-34135</MicrosoftExtensionsLoggingAbstractionsPackageVersion>
<MicrosoftExtensionsLoggingConsolePackageVersion>2.2.0-preview1-34135</MicrosoftExtensionsLoggingConsolePackageVersion>
<MicrosoftExtensionsLoggingDebugPackageVersion>2.2.0-preview1-34135</MicrosoftExtensionsLoggingDebugPackageVersion>
<MicrosoftExtensionsLoggingPackageVersion>2.2.0-preview1-34135</MicrosoftExtensionsLoggingPackageVersion>
<MicrosoftExtensionsLoggingTestingPackageVersion>2.2.0-preview1-34135</MicrosoftExtensionsLoggingTestingPackageVersion>
<MicrosoftExtensionsObjectMethodExecutorSourcesPackageVersion>2.2.0-preview1-34135</MicrosoftExtensionsObjectMethodExecutorSourcesPackageVersion>
<MicrosoftExtensionsOptionsPackageVersion>2.2.0-preview1-34135</MicrosoftExtensionsOptionsPackageVersion>
<MicrosoftExtensionsParameterDefaultValueSourcesPackageVersion>2.2.0-preview1-34135</MicrosoftExtensionsParameterDefaultValueSourcesPackageVersion>
<MicrosoftExtensionsPrimitivesPackageVersion>2.2.0-preview1-34135</MicrosoftExtensionsPrimitivesPackageVersion>
<MicrosoftExtensionsPropertyActivatorSourcesPackageVersion>2.2.0-preview1-34135</MicrosoftExtensionsPropertyActivatorSourcesPackageVersion>
<MicrosoftExtensionsPropertyHelperSourcesPackageVersion>2.2.0-preview1-34135</MicrosoftExtensionsPropertyHelperSourcesPackageVersion>
<MicrosoftExtensionsSecurityHelperSourcesPackageVersion>2.2.0-preview1-34135</MicrosoftExtensionsSecurityHelperSourcesPackageVersion>
<MicrosoftExtensionsTypeNameHelperSourcesPackageVersion>2.2.0-preview1-34135</MicrosoftExtensionsTypeNameHelperSourcesPackageVersion>
<MicrosoftExtensionsValueStopwatchSourcesPackageVersion>2.2.0-preview1-34135</MicrosoftExtensionsValueStopwatchSourcesPackageVersion>
<MicrosoftExtensionsWebEncodersPackageVersion>2.2.0-preview1-34135</MicrosoftExtensionsWebEncodersPackageVersion>
<MicrosoftExtensionsDiagnosticAdapterPackageVersion>2.2.0-preview1-34136</MicrosoftExtensionsDiagnosticAdapterPackageVersion>
<MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>2.2.0-preview1-34136</MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>
<MicrosoftExtensionsFileProvidersCompositePackageVersion>2.2.0-preview1-34136</MicrosoftExtensionsFileProvidersCompositePackageVersion>
<MicrosoftExtensionsFileProvidersEmbeddedPackageVersion>2.2.0-preview1-34136</MicrosoftExtensionsFileProvidersEmbeddedPackageVersion>
<MicrosoftExtensionsFileSystemGlobbingPackageVersion>2.2.0-preview1-34136</MicrosoftExtensionsFileSystemGlobbingPackageVersion>
<MicrosoftExtensionsHashCodeCombinerSourcesPackageVersion>2.2.0-preview1-34136</MicrosoftExtensionsHashCodeCombinerSourcesPackageVersion>
<MicrosoftExtensionsLocalizationPackageVersion>2.2.0-preview1-34136</MicrosoftExtensionsLocalizationPackageVersion>
<MicrosoftExtensionsLoggingAbstractionsPackageVersion>2.2.0-preview1-34136</MicrosoftExtensionsLoggingAbstractionsPackageVersion>
<MicrosoftExtensionsLoggingConsolePackageVersion>2.2.0-preview1-34136</MicrosoftExtensionsLoggingConsolePackageVersion>
<MicrosoftExtensionsLoggingDebugPackageVersion>2.2.0-preview1-34136</MicrosoftExtensionsLoggingDebugPackageVersion>
<MicrosoftExtensionsLoggingPackageVersion>2.2.0-preview1-34136</MicrosoftExtensionsLoggingPackageVersion>
<MicrosoftExtensionsLoggingTestingPackageVersion>2.2.0-preview1-34136</MicrosoftExtensionsLoggingTestingPackageVersion>
<MicrosoftExtensionsObjectMethodExecutorSourcesPackageVersion>2.2.0-preview1-34136</MicrosoftExtensionsObjectMethodExecutorSourcesPackageVersion>
<MicrosoftExtensionsOptionsPackageVersion>2.2.0-preview1-34136</MicrosoftExtensionsOptionsPackageVersion>
<MicrosoftExtensionsParameterDefaultValueSourcesPackageVersion>2.2.0-preview1-34136</MicrosoftExtensionsParameterDefaultValueSourcesPackageVersion>
<MicrosoftExtensionsPrimitivesPackageVersion>2.2.0-preview1-34136</MicrosoftExtensionsPrimitivesPackageVersion>
<MicrosoftExtensionsPropertyActivatorSourcesPackageVersion>2.2.0-preview1-34136</MicrosoftExtensionsPropertyActivatorSourcesPackageVersion>
<MicrosoftExtensionsPropertyHelperSourcesPackageVersion>2.2.0-preview1-34136</MicrosoftExtensionsPropertyHelperSourcesPackageVersion>
<MicrosoftExtensionsSecurityHelperSourcesPackageVersion>2.2.0-preview1-34136</MicrosoftExtensionsSecurityHelperSourcesPackageVersion>
<MicrosoftExtensionsTypeNameHelperSourcesPackageVersion>2.2.0-preview1-34136</MicrosoftExtensionsTypeNameHelperSourcesPackageVersion>
<MicrosoftExtensionsValueStopwatchSourcesPackageVersion>2.2.0-preview1-34136</MicrosoftExtensionsValueStopwatchSourcesPackageVersion>
<MicrosoftExtensionsWebEncodersPackageVersion>2.2.0-preview1-34136</MicrosoftExtensionsWebEncodersPackageVersion>
<MicrosoftNETCoreApp20PackageVersion>2.0.0</MicrosoftNETCoreApp20PackageVersion>
<MicrosoftNETCoreApp21PackageVersion>2.2.0-preview1-26424-04</MicrosoftNETCoreApp21PackageVersion>
<MicrosoftNetHttpHeadersPackageVersion>2.2.0-preview1-34135</MicrosoftNetHttpHeadersPackageVersion>
<MicrosoftNETSdkRazorPackageVersion>2.2.0-preview1-34135</MicrosoftNETSdkRazorPackageVersion>
<MicrosoftNetHttpHeadersPackageVersion>2.2.0-preview1-34136</MicrosoftNetHttpHeadersPackageVersion>
<MicrosoftNETSdkRazorPackageVersion>2.2.0-preview1-34136</MicrosoftNETSdkRazorPackageVersion>
<MicrosoftNETTestSdkPackageVersion>15.6.1</MicrosoftNETTestSdkPackageVersion>
<MoqPackageVersion>4.7.49</MoqPackageVersion>
<NETStandardLibrary20PackageVersion>2.0.3</NETStandardLibrary20PackageVersion>

View File

@ -1,2 +1,2 @@
version:2.2.0-preview1-17047
commithash:e1957b52ddc8b62bd39c5c400322fccb5364624c
version:2.2.0-preview1-17048
commithash:de14a0ee5fb48508ee8a29c14280a2928f8dabf8

View File

@ -1,7 +1,9 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Analyzer.Testing;
using Microsoft.AspNetCore.Mvc.Analyzers.Infrastructure;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CodeFixes;
@ -12,6 +14,8 @@ namespace Microsoft.AspNetCore.Mvc.Analyzers
{
public class ActionsMustNotBeAsyncVoidFacts : AnalyzerTestBase
{
private static DiagnosticDescriptor DiagnosticDescriptor = DiagnosticDescriptors.MVC7003_ActionsMustNotBeAsyncVoid;
protected override DiagnosticAnalyzer DiagnosticAnalyzer { get; }
= new ActionsMustNotBeAsyncVoidAnalyzer();
@ -57,13 +61,7 @@ public class UserViewModel
public async Task DiagnosticsAreReturned_WhenMethodIsAControllerAction()
{
// Arrange
var expectedDiagnostic = new DiagnosticResult
{
Id = "MVC7003",
Message = "Controller actions must not have async void signature.",
Severity = DiagnosticSeverity.Warning,
Locations = new[] { new DiagnosticResultLocation("Test.cs", 7, 18) }
};
var location = new DiagnosticLocation("Test.cs", 7, 18);
var test =
@"
using Microsoft.AspNetCore.Mvc;
@ -92,7 +90,7 @@ public class HomeController : Controller
// Act & Assert
var actualDiagnostics = await GetDiagnosticAsync(project);
Assert.DiagnosticsEqual(new[] { expectedDiagnostic }, actualDiagnostics);
AssertDiagnostic(location, actualDiagnostics);
var actualFix = await ApplyCodeFixAsync(project, actualDiagnostics);
Assert.Equal(expectedFix, actualFix, ignoreLineEndingDifferences: true);
}
@ -101,13 +99,7 @@ public class HomeController : Controller
public async Task DiagnosticsAreReturned_WhenActionMethodIsExpressionBodied()
{
// Arrange
var expectedDiagnostic = new DiagnosticResult
{
Id = "MVC7003",
Message = "Controller actions must not have async void signature.",
Severity = DiagnosticSeverity.Warning,
Locations = new[] { new DiagnosticResultLocation("Test.cs", 7, 18) }
};
var location = new DiagnosticLocation("Test.cs", 7, 18);
var test =
@"
using Microsoft.AspNetCore.Mvc;
@ -130,7 +122,7 @@ public class HomeController : Controller
// Act & Assert
var actualDiagnostics = await GetDiagnosticAsync(project);
Assert.DiagnosticsEqual(new[] { expectedDiagnostic }, actualDiagnostics);
AssertDiagnostic(location, actualDiagnostics);
var actualFix = await ApplyCodeFixAsync(project, actualDiagnostics);
Assert.Equal(expectedFix, actualFix, ignoreLineEndingDifferences: true);
}
@ -139,13 +131,7 @@ public class HomeController : Controller
public async Task CodeFix_ProducesFullyQualifiedNamespaces()
{
// Arrange
var expectedDiagnostic = new DiagnosticResult
{
Id = "MVC7003",
Message = "Controller actions must not have async void signature.",
Severity = DiagnosticSeverity.Warning,
Locations = new[] { new DiagnosticResultLocation("Test.cs", 6, 18) }
};
var location = new DiagnosticLocation("Test.cs", 6, 18);
var test =
@"
using Microsoft.AspNetCore.Mvc;
@ -166,9 +152,22 @@ public class HomeController : Controller
// Act & Assert
var actualDiagnostics = await GetDiagnosticAsync(project);
Assert.DiagnosticsEqual(new[] { expectedDiagnostic }, actualDiagnostics);
AssertDiagnostic(location, actualDiagnostics);
var actualFix = await ApplyCodeFixAsync(project, actualDiagnostics);
Assert.Equal(expectedFix, actualFix, ignoreLineEndingDifferences: true);
}
private void AssertDiagnostic(DiagnosticLocation expectedLocation, Diagnostic[] actualDiagnostics)
{
// Assert
Assert.Collection(
actualDiagnostics,
diagnostic =>
{
Assert.Equal(DiagnosticDescriptor.Id, diagnostic.Id);
Assert.Same(DiagnosticDescriptor, diagnostic.Descriptor);
AnalyzerAssert.DiagnosticLocation(expectedLocation, diagnostic.Location);
});
}
}
}

View File

@ -2,6 +2,7 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.AspNetCore.Analyzer.Testing;
using Microsoft.AspNetCore.Mvc.Analyzers.Infrastructure;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CodeFixes;
@ -12,6 +13,8 @@ namespace Microsoft.AspNetCore.Mvc.Analyzers
{
public class ApiActionsDoNotRequireExplicitModelValidationCheckFacts : AnalyzerTestBase
{
private static DiagnosticDescriptor DiagnosticDescriptor = DiagnosticDescriptors.MVC7001_ApiActionsHaveBadModelStateFilter;
protected override DiagnosticAnalyzer DiagnosticAnalyzer { get; }
= new ApiActionsDoNotRequireExplicitModelValidationCheckAnalyzer();
@ -199,48 +202,11 @@ public class PetController : ControllerBase
return VerifyAsync(test);
}
private async Task VerifyAsync(string test)
{
// Arrange
var expectedDiagnostic = new DiagnosticResult
{
Id = "MVC7001",
Message = "Actions on types annotated with ApiControllerAttribute do not require explicit ModelState validity check.",
Severity = DiagnosticSeverity.Warning,
Locations = new[] { new DiagnosticResultLocation("Test.cs", 9, 9) }
};
var expectedFix =
@"
using Microsoft.AspNetCore.Mvc;
[ApiController]
public class PetController : ControllerBase
{
public IActionResult GetPetId()
{
return Ok();
}
}";
var project = CreateProject(test);
// Act & Assert
var actualDiagnostics = await GetDiagnosticAsync(project);
Assert.DiagnosticsEqual(new[] { expectedDiagnostic }, actualDiagnostics);
var actualFix = await ApplyCodeFixAsync(project, actualDiagnostics);
Assert.Equal(expectedFix, actualFix, ignoreLineEndingDifferences: true);
}
[Fact]
public async Task DiagnosticsAndCodeFixes_WhenModelStateIsInElseIf()
{
// Arrange
var expectedDiagnostic = new DiagnosticResult
{
Id = "MVC7001",
Message = "Actions on types annotated with ApiControllerAttribute do not require explicit ModelState validity check.",
Severity = DiagnosticSeverity.Warning,
Locations = new[] { new DiagnosticResultLocation("Test.cs", 13, 9) }
};
var expectedLocation = new DiagnosticLocation("Test.cs", 13, 9);
var test =
@"
@ -284,7 +250,7 @@ public class PetController : ControllerBase
// Act & Assert
var actualDiagnostics = await GetDiagnosticAsync(project);
Assert.DiagnosticsEqual(new[] { expectedDiagnostic }, actualDiagnostics);
AssertDiagnostic(expectedLocation, actualDiagnostics);
var actualFix = await ApplyCodeFixAsync(project, actualDiagnostics);
Assert.Equal(expectedFix, actualFix, ignoreLineEndingDifferences: true);
}
@ -293,13 +259,7 @@ public class PetController : ControllerBase
public async Task DiagnosticsAndCodeFixes_WhenModelStateIsInNestedBlock()
{
// Arrange
var expectedDiagnostic = new DiagnosticResult
{
Id = "MVC7001",
Message = "Actions on types annotated with ApiControllerAttribute do not require explicit ModelState validity check.",
Severity = DiagnosticSeverity.Warning,
Locations = new[] { new DiagnosticResultLocation("Test.cs", 15, 13) }
};
var expectedLocation = new DiagnosticLocation("Test.cs", 15, 13);
var test =
@"
@ -353,9 +313,47 @@ public class PetController : ControllerBase
// Act & Assert
var actualDiagnostics = await GetDiagnosticAsync(project);
Assert.DiagnosticsEqual(new[] { expectedDiagnostic }, actualDiagnostics);
AssertDiagnostic(expectedLocation, actualDiagnostics);
var actualFix = await ApplyCodeFixAsync(project, actualDiagnostics);
Assert.Equal(expectedFix, actualFix, ignoreLineEndingDifferences: true);
}
private async Task VerifyAsync(string test)
{
// Arrange
var expectedLocation = new DiagnosticLocation("Test.cs", 9, 9);
var expectedFix =
@"
using Microsoft.AspNetCore.Mvc;
[ApiController]
public class PetController : ControllerBase
{
public IActionResult GetPetId()
{
return Ok();
}
}";
var project = CreateProject(test);
// Act & Assert
var actualDiagnostics = await GetDiagnosticAsync(project);
AssertDiagnostic(expectedLocation, actualDiagnostics);
var actualFix = await ApplyCodeFixAsync(project, actualDiagnostics);
Assert.Equal(expectedFix, actualFix, ignoreLineEndingDifferences: true);
}
private void AssertDiagnostic(DiagnosticLocation expectedLocation, Diagnostic[] actualDiagnostics)
{
// Assert
Assert.Collection(
actualDiagnostics,
diagnostic =>
{
Assert.Equal(DiagnosticDescriptor.Id, diagnostic.Id);
Assert.Same(DiagnosticDescriptor, diagnostic.Descriptor);
AnalyzerAssert.DiagnosticLocation(expectedLocation, diagnostic.Location);
});
}
}
}

View File

@ -2,6 +2,7 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.AspNetCore.Analyzer.Testing;
using Microsoft.AspNetCore.Mvc.Analyzers.Infrastructure;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CodeFixes;
@ -12,6 +13,8 @@ namespace Microsoft.AspNetCore.Mvc.Analyzers
{
public class ApiActionsAreAttributeRoutedFacts : AnalyzerTestBase
{
private static DiagnosticDescriptor DiagnosticDescriptor = DiagnosticDescriptors.MVC7000_ApiActionsMustBeAttributeRouted;
protected override DiagnosticAnalyzer DiagnosticAnalyzer { get; }
= new ApiActionsAreAttributeRoutedAnalyzer();
@ -128,13 +131,7 @@ public class PetController : Controller
public async Task DiagnosticsAndCodeFixes_WhenApiControllerActionDoesNotHaveAttribute()
{
// Arrange
var expectedDiagnostic = new DiagnosticResult
{
Id = "MVC7000",
Message = "Actions on types annotated with ApiControllerAttribute must be attribute routed.",
Severity = DiagnosticSeverity.Warning,
Locations = new[] { new DiagnosticResultLocation("Test.cs", 8, 16) }
};
var expectedLocation = new DiagnosticLocation("Test.cs", 8, 16);
var test =
@"
using Microsoft.AspNetCore.Mvc;
@ -160,7 +157,7 @@ public class PetController : Controller
// Act & Assert
var actualDiagnostics = await GetDiagnosticAsync(project);
Assert.DiagnosticsEqual(new[] { expectedDiagnostic }, actualDiagnostics);
AssertDiagnostic(expectedLocation, actualDiagnostics);
var actualFix = await ApplyCodeFixAsync(project, actualDiagnostics);
Assert.Equal(expectedFix, actualFix, ignoreLineEndingDifferences: true);
}
@ -290,5 +287,18 @@ public class PetController
var actualFix = await ApplyCodeFixAsync(project, actualDiagnostics, codeFixIndex: 3);
Assert.Equal(expectedFix, actualFix, ignoreLineEndingDifferences: true);
}
private void AssertDiagnostic(DiagnosticLocation expectedLocation, Diagnostic[] actualDiagnostics)
{
// Assert
Assert.Collection(
actualDiagnostics,
diagnostic =>
{
Assert.Equal(DiagnosticDescriptor.Id, diagnostic.Id);
Assert.Same(DiagnosticDescriptor, diagnostic.Descriptor);
AnalyzerAssert.DiagnosticLocation(expectedLocation, diagnostic.Location);
});
}
}
}

View File

@ -2,6 +2,7 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.AspNetCore.Analyzer.Testing;
using Microsoft.AspNetCore.Mvc.Analyzers.Infrastructure;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CodeFixes;
@ -12,6 +13,8 @@ namespace Microsoft.AspNetCore.Mvc.Analyzers
{
public class ApiActionsShouldUseActionResultOfTFacts : AnalyzerTestBase
{
private static DiagnosticDescriptor DiagnosticDescriptor = DiagnosticDescriptors.MVC7002_ApiActionsShouldReturnActionResultOf;
protected override DiagnosticAnalyzer DiagnosticAnalyzer { get; }
= new ApiActionsShouldUseActionResultOfTAnalyzer();
@ -156,13 +159,7 @@ public class PetController: ControllerBase
public async Task DiagnosticsAreReturned_WhenActionsReturnIActionResult()
{
// Arrange
var expectedDiagnostic = new DiagnosticResult
{
Id = "MVC7002",
Message = "Actions on types annotated with ApiControllerAttribute should return ActionResult<T>.",
Severity = DiagnosticSeverity.Warning,
Locations = new[] { new DiagnosticResultLocation("Test.cs", 9, 12) }
};
var expectedLocation = new DiagnosticLocation("Test.cs", 9, 12);
var test =
@"
using Microsoft.AspNetCore.Mvc;
@ -195,7 +192,7 @@ public class PetController: ControllerBase
// Act
var actualDiagnostics = await GetDiagnosticAsync(project);
Assert.DiagnosticsEqual(new[] { expectedDiagnostic }, actualDiagnostics);
AssertDiagnostic(expectedLocation, actualDiagnostics);
var actualFix = await ApplyCodeFixAsync(project, actualDiagnostics);
Assert.Equal(expectedFix, actualFix, ignoreLineEndingDifferences: true);
@ -205,13 +202,7 @@ public class PetController: ControllerBase
public async Task DiagnosticsAreReturned_WhenActionReturnsAsyncIActionResult()
{
// Arrange
var expectedDiagnostic = new DiagnosticResult
{
Id = "MVC7002",
Message = "Actions on types annotated with ApiControllerAttribute should return ActionResult<T>.",
Severity = DiagnosticSeverity.Warning,
Locations = new[] { new DiagnosticResultLocation("Test.cs", 8, 18) }
};
var expectedLocation = new DiagnosticLocation("Test.cs", 8, 18);
var test =
@"
@ -248,10 +239,23 @@ public class Pet {}";
// Act & Assert
var actualDiagnostics = await GetDiagnosticAsync(project);
Assert.DiagnosticsEqual(new[] { expectedDiagnostic }, actualDiagnostics);
AssertDiagnostic(expectedLocation, actualDiagnostics);
var actualFix = await ApplyCodeFixAsync(project, actualDiagnostics);
Assert.Equal(expectedFix, actualFix, ignoreLineEndingDifferences: true);
}
private void AssertDiagnostic(DiagnosticLocation expectedLocation, Diagnostic[] actualDiagnostics)
{
// Assert
Assert.Collection(
actualDiagnostics,
diagnostic =>
{
Assert.Equal(DiagnosticDescriptor.Id, diagnostic.Id);
Assert.Same(DiagnosticDescriptor, diagnostic.Descriptor);
AnalyzerAssert.DiagnosticLocation(expectedLocation, diagnostic.Location);
});
}
}
}

View File

@ -9,6 +9,7 @@ using System.Linq;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Analyzer.Testing;
using Microsoft.AspNetCore.Testing;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CodeActions;
@ -17,6 +18,7 @@ using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.Diagnostics;
using Microsoft.CodeAnalysis.Text;
using Microsoft.Extensions.DependencyModel;
using Xunit;
namespace Microsoft.AspNetCore.Mvc.Analyzers.Infrastructure
{
@ -30,9 +32,9 @@ namespace Microsoft.AspNetCore.Mvc.Analyzers.Infrastructure
protected virtual CodeFixProvider CodeFixProvider { get; }
public IDictionary<string, DiagnosticResultLocation> MarkerLocations { get; } = new Dictionary<string, DiagnosticResultLocation>();
public IDictionary<string, DiagnosticLocation> MarkerLocations { get; } = new Dictionary<string, DiagnosticLocation>();
public DiagnosticResultLocation? DefaultMarkerLocation { get; private set; }
public DiagnosticLocation DefaultMarkerLocation { get; private set; }
protected Project CreateProjectFromFile([CallerMemberName] string fileName = "")
{
@ -57,7 +59,7 @@ namespace Microsoft.AspNetCore.Mvc.Analyzers.Infrastructure
{
var markerEndIndex = line.IndexOf(MarkerEnd, markerStartIndex, StringComparison.Ordinal);
var markerName = line.Substring(markerStartIndex + 2, markerEndIndex - markerStartIndex - 2);
var resultLocation = new DiagnosticResultLocation(i + 1, markerStartIndex + 1); ;
var resultLocation = new DiagnosticLocation(i + 1, markerStartIndex + 1); ;
if (DefaultMarkerLocation == null)
{

View File

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>$(StandardTestTfms)</TargetFrameworks>
@ -7,13 +7,13 @@
<ItemGroup>
<None Include="xunit.runner.json" CopyToOutputDirectory="PreserveNewest" />
<Compile Include="..\Microsoft.AspNetCore.Mvc.Analyzers.Test\Infrastructure\*.cs" Link="Infrastructure\%(FileName)%(Extension)" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\Microsoft.AspNetCore.Mvc\Microsoft.AspNetCore.Mvc.csproj" />
<ProjectReference Include="..\..\src\Microsoft.AspNetCore.Mvc.Analyzers.Experimental\Microsoft.AspNetCore.Mvc.Analyzers.Experimental.csproj" />
<PackageReference Include="Microsoft.AspNetCore.Analyzer.Testing" Version="$(MicrosoftAspNetCoreAnalyzerTestingPackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.Testing" Version="$(MicrosoftAspNetCoreTestingPackageVersion)" />
</ItemGroup>

View File

@ -1,68 +1,77 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Analyzer.Testing;
using Microsoft.AspNetCore.Mvc.Analyzers.Infrastructure;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Diagnostics;
using Xunit;
namespace Microsoft.AspNetCore.Mvc.Analyzers
{
public class AvoidHtmlPartialAnalyzerTest : AnalyzerTestBase
public class AvoidHtmlPartialAnalyzerTest
{
private static DiagnosticDescriptor DiagnosticDescriptor = DiagnosticDescriptors.MVC1000_HtmlHelperPartialShouldBeAvoided;
protected override DiagnosticAnalyzer DiagnosticAnalyzer { get; } = new AvoidHtmlPartialAnalyzer();
private MvcDiagnosticAnalyzerRunner Executor { get; } = new MvcDiagnosticAnalyzerRunner(new AvoidHtmlPartialAnalyzer());
[Fact]
public async Task NoDiagnosticsAreReturned_FoEmptyScenarios()
{
// Arrange
var project = CreateProject(source: string.Empty);
public Task NoDiagnosticsAreReturned_FoEmptyScenarios()
=> VerifyNoDiagnosticsAreReturned(source: string.Empty);
[Fact]
public Task NoDiagnosticsAreReturned_ForNonUseOfHtmlPartial()
=> VerifyNoDiagnosticsAreReturned(ReadTestSource().Source);
[Fact]
public Task NoDiagnosticsAreReturned_ForUseOfHtmlPartialAsync()
=> VerifyNoDiagnosticsAreReturned(ReadTestSource().Source);
[Fact]
public Task DiagnosticsAreReturned_ForUseOfHtmlPartial()
=> VerifyDefault(ReadTestSource());
[Fact]
public Task DiagnosticsAreReturned_ForUseOfHtmlPartial_WithAdditionalParameters()
=> VerifyDefault(ReadTestSource());
[Fact]
public Task DiagnosticsAreReturned_ForUseOfHtmlPartial_InSections()
=> VerifyDefault(ReadTestSource());
[Fact]
public Task NoDiagnosticsAreReturned_ForUseOfRenderPartialAsync()
=> VerifyNoDiagnosticsAreReturned(ReadTestSource().Source);
[Fact]
public Task DiagnosticsAreReturned_ForUseOfRenderPartial()
=> VerifyDefault(ReadTestSource());
[Fact]
public Task DiagnosticsAreReturned_ForUseOfRenderPartial_WithAdditionalParameters()
=> VerifyDefault(ReadTestSource());
[Fact]
public Task DiagnosticsAreReturned_ForUseOfRenderPartial_InSections()
=> VerifyDefault(ReadTestSource());
private async Task VerifyNoDiagnosticsAreReturned(string source)
{
// Act
var result = await GetDiagnosticAsync(project);
var result = await Executor.GetDiagnosticsAsync(source);
// Assert
Assert.Empty(result);
}
[Fact]
public async Task NoDiagnosticsAreReturned_ForNonUseOfHtmlPartial()
private async Task VerifyDefault(TestSource testSource)
{
// Arrange
var project = CreateProjectFromFile();
var expectedLocation = testSource.DefaultMarkerLocation;
// Act
var result = await GetDiagnosticAsync(project);
// Assert
Assert.Empty(result);
}
[Fact]
public async Task NoDiagnosticsAreReturned_ForUseOfHtmlPartialAsync()
{
// Arrange
var project = CreateProjectFromFile();
// Act
var result = await GetDiagnosticAsync(project);
// Assert
Assert.Empty(result);
}
[Fact]
public async Task DiagnosticsAreReturned_ForUseOfHtmlPartial()
{
// Arrange
var project = CreateProjectFromFile();
var expectedLocation = DefaultMarkerLocation.Value;
// Act
var result = await GetDiagnosticAsync(project);
var result = await Executor.GetDiagnosticsAsync(testSource.Source);
// Assert
Assert.Collection(
@ -72,131 +81,11 @@ namespace Microsoft.AspNetCore.Mvc.Analyzers
Assert.Equal(DiagnosticDescriptor.Id, diagnostic.Id);
Assert.Same(DiagnosticDescriptor, diagnostic.Descriptor);
Assert.DiagnosticLocation(expectedLocation, diagnostic.Location);
AnalyzerAssert.DiagnosticLocation(expectedLocation, diagnostic.Location);
});
}
[Fact]
public async Task DiagnosticsAreReturned_ForUseOfHtmlPartial_WithAdditionalParameters()
{
// Arrange
var project = CreateProjectFromFile();
var expectedLocation = DefaultMarkerLocation.Value;
// Act
var result = await GetDiagnosticAsync(project);
// Assert
Assert.Collection(
result,
diagnostic =>
{
Assert.Equal(DiagnosticDescriptor.Id, diagnostic.Id);
Assert.Same(DiagnosticDescriptor, diagnostic.Descriptor);
Assert.DiagnosticLocation(expectedLocation, diagnostic.Location);
});
}
[Fact]
public async Task DiagnosticsAreReturned_ForUseOfHtmlPartial_InSections()
{
// Arrange
var project = CreateProjectFromFile();
var expectedLocation = DefaultMarkerLocation.Value;
// Act
var result = await GetDiagnosticAsync(project);
// Assert
Assert.Collection(
result,
diagnostic =>
{
Assert.Equal(DiagnosticDescriptor.Id, diagnostic.Id);
Assert.Same(DiagnosticDescriptor, diagnostic.Descriptor);
Assert.DiagnosticLocation(expectedLocation, diagnostic.Location);
});
}
[Fact]
public async Task NoDiagnosticsAreReturned_ForUseOfRenderPartialAsync()
{
// Arrange
var project = CreateProjectFromFile();
// Act
var result = await GetDiagnosticAsync(project);
// Assert
Assert.Empty(result);
}
[Fact]
public async Task DiagnosticsAreReturned_ForUseOfRenderPartial()
{
// Arrange
var project = CreateProjectFromFile();
var expectedLocation = DefaultMarkerLocation.Value;
// Act
var result = await GetDiagnosticAsync(project);
// Assert
Assert.Collection(
result,
diagnostic =>
{
Assert.Equal(DiagnosticDescriptor.Id, diagnostic.Id);
Assert.Same(DiagnosticDescriptor, diagnostic.Descriptor);
Assert.DiagnosticLocation(expectedLocation, diagnostic.Location);
});
}
[Fact]
public async Task DiagnosticsAreReturned_ForUseOfRenderPartial_WithAdditionalParameters()
{
// Arrange
var project = CreateProjectFromFile();
var expectedLocation = DefaultMarkerLocation.Value;
// Act
var result = await GetDiagnosticAsync(project);
// Assert
Assert.Collection(
result,
diagnostic =>
{
Assert.Equal(DiagnosticDescriptor.Id, diagnostic.Id);
Assert.Same(DiagnosticDescriptor, diagnostic.Descriptor);
Assert.DiagnosticLocation(expectedLocation, diagnostic.Location);
});
}
[Fact]
public async Task DiagnosticsAreReturned_ForUseOfRenderPartial_InSections()
{
// Arrange
var project = CreateProjectFromFile();
var expectedLocation = DefaultMarkerLocation.Value;
// Act
var result = await GetDiagnosticAsync(project);
// Assert
Assert.Collection(
result,
diagnostic =>
{
Assert.Equal(DiagnosticDescriptor.Id, diagnostic.Id);
Assert.Same(DiagnosticDescriptor, diagnostic.Descriptor);
Assert.DiagnosticLocation(expectedLocation, diagnostic.Location);
});
}
private static TestSource ReadTestSource([CallerMemberName] string testMethod = "") =>
MvcTestSource.Read(nameof(AvoidHtmlPartialAnalyzerTest), testMethod);
}
}

View File

@ -1,194 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc.Analyzers.Infrastructure;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Formatting;
using Microsoft.CodeAnalysis.Simplification;
namespace Microsoft.AspNetCore.Mvc.Analyzers
{
internal class Assert : Xunit.Assert
{
public static void DiagnosticsEqual(IEnumerable<DiagnosticResult> expected, IEnumerable<Diagnostic> actual)
{
var expectedCount = expected.Count();
var actualCount = actual.Count();
if (expectedCount != actualCount)
{
throw new DiagnosticsAssertException(
expected,
actual,
$"Mismatch between number of diagnostics returned, expected \"{expectedCount}\" actual \"{actualCount}.");
}
foreach (var (expectedItem, actualItem) in expected.Zip(actual, (a, b) => (a, b)))
{
if (expectedItem.Line == -1 && expectedItem.Column == -1)
{
if (actualItem.Location != Location.None)
{
throw new DiagnosticAssertException(
expectedItem,
actualItem,
$"Expected: A project diagnostic with no location. Actual {actualItem.Location}.");
}
}
else
{
VerifyLocation(expectedItem, actualItem);
}
if (actualItem.Id != expectedItem.Id)
{
throw new DiagnosticAssertException(
expectedItem,
actualItem,
$"Expected: Expected id: {expectedItem.Id}. Actual id: {actualItem.Id}.");
}
if (actualItem.Severity != expectedItem.Severity)
{
throw new DiagnosticAssertException(
expectedItem,
actualItem,
$"Expected: Expected severity: {expectedItem.Severity}. Actual severity: {actualItem.Severity}.");
}
if (actualItem.GetMessage() != expectedItem.Message)
{
throw new DiagnosticAssertException(
expectedItem,
actualItem,
$"Expected: Expected message: {expectedItem.Message}. Actual message: {actualItem.GetMessage()}.");
}
}
}
private static void VerifyLocation(DiagnosticResult expected, Diagnostic actual)
{
if (expected.Locations.Length == 0)
{
return;
}
var expectedLocation = expected.Locations[0];
Assert.DiagnosticLocation(expectedLocation, actual.Location);
}
public static void DiagnosticLocation(DiagnosticResultLocation expected, Location actual)
{
var actualSpan = actual.GetLineSpan();
var actualLinePosition = actualSpan.StartLinePosition;
// Only check line position if there is an actual line in the real diagnostic
if (actualLinePosition.Line > 0)
{
if (actualLinePosition.Line + 1 != expected.Line)
{
throw new DiagnosticLocationAssertException(
expected,
actual,
$"Expected diagnostic to be on line \"{expected.Line}\" was actually on line \"{actualLinePosition.Line + 1}\"");
}
}
// Only check column position if there is an actual column position in the real diagnostic
if (actualLinePosition.Character > 0)
{
if (actualLinePosition.Character + 1 != expected.Column)
{
throw new DiagnosticLocationAssertException(
expected,
actual,
$"Expected diagnostic to start at column \"{expected.Column}\" was actually on line \"{actualLinePosition.Character + 1}\"");
}
}
}
private static string FormatDiagnostics(IEnumerable<Diagnostic> diagnostics)
{
return string.Join(Environment.NewLine, diagnostics.Select(FormatDiagnostic));
}
private static string FormatDiagnostic(Diagnostic diagnostic)
{
var builder = new StringBuilder();
builder.AppendLine(diagnostic.ToString());
var location = diagnostic.Location;
if (location == Location.None)
{
builder.Append($"Location unknown: ({diagnostic.Id})");
}
else
{
True(location.IsInSource,
$"Test base does not currently handle diagnostics in metadata locations. Diagnostic in metadata: {diagnostic}");
var linePosition = location.GetLineSpan().StartLinePosition;
builder.Append($"({(linePosition.Line + 1)}, {(linePosition.Character + 1)}, {diagnostic.Id})");
}
return builder.ToString();
}
private static async Task<string> GetStringFromDocumentAsync(Document document)
{
var simplifiedDoc = await Simplifier.ReduceAsync(document, Simplifier.Annotation);
var root = await simplifiedDoc.GetSyntaxRootAsync();
root = Formatter.Format(root, Formatter.Annotation, simplifiedDoc.Project.Solution.Workspace);
return root.GetText().ToString();
}
private class DiagnosticsAssertException : Xunit.Sdk.EqualException
{
public DiagnosticsAssertException(
IEnumerable<DiagnosticResult> expected,
IEnumerable<Diagnostic> actual,
string message)
: base(expected, actual)
{
Message = message + Environment.NewLine + FormatDiagnostics(actual);
}
public override string Message { get; }
}
private class DiagnosticAssertException : Xunit.Sdk.EqualException
{
public DiagnosticAssertException(
DiagnosticResult expected,
Diagnostic actual,
string message)
: base(expected, actual)
{
Message = message + Environment.NewLine + FormatDiagnostic(actual);
}
public override string Message { get; }
}
private class DiagnosticLocationAssertException : Xunit.Sdk.EqualException
{
public DiagnosticLocationAssertException(
DiagnosticResultLocation expected,
Location actual,
string message)
: base(expected, actual)
{
Message = message;
}
public override string Message { get; }
}
}
}

View File

@ -1,75 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using Microsoft.CodeAnalysis;
namespace Microsoft.AspNetCore.Mvc.Analyzers.Infrastructure
{
/// <summary>
/// Location where the diagnostic appears, as determined by path, line number, and column number.
/// </summary>
public struct DiagnosticResultLocation
{
public DiagnosticResultLocation(int line, int column)
: this("Test.cs", line, column)
{
}
public DiagnosticResultLocation(string path, int line, int column)
{
if (line < -1)
{
throw new ArgumentOutOfRangeException(nameof(line), "line must be >= -1");
}
if (column < -1)
{
throw new ArgumentOutOfRangeException(nameof(column), "column must be >= -1");
}
Path = path;
Line = line;
Column = column;
}
public string Path { get; }
public int Line { get; }
public int Column { get; }
}
/// <summary>
/// Struct that stores information about a Diagnostic appearing in a source
/// </summary>
public struct DiagnosticResult
{
private DiagnosticResultLocation[] _locations;
public DiagnosticResultLocation[] Locations
{
get
{
if (_locations == null)
{
_locations = new DiagnosticResultLocation[] { };
}
return _locations;
}
set => _locations = value;
}
public DiagnosticSeverity Severity { get; set; }
public string Id { get; set; }
public string Message { get; set; }
public string Path => Locations.Length > 0 ? Locations[0].Path : "";
public int Line => Locations.Length > 0 ? Locations[0].Line : -1;
public int Column => Locations.Length > 0 ? Locations[0].Column : -1;
}
}

View File

@ -0,0 +1,26 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Analyzer.Testing;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Diagnostics;
namespace Microsoft.AspNetCore.Mvc.Analyzers.Infrastructure
{
public class MvcDiagnosticAnalyzerRunner : DiagnosticAnalyzerRunner
{
public MvcDiagnosticAnalyzerRunner(DiagnosticAnalyzer analyzer)
{
Analyzer = analyzer;
}
public DiagnosticAnalyzer Analyzer { get; }
public Task<Diagnostic[]> GetDiagnosticsAsync(string source)
{
return GetDiagnosticsAsync(sources: new[] { source }, Analyzer, Array.Empty<string>());
}
}
}

View File

@ -0,0 +1,34 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.IO;
using Microsoft.AspNetCore.Analyzer.Testing;
using Microsoft.AspNetCore.Testing;
namespace Microsoft.AspNetCore.Mvc.Analyzers.Infrastructure
{
public static class MvcTestSource
{
private static readonly string ProjectDirectory = GetProjectDirectory();
public static TestSource Read(string testClassName, string testMethod)
{
var filePath = Path.Combine(ProjectDirectory, "TestFiles", testClassName, testMethod + ".cs");
if (!File.Exists(filePath))
{
throw new FileNotFoundException($"TestFile {testMethod} could not be found at {filePath}.", filePath);
}
var fileContent = File.ReadAllText(filePath);
return TestSource.Read(fileContent);
}
private static string GetProjectDirectory()
{
var solutionDirectory = TestPathUtilities.GetSolutionRootDirectory("Mvc");
var assemblyName = typeof(MvcTestSource).Assembly.GetName().Name;
var projectDirectory = Path.Combine(solutionDirectory, "test", assemblyName);
return projectDirectory;
}
}
}

View File

@ -13,6 +13,7 @@
<ProjectReference Include="..\..\src\Microsoft.AspNetCore.Mvc\Microsoft.AspNetCore.Mvc.csproj" />
<ProjectReference Include="..\..\src\Microsoft.AspNetCore.Mvc.Analyzers\Microsoft.AspNetCore.Mvc.Analyzers.csproj" />
<PackageReference Include="Microsoft.AspNetCore.Analyzer.Testing" Version="$(MicrosoftAspNetCoreAnalyzerTestingPackageVersion)" />
<PackageReference Include="Microsoft.AspNetCore.Testing" Version="$(MicrosoftAspNetCoreTestingPackageVersion)" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="$(MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion)" />
</ItemGroup>