Convert HtmlErrorTest to use baselines.

#2263
This commit is contained in:
N. Taylor Mullen 2018-06-27 15:49:17 -07:00
parent 275bc148d1
commit 8211dfff9c
16 changed files with 121 additions and 60 deletions

View File

@ -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");
}
}
}

View File

@ -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;[>];

View File

@ -0,0 +1 @@
(1,3): Error RZ1026: Encountered end tag "foo" with no matching start tag. Are your start/end tags properly balanced?

View File

@ -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;[ ];

View File

@ -0,0 +1 @@
(1,9): Error RZ1023: "<text>" and "</text>" tags cannot contain attributes.

View File

@ -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;[>];

View File

@ -0,0 +1 @@
(1,2): Error RZ1023: "<text>" and "</text>" tags cannot contain attributes.

View File

@ -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;[>];

View File

@ -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/>".

View File

@ -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.

View File

@ -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];

View File

@ -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.

View File

@ -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;[>];

View File

@ -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 "&lt;" HTML entity.

View File

@ -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];