parent
275bc148d1
commit
8211dfff9c
|
|
@ -7,104 +7,57 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
{
|
||||
public class HtmlErrorTest : CsHtmlMarkupParserTestBase
|
||||
{
|
||||
public HtmlErrorTest()
|
||||
{
|
||||
UseBaselineTests = true;
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParseBlockAllowsInvalidTagNamesAsLongAsParserCanIdentifyEndTag()
|
||||
{
|
||||
ParseBlockTest("<1-foo+bar>foo</1-foo+bar>",
|
||||
new MarkupBlock(
|
||||
new MarkupTagBlock(
|
||||
Factory.Markup("<1-foo+bar>").Accepts(AcceptedCharactersInternal.None)),
|
||||
Factory.Markup("foo"),
|
||||
new MarkupTagBlock(
|
||||
Factory.Markup("</1-foo+bar>").Accepts(AcceptedCharactersInternal.None))));
|
||||
ParseBlockTest("<1-foo+bar>foo</1-foo+bar>");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParseBlockThrowsErrorIfStartTextTagContainsTextAfterName()
|
||||
{
|
||||
ParseBlockTest("<text foo bar></text>",
|
||||
new MarkupBlock(
|
||||
new MarkupTagBlock(
|
||||
Factory.MarkupTransition("<text foo bar>").Accepts(AcceptedCharactersInternal.Any)),
|
||||
new MarkupTagBlock(
|
||||
Factory.MarkupTransition("</text>"))),
|
||||
RazorDiagnosticFactory.CreateParsing_TextTagCannotContainAttributes(
|
||||
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 4)));
|
||||
ParseBlockTest("<text foo bar></text>");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParseBlockThrowsErrorIfEndTextTagContainsTextAfterName()
|
||||
{
|
||||
ParseBlockTest("<text></text foo bar>",
|
||||
new MarkupBlock(
|
||||
new MarkupTagBlock(
|
||||
Factory.MarkupTransition("<text>")),
|
||||
new MarkupTagBlock(
|
||||
Factory.MarkupTransition("</text foo bar>").Accepts(AcceptedCharactersInternal.Any))),
|
||||
RazorDiagnosticFactory.CreateParsing_TextTagCannotContainAttributes(
|
||||
new SourceSpan(new SourceLocation(8, 0, 8), contentLength: 4)));
|
||||
ParseBlockTest("<text></text foo bar>");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParseBlockThrowsExceptionIfBlockDoesNotStartWithTag()
|
||||
{
|
||||
ParseBlockTest("foo bar <baz>",
|
||||
new MarkupBlock(),
|
||||
RazorDiagnosticFactory.CreateParsing_MarkupBlockMustStartWithTag(
|
||||
new SourceSpan(SourceLocation.Zero, contentLength: 3)));
|
||||
ParseBlockTest("foo bar <baz>");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParseBlockStartingWithEndTagProducesRazorErrorThenOutputsMarkupSegmentAndEndsBlock()
|
||||
{
|
||||
ParseBlockTest("</foo> bar baz",
|
||||
new MarkupBlock(
|
||||
new MarkupTagBlock(
|
||||
Factory.Markup("</foo>").Accepts(AcceptedCharactersInternal.None)),
|
||||
Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)),
|
||||
RazorDiagnosticFactory.CreateParsing_UnexpectedEndTag(
|
||||
new SourceSpan(new SourceLocation(2, 0, 2), contentLength: 3), "foo"));
|
||||
ParseBlockTest("</foo> bar baz");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParseBlockWithUnclosedTopLevelTagThrowsMissingEndTagParserExceptionOnOutermostUnclosedTag()
|
||||
{
|
||||
ParseBlockTest("<p><foo></bar>",
|
||||
new MarkupBlock(
|
||||
new MarkupTagBlock(
|
||||
Factory.Markup("<p>").Accepts(AcceptedCharactersInternal.None)),
|
||||
new MarkupTagBlock(
|
||||
Factory.Markup("<foo>").Accepts(AcceptedCharactersInternal.None)),
|
||||
new MarkupTagBlock(
|
||||
Factory.Markup("</bar>").Accepts(AcceptedCharactersInternal.None))),
|
||||
RazorDiagnosticFactory.CreateParsing_MissingEndTag(
|
||||
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"));
|
||||
ParseBlockTest("<p><foo></bar>");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParseBlockWithUnclosedTagAtEOFThrowsMissingEndTagException()
|
||||
{
|
||||
ParseBlockTest("<foo>blah blah blah blah blah",
|
||||
new MarkupBlock(
|
||||
new MarkupTagBlock(
|
||||
Factory.Markup("<foo>").Accepts(AcceptedCharactersInternal.None)),
|
||||
Factory.Markup("blah blah blah blah blah")),
|
||||
RazorDiagnosticFactory.CreateParsing_MissingEndTag(
|
||||
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 3), "foo"));
|
||||
ParseBlockTest("<foo>blah blah blah blah blah");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParseBlockWithUnfinishedTagAtEOFThrowsIncompleteTagException()
|
||||
{
|
||||
ParseBlockTest("<foo bar=baz",
|
||||
new MarkupBlock(
|
||||
new MarkupTagBlock(
|
||||
Factory.Markup("<foo"),
|
||||
new MarkupBlock(new AttributeBlockChunkGenerator("bar", new LocationTagged<string>(" bar=", 4, 0, 4), new LocationTagged<string>(string.Empty, 12, 0, 12)),
|
||||
Factory.Markup(" bar=").With(SpanChunkGenerator.Null),
|
||||
Factory.Markup("baz").With(new LiteralAttributeChunkGenerator(new LocationTagged<string>(string.Empty, 9, 0, 9), new LocationTagged<string>("baz", 9, 0, 9)))))),
|
||||
RazorDiagnosticFactory.CreateParsing_UnfinishedTag(
|
||||
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 3), "foo"));
|
||||
ParseBlockTest("<foo bar=baz");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
Markup block - Gen<None> - 26 - (0:0,0)
|
||||
Tag block - Gen<None> - 11 - (0:0,0)
|
||||
Markup span - Gen<Markup> - [<1-foo+bar>] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:3
|
||||
HtmlSymbolType.OpenAngle;[<];
|
||||
HtmlSymbolType.Text;[1-foo+bar];
|
||||
HtmlSymbolType.CloseAngle;[>];
|
||||
Markup span - Gen<Markup> - [foo] - SpanEditHandler;Accepts:Any - (11:0,11) - Symbols:1
|
||||
HtmlSymbolType.Text;[foo];
|
||||
Tag block - Gen<None> - 12 - (14:0,14)
|
||||
Markup span - Gen<Markup> - [</1-foo+bar>] - SpanEditHandler;Accepts:None - (14:0,14) - Symbols:4
|
||||
HtmlSymbolType.OpenAngle;[<];
|
||||
HtmlSymbolType.ForwardSlash;[/];
|
||||
HtmlSymbolType.Text;[1-foo+bar];
|
||||
HtmlSymbolType.CloseAngle;[>];
|
||||
|
|
@ -0,0 +1 @@
|
|||
(1,3): Error RZ1026: Encountered end tag "foo" with no matching start tag. Are your start/end tags properly balanced?
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
Markup block - Gen<None> - 7 - (0:0,0)
|
||||
Tag block - Gen<None> - 6 - (0:0,0)
|
||||
Markup span - Gen<Markup> - [</foo>] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:4
|
||||
HtmlSymbolType.OpenAngle;[<];
|
||||
HtmlSymbolType.ForwardSlash;[/];
|
||||
HtmlSymbolType.Text;[foo];
|
||||
HtmlSymbolType.CloseAngle;[>];
|
||||
Markup span - Gen<Markup> - [ ] - SpanEditHandler;Accepts:None - (6:0,6) - Symbols:1
|
||||
HtmlSymbolType.WhiteSpace;[ ];
|
||||
|
|
@ -0,0 +1 @@
|
|||
(1,9): Error RZ1023: "<text>" and "</text>" tags cannot contain attributes.
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
Markup block - Gen<None> - 21 - (0:0,0)
|
||||
Tag block - Gen<None> - 6 - (0:0,0)
|
||||
Transition span - Gen<None> - [<text>] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:3
|
||||
HtmlSymbolType.OpenAngle;[<];
|
||||
HtmlSymbolType.Text;[text];
|
||||
HtmlSymbolType.CloseAngle;[>];
|
||||
Tag block - Gen<None> - 15 - (6:0,6)
|
||||
Transition span - Gen<None> - [</text foo bar>] - SpanEditHandler;Accepts:Any - (6:0,6) - Symbols:8
|
||||
HtmlSymbolType.OpenAngle;[<];
|
||||
HtmlSymbolType.ForwardSlash;[/];
|
||||
HtmlSymbolType.Text;[text];
|
||||
HtmlSymbolType.WhiteSpace;[ ];
|
||||
HtmlSymbolType.Text;[foo];
|
||||
HtmlSymbolType.WhiteSpace;[ ];
|
||||
HtmlSymbolType.Text;[bar];
|
||||
HtmlSymbolType.CloseAngle;[>];
|
||||
|
|
@ -0,0 +1 @@
|
|||
(1,2): Error RZ1023: "<text>" and "</text>" tags cannot contain attributes.
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
Markup block - Gen<None> - 21 - (0:0,0)
|
||||
Tag block - Gen<None> - 14 - (0:0,0)
|
||||
Transition span - Gen<None> - [<text foo bar>] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:7
|
||||
HtmlSymbolType.OpenAngle;[<];
|
||||
HtmlSymbolType.Text;[text];
|
||||
HtmlSymbolType.WhiteSpace;[ ];
|
||||
HtmlSymbolType.Text;[foo];
|
||||
HtmlSymbolType.WhiteSpace;[ ];
|
||||
HtmlSymbolType.Text;[bar];
|
||||
HtmlSymbolType.CloseAngle;[>];
|
||||
Tag block - Gen<None> - 7 - (14:0,14)
|
||||
Transition span - Gen<None> - [</text>] - SpanEditHandler;Accepts:None - (14:0,14) - Symbols:4
|
||||
HtmlSymbolType.OpenAngle;[<];
|
||||
HtmlSymbolType.ForwardSlash;[/];
|
||||
HtmlSymbolType.Text;[text];
|
||||
HtmlSymbolType.CloseAngle;[>];
|
||||
|
|
@ -0,0 +1 @@
|
|||
(1,1): Error RZ1021: Markup in a code block must start with a tag and all start tags must be matched with end tags. Do not use unclosed tags like "<br>". Instead use self-closing tags like "<br/>".
|
||||
|
|
@ -0,0 +1 @@
|
|||
Markup block - Gen<None> - 0 - (0:0,0)
|
||||
|
|
@ -0,0 +1 @@
|
|||
(1,2): Error RZ1025: The "foo" element was not closed. All elements must be either self-closing or have a matching end tag.
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
Markup block - Gen<None> - 29 - (0:0,0)
|
||||
Tag block - Gen<None> - 5 - (0:0,0)
|
||||
Markup span - Gen<Markup> - [<foo>] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:3
|
||||
HtmlSymbolType.OpenAngle;[<];
|
||||
HtmlSymbolType.Text;[foo];
|
||||
HtmlSymbolType.CloseAngle;[>];
|
||||
Markup span - Gen<Markup> - [blah blah blah blah blah] - SpanEditHandler;Accepts:Any - (5:0,5) - Symbols:9
|
||||
HtmlSymbolType.Text;[blah];
|
||||
HtmlSymbolType.WhiteSpace;[ ];
|
||||
HtmlSymbolType.Text;[blah];
|
||||
HtmlSymbolType.WhiteSpace;[ ];
|
||||
HtmlSymbolType.Text;[blah];
|
||||
HtmlSymbolType.WhiteSpace;[ ];
|
||||
HtmlSymbolType.Text;[blah];
|
||||
HtmlSymbolType.WhiteSpace;[ ];
|
||||
HtmlSymbolType.Text;[blah];
|
||||
|
|
@ -0,0 +1 @@
|
|||
(1,2): Error RZ1025: The "p" element was not closed. All elements must be either self-closing or have a matching end tag.
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
Markup block - Gen<None> - 14 - (0:0,0)
|
||||
Tag block - Gen<None> - 3 - (0:0,0)
|
||||
Markup span - Gen<Markup> - [<p>] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:3
|
||||
HtmlSymbolType.OpenAngle;[<];
|
||||
HtmlSymbolType.Text;[p];
|
||||
HtmlSymbolType.CloseAngle;[>];
|
||||
Tag block - Gen<None> - 5 - (3:0,3)
|
||||
Markup span - Gen<Markup> - [<foo>] - SpanEditHandler;Accepts:None - (3:0,3) - Symbols:3
|
||||
HtmlSymbolType.OpenAngle;[<];
|
||||
HtmlSymbolType.Text;[foo];
|
||||
HtmlSymbolType.CloseAngle;[>];
|
||||
Tag block - Gen<None> - 6 - (8:0,8)
|
||||
Markup span - Gen<Markup> - [</bar>] - SpanEditHandler;Accepts:None - (8:0,8) - Symbols:4
|
||||
HtmlSymbolType.OpenAngle;[<];
|
||||
HtmlSymbolType.ForwardSlash;[/];
|
||||
HtmlSymbolType.Text;[bar];
|
||||
HtmlSymbolType.CloseAngle;[>];
|
||||
|
|
@ -0,0 +1 @@
|
|||
(1,2): Error RZ1024: End of file or an unexpected character was reached before the "foo" tag could be parsed. Elements inside markup blocks must be complete. They must either be self-closing ("<br />") or have matching end tags ("<p>Hello</p>"). If you intended to display a "<" character, use the "<" HTML entity.
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
Markup block - Gen<None> - 12 - (0:0,0)
|
||||
Tag block - Gen<None> - 12 - (0:0,0)
|
||||
Markup span - Gen<Markup> - [<foo] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:2
|
||||
HtmlSymbolType.OpenAngle;[<];
|
||||
HtmlSymbolType.Text;[foo];
|
||||
Markup block - Gen<Attr:bar, bar=@(4:0,4),@(12:0,12)> - 8 - (4:0,4)
|
||||
Markup span - Gen<None> - [ bar=] - SpanEditHandler;Accepts:Any - (4:0,4) - Symbols:3
|
||||
HtmlSymbolType.WhiteSpace;[ ];
|
||||
HtmlSymbolType.Text;[bar];
|
||||
HtmlSymbolType.Equals;[=];
|
||||
Markup span - Gen<LitAttr:@(9:0,9)> - [baz] - SpanEditHandler;Accepts:Any - (9:0,9) - Symbols:1
|
||||
HtmlSymbolType.Text;[baz];
|
||||
Loading…
Reference in New Issue