From eaa58bc91393832ca833436b80779088c1630262 Mon Sep 17 00:00:00 2001 From: "N. Taylor Mullen" Date: Tue, 14 Apr 2015 17:17:28 -0700 Subject: [PATCH] Change inject directive to format correctly after newline during design time. - Also modified existing tests to account for aspnet/Razor#332 which fixed models formatting after newline. - Updated tests for inject to understand new formatting parsing. aspnet/Razor#332 --- .../MvcRazorCodeParser.cs | 2 +- .../Directives/ChunkInheritanceUtilityTest.cs | 10 ++-- .../MvcCSharpRazorCodeParserTest.cs | 48 +++++++++++++++---- .../MvcRazorCodeParserTest.cs | 32 ++++++++++--- 4 files changed, 72 insertions(+), 20 deletions(-) diff --git a/src/Microsoft.AspNet.Mvc.Razor.Host/MvcRazorCodeParser.cs b/src/Microsoft.AspNet.Mvc.Razor.Host/MvcRazorCodeParser.cs index aa586e6b22..9009bf7ac5 100644 --- a/src/Microsoft.AspNet.Mvc.Razor.Host/MvcRazorCodeParser.cs +++ b/src/Microsoft.AspNet.Mvc.Razor.Host/MvcRazorCodeParser.cs @@ -133,7 +133,7 @@ namespace Microsoft.AspNet.Mvc.Razor // Output the span and finish the block CompleteBlock(); - Output(SpanKind.Code); + Output(SpanKind.Code, AcceptedCharacters.AnyExceptNewline); } private SpanCodeGenerator CreateModelCodeGenerator(string model) diff --git a/test/Microsoft.AspNet.Mvc.Razor.Host.Test/Directives/ChunkInheritanceUtilityTest.cs b/test/Microsoft.AspNet.Mvc.Razor.Host.Test/Directives/ChunkInheritanceUtilityTest.cs index a89ec40d3d..e6bfbd3478 100644 --- a/test/Microsoft.AspNet.Mvc.Razor.Host.Test/Directives/ChunkInheritanceUtilityTest.cs +++ b/test/Microsoft.AspNet.Mvc.Razor.Host.Test/Directives/ChunkInheritanceUtilityTest.cs @@ -48,7 +48,7 @@ namespace Microsoft.AspNet.Mvc.Razor.Directives Assert.IsType(viewStartChunks[2]); viewStartChunks = codeTrees[1].Chunks; - Assert.Equal(5, viewStartChunks.Count); + Assert.Equal(7, viewStartChunks.Count); Assert.IsType(viewStartChunks[0]); @@ -56,11 +56,15 @@ namespace Microsoft.AspNet.Mvc.Razor.Directives Assert.Equal("MyHelper", injectChunk.TypeName); Assert.Equal("Helper", injectChunk.MemberName); - var setBaseTypeChunk = Assert.IsType(viewStartChunks[2]); + Assert.IsType(viewStartChunks[2]); + + var setBaseTypeChunk = Assert.IsType(viewStartChunks[3]); Assert.Equal("MyBaseType", setBaseTypeChunk.TypeName); - Assert.IsType(viewStartChunks[3]); Assert.IsType(viewStartChunks[4]); + + Assert.IsType(viewStartChunks[5]); + Assert.IsType(viewStartChunks[6]); } [Fact] diff --git a/test/Microsoft.AspNet.Mvc.Razor.Host.Test/MvcCSharpRazorCodeParserTest.cs b/test/Microsoft.AspNet.Mvc.Razor.Host.Test/MvcCSharpRazorCodeParserTest.cs index 5a61d6adbe..cc4657b1e1 100644 --- a/test/Microsoft.AspNet.Mvc.Razor.Host.Test/MvcCSharpRazorCodeParserTest.cs +++ b/test/Microsoft.AspNet.Mvc.Razor.Host.Test/MvcCSharpRazorCodeParserTest.cs @@ -47,6 +47,8 @@ namespace Microsoft.AspNet.Mvc.Razor .Accepts(AcceptedCharacters.None), factory.Code(" Foo") .As(new ModelCodeGenerator("RazorView", "Foo")) + .Accepts(AcceptedCharacters.AnyExceptNewline), + factory.EmptyHtml() }; // Act @@ -76,7 +78,8 @@ namespace Microsoft.AspNet.Mvc.Razor factory.MetaCode("model ") .Accepts(AcceptedCharacters.None), factory.Code(modelName + "\r\n") - .As(new ModelCodeGenerator("RazorView", expectedModel)), + .As(new ModelCodeGenerator("RazorView", expectedModel)) + .Accepts(AcceptedCharacters.AnyExceptNewline), factory.Markup("Bar") .With(new MarkupCodeGenerator()) }; @@ -107,7 +110,9 @@ namespace Microsoft.AspNet.Mvc.Razor factory.MetaCode("model ") .Accepts(AcceptedCharacters.None), factory.Code(" ") - .As(new ModelCodeGenerator("RazorView", string.Empty)), + .As(new ModelCodeGenerator("RazorView", string.Empty)) + .Accepts(AcceptedCharacters.AnyExceptNewline), + factory.EmptyHtml(), }; var expectedErrors = new[] { @@ -136,13 +141,17 @@ namespace Microsoft.AspNet.Mvc.Razor factory.MetaCode("model ") .Accepts(AcceptedCharacters.None), factory.Code("Foo\r\n") - .As(new ModelCodeGenerator("RazorView", "Foo")), + .As(new ModelCodeGenerator("RazorView", "Foo")) + .Accepts(AcceptedCharacters.AnyExceptNewline), + factory.EmptyHtml(), factory.CodeTransition(SyntaxConstants.TransitionString) .Accepts(AcceptedCharacters.None), factory.MetaCode("model ") .Accepts(AcceptedCharacters.None), factory.Code("Bar") .As(new ModelCodeGenerator("RazorView", "Bar")) + .Accepts(AcceptedCharacters.AnyExceptNewline), + factory.EmptyHtml() }; var expectedErrors = new[] @@ -177,13 +186,17 @@ namespace Microsoft.AspNet.Mvc.Razor factory.MetaCode("model ") .Accepts(AcceptedCharacters.None), factory.Code("Foo\r\n") - .As(new ModelCodeGenerator("RazorView", "Foo")), + .As(new ModelCodeGenerator("RazorView", "Foo")) + .Accepts(AcceptedCharacters.AnyExceptNewline), + factory.EmptyHtml(), factory.CodeTransition(SyntaxConstants.TransitionString) .Accepts(AcceptedCharacters.None), factory.MetaCode("inherits ") .Accepts(AcceptedCharacters.None), factory.Code("Bar") .As(new SetBaseTypeCodeGenerator("Bar")) + .Accepts(AcceptedCharacters.AnyExceptNewline), + factory.EmptyHtml() }; var expectedErrors = new[] @@ -218,13 +231,17 @@ namespace Microsoft.AspNet.Mvc.Razor factory.MetaCode("inherits ") .Accepts(AcceptedCharacters.None), factory.Code("Bar" + Environment.NewLine) - .As(new SetBaseTypeCodeGenerator("Bar")), + .As(new SetBaseTypeCodeGenerator("Bar")) + .Accepts(AcceptedCharacters.AnyExceptNewline), + factory.EmptyHtml(), factory.CodeTransition(SyntaxConstants.TransitionString) .Accepts(AcceptedCharacters.None), factory.MetaCode("model ") .Accepts(AcceptedCharacters.None), factory.Code("Foo") .As(new ModelCodeGenerator("RazorView", "Foo")) + .Accepts(AcceptedCharacters.AnyExceptNewline), + factory.EmptyHtml() }; var expectedErrors = new[] @@ -263,6 +280,8 @@ namespace Microsoft.AspNet.Mvc.Razor .Accepts(AcceptedCharacters.None), factory.Code(injectStatement) .As(new InjectParameterGenerator(expectedService, expectedPropertyName)) + .Accepts(AcceptedCharacters.AnyExceptNewline), + factory.EmptyHtml() }; // Act @@ -307,6 +326,8 @@ namespace Microsoft.AspNet.Mvc.Razor .Accepts(AcceptedCharacters.None), factory.Code(injectStatement) .As(new InjectParameterGenerator(expectedService, expectedPropertyName)) + .Accepts(AcceptedCharacters.AnyExceptNewline), + factory.EmptyHtml() }; // Act @@ -336,7 +357,8 @@ namespace Microsoft.AspNet.Mvc.Razor factory.MetaCode("inject ") .Accepts(AcceptedCharacters.None), factory.Code(injectStatement + "\r\n") - .As(new InjectParameterGenerator(expectedService, expectedPropertyName)), + .As(new InjectParameterGenerator(expectedService, expectedPropertyName)) + .Accepts(AcceptedCharacters.AnyExceptNewline), factory.Markup("Bar") .With(new MarkupCodeGenerator()) }; @@ -364,7 +386,8 @@ namespace Microsoft.AspNet.Mvc.Razor factory.MetaCode("inject ") .Accepts(AcceptedCharacters.None), factory.Code(" \r\n") - .As(new InjectParameterGenerator(string.Empty, string.Empty)), + .As(new InjectParameterGenerator(string.Empty, string.Empty)) + .Accepts(AcceptedCharacters.AnyExceptNewline), factory.Markup("Bar") .With(new MarkupCodeGenerator()) }; @@ -397,7 +420,9 @@ namespace Microsoft.AspNet.Mvc.Razor factory.MetaCode("inject ") .Accepts(AcceptedCharacters.None), factory.Code(" ") - .As(new InjectParameterGenerator(string.Empty, string.Empty)), + .As(new InjectParameterGenerator(string.Empty, string.Empty)) + .Accepts(AcceptedCharacters.AnyExceptNewline), + factory.EmptyHtml() }; var expectedErrors = new[] { @@ -428,7 +453,8 @@ namespace Microsoft.AspNet.Mvc.Razor factory.MetaCode("inject ") .Accepts(AcceptedCharacters.None), factory.Code(" IMyService \r\n") - .As(new InjectParameterGenerator("IMyService", string.Empty)), + .As(new InjectParameterGenerator("IMyService", string.Empty)) + .Accepts(AcceptedCharacters.AnyExceptNewline), factory.Markup("Bar") .With(new MarkupCodeGenerator()) }; @@ -462,7 +488,9 @@ namespace Microsoft.AspNet.Mvc.Razor factory.MetaCode("inject ") .Accepts(AcceptedCharacters.None), factory.Code(" IMyServi") - .As(new InjectParameterGenerator("IMyServi", string.Empty)), + .As(new InjectParameterGenerator("IMyServi", string.Empty)) + .Accepts(AcceptedCharacters.AnyExceptNewline), + factory.EmptyHtml() }; var expectedErrors = new[] { diff --git a/test/Microsoft.AspNet.Mvc.Razor.Test/MvcRazorCodeParserTest.cs b/test/Microsoft.AspNet.Mvc.Razor.Test/MvcRazorCodeParserTest.cs index 014a27ec30..0c73eb07fa 100644 --- a/test/Microsoft.AspNet.Mvc.Razor.Test/MvcRazorCodeParserTest.cs +++ b/test/Microsoft.AspNet.Mvc.Razor.Test/MvcRazorCodeParserTest.cs @@ -43,6 +43,8 @@ namespace Microsoft.AspNet.Mvc.Razor.Host.Test .Accepts(AcceptedCharacters.None), factory.Code(" Foo") .As(new ModelCodeGenerator(DefaultBaseType, "Foo")) + .Accepts(AcceptedCharacters.AnyExceptNewline), + factory.EmptyHtml() }; Assert.Equal(expectedSpans, spans.ToArray()); } @@ -64,7 +66,8 @@ namespace Microsoft.AspNet.Mvc.Razor.Host.Test factory.MetaCode("model ") .Accepts(AcceptedCharacters.None), factory.Code("Foo?\r\n") - .As(new ModelCodeGenerator(DefaultBaseType, "Foo?")), + .As(new ModelCodeGenerator(DefaultBaseType, "Foo?")) + .Accepts(AcceptedCharacters.AnyExceptNewline), factory.Markup("Bar") .With(new MarkupCodeGenerator()) }; @@ -88,7 +91,8 @@ namespace Microsoft.AspNet.Mvc.Razor.Host.Test factory.MetaCode("model ") .Accepts(AcceptedCharacters.None), factory.Code("Foo[[]][]\r\n") - .As(new ModelCodeGenerator(DefaultBaseType, "Foo[[]][]")), + .As(new ModelCodeGenerator(DefaultBaseType, "Foo[[]][]")) + .Accepts(AcceptedCharacters.AnyExceptNewline), factory.Markup("Bar") .With(new MarkupCodeGenerator()) }; @@ -113,6 +117,8 @@ namespace Microsoft.AspNet.Mvc.Razor.Host.Test .Accepts(AcceptedCharacters.None), factory.Code("$rootnamespace$.MyModel") .As(new ModelCodeGenerator(DefaultBaseType, "$rootnamespace$.MyModel")) + .Accepts(AcceptedCharacters.AnyExceptNewline), + factory.EmptyHtml() }; Assert.Equal(expectedSpans, spans.ToArray()); } @@ -135,7 +141,9 @@ namespace Microsoft.AspNet.Mvc.Razor.Host.Test factory.MetaCode("model ") .Accepts(AcceptedCharacters.None), factory.Code(" ") - .As(new ModelCodeGenerator(DefaultBaseType, string.Empty)), + .As(new ModelCodeGenerator(DefaultBaseType, string.Empty)) + .Accepts(AcceptedCharacters.AnyExceptNewline), + factory.EmptyHtml() }; var expectedErrors = new[] { @@ -165,13 +173,17 @@ namespace Microsoft.AspNet.Mvc.Razor.Host.Test factory.MetaCode("model ") .Accepts(AcceptedCharacters.None), factory.Code("Foo\r\n") - .As(new ModelCodeGenerator(DefaultBaseType, "Foo")), + .As(new ModelCodeGenerator(DefaultBaseType, "Foo")) + .Accepts(AcceptedCharacters.AnyExceptNewline), + factory.EmptyHtml(), factory.CodeTransition(SyntaxConstants.TransitionString) .Accepts(AcceptedCharacters.None), factory.MetaCode("model ") .Accepts(AcceptedCharacters.None), factory.Code("Bar") .As(new ModelCodeGenerator(DefaultBaseType, "Bar")) + .Accepts(AcceptedCharacters.AnyExceptNewline), + factory.EmptyHtml() }; var expectedErrors = new[] @@ -203,13 +215,17 @@ namespace Microsoft.AspNet.Mvc.Razor.Host.Test factory.MetaCode("model ") .Accepts(AcceptedCharacters.None), factory.Code("Foo\r\n") - .As(new ModelCodeGenerator(DefaultBaseType, "Foo")), + .As(new ModelCodeGenerator(DefaultBaseType, "Foo")) + .Accepts(AcceptedCharacters.AnyExceptNewline), + factory.EmptyHtml(), factory.CodeTransition(SyntaxConstants.TransitionString) .Accepts(AcceptedCharacters.None), factory.MetaCode("inherits ") .Accepts(AcceptedCharacters.None), factory.Code("Bar") .As(new SetBaseTypeCodeGenerator("Bar")) + .Accepts(AcceptedCharacters.AnyExceptNewline), + factory.EmptyHtml() }; var expectedErrors = new[] @@ -241,13 +257,17 @@ namespace Microsoft.AspNet.Mvc.Razor.Host.Test factory.MetaCode("inherits ") .Accepts(AcceptedCharacters.None), factory.Code("Bar" + Environment.NewLine) - .As(new SetBaseTypeCodeGenerator("Bar")), + .As(new SetBaseTypeCodeGenerator("Bar")) + .Accepts(AcceptedCharacters.AnyExceptNewline), + factory.EmptyHtml(), factory.CodeTransition(SyntaxConstants.TransitionString) .Accepts(AcceptedCharacters.None), factory.MetaCode("model ") .Accepts(AcceptedCharacters.None), factory.Code("Foo") .As(new ModelCodeGenerator(DefaultBaseType, "Foo")) + .Accepts(AcceptedCharacters.AnyExceptNewline), + factory.EmptyHtml() }; var expectedErrors = new[]