From 31e2271134d1af91b93c3d444e0e7af63a40d113 Mon Sep 17 00:00:00 2001 From: Ajay Bhargav Baaskaran Date: Thu, 17 Jan 2019 17:30:15 -0800 Subject: [PATCH] Enable full fidelity check for ParseBlock tests as well (dotnet/aspnetcore-tooling#137) \n\nCommit migrated from https://github.com/dotnet/aspnetcore-tooling/commit/6ca6a37f9b4a986c1050bd12662675ea935bb020 --- .../Language/Legacy/ParserTestBase.cs | 34 +++++++------------ .../Language/SyntaxTreeVerifier.cs | 5 +-- 2 files changed, 15 insertions(+), 24 deletions(-) diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common/Language/Legacy/ParserTestBase.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common/Language/Legacy/ParserTestBase.cs index 522fa00289..1899cf90c7 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common/Language/Legacy/ParserTestBase.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common/Language/Legacy/ParserTestBase.cs @@ -172,11 +172,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy return Regex.Replace(content, "(? directives, int? expectedParseLength = null) { - ParseBlockTest(version, document, false); + ParseBlockTest(document, directives, false, expectedParseLength); } - internal virtual void ParseBlockTest(string document, IEnumerable directives) + internal virtual void ParseBlockTest(string document, IEnumerable directives, bool designTime, int? expectedParseLength = null) { - ParseBlockTest(document, directives, false); + ParseBlockTest(RazorLanguageVersion.Latest, document, directives, designTime, expectedParseLength); } - internal virtual void ParseBlockTest(RazorLanguageVersion version, string document, bool designTime) - { - ParseBlockTest(version, document, null, designTime); - } - - internal virtual void ParseBlockTest(string document, IEnumerable directives, bool designTime) - { - ParseBlockTest(RazorLanguageVersion.Latest, document, directives, designTime); - } - - internal virtual void ParseBlockTest(RazorLanguageVersion version, string document, IEnumerable directives, bool designTime) + internal virtual void ParseBlockTest(RazorLanguageVersion version, string document, IEnumerable directives, bool designTime, int? expectedParseLength = null) { var result = ParseBlock(version, document, directives, designTime); - BaselineTest(result, ensureFullFidelity: false); + BaselineTest(result, expectedParseLength: expectedParseLength); } internal virtual void ParseDocumentTest(string document) diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common/Language/SyntaxTreeVerifier.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common/Language/SyntaxTreeVerifier.cs index f4f416616c..f0627432cb 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common/Language/SyntaxTreeVerifier.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common/Language/SyntaxTreeVerifier.cs @@ -12,7 +12,7 @@ namespace Microsoft.AspNetCore.Razor.Language // Verifies recursively that a syntax tree has no gaps in terms of position/location. internal class SyntaxTreeVerifier { - public static void Verify(RazorSyntaxTree syntaxTree, bool ensureFullFidelity = true) + public static void Verify(RazorSyntaxTree syntaxTree, bool ensureFullFidelity = true, int? expectedParseLength = null) { var verifier = new Verifier(syntaxTree.Source); verifier.Visit(syntaxTree.Root); @@ -21,7 +21,8 @@ namespace Microsoft.AspNetCore.Razor.Language { var syntaxTreeString = syntaxTree.Root.ToFullString(); var builder = new StringBuilder(syntaxTree.Source.Length); - for (var i = 0; i < syntaxTree.Source.Length; i++) + var sourceLength = expectedParseLength ?? syntaxTree.Source.Length; + for (var i = 0; i < sourceLength; i++) { builder.Append(syntaxTree.Source[i]); }