public async Task CompileAsync_PrecompiledViewWithoutAnyChecksum_DoesNotSupportRecompilation() { // Arrange var path = "/Views/Home/Index.cshtml"; var fileProvider = new TestFileProvider(); fileProvider.AddFile(path, "some content"); var precompiledView = new CompiledViewDescriptor { RelativePath = path, Item = new TestRazorCompiledItem(typeof(string), "mvc.1.0.view", path, new object[] { }), }; var viewCompiler = GetViewCompiler(fileProvider, precompiledViews: new[] { precompiledView }); // Act - 1 var result = await viewCompiler.CompileAsync(path); // Assert - 1 Assert.Same(precompiledView, result); // Act - 2 fileProvider.Watch(path); fileProvider.GetChangeToken(path).HasChanged = true; result = await viewCompiler.CompileAsync(path); // Assert - 2 Assert.Same(precompiledView, result); // This view doesn't have checksums so it can't be recompiled. Assert.Null(result.ExpirationTokens); }
public void GetOrAdd_DoesNotRecompile_IfFileTriggerWasSetForViewImports(string globalImportPath) { // Arrange var fileProvider = new TestFileProvider(); var cache = new CompilerCache(new[] { new TestViewCollection() }, TestLoadContext, fileProvider); // Act fileProvider.Watch(globalImportPath); fileProvider.GetTrigger(globalImportPath).IsExpired = true; var result = cache.GetOrAdd(PrecompiledViewsPath, ThrowsIfCalled); // Assert Assert.NotSame(CompilerCacheResult.FileNotFound, result); Assert.Same(typeof(PreCompile), result.CompilationResult.CompiledType); }
public void GetOrAdd_DoesNotRecompile_IfFileTriggerWasSetForViewImports(string globalImportPath) { // Arrange var fileProvider = new TestFileProvider(); var cache = new CompilerCache(fileProvider, _precompiledViews); // Act fileProvider.Watch(globalImportPath); fileProvider.GetChangeToken(globalImportPath).HasChanged = true; var result = cache.GetOrAdd(PrecompiledViewsPath, ThrowsIfCalled); // Assert Assert.True(result.Success); Assert.Same(typeof(PreCompile), result.CompilationResult.CompiledType); }
public void GetOrAdd_DoesNotRecompile_IfFileTriggerWasSetForPrecompiledFile() { // Arrange var fileProvider = new TestFileProvider(); var cache = new CompilerCache(fileProvider, _precompiledViews); // Act fileProvider.Watch(PrecompiledViewsPath); fileProvider.GetChangeToken(PrecompiledViewsPath).HasChanged = true; var result = cache.GetOrAdd(PrecompiledViewsPath, ThrowsIfCalled); // Assert Assert.NotSame(CompilerCacheResult.FileNotFound, result); Assert.Same(typeof(PreCompile), result.CompilationResult.CompiledType); }
public void GetOrAdd_DoesNotRecompile_IfFileTriggerWasSetForPrecompiledFile() { // Arrange var fileProvider = new TestFileProvider(); var cache = new CompilerCache(fileProvider, _precompiledViews); // Act fileProvider.Watch(PrecompiledViewsPath); fileProvider.GetChangeToken(PrecompiledViewsPath).HasChanged = true; var result = cache.GetOrAdd(PrecompiledViewsPath, ThrowsIfCalled); // Assert Assert.True(result.Success); Assert.IsType <PreCompile>(result.PageFactory()); }
public async Task CompileAsync_DoesNotRecompile_IfFileTriggerWasSetForPrecompiledView() { // Arrange var path = "/Views/Home/Index.cshtml"; var fileProvider = new TestFileProvider(); var fileInfo = fileProvider.AddFile(path, "some content"); var precompiledView = new CompiledViewDescriptor { RelativePath = path, }; var viewCompiler = GetViewCompiler(fileProvider, precompiledViews: new[] { precompiledView }); // Act fileProvider.Watch(path); fileProvider.GetChangeToken(path).HasChanged = true; var result = await viewCompiler.CompileAsync(path); // Assert Assert.Same(precompiledView, result); }
public async Task CompileAsync_DoesNotInvalidCache_IfChangeTokenChanges() { // Arrange var path = "/Views/Home/Index.cshtml"; var fileProvider = new TestFileProvider(); var fileInfo = fileProvider.AddFile(path, "some content"); var viewCompiler = GetViewCompiler(fileProvider); var changeToken = fileProvider.Watch(path); // Act 1 var result1 = await viewCompiler.CompileAsync(path); // Assert 1 Assert.NotNull(result1.ViewAttribute); // Act 2 fileProvider.DeleteFile(path); fileProvider.GetChangeToken(path).HasChanged = true; viewCompiler.Compile = _ => throw new Exception("Can't call me"); var result2 = await viewCompiler.CompileAsync(path); // Assert 2 Assert.Same(result1, result2); }
public void GetOrAdd_DoesNotRecompile_IfFileTriggerWasSetForViewImports(string globalImportPath) { // Arrange var fileProvider = new TestFileProvider(); var cache = new CompilerCache(fileProvider, _precompiledViews); // Act fileProvider.Watch(globalImportPath); fileProvider.GetChangeToken(globalImportPath).HasChanged = true; var result = cache.GetOrAdd(PrecompiledViewsPath, ThrowsIfCalled); // Assert Assert.NotSame(CompilerCacheResult.FileNotFound, result); Assert.Same(typeof(PreCompile), result.CompilationResult.CompiledType); }
public void GetOrAdd_DoesNotRecompile_IfFileTriggerWasSetForViewImports(string globalImportPath) { // Arrange var fileProvider = new TestFileProvider(); var cache = new CompilerCache(fileProvider, _precompiledViews); // Act fileProvider.Watch(globalImportPath); fileProvider.GetChangeToken(globalImportPath).HasChanged = true; var result = cache.GetOrAdd(PrecompiledViewsPath, ThrowsIfCalled); // Assert Assert.True(result.Success); Assert.IsType<PreCompile>(result.PageFactory()); }
public void GetOrAdd_DoesNotRecompile_IfFileTriggerWasSetForPrecompiledFile() { // Arrange var fileProvider = new TestFileProvider(); var cache = new CompilerCache(fileProvider, _precompiledViews); // Act fileProvider.Watch(PrecompiledViewsPath); fileProvider.GetChangeToken(PrecompiledViewsPath).HasChanged = true; var result = cache.GetOrAdd(PrecompiledViewsPath, ThrowsIfCalled); // Assert Assert.True(result.Success); Assert.Same(typeof(PreCompile), result.CompilationResult.CompiledType); }