Don't add the tag helper provider by default
Since the default tag helper provider is used by MVC then MVC should include it. Now that Blazor is in the mix we shouldn't include it for all configurations.
This commit is contained in:
parent
92c511b2b4
commit
989a6c699f
|
|
@ -4,6 +4,7 @@
|
||||||
using System;
|
using System;
|
||||||
using Microsoft.AspNetCore.Razor.Language;
|
using Microsoft.AspNetCore.Razor.Language;
|
||||||
using Microsoft.AspNetCore.Razor.Language.Extensions;
|
using Microsoft.AspNetCore.Razor.Language.Extensions;
|
||||||
|
using Microsoft.CodeAnalysis.Razor;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X
|
namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X
|
||||||
{
|
{
|
||||||
|
|
@ -22,6 +23,8 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X
|
||||||
FunctionsDirective.Register(builder);
|
FunctionsDirective.Register(builder);
|
||||||
InheritsDirective.Register(builder);
|
InheritsDirective.Register(builder);
|
||||||
|
|
||||||
|
builder.Features.Add(new DefaultTagHelperDescriptorProvider());
|
||||||
|
|
||||||
// Register section directive with the 1.x compatible target extension.
|
// Register section directive with the 1.x compatible target extension.
|
||||||
builder.AddDirective(SectionDirective.Directive);
|
builder.AddDirective(SectionDirective.Directive);
|
||||||
builder.Features.Add(new SectionDirectivePass());
|
builder.Features.Add(new SectionDirectivePass());
|
||||||
|
|
@ -67,6 +70,8 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X
|
||||||
FunctionsDirective.Register(builder);
|
FunctionsDirective.Register(builder);
|
||||||
InheritsDirective.Register(builder);
|
InheritsDirective.Register(builder);
|
||||||
|
|
||||||
|
builder.Features.Add(new DefaultTagHelperDescriptorProvider());
|
||||||
|
|
||||||
// Register section directive with the 1.x compatible target extension.
|
// Register section directive with the 1.x compatible target extension.
|
||||||
builder.AddDirective(SectionDirective.Directive);
|
builder.AddDirective(SectionDirective.Directive);
|
||||||
builder.Features.Add(new SectionDirectivePass());
|
builder.Features.Add(new SectionDirectivePass());
|
||||||
|
|
|
||||||
|
|
@ -11,10 +11,6 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X
|
||||||
{
|
{
|
||||||
public sealed class ViewComponentTagHelperDescriptorProvider : RazorEngineFeatureBase, ITagHelperDescriptorProvider
|
public sealed class ViewComponentTagHelperDescriptorProvider : RazorEngineFeatureBase, ITagHelperDescriptorProvider
|
||||||
{
|
{
|
||||||
// Hack for testability. The visitor will normally just no op if we're not referencing
|
|
||||||
// an appropriate version of MVC.
|
|
||||||
internal bool ForceEnabled { get; set; }
|
|
||||||
|
|
||||||
public int Order { get; set; }
|
public int Order { get; set; }
|
||||||
|
|
||||||
public void Execute(TagHelperDescriptorProviderContext context)
|
public void Execute(TagHelperDescriptorProviderContext context)
|
||||||
|
|
@ -33,10 +29,6 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X
|
||||||
|
|
||||||
var types = new List<INamedTypeSymbol>();
|
var types = new List<INamedTypeSymbol>();
|
||||||
var visitor = ViewComponentTypeVisitor.Create(compilation, types);
|
var visitor = ViewComponentTypeVisitor.Create(compilation, types);
|
||||||
if (ForceEnabled)
|
|
||||||
{
|
|
||||||
visitor.Enabled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// We always visit the global namespace.
|
// We always visit the global namespace.
|
||||||
visitor.Visit(compilation.Assembly.GlobalNamespace);
|
visitor.Visit(compilation.Assembly.GlobalNamespace);
|
||||||
|
|
|
||||||
|
|
@ -18,22 +18,8 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X
|
||||||
|
|
||||||
public static ViewComponentTypeVisitor Create(Compilation compilation, List<INamedTypeSymbol> results)
|
public static ViewComponentTypeVisitor Create(Compilation compilation, List<INamedTypeSymbol> results)
|
||||||
{
|
{
|
||||||
var enabled = false;
|
var vcAttribute = compilation.GetTypeByMetadataName(ViewComponentTypes.ViewComponentAttribute);
|
||||||
foreach (var reference in compilation.References)
|
var nonVCAttribute = compilation.GetTypeByMetadataName(ViewComponentTypes.NonViewComponentAttribute);
|
||||||
{
|
|
||||||
var symbol = compilation.GetAssemblyOrModuleSymbol(reference) as IAssemblySymbol;
|
|
||||||
if (symbol != null)
|
|
||||||
{
|
|
||||||
if (string.Equals(symbol.Identity.Name, ViewComponentTypes.Assembly, StringComparison.Ordinal))
|
|
||||||
{
|
|
||||||
enabled = symbol.Identity.Version >= ViewComponentTypes.AssemblyVersion;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var vcAttribute = enabled ? compilation.GetTypeByMetadataName(ViewComponentTypes.ViewComponentAttribute) : null;
|
|
||||||
var nonVCAttribute = enabled ? compilation.GetTypeByMetadataName(ViewComponentTypes.NonViewComponentAttribute) : null;
|
|
||||||
return new ViewComponentTypeVisitor(vcAttribute, nonVCAttribute, results);
|
return new ViewComponentTypeVisitor(vcAttribute, nonVCAttribute, results);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
using System;
|
using System;
|
||||||
using Microsoft.AspNetCore.Razor.Language;
|
using Microsoft.AspNetCore.Razor.Language;
|
||||||
using Microsoft.AspNetCore.Razor.Language.Extensions;
|
using Microsoft.AspNetCore.Razor.Language.Extensions;
|
||||||
|
using Microsoft.CodeAnalysis.Razor;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
||||||
{
|
{
|
||||||
|
|
@ -24,7 +25,8 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
||||||
FunctionsDirective.Register(builder);
|
FunctionsDirective.Register(builder);
|
||||||
InheritsDirective.Register(builder);
|
InheritsDirective.Register(builder);
|
||||||
SectionDirective.Register(builder);
|
SectionDirective.Register(builder);
|
||||||
|
|
||||||
|
builder.Features.Add(new DefaultTagHelperDescriptorProvider());
|
||||||
builder.Features.Add(new ViewComponentTagHelperDescriptorProvider());
|
builder.Features.Add(new ViewComponentTagHelperDescriptorProvider());
|
||||||
|
|
||||||
builder.AddTargetExtension(new ViewComponentTagHelperTargetExtension());
|
builder.AddTargetExtension(new ViewComponentTagHelperTargetExtension());
|
||||||
|
|
@ -61,6 +63,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
||||||
InheritsDirective.Register(builder);
|
InheritsDirective.Register(builder);
|
||||||
SectionDirective.Register(builder);
|
SectionDirective.Register(builder);
|
||||||
|
|
||||||
|
builder.Features.Add(new DefaultTagHelperDescriptorProvider());
|
||||||
builder.Features.Add(new ViewComponentTagHelperDescriptorProvider());
|
builder.Features.Add(new ViewComponentTagHelperDescriptorProvider());
|
||||||
|
|
||||||
builder.AddTargetExtension(new ViewComponentTagHelperTargetExtension());
|
builder.AddTargetExtension(new ViewComponentTagHelperTargetExtension());
|
||||||
|
|
|
||||||
|
|
@ -11,10 +11,6 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
||||||
{
|
{
|
||||||
public sealed class ViewComponentTagHelperDescriptorProvider : RazorEngineFeatureBase, ITagHelperDescriptorProvider
|
public sealed class ViewComponentTagHelperDescriptorProvider : RazorEngineFeatureBase, ITagHelperDescriptorProvider
|
||||||
{
|
{
|
||||||
// Hack for testability. The visitor will normally just no op if we're not referencing
|
|
||||||
// an appropriate version of MVC.
|
|
||||||
internal bool ForceEnabled { get; set; }
|
|
||||||
|
|
||||||
public int Order { get; set; }
|
public int Order { get; set; }
|
||||||
|
|
||||||
public void Execute(TagHelperDescriptorProviderContext context)
|
public void Execute(TagHelperDescriptorProviderContext context)
|
||||||
|
|
@ -33,10 +29,6 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
||||||
|
|
||||||
var types = new List<INamedTypeSymbol>();
|
var types = new List<INamedTypeSymbol>();
|
||||||
var visitor = ViewComponentTypeVisitor.Create(compilation, types);
|
var visitor = ViewComponentTypeVisitor.Create(compilation, types);
|
||||||
if (ForceEnabled)
|
|
||||||
{
|
|
||||||
visitor.Enabled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// We always visit the global namespace.
|
// We always visit the global namespace.
|
||||||
visitor.Visit(compilation.Assembly.GlobalNamespace);
|
visitor.Visit(compilation.Assembly.GlobalNamespace);
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
// 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.
|
// 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.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Microsoft.CodeAnalysis;
|
using Microsoft.CodeAnalysis;
|
||||||
|
|
@ -29,12 +28,8 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
||||||
_viewComponentAttribute = viewComponentAttribute;
|
_viewComponentAttribute = viewComponentAttribute;
|
||||||
_nonViewComponentAttribute = nonViewComponentAttribute;
|
_nonViewComponentAttribute = nonViewComponentAttribute;
|
||||||
_results = results;
|
_results = results;
|
||||||
|
|
||||||
Enabled = _viewComponentAttribute != null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool Enabled { get; set; }
|
|
||||||
|
|
||||||
public override void VisitNamedType(INamedTypeSymbol symbol)
|
public override void VisitNamedType(INamedTypeSymbol symbol)
|
||||||
{
|
{
|
||||||
if (IsViewComponent(symbol))
|
if (IsViewComponent(symbol))
|
||||||
|
|
@ -63,7 +58,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
||||||
|
|
||||||
internal bool IsViewComponent(INamedTypeSymbol symbol)
|
internal bool IsViewComponent(INamedTypeSymbol symbol)
|
||||||
{
|
{
|
||||||
if (!Enabled)
|
if (_viewComponentAttribute == null)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,10 @@ namespace Microsoft.AspNetCore.Razor.Language
|
||||||
{
|
{
|
||||||
public abstract class TagHelperDescriptorProviderContext
|
public abstract class TagHelperDescriptorProviderContext
|
||||||
{
|
{
|
||||||
|
public virtual bool ExcludeHidden { get; set; }
|
||||||
|
|
||||||
|
public virtual bool IncludeDocumentation { get; set; }
|
||||||
|
|
||||||
public abstract ItemCollection Items { get; }
|
public abstract ItemCollection Items { get; }
|
||||||
|
|
||||||
public abstract ICollection<TagHelperDescriptor> Results { get; }
|
public abstract ICollection<TagHelperDescriptor> Results { get; }
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,8 @@ namespace Microsoft.CodeAnalysis.Razor
|
||||||
|
|
||||||
var results = new List<TagHelperDescriptor>();
|
var results = new List<TagHelperDescriptor>();
|
||||||
var context = TagHelperDescriptorProviderContext.Create(results);
|
var context = TagHelperDescriptorProviderContext.Create(results);
|
||||||
|
context.ExcludeHidden = true;
|
||||||
|
context.IncludeDocumentation = true;
|
||||||
|
|
||||||
var compilation = await project.WorkspaceProject.GetCompilationAsync().ConfigureAwait(false);
|
var compilation = await project.WorkspaceProject.GetCompilationAsync().ConfigureAwait(false);
|
||||||
context.SetCompilation(compilation);
|
context.SetCompilation(compilation);
|
||||||
|
|
|
||||||
|
|
@ -28,9 +28,11 @@ namespace Microsoft.CodeAnalysis.Razor
|
||||||
.WithGlobalNamespaceStyle(SymbolDisplayGlobalNamespaceStyle.Omitted)
|
.WithGlobalNamespaceStyle(SymbolDisplayGlobalNamespaceStyle.Omitted)
|
||||||
.WithMiscellaneousOptions(SymbolDisplayFormat.FullyQualifiedFormat.MiscellaneousOptions & (~SymbolDisplayMiscellaneousOptions.UseSpecialTypes));
|
.WithMiscellaneousOptions(SymbolDisplayFormat.FullyQualifiedFormat.MiscellaneousOptions & (~SymbolDisplayMiscellaneousOptions.UseSpecialTypes));
|
||||||
|
|
||||||
public DefaultTagHelperDescriptorFactory(Compilation compilation, bool designTime)
|
public DefaultTagHelperDescriptorFactory(Compilation compilation, bool includeDocumentation, bool excludeHidden)
|
||||||
{
|
{
|
||||||
DesignTime = designTime;
|
IncludeDocumentation = includeDocumentation;
|
||||||
|
ExcludeHidden = excludeHidden;
|
||||||
|
|
||||||
_htmlAttributeNameAttributeSymbol = compilation.GetTypeByMetadataName(TagHelperTypes.HtmlAttributeNameAttribute);
|
_htmlAttributeNameAttributeSymbol = compilation.GetTypeByMetadataName(TagHelperTypes.HtmlAttributeNameAttribute);
|
||||||
_htmlAttributeNotBoundAttributeSymbol = compilation.GetTypeByMetadataName(TagHelperTypes.HtmlAttributeNotBoundAttribute);
|
_htmlAttributeNotBoundAttributeSymbol = compilation.GetTypeByMetadataName(TagHelperTypes.HtmlAttributeNotBoundAttribute);
|
||||||
_htmlTargetElementAttributeSymbol = compilation.GetTypeByMetadataName(TagHelperTypes.HtmlTargetElementAttribute);
|
_htmlTargetElementAttributeSymbol = compilation.GetTypeByMetadataName(TagHelperTypes.HtmlTargetElementAttribute);
|
||||||
|
|
@ -40,7 +42,9 @@ namespace Microsoft.CodeAnalysis.Razor
|
||||||
_iDictionarySymbol = compilation.GetTypeByMetadataName(TagHelperTypes.IDictionary);
|
_iDictionarySymbol = compilation.GetTypeByMetadataName(TagHelperTypes.IDictionary);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected bool DesignTime { get; }
|
protected bool ExcludeHidden { get; }
|
||||||
|
|
||||||
|
protected bool IncludeDocumentation { get; }
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public virtual TagHelperDescriptor CreateDescriptor(INamedTypeSymbol type)
|
public virtual TagHelperDescriptor CreateDescriptor(INamedTypeSymbol type)
|
||||||
|
|
@ -154,7 +158,7 @@ namespace Microsoft.CodeAnalysis.Razor
|
||||||
|
|
||||||
private void AddDocumentation(INamedTypeSymbol type, TagHelperDescriptorBuilder builder)
|
private void AddDocumentation(INamedTypeSymbol type, TagHelperDescriptorBuilder builder)
|
||||||
{
|
{
|
||||||
if (!DesignTime)
|
if (!IncludeDocumentation)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -169,10 +173,6 @@ namespace Microsoft.CodeAnalysis.Razor
|
||||||
|
|
||||||
private void AddTagOutputHint(INamedTypeSymbol type, TagHelperDescriptorBuilder builder)
|
private void AddTagOutputHint(INamedTypeSymbol type, TagHelperDescriptorBuilder builder)
|
||||||
{
|
{
|
||||||
if (!DesignTime)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
string outputElementHint = null;
|
string outputElementHint = null;
|
||||||
var outputElementHintAttribute = type.GetAttributes().Where(a => a.AttributeClass == _outputElementHintAttributeSymbol).FirstOrDefault();
|
var outputElementHintAttribute = type.GetAttributes().Where(a => a.AttributeClass == _outputElementHintAttributeSymbol).FirstOrDefault();
|
||||||
if (outputElementHintAttribute != null)
|
if (outputElementHintAttribute != null)
|
||||||
|
|
@ -221,7 +221,7 @@ namespace Microsoft.CodeAnalysis.Razor
|
||||||
builder.IsEnum = true;
|
builder.IsEnum = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DesignTime)
|
if (IncludeDocumentation)
|
||||||
{
|
{
|
||||||
var xml = property.GetDocumentationCommentXml();
|
var xml = property.GetDocumentationCommentXml();
|
||||||
|
|
||||||
|
|
@ -416,7 +416,7 @@ namespace Microsoft.CodeAnalysis.Razor
|
||||||
|
|
||||||
private bool ShouldSkipDescriptorCreation(ISymbol symbol)
|
private bool ShouldSkipDescriptorCreation(ISymbol symbol)
|
||||||
{
|
{
|
||||||
if (DesignTime)
|
if (ExcludeHidden)
|
||||||
{
|
{
|
||||||
var editorBrowsableAttribute = symbol.GetAttributes().Where(a => a.AttributeClass == _editorBrowsableAttributeSymbol).FirstOrDefault();
|
var editorBrowsableAttribute = symbol.GetAttributes().Where(a => a.AttributeClass == _editorBrowsableAttributeSymbol).FirstOrDefault();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,10 @@ namespace Microsoft.CodeAnalysis.Razor
|
||||||
{
|
{
|
||||||
public sealed class DefaultTagHelperDescriptorProvider : RazorEngineFeatureBase, ITagHelperDescriptorProvider
|
public sealed class DefaultTagHelperDescriptorProvider : RazorEngineFeatureBase, ITagHelperDescriptorProvider
|
||||||
{
|
{
|
||||||
|
[Obsolete(
|
||||||
|
"This property is obsolete will not be honored. Documentation will be included if " +
|
||||||
|
"TagHelperDescriptorProviderContext.IncludeDocumentation is set to true. Hidden tag helpers will" +
|
||||||
|
"be excluded from the results if TagHelperDescriptorProviderContext.ExcludeHidden is set to true.")]
|
||||||
public bool DesignTime { get; set; }
|
public bool DesignTime { get; set; }
|
||||||
|
|
||||||
public int Order { get; set; }
|
public int Order { get; set; }
|
||||||
|
|
@ -44,7 +48,7 @@ namespace Microsoft.CodeAnalysis.Razor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(compilation, DesignTime);
|
var factory = new DefaultTagHelperDescriptorFactory(compilation, context.IncludeDocumentation, context.ExcludeHidden);
|
||||||
for (var i = 0; i < types.Count; i++)
|
for (var i = 0; i < types.Count; i++)
|
||||||
{
|
{
|
||||||
var descriptor = factory.CreateDescriptor(types[i]);
|
var descriptor = factory.CreateDescriptor(types[i]);
|
||||||
|
|
|
||||||
|
|
@ -53,11 +53,7 @@ namespace Microsoft.CodeAnalysis.Razor
|
||||||
//
|
//
|
||||||
// Most notably, we are going to find the Tag Helpers using a compilation, and we have
|
// Most notably, we are going to find the Tag Helpers using a compilation, and we have
|
||||||
// no editor settings.
|
// no editor settings.
|
||||||
Action<RazorProjectEngineBuilder> configure = (b) =>
|
//
|
||||||
{
|
|
||||||
b.Features.Add(new DefaultTagHelperDescriptorProvider() { DesignTime = true });
|
|
||||||
};
|
|
||||||
|
|
||||||
// The default configuration currently matches MVC-2.0. Beyond MVC-2.0 we added SDK support for
|
// The default configuration currently matches MVC-2.0. Beyond MVC-2.0 we added SDK support for
|
||||||
// properly detecting project versions, so that's a good version to assume when we can't find a
|
// properly detecting project versions, so that's a good version to assume when we can't find a
|
||||||
// configuration.
|
// configuration.
|
||||||
|
|
@ -68,7 +64,7 @@ namespace Microsoft.CodeAnalysis.Razor
|
||||||
// This will stop a crash from happening in this case (misconfigured project), but will still make
|
// This will stop a crash from happening in this case (misconfigured project), but will still make
|
||||||
// it obvious to the user that something is wrong.
|
// it obvious to the user that something is wrong.
|
||||||
var factory = CreateFactory(configuration, factoryTypeName) ?? _fallbackFactory;
|
var factory = CreateFactory(configuration, factoryTypeName) ?? _fallbackFactory;
|
||||||
return factory.Create(configuration, RazorProjectFileSystem.Empty, configure);
|
return factory.Create(configuration, RazorProjectFileSystem.Empty, b => { });
|
||||||
}
|
}
|
||||||
|
|
||||||
private IProjectEngineFactory CreateFactory(RazorConfiguration configuration, string factoryTypeName)
|
private IProjectEngineFactory CreateFactory(RazorConfiguration configuration, string factoryTypeName)
|
||||||
|
|
|
||||||
|
|
@ -36,10 +36,7 @@ namespace Microsoft.VisualStudio.Editor.Razor
|
||||||
return Task.FromResult(TagHelperResolutionResult.Empty);
|
return Task.FromResult(TagHelperResolutionResult.Empty);
|
||||||
}
|
}
|
||||||
|
|
||||||
var engine = _engineFactory.Create(project, RazorProjectFileSystem.Empty, b =>
|
var engine = _engineFactory.Create(project, RazorProjectFileSystem.Empty, b => { });
|
||||||
{
|
|
||||||
b.Features.Add(new DefaultTagHelperDescriptorProvider() { DesignTime = true, });
|
|
||||||
});
|
|
||||||
return GetTagHelpersAsync(project, engine);
|
return GetTagHelpersAsync(project, engine);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -177,7 +177,7 @@ namespace Microsoft.CodeAnalysis.Razor.ProjectSystem.Rules {
|
||||||
Microsoft.Build.Framework.XamlTypes.Rule t = ((Microsoft.Build.Framework.XamlTypes.Rule)(ruleEnumerator.Current));
|
Microsoft.Build.Framework.XamlTypes.Rule t = ((Microsoft.Build.Framework.XamlTypes.Rule)(ruleEnumerator.Current));
|
||||||
if (System.StringComparer.OrdinalIgnoreCase.Equals(t.Name, SchemaName)) {
|
if (System.StringComparer.OrdinalIgnoreCase.Equals(t.Name, SchemaName)) {
|
||||||
unboundRule = t;
|
unboundRule = t;
|
||||||
unboundRule.Name = "6ffb2641-19cd-4943-bc6d-446919acb77e";
|
unboundRule.Name = "a424c63f-67e5-4a8c-a436-92f3b3edfc9a";
|
||||||
RazorConfiguration.deserializedFallbackRule = unboundRule;
|
RazorConfiguration.deserializedFallbackRule = unboundRule;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -200,7 +200,7 @@ namespace Microsoft.CodeAnalysis.Razor.ProjectSystem.Rules {
|
||||||
Microsoft.Build.Framework.XamlTypes.Rule t = ((Microsoft.Build.Framework.XamlTypes.Rule)(ruleEnumerator.Current));
|
Microsoft.Build.Framework.XamlTypes.Rule t = ((Microsoft.Build.Framework.XamlTypes.Rule)(ruleEnumerator.Current));
|
||||||
if (System.StringComparer.OrdinalIgnoreCase.Equals(t.Name, SchemaName)) {
|
if (System.StringComparer.OrdinalIgnoreCase.Equals(t.Name, SchemaName)) {
|
||||||
unboundRule = t;
|
unboundRule = t;
|
||||||
unboundRule.Name = "15acc140-184e-44be-a4d3-62505276a0bb";
|
unboundRule.Name = "5a884e7d-b817-44fa-af10-8ad97fe2e643";
|
||||||
RazorGeneral.deserializedFallbackRule = unboundRule;
|
RazorGeneral.deserializedFallbackRule = unboundRule;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using Microsoft.AspNetCore.Razor.Language;
|
using Microsoft.AspNetCore.Razor.Language;
|
||||||
using Microsoft.AspNetCore.Razor.Language.IntegrationTests;
|
using Microsoft.AspNetCore.Razor.Language.IntegrationTests;
|
||||||
|
|
@ -13,22 +12,22 @@ using Microsoft.CodeAnalysis;
|
||||||
using Microsoft.CodeAnalysis.CSharp;
|
using Microsoft.CodeAnalysis.CSharp;
|
||||||
using Microsoft.CodeAnalysis.Emit;
|
using Microsoft.CodeAnalysis.Emit;
|
||||||
using Microsoft.CodeAnalysis.Razor;
|
using Microsoft.CodeAnalysis.Razor;
|
||||||
using Microsoft.Extensions.DependencyModel;
|
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.IntegrationTests
|
namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.IntegrationTests
|
||||||
{
|
{
|
||||||
public class CodeGenerationIntegrationTest : IntegrationTestBase
|
public class CodeGenerationIntegrationTest : IntegrationTestBase
|
||||||
{
|
{
|
||||||
private const string CurrentMvcShim = "Microsoft.AspNetCore.Razor.Test.MvcShim.dll";
|
|
||||||
private static readonly RazorSourceDocument DefaultImports = MvcRazorTemplateEngine.GetDefaultImports();
|
private static readonly RazorSourceDocument DefaultImports = MvcRazorTemplateEngine.GetDefaultImports();
|
||||||
|
|
||||||
|
private CSharpCompilation BaseCompilation => MvcShim.BaseCompilation.WithAssemblyName("AppCode");
|
||||||
|
|
||||||
#region Runtime
|
#region Runtime
|
||||||
[Fact]
|
[Fact]
|
||||||
public void InvalidNamespaceAtEOF_Runtime()
|
public void InvalidNamespaceAtEOF_Runtime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim);
|
var compilation = BaseCompilation;
|
||||||
RunRuntimeTest(references);
|
RunRuntimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -39,9 +38,9 @@ public class MyService<TModel>
|
||||||
{
|
{
|
||||||
public string Html { get; set; }
|
public string Html { get; set; }
|
||||||
}";
|
}";
|
||||||
var compilationReferences = CreateCompilationReferences(CurrentMvcShim, appCode);
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
|
|
||||||
RunRuntimeTest(compilationReferences);
|
RunRuntimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -63,9 +62,9 @@ public class MyModel
|
||||||
|
|
||||||
}
|
}
|
||||||
";
|
";
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode);
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
|
|
||||||
RunRuntimeTest(references);
|
RunRuntimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -87,44 +86,50 @@ public class MyModel
|
||||||
{
|
{
|
||||||
|
|
||||||
}";
|
}";
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode);
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
|
|
||||||
RunRuntimeTest(references);
|
RunRuntimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void MalformedPageDirective_Runtime()
|
public void MalformedPageDirective_Runtime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim);
|
var compilation = BaseCompilation;
|
||||||
RunRuntimeTest(references);
|
|
||||||
|
RunRuntimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void Basic_Runtime()
|
public void Basic_Runtime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim);
|
var compilation = BaseCompilation;
|
||||||
RunRuntimeTest(references);
|
|
||||||
|
RunRuntimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void Sections_Runtime()
|
public void Sections_Runtime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode: $@"
|
var appCode = $@"
|
||||||
using Microsoft.AspNetCore.Mvc.ViewFeatures;
|
using Microsoft.AspNetCore.Mvc.ViewFeatures;
|
||||||
|
|
||||||
public class InputTestTagHelper : {typeof(TagHelper).FullName}
|
public class InputTestTagHelper : {typeof(TagHelper).FullName}
|
||||||
{{
|
{{
|
||||||
public ModelExpression For {{ get; set; }}
|
public ModelExpression For {{ get; set; }}
|
||||||
}}
|
}}
|
||||||
");
|
";
|
||||||
RunRuntimeTest(references);
|
|
||||||
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
|
|
||||||
|
RunRuntimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void _ViewImports_Runtime()
|
public void _ViewImports_Runtime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim);
|
var compilation = BaseCompilation;
|
||||||
RunRuntimeTest(references);
|
|
||||||
|
RunRuntimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -136,9 +141,9 @@ public class MyApp
|
||||||
public string MyProperty { get; set; }
|
public string MyProperty { get; set; }
|
||||||
}
|
}
|
||||||
";
|
";
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode);
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
|
|
||||||
RunRuntimeTest(references);
|
RunRuntimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -159,9 +164,9 @@ public class MyApp
|
||||||
{
|
{
|
||||||
public string MyProperty { get; set; }
|
public string MyProperty { get; set; }
|
||||||
}";
|
}";
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode);
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
|
|
||||||
RunRuntimeTest(references);
|
RunRuntimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -183,75 +188,81 @@ public class MyService<TModel>
|
||||||
public string Html { get; set; }
|
public string Html { get; set; }
|
||||||
}
|
}
|
||||||
";
|
";
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode);
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
|
|
||||||
RunRuntimeTest(references);
|
RunRuntimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void Model_Runtime()
|
public void Model_Runtime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim);
|
var compilation = BaseCompilation;
|
||||||
|
|
||||||
RunRuntimeTest(references);
|
RunRuntimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ModelExpressionTagHelper_Runtime()
|
public void ModelExpressionTagHelper_Runtime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode: $@"
|
var appCode = $@"
|
||||||
using Microsoft.AspNetCore.Mvc.ViewFeatures;
|
using Microsoft.AspNetCore.Mvc.ViewFeatures;
|
||||||
|
|
||||||
public class InputTestTagHelper : {typeof(TagHelper).FullName}
|
public class InputTestTagHelper : {typeof(TagHelper).FullName}
|
||||||
{{
|
{{
|
||||||
public ModelExpression For {{ get; set; }}
|
public ModelExpression For {{ get; set; }}
|
||||||
}}
|
}}
|
||||||
");
|
";
|
||||||
RunRuntimeTest(references);
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
|
|
||||||
|
RunRuntimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void RazorPages_Runtime()
|
public void RazorPages_Runtime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode: $@"
|
var appCode = $@"
|
||||||
public class DivTagHelper : {typeof(TagHelper).FullName}
|
public class DivTagHelper : {typeof(TagHelper).FullName}
|
||||||
{{
|
{{
|
||||||
|
|
||||||
}}
|
}}
|
||||||
");
|
";
|
||||||
RunRuntimeTest(references);
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
|
|
||||||
|
RunRuntimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void RazorPagesWithoutModel_Runtime()
|
public void RazorPagesWithoutModel_Runtime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode: $@"
|
var appCode = $@"
|
||||||
public class DivTagHelper : {typeof(TagHelper).FullName}
|
public class DivTagHelper : {typeof(TagHelper).FullName}
|
||||||
{{
|
{{
|
||||||
|
|
||||||
}}
|
}}
|
||||||
");
|
";
|
||||||
RunRuntimeTest(references);
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
|
|
||||||
|
RunRuntimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void PageWithNamespace_Runtime()
|
public void PageWithNamespace_Runtime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim);
|
var compilation = BaseCompilation;
|
||||||
RunRuntimeTest(references);
|
RunRuntimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ViewWithNamespace_Runtime()
|
public void ViewWithNamespace_Runtime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim);
|
var compilation = BaseCompilation;
|
||||||
RunRuntimeTest(references);
|
RunRuntimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ViewComponentTagHelper_Runtime()
|
public void ViewComponentTagHelper_Runtime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode: $@"
|
var appCode = $@"
|
||||||
public class TestViewComponent
|
public class TestViewComponent
|
||||||
{{
|
{{
|
||||||
public string Invoke(string firstName)
|
public string Invoke(string firstName)
|
||||||
|
|
@ -265,8 +276,11 @@ public class AllTagHelper : {typeof(TagHelper).FullName}
|
||||||
{{
|
{{
|
||||||
public string Bar {{ get; set; }}
|
public string Bar {{ get; set; }}
|
||||||
}}
|
}}
|
||||||
");
|
";
|
||||||
RunRuntimeTest(references);
|
|
||||||
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
|
|
||||||
|
RunRuntimeTest(compilation);
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
@ -274,8 +288,8 @@ public class AllTagHelper : {typeof(TagHelper).FullName}
|
||||||
[Fact]
|
[Fact]
|
||||||
public void InvalidNamespaceAtEOF_DesignTime()
|
public void InvalidNamespaceAtEOF_DesignTime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim);
|
var compilation = BaseCompilation;
|
||||||
RunDesignTimeTest(references);
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -288,8 +302,9 @@ public class MyService<TModel>
|
||||||
}
|
}
|
||||||
";
|
";
|
||||||
|
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode);
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
RunDesignTimeTest(references);
|
|
||||||
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -312,8 +327,9 @@ public class MyModel
|
||||||
|
|
||||||
}
|
}
|
||||||
";
|
";
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode);
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
RunDesignTimeTest(references);
|
|
||||||
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -337,43 +353,47 @@ public abstract class MyPageModel<T> : Page
|
||||||
}
|
}
|
||||||
";
|
";
|
||||||
|
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode);
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
RunDesignTimeTest(references);
|
|
||||||
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void MalformedPageDirective_DesignTime()
|
public void MalformedPageDirective_DesignTime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim);
|
var compilation = BaseCompilation;
|
||||||
RunDesignTimeTest(references);
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void Basic_DesignTime()
|
public void Basic_DesignTime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim);
|
var compilation = BaseCompilation;
|
||||||
RunDesignTimeTest(references);
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void Sections_DesignTime()
|
public void Sections_DesignTime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode: $@"
|
var appCode = $@"
|
||||||
using Microsoft.AspNetCore.Mvc.ViewFeatures;
|
using Microsoft.AspNetCore.Mvc.ViewFeatures;
|
||||||
|
|
||||||
public class InputTestTagHelper : {typeof(TagHelper).FullName}
|
public class InputTestTagHelper : {typeof(TagHelper).FullName}
|
||||||
{{
|
{{
|
||||||
public ModelExpression For {{ get; set; }}
|
public ModelExpression For {{ get; set; }}
|
||||||
}}
|
}}
|
||||||
");
|
";
|
||||||
RunDesignTimeTest(references);
|
|
||||||
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
|
|
||||||
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void _ViewImports_DesignTime()
|
public void _ViewImports_DesignTime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim);
|
var compilation = BaseCompilation;
|
||||||
RunDesignTimeTest(references);
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -385,8 +405,9 @@ public class MyApp
|
||||||
public string MyProperty { get; set; }
|
public string MyProperty { get; set; }
|
||||||
}
|
}
|
||||||
";
|
";
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode);
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
RunDesignTimeTest(references);
|
|
||||||
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -408,8 +429,9 @@ public class MyApp
|
||||||
public string MyProperty { get; set; }
|
public string MyProperty { get; set; }
|
||||||
}
|
}
|
||||||
";
|
";
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode);
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
RunDesignTimeTest(references);
|
|
||||||
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -431,15 +453,16 @@ public class MyApp
|
||||||
public string MyProperty { get; set; }
|
public string MyProperty { get; set; }
|
||||||
}
|
}
|
||||||
";
|
";
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode);
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
RunDesignTimeTest(references);
|
|
||||||
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void Model_DesignTime()
|
public void Model_DesignTime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim);
|
var compilation = BaseCompilation;
|
||||||
RunDesignTimeTest(references);
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -451,66 +474,74 @@ public class ThisShouldBeGenerated
|
||||||
|
|
||||||
}";
|
}";
|
||||||
|
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode);
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
RunDesignTimeTest(references);
|
|
||||||
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ModelExpressionTagHelper_DesignTime()
|
public void ModelExpressionTagHelper_DesignTime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode: $@"
|
var appCode = $@"
|
||||||
using Microsoft.AspNetCore.Mvc.ViewFeatures;
|
using Microsoft.AspNetCore.Mvc.ViewFeatures;
|
||||||
|
|
||||||
public class InputTestTagHelper : {typeof(TagHelper).FullName}
|
public class InputTestTagHelper : {typeof(TagHelper).FullName}
|
||||||
{{
|
{{
|
||||||
public ModelExpression For {{ get; set; }}
|
public ModelExpression For {{ get; set; }}
|
||||||
}}
|
}}
|
||||||
");
|
";
|
||||||
RunDesignTimeTest(references);
|
|
||||||
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
|
|
||||||
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void RazorPages_DesignTime()
|
public void RazorPages_DesignTime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode: $@"
|
var appCode = $@"
|
||||||
public class DivTagHelper : {typeof(TagHelper).FullName}
|
public class DivTagHelper : {typeof(TagHelper).FullName}
|
||||||
{{
|
{{
|
||||||
|
|
||||||
}}
|
}}
|
||||||
");
|
";
|
||||||
RunDesignTimeTest(references);
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
|
|
||||||
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void RazorPagesWithoutModel_DesignTime()
|
public void RazorPagesWithoutModel_DesignTime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode: $@"
|
var appCode = $@"
|
||||||
public class DivTagHelper : {typeof(TagHelper).FullName}
|
public class DivTagHelper : {typeof(TagHelper).FullName}
|
||||||
{{
|
{{
|
||||||
|
|
||||||
}}
|
}}
|
||||||
");
|
";
|
||||||
RunDesignTimeTest(references);
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
|
|
||||||
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void PageWithNamespace_DesignTime()
|
public void PageWithNamespace_DesignTime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim);
|
var compilation = BaseCompilation;
|
||||||
RunDesignTimeTest(references);
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ViewWithNamespace_DesignTime()
|
public void ViewWithNamespace_DesignTime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim);
|
var compilation = BaseCompilation;
|
||||||
RunDesignTimeTest(references);
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ViewComponentTagHelper_DesignTime()
|
public void ViewComponentTagHelper_DesignTime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode: $@"
|
var appCode = $@"
|
||||||
public class TestViewComponent
|
public class TestViewComponent
|
||||||
{{
|
{{
|
||||||
public string Invoke(string firstName)
|
public string Invoke(string firstName)
|
||||||
|
|
@ -524,17 +555,22 @@ public class AllTagHelper : {typeof(TagHelper).FullName}
|
||||||
{{
|
{{
|
||||||
public string Bar {{ get; set; }}
|
public string Bar {{ get; set; }}
|
||||||
}}
|
}}
|
||||||
");
|
";
|
||||||
RunDesignTimeTest(references);
|
|
||||||
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
|
|
||||||
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private void RunRuntimeTest(
|
private void RunRuntimeTest(
|
||||||
IEnumerable<MetadataReference> compilationReferences,
|
CSharpCompilation baseCompilation,
|
||||||
IEnumerable<string> expectedErrors = null)
|
IEnumerable<string> expectedErrors = null)
|
||||||
{
|
{
|
||||||
|
Assert.Empty(baseCompilation.GetDiagnostics());
|
||||||
|
|
||||||
// Arrange
|
// Arrange
|
||||||
var engine = CreateRuntimeEngine(compilationReferences);
|
var engine = CreateRuntimeEngine(baseCompilation);
|
||||||
var document = CreateCodeDocument();
|
var document = CreateCodeDocument();
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
@ -543,15 +579,17 @@ public class AllTagHelper : {typeof(TagHelper).FullName}
|
||||||
// Assert
|
// Assert
|
||||||
AssertDocumentNodeMatchesBaseline(document.GetDocumentIntermediateNode());
|
AssertDocumentNodeMatchesBaseline(document.GetDocumentIntermediateNode());
|
||||||
AssertCSharpDocumentMatchesBaseline(document.GetCSharpDocument());
|
AssertCSharpDocumentMatchesBaseline(document.GetCSharpDocument());
|
||||||
AssertDocumentCompiles(document, compilationReferences, expectedErrors);
|
AssertDocumentCompiles(document, baseCompilation, expectedErrors);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void RunDesignTimeTest(
|
private void RunDesignTimeTest(
|
||||||
IEnumerable<MetadataReference> compilationReferences,
|
CSharpCompilation baseCompilation,
|
||||||
IEnumerable<string> expectedErrors = null)
|
IEnumerable<string> expectedErrors = null)
|
||||||
{
|
{
|
||||||
|
Assert.Empty(baseCompilation.GetDiagnostics());
|
||||||
|
|
||||||
// Arrange
|
// Arrange
|
||||||
var engine = CreateDesignTimeEngine(compilationReferences);
|
var engine = CreateDesignTimeEngine(baseCompilation);
|
||||||
var document = CreateCodeDocument();
|
var document = CreateCodeDocument();
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
@ -561,25 +599,21 @@ public class AllTagHelper : {typeof(TagHelper).FullName}
|
||||||
AssertDocumentNodeMatchesBaseline(document.GetDocumentIntermediateNode());
|
AssertDocumentNodeMatchesBaseline(document.GetDocumentIntermediateNode());
|
||||||
AssertCSharpDocumentMatchesBaseline(document.GetCSharpDocument());
|
AssertCSharpDocumentMatchesBaseline(document.GetCSharpDocument());
|
||||||
AssertSourceMappingsMatchBaseline(document);
|
AssertSourceMappingsMatchBaseline(document);
|
||||||
AssertDocumentCompiles(document, compilationReferences, expectedErrors);
|
AssertDocumentCompiles(document, baseCompilation, expectedErrors);
|
||||||
}
|
|
||||||
|
|
||||||
private static IEnumerable<MetadataReference> CreateCompilationReferences(string mvcShimName, string appCode = null)
|
|
||||||
{
|
|
||||||
var shimReferences = CreateMvcShimReferences(mvcShimName);
|
|
||||||
return CreateAppCodeReferences(appCode, shimReferences);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AssertDocumentCompiles(
|
private void AssertDocumentCompiles(
|
||||||
RazorCodeDocument document,
|
RazorCodeDocument document,
|
||||||
IEnumerable<MetadataReference> compilationReferences,
|
CSharpCompilation baseCompilation,
|
||||||
IEnumerable<string> expectedErrors = null)
|
IEnumerable<string> expectedErrors = null)
|
||||||
{
|
{
|
||||||
var cSharp = document.GetCSharpDocument().GeneratedCode;
|
var cSharp = document.GetCSharpDocument().GeneratedCode;
|
||||||
|
|
||||||
var syntaxTree = CSharpSyntaxTree.ParseText(cSharp);
|
var syntaxTree = CSharpSyntaxTree.ParseText(cSharp);
|
||||||
var options = new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary);
|
var options = new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary);
|
||||||
var compilation = CSharpCompilation.Create("CodeGenerationTestAssembly", new[] { syntaxTree }, compilationReferences, options);
|
|
||||||
|
var references = baseCompilation.References.Concat(new[] { baseCompilation.ToMetadataReference() });
|
||||||
|
var compilation = CSharpCompilation.Create("CodeGenerationTestAssembly", new[] { syntaxTree }, references, options);
|
||||||
|
|
||||||
var diagnostics = compilation.GetDiagnostics();
|
var diagnostics = compilation.GetDiagnostics();
|
||||||
|
|
||||||
|
|
@ -595,29 +629,29 @@ public class AllTagHelper : {typeof(TagHelper).FullName}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected RazorEngine CreateDesignTimeEngine(IEnumerable<MetadataReference> references)
|
protected RazorEngine CreateDesignTimeEngine(CSharpCompilation compilation)
|
||||||
{
|
{
|
||||||
|
var references = compilation.References.Concat(new[] { compilation.ToMetadataReference() });
|
||||||
|
|
||||||
return RazorEngine.CreateDesignTime(b =>
|
return RazorEngine.CreateDesignTime(b =>
|
||||||
{
|
{
|
||||||
RazorExtensions.Register(b);
|
RazorExtensions.Register(b);
|
||||||
|
|
||||||
b.Features.Add(GetMetadataReferenceFeature(references));
|
b.Features.Add(GetMetadataReferenceFeature(references));
|
||||||
b.Features.Add(new CompilationTagHelperFeature());
|
b.Features.Add(new CompilationTagHelperFeature());
|
||||||
b.Features.Add(new DefaultTagHelperDescriptorProvider() { DesignTime = true });
|
|
||||||
b.Features.Add(new ViewComponentTagHelperDescriptorProvider() { ForceEnabled = true });
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
protected RazorEngine CreateRuntimeEngine(IEnumerable<MetadataReference> references)
|
protected RazorEngine CreateRuntimeEngine(CSharpCompilation compilation)
|
||||||
{
|
{
|
||||||
|
var references = compilation.References.Concat(new[] { compilation.ToMetadataReference() });
|
||||||
|
|
||||||
return RazorEngine.Create(b =>
|
return RazorEngine.Create(b =>
|
||||||
{
|
{
|
||||||
RazorExtensions.Register(b);
|
RazorExtensions.Register(b);
|
||||||
|
|
||||||
b.Features.Add(GetMetadataReferenceFeature(references));
|
b.Features.Add(GetMetadataReferenceFeature(references));
|
||||||
b.Features.Add(new CompilationTagHelperFeature());
|
b.Features.Add(new CompilationTagHelperFeature());
|
||||||
b.Features.Add(new DefaultTagHelperDescriptorProvider() { DesignTime = true });
|
|
||||||
b.Features.Add(new ViewComponentTagHelperDescriptorProvider() { ForceEnabled = true });
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -664,48 +698,5 @@ public class AllTagHelper : {typeof(TagHelper).FullName}
|
||||||
References = references.ToList()
|
References = references.ToList()
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IEnumerable<MetadataReference> CreateAppCodeReferences(string appCode, IEnumerable<MetadataReference> shimReferences)
|
|
||||||
{
|
|
||||||
var references = new List<MetadataReference>(shimReferences);
|
|
||||||
|
|
||||||
if (appCode != null)
|
|
||||||
{
|
|
||||||
var appCodeSyntaxTrees = new List<SyntaxTree> { CSharpSyntaxTree.ParseText(appCode) };
|
|
||||||
|
|
||||||
var compilation = CSharpCompilation.Create(
|
|
||||||
"AppCode",
|
|
||||||
appCodeSyntaxTrees,
|
|
||||||
shimReferences,
|
|
||||||
options: new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary));
|
|
||||||
var stream = new MemoryStream();
|
|
||||||
var compilationResult = compilation.Emit(stream, options: new EmitOptions());
|
|
||||||
stream.Position = 0;
|
|
||||||
|
|
||||||
var diagString = string.Join(";", compilationResult.Diagnostics.Where(s => s.Severity == DiagnosticSeverity.Error).Select(s => s.ToString()));
|
|
||||||
Assert.True(compilationResult.Success, string.Format("Application code needed for tests didn't compile!: {0}", diagString));
|
|
||||||
|
|
||||||
references.Add(MetadataReference.CreateFromStream(stream));
|
|
||||||
}
|
|
||||||
|
|
||||||
return references;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static IEnumerable<MetadataReference> CreateMvcShimReferences(string mvcShimName)
|
|
||||||
{
|
|
||||||
var dllPath = Path.Combine(Directory.GetCurrentDirectory(), mvcShimName);
|
|
||||||
var assembly = Assembly.LoadFile(dllPath);
|
|
||||||
var assemblyDependencyContext = DependencyContext.Load(assembly);
|
|
||||||
|
|
||||||
var assemblyReferencePaths = assemblyDependencyContext.CompileLibraries.SelectMany(l => l.ResolveReferencePaths());
|
|
||||||
|
|
||||||
var references = assemblyReferencePaths
|
|
||||||
.Select(assemblyPath => MetadataReference.CreateFromFile(assemblyPath))
|
|
||||||
.ToList<MetadataReference>();
|
|
||||||
|
|
||||||
Assert.NotEmpty(references);
|
|
||||||
|
|
||||||
return references;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,45 @@
|
||||||
|
// 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 System.Reflection;
|
||||||
|
using Microsoft.CodeAnalysis;
|
||||||
|
using Microsoft.CodeAnalysis.CSharp;
|
||||||
|
|
||||||
|
namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
||||||
|
{
|
||||||
|
internal static class MvcShim
|
||||||
|
{
|
||||||
|
public static readonly string AssemblyName = "Microsoft.AspNetCore.Razor.Test.MvcShim";
|
||||||
|
|
||||||
|
private static Assembly _assembly;
|
||||||
|
private static CSharpCompilation _baseCompilation;
|
||||||
|
|
||||||
|
public static Assembly Assembly
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_assembly == null)
|
||||||
|
{
|
||||||
|
var filePath = Path.Combine(Directory.GetCurrentDirectory(), AssemblyName + ".dll");
|
||||||
|
_assembly = Assembly.LoadFrom(filePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
return _assembly;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static CSharpCompilation BaseCompilation
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_baseCompilation == null)
|
||||||
|
{
|
||||||
|
_baseCompilation = TestCompilation.Create(Assembly);
|
||||||
|
}
|
||||||
|
|
||||||
|
return _baseCompilation;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
// Copyright (c) .NET Foundation. All rights reserved.
|
// 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.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using Microsoft.AspNetCore.Razor.Language;
|
using Microsoft.AspNetCore.Razor.Language;
|
||||||
|
|
@ -14,8 +15,6 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
||||||
// This is just a basic integration test. There are detailed tests for the VCTH visitor and descriptor factory.
|
// This is just a basic integration test. There are detailed tests for the VCTH visitor and descriptor factory.
|
||||||
public class ViewComponentTagHelperDescriptorProviderTest
|
public class ViewComponentTagHelperDescriptorProviderTest
|
||||||
{
|
{
|
||||||
private static readonly Assembly _assembly = typeof(ViewComponentTagHelperDescriptorProviderTest).GetTypeInfo().Assembly;
|
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void DescriptorProvider_FindsVCTH()
|
public void DescriptorProvider_FindsVCTH()
|
||||||
{
|
{
|
||||||
|
|
@ -27,15 +26,14 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
||||||
}
|
}
|
||||||
";
|
";
|
||||||
|
|
||||||
var testCompilation = TestCompilation.Create(_assembly, CSharpSyntaxTree.ParseText(code));
|
var compilation = MvcShim.BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(code));
|
||||||
|
|
||||||
var context = TagHelperDescriptorProviderContext.Create();
|
var context = TagHelperDescriptorProviderContext.Create();
|
||||||
context.SetCompilation(testCompilation);
|
context.SetCompilation(compilation);
|
||||||
|
|
||||||
var provider = new ViewComponentTagHelperDescriptorProvider()
|
var provider = new ViewComponentTagHelperDescriptorProvider()
|
||||||
{
|
{
|
||||||
Engine = RazorEngine.CreateEmpty(b => { }),
|
Engine = RazorEngine.CreateEmpty(b => { }),
|
||||||
ForceEnabled = true,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var expectedDescriptor = TagHelperDescriptorBuilder.Create(
|
var expectedDescriptor = TagHelperDescriptorBuilder.Create(
|
||||||
|
|
@ -68,8 +66,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
||||||
provider.Execute(context);
|
provider.Execute(context);
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
var descriptor = context.Results.FirstOrDefault(d => TagHelperDescriptorComparer.CaseSensitive.Equals(d, expectedDescriptor));
|
Assert.Single(context.Results, d => TagHelperDescriptorComparer.CaseSensitive.Equals(d, expectedDescriptor));
|
||||||
Assert.NotNull(descriptor);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,14 +20,15 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X.IntegrationTests
|
||||||
{
|
{
|
||||||
public class CodeGenerationIntegrationTest : IntegrationTestBase
|
public class CodeGenerationIntegrationTest : IntegrationTestBase
|
||||||
{
|
{
|
||||||
private const string CurrentMvcShim = "Microsoft.AspNetCore.Razor.Test.MvcShim.Version1_X.dll";
|
|
||||||
private static readonly RazorSourceDocument DefaultImports = MvcRazorTemplateEngine.GetDefaultImports();
|
private static readonly RazorSourceDocument DefaultImports = MvcRazorTemplateEngine.GetDefaultImports();
|
||||||
|
|
||||||
|
private CSharpCompilation BaseCompilation => MvcShim.BaseCompilation.WithAssemblyName("AppCode");
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void InvalidNamespaceAtEOF_DesignTime()
|
public void InvalidNamespaceAtEOF_DesignTime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim);
|
var compilation = BaseCompilation;
|
||||||
RunDesignTimeTest(references);
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -40,8 +41,8 @@ public class MyService<TModel>
|
||||||
}
|
}
|
||||||
";
|
";
|
||||||
|
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode);
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
RunDesignTimeTest(references);
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -64,8 +65,8 @@ public class MyModel
|
||||||
|
|
||||||
}
|
}
|
||||||
";
|
";
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode);
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
RunDesignTimeTest(references);
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -89,36 +90,39 @@ public class MyModel
|
||||||
}
|
}
|
||||||
";
|
";
|
||||||
|
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode);
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
RunDesignTimeTest(references);
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void Basic_DesignTime()
|
public void Basic_DesignTime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim);
|
var compilation = BaseCompilation;
|
||||||
RunDesignTimeTest(references);
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void Sections_DesignTime()
|
public void Sections_DesignTime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode: $@"
|
var appCode = $@"
|
||||||
using Microsoft.AspNetCore.Mvc.ViewFeatures;
|
using Microsoft.AspNetCore.Mvc.ViewFeatures;
|
||||||
|
|
||||||
public class InputTestTagHelper : {typeof(TagHelper).FullName}
|
public class InputTestTagHelper : {typeof(TagHelper).FullName}
|
||||||
{{
|
{{
|
||||||
public ModelExpression For {{ get; set; }}
|
public ModelExpression For {{ get; set; }}
|
||||||
}}
|
}}
|
||||||
");
|
";
|
||||||
RunDesignTimeTest(references);
|
|
||||||
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
|
|
||||||
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void _ViewImports_DesignTime()
|
public void _ViewImports_DesignTime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim);
|
var compilation = BaseCompilation;
|
||||||
RunDesignTimeTest(references);
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -130,8 +134,8 @@ public class MyApp
|
||||||
public string MyProperty { get; set; }
|
public string MyProperty { get; set; }
|
||||||
}
|
}
|
||||||
";
|
";
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode);
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
RunDesignTimeTest(references);
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -153,8 +157,8 @@ public class MyApp
|
||||||
public string MyProperty { get; set; }
|
public string MyProperty { get; set; }
|
||||||
}
|
}
|
||||||
";
|
";
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode);
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
RunDesignTimeTest(references);
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -176,15 +180,15 @@ public class MyApp
|
||||||
public string MyProperty { get; set; }
|
public string MyProperty { get; set; }
|
||||||
}
|
}
|
||||||
";
|
";
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode);
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
RunDesignTimeTest(references);
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void Model_DesignTime()
|
public void Model_DesignTime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim);
|
var compilation = BaseCompilation;
|
||||||
RunDesignTimeTest(references);
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -196,28 +200,30 @@ public class ThisShouldBeGenerated
|
||||||
|
|
||||||
}";
|
}";
|
||||||
|
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode);
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
RunDesignTimeTest(references);
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ModelExpressionTagHelper_DesignTime()
|
public void ModelExpressionTagHelper_DesignTime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode: $@"
|
var appCode = $@"
|
||||||
using Microsoft.AspNetCore.Mvc.ViewFeatures;
|
using Microsoft.AspNetCore.Mvc.ViewFeatures;
|
||||||
|
|
||||||
public class InputTestTagHelper : {typeof(TagHelper).FullName}
|
public class InputTestTagHelper : {typeof(TagHelper).FullName}
|
||||||
{{
|
{{
|
||||||
public ModelExpression For {{ get; set; }}
|
public ModelExpression For {{ get; set; }}
|
||||||
}}
|
}}
|
||||||
");
|
";
|
||||||
RunDesignTimeTest(references);
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
|
|
||||||
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ViewComponentTagHelper_DesignTime()
|
public void ViewComponentTagHelper_DesignTime()
|
||||||
{
|
{
|
||||||
var references = CreateCompilationReferences(CurrentMvcShim, appCode: $@"
|
var appCode = $@"
|
||||||
public class TestViewComponent
|
public class TestViewComponent
|
||||||
{{
|
{{
|
||||||
public string Invoke(string firstName)
|
public string Invoke(string firstName)
|
||||||
|
|
@ -231,16 +237,21 @@ public class AllTagHelper : {typeof(TagHelper).FullName}
|
||||||
{{
|
{{
|
||||||
public string Bar {{ get; set; }}
|
public string Bar {{ get; set; }}
|
||||||
}}
|
}}
|
||||||
");
|
";
|
||||||
RunDesignTimeTest(references);
|
|
||||||
|
var compilation = BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(appCode));
|
||||||
|
|
||||||
|
RunDesignTimeTest(compilation);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void RunDesignTimeTest(
|
private void RunDesignTimeTest(
|
||||||
IEnumerable<MetadataReference> compilationReferences,
|
CSharpCompilation baseCompilation,
|
||||||
IEnumerable<string> expectedErrors = null)
|
IEnumerable<string> expectedErrors = null)
|
||||||
{
|
{
|
||||||
|
Assert.Empty(baseCompilation.GetDiagnostics());
|
||||||
|
|
||||||
// Arrange
|
// Arrange
|
||||||
var engine = CreateDesignTimeEngine(compilationReferences);
|
var engine = CreateDesignTimeEngine(baseCompilation);
|
||||||
var document = CreateCodeDocument();
|
var document = CreateCodeDocument();
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
@ -250,25 +261,21 @@ public class AllTagHelper : {typeof(TagHelper).FullName}
|
||||||
AssertDocumentNodeMatchesBaseline(document.GetDocumentIntermediateNode());
|
AssertDocumentNodeMatchesBaseline(document.GetDocumentIntermediateNode());
|
||||||
AssertCSharpDocumentMatchesBaseline(document.GetCSharpDocument());
|
AssertCSharpDocumentMatchesBaseline(document.GetCSharpDocument());
|
||||||
AssertSourceMappingsMatchBaseline(document);
|
AssertSourceMappingsMatchBaseline(document);
|
||||||
AssertDocumentCompiles(document, compilationReferences, expectedErrors);
|
AssertDocumentCompiles(document, baseCompilation, expectedErrors);
|
||||||
}
|
|
||||||
|
|
||||||
private static IEnumerable<MetadataReference> CreateCompilationReferences(string mvcShimName, string appCode = null)
|
|
||||||
{
|
|
||||||
var shimReferences = CreateMvcShimReferences(mvcShimName);
|
|
||||||
return CreateAppCodeReferences(appCode, shimReferences);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AssertDocumentCompiles(
|
private void AssertDocumentCompiles(
|
||||||
RazorCodeDocument document,
|
RazorCodeDocument document,
|
||||||
IEnumerable<MetadataReference> compilationReferences,
|
CSharpCompilation baseCompilation,
|
||||||
IEnumerable<string> expectedErrors = null)
|
IEnumerable<string> expectedErrors = null)
|
||||||
{
|
{
|
||||||
var cSharp = document.GetCSharpDocument().GeneratedCode;
|
var cSharp = document.GetCSharpDocument().GeneratedCode;
|
||||||
|
|
||||||
var syntaxTree = CSharpSyntaxTree.ParseText(cSharp);
|
var syntaxTree = CSharpSyntaxTree.ParseText(cSharp);
|
||||||
var options = new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary);
|
var options = new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary);
|
||||||
var compilation = CSharpCompilation.Create("CodeGenerationTestAssembly", new[] { syntaxTree }, compilationReferences, options);
|
|
||||||
|
var references = baseCompilation.References.Concat(new[] { baseCompilation.ToMetadataReference() });
|
||||||
|
var compilation = CSharpCompilation.Create("CodeGenerationTestAssembly", new[] { syntaxTree }, references, options);
|
||||||
|
|
||||||
var diagnostics = compilation.GetDiagnostics();
|
var diagnostics = compilation.GetDiagnostics();
|
||||||
|
|
||||||
|
|
@ -284,8 +291,10 @@ public class AllTagHelper : {typeof(TagHelper).FullName}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected RazorEngine CreateDesignTimeEngine(IEnumerable<MetadataReference> references)
|
protected RazorEngine CreateDesignTimeEngine(CSharpCompilation compilation)
|
||||||
{
|
{
|
||||||
|
var references = compilation.References.Concat(new[] { compilation.ToMetadataReference() });
|
||||||
|
|
||||||
return RazorEngine.CreateDesignTime(b =>
|
return RazorEngine.CreateDesignTime(b =>
|
||||||
{
|
{
|
||||||
RazorExtensions.Register(b);
|
RazorExtensions.Register(b);
|
||||||
|
|
@ -293,8 +302,6 @@ public class AllTagHelper : {typeof(TagHelper).FullName}
|
||||||
|
|
||||||
b.Features.Add(GetMetadataReferenceFeature(references));
|
b.Features.Add(GetMetadataReferenceFeature(references));
|
||||||
b.Features.Add(new CompilationTagHelperFeature());
|
b.Features.Add(new CompilationTagHelperFeature());
|
||||||
b.Features.Add(new DefaultTagHelperDescriptorProvider() { DesignTime = true });
|
|
||||||
b.Features.Add(new ViewComponentTagHelperDescriptorProvider() { ForceEnabled = true });
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,45 @@
|
||||||
|
// 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 System.Reflection;
|
||||||
|
using Microsoft.CodeAnalysis;
|
||||||
|
using Microsoft.CodeAnalysis.CSharp;
|
||||||
|
|
||||||
|
namespace Microsoft.AspNetCore.Mvc.Razor.Extensions
|
||||||
|
{
|
||||||
|
internal static class MvcShim
|
||||||
|
{
|
||||||
|
public static readonly string AssemblyName = "Microsoft.AspNetCore.Razor.Test.MvcShim.Version1_X";
|
||||||
|
|
||||||
|
private static Assembly _assembly;
|
||||||
|
private static CSharpCompilation _baseCompilation;
|
||||||
|
|
||||||
|
public static Assembly Assembly
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_assembly == null)
|
||||||
|
{
|
||||||
|
var filePath = Path.Combine(Directory.GetCurrentDirectory(), AssemblyName + ".dll");
|
||||||
|
_assembly = Assembly.LoadFrom(filePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
return _assembly;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static CSharpCompilation BaseCompilation
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_baseCompilation == null)
|
||||||
|
{
|
||||||
|
_baseCompilation = TestCompilation.Create(Assembly);
|
||||||
|
}
|
||||||
|
|
||||||
|
return _baseCompilation;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -14,8 +14,6 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X
|
||||||
// This is just a basic integration test. There are detailed tests for the VCTH visitor and descriptor factory.
|
// This is just a basic integration test. There are detailed tests for the VCTH visitor and descriptor factory.
|
||||||
public class ViewComponentTagHelperDescriptorProviderTest
|
public class ViewComponentTagHelperDescriptorProviderTest
|
||||||
{
|
{
|
||||||
private static readonly Assembly _assembly = typeof(ViewComponentTagHelperDescriptorProviderTest).GetTypeInfo().Assembly;
|
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void DescriptorProvider_FindsVCTH()
|
public void DescriptorProvider_FindsVCTH()
|
||||||
{
|
{
|
||||||
|
|
@ -27,15 +25,14 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X
|
||||||
}
|
}
|
||||||
";
|
";
|
||||||
|
|
||||||
var testCompilation = TestCompilation.Create(_assembly, CSharpSyntaxTree.ParseText(code));
|
var compilation = MvcShim.BaseCompilation.AddSyntaxTrees(CSharpSyntaxTree.ParseText(code));
|
||||||
|
|
||||||
var context = TagHelperDescriptorProviderContext.Create();
|
var context = TagHelperDescriptorProviderContext.Create();
|
||||||
context.SetCompilation(testCompilation);
|
context.SetCompilation(compilation);
|
||||||
|
|
||||||
var provider = new ViewComponentTagHelperDescriptorProvider()
|
var provider = new ViewComponentTagHelperDescriptorProvider()
|
||||||
{
|
{
|
||||||
Engine = RazorEngine.CreateEmpty(b => { }),
|
Engine = RazorEngine.CreateEmpty(b => { }),
|
||||||
ForceEnabled = true,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var expectedDescriptor = TagHelperDescriptorBuilder.Create(
|
var expectedDescriptor = TagHelperDescriptorBuilder.Create(
|
||||||
|
|
@ -68,8 +65,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X
|
||||||
provider.Execute(context);
|
provider.Execute(context);
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
var descriptor = context.Results.FirstOrDefault(d => TagHelperDescriptorComparer.CaseSensitive.Equals(d, expectedDescriptor));
|
Assert.Single(context.Results, d => TagHelperDescriptorComparer.CaseSensitive.Equals(d, expectedDescriptor));
|
||||||
Assert.NotNull(descriptor);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ namespace Microsoft.CodeAnalysis
|
||||||
|
|
||||||
public static string AssemblyName => "TestAssembly";
|
public static string AssemblyName => "TestAssembly";
|
||||||
|
|
||||||
public static Compilation Create(Assembly assembly, SyntaxTree syntaxTree = null)
|
public static CSharpCompilation Create(Assembly assembly, SyntaxTree syntaxTree = null)
|
||||||
{
|
{
|
||||||
IEnumerable<SyntaxTree> syntaxTrees = null;
|
IEnumerable<SyntaxTree> syntaxTrees = null;
|
||||||
|
|
||||||
|
|
@ -47,7 +47,7 @@ namespace Microsoft.CodeAnalysis
|
||||||
_referenceCache.TryAdd(assembly, metadataReferences);
|
_referenceCache.TryAdd(assembly, metadataReferences);
|
||||||
}
|
}
|
||||||
|
|
||||||
var compilation = CSharpCompilation.Create(AssemblyName, syntaxTrees, metadataReferences);
|
var compilation = CSharpCompilation.Create(AssemblyName, syntaxTrees, metadataReferences, new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary));
|
||||||
|
|
||||||
EnsureValidCompilation(compilation);
|
EnsureValidCompilation(compilation);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
// 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;
|
||||||
|
|
||||||
|
namespace Microsoft.AspNetCore.Mvc
|
||||||
|
{
|
||||||
|
public sealed class ViewComponentAttribute : Attribute
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
// 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;
|
||||||
|
|
||||||
|
namespace Microsoft.AspNetCore.Mvc
|
||||||
|
{
|
||||||
|
public sealed class ViewComponentAttribute : Attribute
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -392,7 +392,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
TagHelperDescriptor expectedDescriptor)
|
TagHelperDescriptor expectedDescriptor)
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(Compilation, designTime: false);
|
var factory = new DefaultTagHelperDescriptorFactory(Compilation, includeDocumentation: false, excludeHidden: false);
|
||||||
var typeSymbol = Compilation.GetTypeByMetadataName(tagHelperType.FullName);
|
var typeSymbol = Compilation.GetTypeByMetadataName(tagHelperType.FullName);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
@ -443,7 +443,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
TagHelperDescriptor expectedDescriptor)
|
TagHelperDescriptor expectedDescriptor)
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(Compilation, designTime: false);
|
var factory = new DefaultTagHelperDescriptorFactory(Compilation, includeDocumentation: false, excludeHidden: false);
|
||||||
var typeSymbol = Compilation.GetTypeByMetadataName(tagHelperType.FullName);
|
var typeSymbol = Compilation.GetTypeByMetadataName(tagHelperType.FullName);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
@ -499,7 +499,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
TagHelperDescriptor expectedDescriptor)
|
TagHelperDescriptor expectedDescriptor)
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(Compilation, designTime: false);
|
var factory = new DefaultTagHelperDescriptorFactory(Compilation, includeDocumentation: false, excludeHidden: false);
|
||||||
var typeSymbol = Compilation.GetTypeByMetadataName(tagHelperType.FullName);
|
var typeSymbol = Compilation.GetTypeByMetadataName(tagHelperType.FullName);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
@ -559,7 +559,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
TagHelperDescriptor expectedDescriptor)
|
TagHelperDescriptor expectedDescriptor)
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(Compilation, designTime: false);
|
var factory = new DefaultTagHelperDescriptorFactory(Compilation, includeDocumentation: false, excludeHidden: false);
|
||||||
var typeSymbol = Compilation.GetTypeByMetadataName(tagHelperType.FullName);
|
var typeSymbol = Compilation.GetTypeByMetadataName(tagHelperType.FullName);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
@ -734,7 +734,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
TagHelperDescriptor expectedDescriptor)
|
TagHelperDescriptor expectedDescriptor)
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(Compilation, designTime);
|
var factory = new DefaultTagHelperDescriptorFactory(Compilation, designTime, designTime);
|
||||||
var typeSymbol = Compilation.GetTypeByMetadataName(tagHelperType.FullName);
|
var typeSymbol = Compilation.GetTypeByMetadataName(tagHelperType.FullName);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
@ -931,7 +931,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
TagHelperDescriptor expectedDescriptor)
|
TagHelperDescriptor expectedDescriptor)
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(Compilation, designTime: false);
|
var factory = new DefaultTagHelperDescriptorFactory(Compilation, includeDocumentation: false, excludeHidden: false);
|
||||||
var typeSymbol = Compilation.GetTypeByMetadataName(tagHelperType.FullName);
|
var typeSymbol = Compilation.GetTypeByMetadataName(tagHelperType.FullName);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
@ -968,7 +968,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
string expectedAttributeName)
|
string expectedAttributeName)
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(Compilation, designTime: false);
|
var factory = new DefaultTagHelperDescriptorFactory(Compilation, includeDocumentation: false, excludeHidden: false);
|
||||||
var typeSymbol = Compilation.GetTypeByMetadataName(tagHelperType.FullName);
|
var typeSymbol = Compilation.GetTypeByMetadataName(tagHelperType.FullName);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
@ -1005,7 +1005,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
.PropertyName(validProperty2.Name)
|
.PropertyName(validProperty2.Name)
|
||||||
.TypeName(validProperty2.PropertyType.FullName),
|
.TypeName(validProperty2.PropertyType.FullName),
|
||||||
});
|
});
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(Compilation, designTime: false);
|
var factory = new DefaultTagHelperDescriptorFactory(Compilation, includeDocumentation: false, excludeHidden: false);
|
||||||
var typeSymbol = Compilation.GetTypeByMetadataName(typeof(OverriddenAttributeTagHelper).FullName);
|
var typeSymbol = Compilation.GetTypeByMetadataName(typeof(OverriddenAttributeTagHelper).FullName);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
@ -1039,7 +1039,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
.PropertyName(validProperty2.Name)
|
.PropertyName(validProperty2.Name)
|
||||||
.TypeName(validProperty2.PropertyType.FullName),
|
.TypeName(validProperty2.PropertyType.FullName),
|
||||||
});
|
});
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(Compilation, designTime: false);
|
var factory = new DefaultTagHelperDescriptorFactory(Compilation, includeDocumentation: false, excludeHidden: false);
|
||||||
var typeSymbol = Compilation.GetTypeByMetadataName(typeof(InheritedOverriddenAttributeTagHelper).FullName);
|
var typeSymbol = Compilation.GetTypeByMetadataName(typeof(InheritedOverriddenAttributeTagHelper).FullName);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
@ -1073,7 +1073,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
.PropertyName(validProperty2.Name)
|
.PropertyName(validProperty2.Name)
|
||||||
.TypeName(validProperty2.PropertyType.FullName),
|
.TypeName(validProperty2.PropertyType.FullName),
|
||||||
});
|
});
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(Compilation, designTime: false);
|
var factory = new DefaultTagHelperDescriptorFactory(Compilation, includeDocumentation: false, excludeHidden: false);
|
||||||
var typeSymbol = Compilation.GetTypeByMetadataName(typeof(InheritedNotOverriddenAttributeTagHelper).FullName);
|
var typeSymbol = Compilation.GetTypeByMetadataName(typeof(InheritedNotOverriddenAttributeTagHelper).FullName);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
@ -1098,7 +1098,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
.PropertyName(nameof(InheritedSingleAttributeTagHelper.IntAttribute))
|
.PropertyName(nameof(InheritedSingleAttributeTagHelper.IntAttribute))
|
||||||
.TypeName(typeof(int).FullName)
|
.TypeName(typeof(int).FullName)
|
||||||
});
|
});
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(Compilation, designTime: false);
|
var factory = new DefaultTagHelperDescriptorFactory(Compilation, includeDocumentation: false, excludeHidden: false);
|
||||||
var typeSymbol = Compilation.GetTypeByMetadataName(typeof(InheritedSingleAttributeTagHelper).FullName);
|
var typeSymbol = Compilation.GetTypeByMetadataName(typeof(InheritedSingleAttributeTagHelper).FullName);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
@ -1124,7 +1124,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
.PropertyName(intProperty.Name)
|
.PropertyName(intProperty.Name)
|
||||||
.TypeName(intProperty.PropertyType.FullName)
|
.TypeName(intProperty.PropertyType.FullName)
|
||||||
});
|
});
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(Compilation, designTime: false);
|
var factory = new DefaultTagHelperDescriptorFactory(Compilation, includeDocumentation: false, excludeHidden: false);
|
||||||
var typeSymbol = Compilation.GetTypeByMetadataName(typeof(SingleAttributeTagHelper).FullName);
|
var typeSymbol = Compilation.GetTypeByMetadataName(typeof(SingleAttributeTagHelper).FullName);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
@ -1151,7 +1151,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
.PropertyName(validProperty.Name)
|
.PropertyName(validProperty.Name)
|
||||||
.TypeName(validProperty.PropertyType.FullName)
|
.TypeName(validProperty.PropertyType.FullName)
|
||||||
});
|
});
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(Compilation, designTime: false);
|
var factory = new DefaultTagHelperDescriptorFactory(Compilation, includeDocumentation: false, excludeHidden: false);
|
||||||
var typeSymbol = Compilation.GetTypeByMetadataName(typeof(MissingAccessorTagHelper).FullName);
|
var typeSymbol = Compilation.GetTypeByMetadataName(typeof(MissingAccessorTagHelper).FullName);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
@ -1178,7 +1178,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
.PropertyName(validProperty.Name)
|
.PropertyName(validProperty.Name)
|
||||||
.TypeName(validProperty.PropertyType.FullName)
|
.TypeName(validProperty.PropertyType.FullName)
|
||||||
});
|
});
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(Compilation, designTime: false);
|
var factory = new DefaultTagHelperDescriptorFactory(Compilation, includeDocumentation: false, excludeHidden: false);
|
||||||
var typeSymbol = Compilation.GetTypeByMetadataName(typeof(NonPublicAccessorTagHelper).FullName);
|
var typeSymbol = Compilation.GetTypeByMetadataName(typeof(NonPublicAccessorTagHelper).FullName);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
@ -1203,7 +1203,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
.PropertyName(nameof(NotBoundAttributeTagHelper.BoundProperty))
|
.PropertyName(nameof(NotBoundAttributeTagHelper.BoundProperty))
|
||||||
.TypeName(typeof(object).FullName)
|
.TypeName(typeof(object).FullName)
|
||||||
});
|
});
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(Compilation, designTime: false);
|
var factory = new DefaultTagHelperDescriptorFactory(Compilation, includeDocumentation: false, excludeHidden: false);
|
||||||
var typeSymbol = Compilation.GetTypeByMetadataName(typeof(NotBoundAttributeTagHelper).FullName);
|
var typeSymbol = Compilation.GetTypeByMetadataName(typeof(NotBoundAttributeTagHelper).FullName);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
@ -1234,7 +1234,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
builder => builder.RequireTagName("p"),
|
builder => builder.RequireTagName("p"),
|
||||||
builder => builder.RequireTagName("div"),
|
builder => builder.RequireTagName("div"),
|
||||||
});
|
});
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(Compilation, designTime: false);
|
var factory = new DefaultTagHelperDescriptorFactory(Compilation, includeDocumentation: false, excludeHidden: false);
|
||||||
var typeSymbol = Compilation.GetTypeByMetadataName(typeof(MultiTagTagHelper).FullName);
|
var typeSymbol = Compilation.GetTypeByMetadataName(typeof(MultiTagTagHelper).FullName);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
@ -1260,7 +1260,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
.PropertyName(validProp.Name)
|
.PropertyName(validProp.Name)
|
||||||
.TypeName(validProp.PropertyType.FullName),
|
.TypeName(validProp.PropertyType.FullName),
|
||||||
});
|
});
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(Compilation, designTime: false);
|
var factory = new DefaultTagHelperDescriptorFactory(Compilation, includeDocumentation: false, excludeHidden: false);
|
||||||
var typeSymbol = Compilation.GetTypeByMetadataName(typeof(InheritedMultiTagTagHelper).FullName);
|
var typeSymbol = Compilation.GetTypeByMetadataName(typeof(InheritedMultiTagTagHelper).FullName);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
@ -1284,7 +1284,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
builder => builder.RequireTagName("div"),
|
builder => builder.RequireTagName("div"),
|
||||||
});
|
});
|
||||||
|
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(Compilation, designTime: false);
|
var factory = new DefaultTagHelperDescriptorFactory(Compilation, includeDocumentation: false, excludeHidden: false);
|
||||||
var typeSymbol = Compilation.GetTypeByMetadataName(typeof(DuplicateTagNameTagHelper).FullName);
|
var typeSymbol = Compilation.GetTypeByMetadataName(typeof(DuplicateTagNameTagHelper).FullName);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
@ -1303,7 +1303,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
"data-condition",
|
"data-condition",
|
||||||
typeof(OverrideNameTagHelper).FullName,
|
typeof(OverrideNameTagHelper).FullName,
|
||||||
AssemblyName);
|
AssemblyName);
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(Compilation, designTime: false);
|
var factory = new DefaultTagHelperDescriptorFactory(Compilation, includeDocumentation: false, excludeHidden: false);
|
||||||
var typeSymbol = Compilation.GetTypeByMetadataName(typeof(OverrideNameTagHelper).FullName);
|
var typeSymbol = Compilation.GetTypeByMetadataName(typeof(OverrideNameTagHelper).FullName);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
@ -1345,7 +1345,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
var compilation = TestCompilation.Create(_assembly, syntaxTree);
|
var compilation = TestCompilation.Create(_assembly, syntaxTree);
|
||||||
var tagHelperType = compilation.GetTypeByMetadataName("DynamicTestTagHelper");
|
var tagHelperType = compilation.GetTypeByMetadataName("DynamicTestTagHelper");
|
||||||
var attribute = tagHelperType.GetAttributes().Single();
|
var attribute = tagHelperType.GetAttributes().Single();
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(compilation, designTime: false);
|
var factory = new DefaultTagHelperDescriptorFactory(compilation, includeDocumentation: false, excludeHidden: false);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var descriptor = factory.CreateDescriptor(tagHelperType);
|
var descriptor = factory.CreateDescriptor(tagHelperType);
|
||||||
|
|
@ -1366,21 +1366,21 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
{
|
{
|
||||||
// name, expectedNames
|
// name, expectedNames
|
||||||
return new TheoryData<string, IEnumerable<string>>
|
return new TheoryData<string, IEnumerable<string>>
|
||||||
{
|
{
|
||||||
{ "p", new[] { "p" } },
|
{ "p", new[] { "p" } },
|
||||||
{ " p", new[] { "p" } },
|
{ " p", new[] { "p" } },
|
||||||
{ "p ", new[] { "p" } },
|
{ "p ", new[] { "p" } },
|
||||||
{ " p ", new[] { "p" } },
|
{ " p ", new[] { "p" } },
|
||||||
{ "p,div", new[] { "p", "div" } },
|
{ "p,div", new[] { "p", "div" } },
|
||||||
{ " p,div", new[] { "p", "div" } },
|
{ " p,div", new[] { "p", "div" } },
|
||||||
{ "p ,div", new[] { "p", "div" } },
|
{ "p ,div", new[] { "p", "div" } },
|
||||||
{ " p ,div", new[] { "p", "div" } },
|
{ " p ,div", new[] { "p", "div" } },
|
||||||
{ "p, div", new[] { "p", "div" } },
|
{ "p, div", new[] { "p", "div" } },
|
||||||
{ "p,div ", new[] { "p", "div" } },
|
{ "p,div ", new[] { "p", "div" } },
|
||||||
{ "p, div ", new[] { "p", "div" } },
|
{ "p, div ", new[] { "p", "div" } },
|
||||||
{ " p, div ", new[] { "p", "div" } },
|
{ " p, div ", new[] { "p", "div" } },
|
||||||
{ " p , div ", new[] { "p", "div" } },
|
{ " p , div ", new[] { "p", "div" } },
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1477,7 +1477,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
IEnumerable<BoundAttributeDescriptor> expectedAttributeDescriptors)
|
IEnumerable<BoundAttributeDescriptor> expectedAttributeDescriptors)
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(Compilation, designTime: false);
|
var factory = new DefaultTagHelperDescriptorFactory(Compilation, includeDocumentation: false, excludeHidden: false);
|
||||||
var typeSymbol = Compilation.GetTypeByMetadataName(type.FullName);
|
var typeSymbol = Compilation.GetTypeByMetadataName(type.FullName);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
@ -1527,7 +1527,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
var syntaxTree = CSharpSyntaxTree.ParseText(text);
|
var syntaxTree = CSharpSyntaxTree.ParseText(text);
|
||||||
var compilation = TestCompilation.Create(_assembly, syntaxTree);
|
var compilation = TestCompilation.Create(_assembly, syntaxTree);
|
||||||
var tagHelperType = compilation.GetTypeByMetadataName("DynamicTestTagHelper");
|
var tagHelperType = compilation.GetTypeByMetadataName("DynamicTestTagHelper");
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(compilation, designTime: false);
|
var factory = new DefaultTagHelperDescriptorFactory(compilation, includeDocumentation: false, excludeHidden: false);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var descriptor = factory.CreateDescriptor(tagHelperType);
|
var descriptor = factory.CreateDescriptor(tagHelperType);
|
||||||
|
|
@ -1567,7 +1567,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
var syntaxTree = CSharpSyntaxTree.ParseText(text);
|
var syntaxTree = CSharpSyntaxTree.ParseText(text);
|
||||||
var compilation = TestCompilation.Create(_assembly, syntaxTree);
|
var compilation = TestCompilation.Create(_assembly, syntaxTree);
|
||||||
var tagHelperType = compilation.GetTypeByMetadataName("DynamicTestTagHelper");
|
var tagHelperType = compilation.GetTypeByMetadataName("DynamicTestTagHelper");
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(compilation, designTime: false);
|
var factory = new DefaultTagHelperDescriptorFactory(compilation, includeDocumentation: false, excludeHidden: false);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var descriptor = factory.CreateDescriptor(tagHelperType);
|
var descriptor = factory.CreateDescriptor(tagHelperType);
|
||||||
|
|
@ -1610,7 +1610,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
var syntaxTree = CSharpSyntaxTree.ParseText(text);
|
var syntaxTree = CSharpSyntaxTree.ParseText(text);
|
||||||
var compilation = TestCompilation.Create(_assembly, syntaxTree);
|
var compilation = TestCompilation.Create(_assembly, syntaxTree);
|
||||||
var tagHelperType = compilation.GetTypeByMetadataName("DynamicTestTagHelper");
|
var tagHelperType = compilation.GetTypeByMetadataName("DynamicTestTagHelper");
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(compilation, designTime: false);
|
var factory = new DefaultTagHelperDescriptorFactory(compilation, includeDocumentation: false, excludeHidden: false);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var descriptor = factory.CreateDescriptor(tagHelperType);
|
var descriptor = factory.CreateDescriptor(tagHelperType);
|
||||||
|
|
@ -1656,7 +1656,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
var syntaxTree = CSharpSyntaxTree.ParseText(text);
|
var syntaxTree = CSharpSyntaxTree.ParseText(text);
|
||||||
var compilation = TestCompilation.Create(_assembly, syntaxTree);
|
var compilation = TestCompilation.Create(_assembly, syntaxTree);
|
||||||
var tagHelperType = compilation.GetTypeByMetadataName("DynamicTestTagHelper");
|
var tagHelperType = compilation.GetTypeByMetadataName("DynamicTestTagHelper");
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(compilation, designTime: false);
|
var factory = new DefaultTagHelperDescriptorFactory(compilation, includeDocumentation: false, excludeHidden: false);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var descriptor = factory.CreateDescriptor(tagHelperType);
|
var descriptor = factory.CreateDescriptor(tagHelperType);
|
||||||
|
|
@ -1698,7 +1698,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
var syntaxTree = CSharpSyntaxTree.ParseText(text);
|
var syntaxTree = CSharpSyntaxTree.ParseText(text);
|
||||||
var compilation = TestCompilation.Create(_assembly, syntaxTree);
|
var compilation = TestCompilation.Create(_assembly, syntaxTree);
|
||||||
var tagHelperType = compilation.GetTypeByMetadataName("DynamicTestTagHelper");
|
var tagHelperType = compilation.GetTypeByMetadataName("DynamicTestTagHelper");
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(compilation, designTime: false);
|
var factory = new DefaultTagHelperDescriptorFactory(compilation, includeDocumentation: false, excludeHidden: false);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var descriptor = factory.CreateDescriptor(tagHelperType);
|
var descriptor = factory.CreateDescriptor(tagHelperType);
|
||||||
|
|
@ -1739,7 +1739,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
var syntaxTree = CSharpSyntaxTree.ParseText(text);
|
var syntaxTree = CSharpSyntaxTree.ParseText(text);
|
||||||
var compilation = TestCompilation.Create(_assembly, syntaxTree);
|
var compilation = TestCompilation.Create(_assembly, syntaxTree);
|
||||||
var tagHelperType = compilation.GetTypeByMetadataName("DynamicTestTagHelper");
|
var tagHelperType = compilation.GetTypeByMetadataName("DynamicTestTagHelper");
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(compilation, designTime: false);
|
var factory = new DefaultTagHelperDescriptorFactory(compilation, includeDocumentation: false, excludeHidden: false);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var descriptor = factory.CreateDescriptor(tagHelperType);
|
var descriptor = factory.CreateDescriptor(tagHelperType);
|
||||||
|
|
@ -1754,7 +1754,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var objectAssemblyName = typeof(Enumerable).GetTypeInfo().Assembly.GetName().Name;
|
var objectAssemblyName = typeof(Enumerable).GetTypeInfo().Assembly.GetName().Name;
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(Compilation, designTime: false);
|
var factory = new DefaultTagHelperDescriptorFactory(Compilation, includeDocumentation: false, excludeHidden: false);
|
||||||
var typeSymbol = Compilation.GetTypeByMetadataName(typeof(Enumerable).FullName);
|
var typeSymbol = Compilation.GetTypeByMetadataName(typeof(Enumerable).FullName);
|
||||||
var expectedDescriptor =
|
var expectedDescriptor =
|
||||||
CreateTagHelperDescriptor("enumerable", "System.Linq.Enumerable", typeSymbol.ContainingAssembly.Identity.Name);
|
CreateTagHelperDescriptor("enumerable", "System.Linq.Enumerable", typeSymbol.ContainingAssembly.Identity.Name);
|
||||||
|
|
@ -2010,7 +2010,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
IEnumerable<RazorDiagnostic> expectedDiagnostics)
|
IEnumerable<RazorDiagnostic> expectedDiagnostics)
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(Compilation, designTime: false);
|
var factory = new DefaultTagHelperDescriptorFactory(Compilation, includeDocumentation: false, excludeHidden: false);
|
||||||
var typeSymbol = Compilation.GetTypeByMetadataName(tagHelperType.FullName);
|
var typeSymbol = Compilation.GetTypeByMetadataName(tagHelperType.FullName);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
@ -2069,12 +2069,12 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
[MemberData(nameof(TagOutputHintData))]
|
[MemberData(nameof(TagOutputHintData))]
|
||||||
public void CreateDescriptor_CreatesDesignTimeDescriptorsWithOutputElementHint(
|
public void CreateDescriptor_CreatesDescriptorsWithOutputElementHint(
|
||||||
Type tagHelperType,
|
Type tagHelperType,
|
||||||
TagHelperDescriptor expectedDescriptor)
|
TagHelperDescriptor expectedDescriptor)
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(Compilation, designTime: true);
|
var factory = new DefaultTagHelperDescriptorFactory(Compilation, includeDocumentation: false, excludeHidden: false);
|
||||||
var typeSymbol = Compilation.GetTypeByMetadataName(tagHelperType.FullName);
|
var typeSymbol = Compilation.GetTypeByMetadataName(tagHelperType.FullName);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
@ -2102,7 +2102,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
{
|
{
|
||||||
}");
|
}");
|
||||||
var compilation = TestCompilation.Create(_assembly, syntaxTree);
|
var compilation = TestCompilation.Create(_assembly, syntaxTree);
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(compilation, designTime: true);
|
var factory = new DefaultTagHelperDescriptorFactory(compilation, includeDocumentation: true, excludeHidden: false);
|
||||||
var typeSymbol = compilation.GetTypeByMetadataName("DocumentedTagHelper");
|
var typeSymbol = compilation.GetTypeByMetadataName("DocumentedTagHelper");
|
||||||
var expectedDocumentation =
|
var expectedDocumentation =
|
||||||
@"<member name=""T:DocumentedTagHelper"">
|
@"<member name=""T:DocumentedTagHelper"">
|
||||||
|
|
@ -2151,7 +2151,7 @@ namespace Microsoft.CodeAnalysis.Razor.Workspaces
|
||||||
public List<bool> RemarksAndSummaryProperty { get; set; }
|
public List<bool> RemarksAndSummaryProperty { get; set; }
|
||||||
}");
|
}");
|
||||||
var compilation = TestCompilation.Create(_assembly, syntaxTree);
|
var compilation = TestCompilation.Create(_assembly, syntaxTree);
|
||||||
var factory = new DefaultTagHelperDescriptorFactory(compilation, designTime: true);
|
var factory = new DefaultTagHelperDescriptorFactory(compilation, includeDocumentation: true, excludeHidden: false);
|
||||||
var typeSymbol = compilation.GetTypeByMetadataName("DocumentedTagHelper");
|
var typeSymbol = compilation.GetTypeByMetadataName("DocumentedTagHelper");
|
||||||
var expectedDocumentations = new[]
|
var expectedDocumentations = new[]
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -18,11 +18,10 @@ namespace Microsoft.CodeAnalysis.Razor
|
||||||
// Arrange
|
// Arrange
|
||||||
var editorBrowsableTypeName = "Microsoft.CodeAnalysis.Razor.Workspaces.Test.EditorBrowsableTagHelper";
|
var editorBrowsableTypeName = "Microsoft.CodeAnalysis.Razor.Workspaces.Test.EditorBrowsableTagHelper";
|
||||||
var compilation = TestCompilation.Create(_assembly);
|
var compilation = TestCompilation.Create(_assembly);
|
||||||
var descriptorProvider = new DefaultTagHelperDescriptorProvider()
|
var descriptorProvider = new DefaultTagHelperDescriptorProvider();
|
||||||
{
|
|
||||||
DesignTime = true,
|
|
||||||
};
|
|
||||||
var context = TagHelperDescriptorProviderContext.Create();
|
var context = TagHelperDescriptorProviderContext.Create();
|
||||||
|
context.ExcludeHidden = true;
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
descriptorProvider.Execute(context);
|
descriptorProvider.Execute(context);
|
||||||
|
|
|
||||||
|
|
@ -187,6 +187,7 @@ namespace Microsoft.VisualStudio.Editor.Razor
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
Assert.Single(engine.Engine.Features.OfType<MyCoolNewFeature>());
|
Assert.Single(engine.Engine.Features.OfType<MyCoolNewFeature>());
|
||||||
|
Assert.Single(engine.Engine.Features.OfType<DefaultTagHelperDescriptorProvider>());
|
||||||
Assert.Single(engine.Engine.Features.OfType<MvcLatest.ViewComponentTagHelperDescriptorProvider>());
|
Assert.Single(engine.Engine.Features.OfType<MvcLatest.ViewComponentTagHelperDescriptorProvider>());
|
||||||
Assert.Single(engine.Engine.Features.OfType<MvcLatest.MvcViewDocumentClassifierPass>());
|
Assert.Single(engine.Engine.Features.OfType<MvcLatest.MvcViewDocumentClassifierPass>());
|
||||||
Assert.Single(engine.Engine.Features.OfType<MvcLatest.ViewComponentTagHelperPass>());
|
Assert.Single(engine.Engine.Features.OfType<MvcLatest.ViewComponentTagHelperPass>());
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue