Added a unit test to repro the issue

This commit is contained in:
Artak Mkrtchyan 2018-02-08 15:50:38 -08:00
parent 69c2d08326
commit e6f68eb244
No known key found for this signature in database
GPG Key ID: 64D580ACBA8CA645
2 changed files with 44 additions and 7 deletions

View File

@ -488,7 +488,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
private void ValidateParentAllowsContent(Span child, ErrorSink errorSink) private void ValidateParentAllowsContent(Span child, ErrorSink errorSink)
{ {
if (HasAllowedChildren()) if (child.Kind == SpanKindInternal.Comment || HasAllowedChildren())
{ {
var content = child.Content; var content = child.Content;
if (!string.IsNullOrWhiteSpace(content)) if (!string.IsNullOrWhiteSpace(content))

View File

@ -254,7 +254,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
var descriptors = new TagHelperDescriptor[] var descriptors = new TagHelperDescriptor[]
{ {
TagHelperDescriptorBuilder.Create("InputTagHelper", "SomeAssembly") TagHelperDescriptorBuilder.Create("InputTagHelper", "SomeAssembly")
.TagMatchingRuleDescriptor(rule => .TagMatchingRuleDescriptor(rule =>
rule rule
.RequireTagName("input") .RequireTagName("input")
.RequireTagStructure(TagStructure.WithoutEndTag)) .RequireTagStructure(TagStructure.WithoutEndTag))
@ -371,7 +371,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
.TagMatchingRuleDescriptor(rule => rule.RequireTagName("strong")) .TagMatchingRuleDescriptor(rule => rule.RequireTagName("strong"))
.Build(), .Build(),
}; };
// Act & Assert // Act & Assert
EvaluateData( EvaluateData(
descriptors, descriptors,
@ -793,7 +793,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
var descriptors = new TagHelperDescriptor[] var descriptors = new TagHelperDescriptor[]
{ {
TagHelperDescriptorBuilder.Create("StrongTagHelper", "SomeAssembly") TagHelperDescriptorBuilder.Create("StrongTagHelper", "SomeAssembly")
.TagMatchingRuleDescriptor(rule => .TagMatchingRuleDescriptor(rule =>
rule rule
.RequireTagName("strong") .RequireTagName("strong")
.RequireAttributeDescriptor(attribute => attribute.Name("required"))) .RequireAttributeDescriptor(attribute => attribute.Name("required")))
@ -830,7 +830,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
.TagMatchingRuleDescriptor(rule => rule.RequireTagName("strong")) .TagMatchingRuleDescriptor(rule => rule.RequireTagName("strong"))
.Build(), .Build(),
TagHelperDescriptorBuilder.Create("BRTagHelper", "SomeAssembly") TagHelperDescriptorBuilder.Create("BRTagHelper", "SomeAssembly")
.TagMatchingRuleDescriptor(rule => .TagMatchingRuleDescriptor(rule =>
rule rule
.RequireTagName("br") .RequireTagName("br")
.RequireTagStructure(TagStructure.WithoutEndTag)) .RequireTagStructure(TagStructure.WithoutEndTag))
@ -1108,6 +1108,43 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
EvaluateData(descriptors, documentContent, (MarkupBlock)expectedOutput, (RazorDiagnostic[])expectedErrors); EvaluateData(descriptors, documentContent, (MarkupBlock)expectedOutput, (RazorDiagnostic[])expectedErrors);
} }
[Fact]
public void Rewrite_AllowsCommentsAsChildren()
{
// Arrangestring documentContent,
IEnumerable<string> allowedChildren = new List<string> { "b" };
string literalPrefix = "";
string commentOutput = $"<!--Hello World-->";
string expectedOutput = $"<p>{literalPrefix}{commentOutput}<b>asdf</b></p>";
var pTagHelperBuilder = TagHelperDescriptorBuilder
.Create("PTagHelper", "SomeAssembly")
.TagMatchingRuleDescriptor(rule => rule.RequireTagName("p"));
foreach (var childTag in allowedChildren)
{
pTagHelperBuilder.AllowChildTag(childTag);
}
var descriptors = new TagHelperDescriptor[]
{
pTagHelperBuilder.Build()
};
var factory = new SpanFactory();
var blockFactory = new BlockFactory(factory);
var expectedMarkup = new MarkupBlock(
new MarkupTagHelperBlock("p",
factory.Markup($"{literalPrefix}{commentOutput}")));
// Act & Assert
EvaluateData(
descriptors,
expectedOutput,
expectedMarkup,
Array.Empty<RazorDiagnostic>());
}
[Fact] [Fact]
public void Rewrite_UnderstandsNullTagNameWithAllowedChildrenForCatchAll() public void Rewrite_UnderstandsNullTagNameWithAllowedChildrenForCatchAll()
{ {
@ -1173,7 +1210,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
var descriptors = new TagHelperDescriptor[] var descriptors = new TagHelperDescriptor[]
{ {
TagHelperDescriptorBuilder.Create("InputTagHelper", "SomeAssembly") TagHelperDescriptorBuilder.Create("InputTagHelper", "SomeAssembly")
.TagMatchingRuleDescriptor(rule => .TagMatchingRuleDescriptor(rule =>
rule rule
.RequireTagName("input") .RequireTagName("input")
.RequireTagStructure(TagStructure.WithoutEndTag)) .RequireTagStructure(TagStructure.WithoutEndTag))
@ -1646,7 +1683,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
var descriptors = new TagHelperDescriptor[] var descriptors = new TagHelperDescriptor[]
{ {
TagHelperDescriptorBuilder.Create("pTagHelper", "SomeAssembly") TagHelperDescriptorBuilder.Create("pTagHelper", "SomeAssembly")
.TagMatchingRuleDescriptor(rule => .TagMatchingRuleDescriptor(rule =>
rule rule
.RequireTagName("p") .RequireTagName("p")
.RequireAttributeDescriptor(attribute => attribute.Name("class"))) .RequireAttributeDescriptor(attribute => attribute.Name("class")))