diff --git a/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorProjectEngine.cs b/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorProjectEngine.cs index e7eaafec22..89b667979a 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorProjectEngine.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorProjectEngine.cs @@ -65,7 +65,7 @@ namespace Microsoft.AspNetCore.Razor.Language var importFeature = GetRequiredFeature(); var importItems = importFeature.GetImports(projectItem); - var importSourceDocuments = importItems.Select(ConvertToSourceDocument); + var importSourceDocuments = GetImportSourceDocuments(importItems); var parserOptions = GetRequiredFeature().Create(ConfigureParserOptions); var codeGenerationOptions = GetRequiredFeature().Create(ConfigureCodeGenerationOptions); @@ -84,12 +84,11 @@ namespace Microsoft.AspNetCore.Razor.Language var importFeature = GetRequiredFeature(); var importItems = importFeature.GetImports(projectItem); - var importSourceDocuments = importItems.Select(ConvertToSourceDocument); + var importSourceDocuments = GetImportSourceDocuments(importItems); var parserOptions = GetRequiredFeature().Create(ConfigureDesignTimeParserOptions); var codeGenerationOptions = GetRequiredFeature().Create(ConfigureDesignTimeCodeGenerationOptions); - return RazorCodeDocument.Create(sourceDocument, importSourceDocuments, parserOptions, codeGenerationOptions); } @@ -138,17 +137,21 @@ namespace Microsoft.AspNetCore.Razor.Language } // Internal for testing - internal static RazorSourceDocument ConvertToSourceDocument(RazorProjectItem importItem) + internal static IReadOnlyList GetImportSourceDocuments(IReadOnlyList importItems) { - if (importItem.Exists) + var imports = new List(); + for (var i = 0; i < importItems.Count; i++) { - // Normal import, has file paths, content etc. - return RazorSourceDocument.ReadFrom(importItem); + var importItem = importItems[i]; + + if (importItem.Exists) + { + var sourceDocument = RazorSourceDocument.ReadFrom(importItem); + imports.Add(sourceDocument); + } } - // Marker import, doesn't exist, used as an identifier for "there could be something here". - var sourceDocumentProperties = new RazorSourceDocumentProperties(importItem.FilePath, importItem.RelativePhysicalPath); - return RazorSourceDocument.Create(string.Empty, sourceDocumentProperties); + return imports; } } } diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectEngineIntegrationTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectEngineIntegrationTest.cs index 427b34c1b6..38b5082b2e 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectEngineIntegrationTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectEngineIntegrationTest.cs @@ -57,7 +57,7 @@ namespace Microsoft.AspNetCore.Razor.Language // Arrange var projectItem = new TestRazorProjectItem("Index.cshtml"); - var testImport = Mock.Of(i => i.Read() == new MemoryStream() && i.FilePath == "testvalue"); + var testImport = Mock.Of(i => i.Read() == new MemoryStream() && i.FilePath == "testvalue" && i.Exists == true); var importFeature = new Mock(); importFeature .Setup(feature => feature.GetImports(It.IsAny())) diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectEngineTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectEngineTest.cs index 171556ecf0..2ca4da9881 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectEngineTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectEngineTest.cs @@ -9,29 +9,19 @@ namespace Microsoft.AspNetCore.Razor.Language public class DefaultRazorProjectEngineTest { [Fact] - public void ConvertToSourceDocument_ConvertsNormalImports() + public void GetImportSourceDocuments_DoesNotIncludeNonExistentItems() { // Arrange - var projectItem = new TestRazorProjectItem("Index.cshtml"); + var existingItem = new TestRazorProjectItem("Index.cshtml"); + var nonExistentItem = Mock.Of(item => item.Exists == false); + var items = new[] { existingItem, nonExistentItem }; // Act - var sourceDocument = DefaultRazorProjectEngine.ConvertToSourceDocument(projectItem); + var sourceDocuments = DefaultRazorProjectEngine.GetImportSourceDocuments(items); // Assert - Assert.NotNull(sourceDocument); - } - - [Fact] - public void ConvertToSourceDocument_ConvertsMarkerImports() - { - // Arrange - var projectItem = Mock.Of(item => item.FilePath == "Index.cshtml" && item.Exists == false); - - // Act - var sourceDocument = DefaultRazorProjectEngine.ConvertToSourceDocument(projectItem); - - // Assert - Assert.NotNull(sourceDocument); + var sourceDocument = Assert.Single(sourceDocuments); + Assert.Equal(existingItem.FilePath, sourceDocument.FilePath); } } }