Don't calculate checksum in design time mode

This commit is contained in:
Pranav K 2014-09-29 15:33:33 -07:00
parent 5369842384
commit d58a6c8c1b
2 changed files with 30 additions and 11 deletions

View File

@ -176,21 +176,27 @@ namespace Microsoft.AspNet.Razor
string sourceFileName) string sourceFileName)
{ {
MemoryStream memoryStream = null; MemoryStream memoryStream = null;
string checksum = null;
try try
{ {
if (!inputStream.CanSeek) if (!Host.DesignTimeMode)
{ {
memoryStream = new MemoryStream(); // We don't need to calculate the checksum in design time.
inputStream.CopyTo(memoryStream);
// We don't have to dispose the input stream since it is owned externally. if (!inputStream.CanSeek)
inputStream = memoryStream; {
memoryStream = new MemoryStream();
inputStream.CopyTo(memoryStream);
// We don't have to dispose the input stream since it is owned externally.
inputStream = memoryStream;
}
inputStream.Position = 0;
checksum = ComputeChecksum(inputStream);
inputStream.Position = 0;
} }
inputStream.Position = 0;
var checksum = ComputeChecksum(inputStream);
inputStream.Position = 0;
using (var reader = new StreamReader(inputStream, using (var reader = new StreamReader(inputStream,
Encoding.UTF8, Encoding.UTF8,
detectEncodingFromByteOrderMarks: true, detectEncodingFromByteOrderMarks: true,

View File

@ -239,7 +239,7 @@ namespace Microsoft.AspNet.Razor.Test
[Theory] [Theory]
[MemberData(nameof(GenerateCodeCalculatesLinePragma_IfStreamInputIsUsedData))] [MemberData(nameof(GenerateCodeCalculatesLinePragma_IfStreamInputIsUsedData))]
public void GenerateCodeCalculatesLinePragma_IfStreamInputIsUsed(Stream stream) public void GenerateCodeCalculatesChecksum_IfStreamInputIsUsed(Stream stream)
{ {
// Arrange // Arrange
var engine = new TestableRazorTemplateEngine(); var engine = new TestableRazorTemplateEngine();
@ -251,6 +251,20 @@ namespace Microsoft.AspNet.Razor.Test
Assert.Equal("7b502c3a1f48c8609ae212cdfb639dee39673f5e", engine.Checksum); Assert.Equal("7b502c3a1f48c8609ae212cdfb639dee39673f5e", engine.Checksum);
} }
[Fact]
public void GenerateCode_DoesNotCalculateChecksum_InDesignTimeMode()
{
// Arrange
var engine = new TestableRazorTemplateEngine();
engine.Host.DesignTimeMode = true;
// Act
var results = engine.GenerateCode(Stream.Null, "some-class", "some-ns", "foo.cshtml");
// Assert
Assert.Null(engine.Checksum);
}
private static RazorEngineHost CreateHost(bool designTime = false) private static RazorEngineHost CreateHost(bool designTime = false)
{ {
return new RazorEngineHost(new CSharpRazorCodeLanguage()) return new RazorEngineHost(new CSharpRazorCodeLanguage())
@ -264,7 +278,6 @@ namespace Microsoft.AspNet.Razor.Test
public TestableRazorTemplateEngine() public TestableRazorTemplateEngine()
: base(CreateHost()) : base(CreateHost())
{ {
} }
public string Checksum { get; set; } public string Checksum { get; set; }