Added a unit test to repro the issue
This commit is contained in:
parent
69c2d08326
commit
e6f68eb244
|
|
@ -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))
|
||||||
|
|
|
||||||
|
|
@ -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")))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue