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)
{
MemoryStream memoryStream = null;
string checksum = null;
try
{
if (!inputStream.CanSeek)
if (!Host.DesignTimeMode)
{
memoryStream = new MemoryStream();
inputStream.CopyTo(memoryStream);
// We don't need to calculate the checksum in design time.
// We don't have to dispose the input stream since it is owned externally.
inputStream = memoryStream;
if (!inputStream.CanSeek)
{
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,
Encoding.UTF8,
detectEncodingFromByteOrderMarks: true,

View File

@ -239,7 +239,7 @@ namespace Microsoft.AspNet.Razor.Test
[Theory]
[MemberData(nameof(GenerateCodeCalculatesLinePragma_IfStreamInputIsUsedData))]
public void GenerateCodeCalculatesLinePragma_IfStreamInputIsUsed(Stream stream)
public void GenerateCodeCalculatesChecksum_IfStreamInputIsUsed(Stream stream)
{
// Arrange
var engine = new TestableRazorTemplateEngine();
@ -251,6 +251,20 @@ namespace Microsoft.AspNet.Razor.Test
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)
{
return new RazorEngineHost(new CSharpRazorCodeLanguage())
@ -264,7 +278,6 @@ namespace Microsoft.AspNet.Razor.Test
public TestableRazorTemplateEngine()
: base(CreateHost())
{
}
public string Checksum { get; set; }