diff --git a/.appveyor.yml b/.appveyor.yml index c2db660b52..fd85abb361 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -1,19 +1,17 @@ init: - - git config --global core.autocrlf true +- git config --global core.autocrlf true branches: only: - - master - - release - - dev - - /^(.*\/)?ci-.*$/ - - /^rel\/.*/ + - dev + - /^release\/.*$/ + - /^(.*\/)?ci-.*$/ build_script: - - ps: .\run.ps1 default-build +- ps: .\run.ps1 default-build clone_depth: 1 environment: global: DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true DOTNET_CLI_TELEMETRY_OPTOUT: 1 -test: off -deploy: off +test: 'off' +deploy: 'off' os: Visual Studio 2017 Preview diff --git a/.travis.yml b/.travis.yml index ceaae0b3b7..28507b93b3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,25 +3,25 @@ sudo: required dist: trusty env: global: - - DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true - - DOTNET_CLI_TELEMETRY_OPTOUT: 1 + - DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true + - DOTNET_CLI_TELEMETRY_OPTOUT: 1 addons: apt: packages: - - libunwind8 + - libunwind8 mono: none os: - - linux - - osx +- linux +- osx osx_image: xcode8.2 branches: only: - - master - - release - - dev - - /^(.*\/)?ci-.*$/ - - /^rel\/.*/ + - dev + - /^release\/.*$/ + - /^(.*\/)?ci-.*$/ before_install: - - if test "$TRAVIS_OS_NAME" == "osx"; then brew update; brew install openssl; ln -s /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/; ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/; fi +- if test "$TRAVIS_OS_NAME" == "osx"; then brew update; brew install openssl; ln -s + /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/; ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib + /usr/local/lib/; fi script: - - ./build.sh +- ./build.sh diff --git a/benchmarks/Microsoft.AspNetCore.Razor.Performance/CodeGenerationBenchmark.cs b/benchmarks/Microsoft.AspNetCore.Razor.Performance/CodeGenerationBenchmark.cs index 33a95b9e65..b4320782e6 100644 --- a/benchmarks/Microsoft.AspNetCore.Razor.Performance/CodeGenerationBenchmark.cs +++ b/benchmarks/Microsoft.AspNetCore.Razor.Performance/CodeGenerationBenchmark.cs @@ -24,10 +24,10 @@ namespace Microsoft.AspNetCore.Razor.Performance var engine = RazorEngine.Create(b => { RazorExtensions.Register(b); }); - var project = RazorProject.Create(root.FullName); + var fileSystem = RazorProjectFileSystem.Create(root.FullName); - DesignTimeTemplateEngine = new MvcRazorTemplateEngine(RazorEngine.CreateDesignTime(b => { RazorExtensions.Register(b); }), project); - RuntimeTemplateEngine = new MvcRazorTemplateEngine(RazorEngine.Create(b => { RazorExtensions.Register(b); }), project); + DesignTimeTemplateEngine = new MvcRazorTemplateEngine(RazorEngine.CreateDesignTime(b => { RazorExtensions.Register(b); }), fileSystem); + RuntimeTemplateEngine = new MvcRazorTemplateEngine(RazorEngine.Create(b => { RazorExtensions.Register(b); }), fileSystem); var codeDocument = RuntimeTemplateEngine.CreateCodeDocument(Path.Combine(root.FullName, "MSN.cshtml")); diff --git a/build/dependencies.props b/build/dependencies.props index ee689b8d77..898bb3fff8 100644 --- a/build/dependencies.props +++ b/build/dependencies.props @@ -4,20 +4,20 @@ 0.10.11 - 2.1.0-preview2-15692 - 2.1.0-preview2-28215 - 2.1.0-preview2-28215 - 2.1.0-preview2-28215 + 2.1.0-preview2-15698 + 2.1.0-preview2-30077 + 2.1.0-preview2-30077 + 2.1.0-preview2-30077 15.3.409 15.3.409 15.3.409 2.6.1 2.6.1 - 2.1.0-preview2-28215 - 2.1.0-preview2-28215 + 2.1.0-preview2-30077 + 2.1.0-preview2-30077 2.1.0-preview2-25711-01 - 2.1.0-preview2-28215 - 2.1.0-preview2-28215 + 2.1.0-preview2-30077 + 2.1.0-preview2-30077 2.0.0 2.1.0-preview2-26130-04 15.3.0 @@ -39,7 +39,7 @@ 1.3.7 1.0.1 4.7.49 - 2.0.0 + 2.0.1 10.0.1 1.1.92 4.5.0-preview2-26130-01 @@ -56,8 +56,8 @@ 2.7.0-beta3-62512-06 0.8.0 2.3.1 - 2.3.1 + 2.4.0-beta.1.build3945 - + diff --git a/korebuild-lock.txt b/korebuild-lock.txt index 4d18d19325..c6125ba391 100644 --- a/korebuild-lock.txt +++ b/korebuild-lock.txt @@ -1,2 +1,2 @@ -version:2.1.0-preview2-15696 -commithash:85ae1301d1a2ff19aab6837cc657699ccca719b5 +version:2.1.0-preview2-15698 +commithash:7216e5068cb1957e09d45fcbe58a744dd5c2de73 diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 25771e8046..83534ef969 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -8,7 +8,7 @@ - + diff --git a/src/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X/DefaultMvcImportFeature.cs b/src/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X/DefaultMvcImportFeature.cs index d630a70c72..055f306eb5 100644 --- a/src/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X/DefaultMvcImportFeature.cs +++ b/src/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X/DefaultMvcImportFeature.cs @@ -14,18 +14,18 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X { private const string ImportsFileName = "_ViewImports.cshtml"; - public IReadOnlyList GetImports(string sourceFilePath) + public IReadOnlyList GetImports(RazorProjectItem projectItem) { - if (string.IsNullOrEmpty(sourceFilePath)) + if (projectItem == null) { - throw new ArgumentException(Resources.ArgumentCannotBeNullOrEmpy, nameof(sourceFilePath)); + throw new ArgumentNullException(nameof(projectItem)); } var imports = new List(); AddDefaultDirectivesImport(imports); // We add hierarchical imports second so any default directive imports can be overridden. - AddHierarchicalImports(sourceFilePath, imports); + AddHierarchicalImports(projectItem, imports); return imports; } @@ -58,10 +58,10 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X } // Internal for testing - internal void AddHierarchicalImports(string sourceFilePath, List imports) + internal void AddHierarchicalImports(RazorProjectItem projectItem, List imports) { // We want items in descending order. FindHierarchicalItems returns items in ascending order. - var importProjectItems = ProjectEngine.FileSystem.FindHierarchicalItems(sourceFilePath, ImportsFileName).Reverse(); + var importProjectItems = ProjectEngine.FileSystem.FindHierarchicalItems(projectItem.FilePath, ImportsFileName).Reverse(); foreach (var importProjectItem in importProjectItems) { RazorSourceDocument importSourceDocument; diff --git a/src/Microsoft.AspNetCore.Mvc.Razor.Extensions/DefaultMvcImportFeature.cs b/src/Microsoft.AspNetCore.Mvc.Razor.Extensions/DefaultMvcImportFeature.cs index 8cbf0f11a1..4852951e33 100644 --- a/src/Microsoft.AspNetCore.Mvc.Razor.Extensions/DefaultMvcImportFeature.cs +++ b/src/Microsoft.AspNetCore.Mvc.Razor.Extensions/DefaultMvcImportFeature.cs @@ -14,18 +14,18 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions { private const string ImportsFileName = "_ViewImports.cshtml"; - public IReadOnlyList GetImports(string sourceFilePath) + public IReadOnlyList GetImports(RazorProjectItem projectItem) { - if (string.IsNullOrEmpty(sourceFilePath)) + if (projectItem == null) { - throw new ArgumentException(Resources.ArgumentCannotBeNullOrEmpy, nameof(sourceFilePath)); + throw new ArgumentNullException(nameof(projectItem)); } var imports = new List(); AddDefaultDirectivesImport(imports); // We add hierarchical imports second so any default directive imports can be overridden. - AddHierarchicalImports(sourceFilePath, imports); + AddHierarchicalImports(projectItem, imports); return imports; } @@ -60,10 +60,10 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions } // Internal for testing - internal void AddHierarchicalImports(string sourceFilePath, List imports) + internal void AddHierarchicalImports(RazorProjectItem projectItem, List imports) { // We want items in descending order. FindHierarchicalItems returns items in ascending order. - var importProjectItems = ProjectEngine.FileSystem.FindHierarchicalItems(sourceFilePath, ImportsFileName).Reverse(); + var importProjectItems = ProjectEngine.FileSystem.FindHierarchicalItems(projectItem.FilePath, ImportsFileName).Reverse(); foreach (var importProjectItem in importProjectItems) { RazorSourceDocument importSourceDocument; diff --git a/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorImportFeature.cs b/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorImportFeature.cs index 3d5c015a26..ea626e97e0 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorImportFeature.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorImportFeature.cs @@ -8,6 +8,6 @@ namespace Microsoft.AspNetCore.Razor.Language { internal class DefaultRazorImportFeature : RazorProjectEngineFeatureBase, IRazorImportFeature { - public IReadOnlyList GetImports(string sourceFilePath) => Array.Empty(); + public IReadOnlyList GetImports(RazorProjectItem projectItem) => Array.Empty(); } } diff --git a/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorProjectEngine.cs b/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorProjectEngine.cs index 8f3017cea1..6cac02dc25 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorProjectEngine.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorProjectEngine.cs @@ -45,29 +45,16 @@ namespace Microsoft.AspNetCore.Razor.Language public override IReadOnlyList Features { get; } - public override RazorCodeDocument Process(string filePath) + public override RazorCodeDocument Process(RazorProjectItem projectItem) { - if (string.IsNullOrEmpty(filePath)) + if (projectItem == null) { - throw new ArgumentException(Resources.ArgumentCannotBeNullOrEmpty, nameof(filePath)); - } - - var projectItem = FileSystem.GetItem(filePath); - var sourceDocument = RazorSourceDocument.ReadFrom(projectItem); - var codeDocument = Process(sourceDocument); - - return codeDocument; - } - - public override RazorCodeDocument Process(RazorSourceDocument sourceDocument) - { - if (sourceDocument == null) - { - throw new ArgumentNullException(nameof(sourceDocument)); + throw new ArgumentNullException(nameof(projectItem)); } var importFeature = GetRequiredFeature(); - var imports = importFeature.GetImports(sourceDocument.FilePath); + var imports = importFeature.GetImports(projectItem); + var sourceDocument = RazorSourceDocument.ReadFrom(projectItem); var codeDocument = RazorCodeDocument.Create(sourceDocument, imports); diff --git a/src/Microsoft.AspNetCore.Razor.Language/FileSystemRazorProject.cs b/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorProjectFileSystem.cs similarity index 88% rename from src/Microsoft.AspNetCore.Razor.Language/FileSystemRazorProject.cs rename to src/Microsoft.AspNetCore.Razor.Language/DefaultRazorProjectFileSystem.cs index d6bfa5596a..2600ce5efe 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/FileSystemRazorProject.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorProjectFileSystem.cs @@ -8,9 +8,9 @@ using System.Linq; namespace Microsoft.AspNetCore.Razor.Language { - internal class FileSystemRazorProject : RazorProjectFileSystem + internal class DefaultRazorProjectFileSystem : RazorProjectFileSystem { - public FileSystemRazorProject(string root) + public DefaultRazorProjectFileSystem(string root) { if (string.IsNullOrEmpty(root)) { @@ -39,7 +39,7 @@ namespace Microsoft.AspNetCore.Razor.Language var relativePhysicalPath = file.FullName.Substring(absoluteBasePath.Length + 1); // Include leading separator var filePath = "/" + relativePhysicalPath.Replace(Path.DirectorySeparatorChar, '/'); - return new FileSystemRazorProjectItem(basePath, filePath, relativePhysicalPath, file); + return new DefaultRazorProjectItem(basePath, filePath, relativePhysicalPath, file); }); } @@ -53,7 +53,7 @@ namespace Microsoft.AspNetCore.Razor.Language var relativePhysicalPath = file.FullName.Substring(absoluteBasePath.Length + 1); // Include leading separator var filePath = "/" + relativePhysicalPath.Replace(Path.DirectorySeparatorChar, '/'); - return new FileSystemRazorProjectItem("/", filePath, relativePhysicalPath, new FileInfo(absolutePath)); + return new DefaultRazorProjectItem("/", filePath, relativePhysicalPath, new FileInfo(absolutePath)); } protected override string NormalizeAndEnsureValidPath(string path) diff --git a/src/Microsoft.AspNetCore.Razor.Language/FileSystemRazorProjectItem.cs b/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorProjectItem.cs similarity index 81% rename from src/Microsoft.AspNetCore.Razor.Language/FileSystemRazorProjectItem.cs rename to src/Microsoft.AspNetCore.Razor.Language/DefaultRazorProjectItem.cs index 210670d06a..5a3590a121 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/FileSystemRazorProjectItem.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorProjectItem.cs @@ -5,16 +5,16 @@ using System.IO; namespace Microsoft.AspNetCore.Razor.Language { - internal class FileSystemRazorProjectItem : RazorProjectItem + internal class DefaultRazorProjectItem : RazorProjectItem { /// - /// Initializes a new instance of . + /// Initializes a new instance of . /// /// The base path. /// The physical path of the base path. /// The path. /// The . - public FileSystemRazorProjectItem(string basePath, string filePath, string relativePhysicalPath, FileInfo file) + public DefaultRazorProjectItem(string basePath, string filePath, string relativePhysicalPath, FileInfo file) { BasePath = basePath; FilePath = filePath; diff --git a/src/Microsoft.AspNetCore.Razor.Language/IRazorImportFeature.cs b/src/Microsoft.AspNetCore.Razor.Language/IRazorImportFeature.cs index 76e50c31c7..f002cd20ce 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/IRazorImportFeature.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/IRazorImportFeature.cs @@ -7,6 +7,6 @@ namespace Microsoft.AspNetCore.Razor.Language { public interface IRazorImportFeature : IRazorProjectEngineFeature { - IReadOnlyList GetImports(string sourceFilePath); + IReadOnlyList GetImports(RazorProjectItem projectItem); } } diff --git a/src/Microsoft.AspNetCore.Razor.Language/RazorProject.cs b/src/Microsoft.AspNetCore.Razor.Language/RazorProject.cs index 473e6382e1..74b772e142 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/RazorProject.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/RazorProject.cs @@ -129,9 +129,10 @@ namespace Microsoft.AspNetCore.Razor.Language /// /// The directory to root the file system at. /// A + [Obsolete("This method is obsolete and will be removed in a future version. Please use " + nameof(RazorProjectFileSystem) + "." + nameof(RazorProjectFileSystem.Create) + " instead.")] public static RazorProject Create(string rootDirectoryPath) { - return new FileSystemRazorProject(rootDirectoryPath); + return new DefaultRazorProjectFileSystem(rootDirectoryPath); } } } diff --git a/src/Microsoft.AspNetCore.Razor.Language/RazorProjectEngine.cs b/src/Microsoft.AspNetCore.Razor.Language/RazorProjectEngine.cs index 88522e9326..7f2c03e8e3 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/RazorProjectEngine.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/RazorProjectEngine.cs @@ -14,9 +14,7 @@ namespace Microsoft.AspNetCore.Razor.Language public abstract IReadOnlyList Features { get; } - public abstract RazorCodeDocument Process(string filePath); - - public abstract RazorCodeDocument Process(RazorSourceDocument sourceDocument); + public abstract RazorCodeDocument Process(RazorProjectItem projectItem); public static RazorProjectEngine Create(RazorProjectFileSystem fileSystem) => Create(fileSystem, configure: null); diff --git a/src/Microsoft.AspNetCore.Razor.Language/RazorProjectEngineFeatureBase.cs b/src/Microsoft.AspNetCore.Razor.Language/RazorProjectEngineFeatureBase.cs index f5944a83ff..ec170659e4 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/RazorProjectEngineFeatureBase.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/RazorProjectEngineFeatureBase.cs @@ -9,7 +9,7 @@ namespace Microsoft.AspNetCore.Razor.Language { private RazorProjectEngine _projectEngine; - public RazorProjectEngine ProjectEngine + public virtual RazorProjectEngine ProjectEngine { get => _projectEngine; set diff --git a/src/Microsoft.AspNetCore.Razor.Language/RazorProjectFileSystem.cs b/src/Microsoft.AspNetCore.Razor.Language/RazorProjectFileSystem.cs index 975b821ade..a95de255df 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/RazorProjectFileSystem.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/RazorProjectFileSystem.cs @@ -1,18 +1,25 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using System; + namespace Microsoft.AspNetCore.Razor.Language { public abstract class RazorProjectFileSystem : RazorProject { /// - /// Create a Razor project based on a physical file system. + /// Create a Razor project file system based off of a root directory. /// /// The directory to root the file system at. - /// A - public static new RazorProjectFileSystem Create(string rootDirectoryPath) + /// A + public new static RazorProjectFileSystem Create(string rootDirectoryPath) { - return new FileSystemRazorProject(rootDirectoryPath); + if (string.IsNullOrEmpty(rootDirectoryPath)) + { + throw new ArgumentException(Resources.ArgumentCannotBeNullOrEmpty, nameof(rootDirectoryPath)); + } + + return new DefaultRazorProjectFileSystem(rootDirectoryPath); } } } diff --git a/src/Microsoft.AspNetCore.Razor.Language/RazorProjectItem.cs b/src/Microsoft.AspNetCore.Razor.Language/RazorProjectItem.cs index cadd00710c..6aecb94daa 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/RazorProjectItem.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/RazorProjectItem.cs @@ -1,14 +1,13 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using System; using System.Diagnostics; using System.IO; namespace Microsoft.AspNetCore.Razor.Language { /// - /// An item in . + /// An item in a . /// [DebuggerDisplay("{" + nameof(DebuggerToString) + "()}")] public abstract class RazorProjectItem diff --git a/src/Microsoft.AspNetCore.Razor.Language/VirtualRazorProjectFileSystem.cs b/src/Microsoft.AspNetCore.Razor.Language/VirtualRazorProjectFileSystem.cs index bb9a75ee3a..6b3737fb73 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/VirtualRazorProjectFileSystem.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/VirtualRazorProjectFileSystem.cs @@ -10,20 +10,19 @@ namespace Microsoft.AspNetCore.Razor.Language { internal class VirtualRazorProjectFileSystem : RazorProjectFileSystem { - private readonly DirectoryNode Root = new DirectoryNode("/"); + private readonly DirectoryNode _root = new DirectoryNode("/"); public override IEnumerable EnumerateItems(string basePath) { - basePath = NormalizeAndEnsureValidPath(basePath); - var directory = Root.GetDirectory(basePath); + var directory = _root.GetDirectory(basePath); return directory?.EnumerateItems() ?? Enumerable.Empty(); } public override RazorProjectItem GetItem(string path) { path = NormalizeAndEnsureValidPath(path); - return Root.GetItem(path) ?? new NotFoundProjectItem(string.Empty, path); + return _root.GetItem(path) ?? new NotFoundProjectItem(string.Empty, path); } public void Add(RazorProjectItem projectItem) @@ -34,7 +33,7 @@ namespace Microsoft.AspNetCore.Razor.Language } var filePath = NormalizeAndEnsureValidPath(projectItem.FilePath); - Root.AddFile(new FileNode(filePath, projectItem)); + _root.AddFile(new FileNode(filePath, projectItem)); } // Internal for testing diff --git a/src/Microsoft.AspNetCore.Razor.Tools/GenerateCommand.cs b/src/Microsoft.AspNetCore.Razor.Tools/GenerateCommand.cs index 9fdedccd93..fc0a876940 100644 --- a/src/Microsoft.AspNetCore.Razor.Tools/GenerateCommand.cs +++ b/src/Microsoft.AspNetCore.Razor.Tools/GenerateCommand.cs @@ -136,7 +136,7 @@ namespace Microsoft.AspNetCore.Razor.Tools var project = new VirtualRazorProjectFileSystem(); foreach (var item in inputItems) { - var projectItem = new FileSystemRazorProjectItem( + var projectItem = new DefaultRazorProjectItem( basePath: "/", filePath: item.FilePath, relativePhysicalPath: item.RelativePhysicalPath, diff --git a/src/Microsoft.NET.Sdk.Razor/Microsoft.NET.Sdk.Razor.csproj b/src/Microsoft.NET.Sdk.Razor/Microsoft.NET.Sdk.Razor.csproj index c94af58ddf..95bb7fec04 100644 --- a/src/Microsoft.NET.Sdk.Razor/Microsoft.NET.Sdk.Razor.csproj +++ b/src/Microsoft.NET.Sdk.Razor/Microsoft.NET.Sdk.Razor.csproj @@ -13,6 +13,7 @@ + diff --git a/src/Microsoft.NET.Sdk.Razor/build/netstandard2.0/Sdk.Razor.CurrentVersion.targets b/src/Microsoft.NET.Sdk.Razor/build/netstandard2.0/Sdk.Razor.CurrentVersion.targets index b3ce738715..2ea795e89b 100644 --- a/src/Microsoft.NET.Sdk.Razor/build/netstandard2.0/Sdk.Razor.CurrentVersion.targets +++ b/src/Microsoft.NET.Sdk.Razor/build/netstandard2.0/Sdk.Razor.CurrentVersion.targets @@ -30,6 +30,7 @@ Copyright (c) .NET Foundation. All rights reserved. --> + ResolveRazorConfiguration; ResolveRazorGenerateInputs; AssignRazorGenerateTargetPaths; ResolveAssemblyReferenceRazorGenerateInputs; @@ -181,6 +182,23 @@ Copyright (c) .NET Foundation. All rights reserved. + + + + + + + + + + + + - - - <_ResolvedRazorConfiguration Include="@(RazorConfiguration)" Condition="'%(RazorConfiguration.Identity)'=='$(RazorDefaultConfiguration)'" /> - <_ResolvedRazorExtensionName Include="%(_ResolvedRazorConfiguration.Extensions)"/> - - - - - - + Condition="'$(GenerateRazorAssemblyInfo)'=='true' and '$(RazorDefaultConfiguration)'!=''" + DependsOnTargets="ResolveRazorConfiguration"> <_Parameter1>$(RazorLangVersion) @@ -213,9 +222,9 @@ Copyright (c) .NET Foundation. All rights reserved. <_Parameter1>$(RazorDefaultConfiguration) - - <_Parameter1>%(_ResolvedRazorExtension.Identity) - <_Parameter2>%(_ResolvedRazorExtension.AssemblyName) + + <_Parameter1>%(ResolvedRazorExtension.Identity) + <_Parameter2>%(ResolvedRazorExtension.AssemblyName) diff --git a/src/Microsoft.VisualStudio.Editor.Razor/DefaultTemplateEngineFactoryService.cs b/src/Microsoft.VisualStudio.Editor.Razor/DefaultTemplateEngineFactoryService.cs index ab5518bb46..6c615077c7 100644 --- a/src/Microsoft.VisualStudio.Editor.Razor/DefaultTemplateEngineFactoryService.cs +++ b/src/Microsoft.VisualStudio.Editor.Razor/DefaultTemplateEngineFactoryService.cs @@ -60,7 +60,7 @@ namespace Microsoft.VisualStudio.Editor.Razor } }); - var templateEngine = new Mvc1_X.MvcRazorTemplateEngine(engine, RazorProject.Create(projectPath)); + var templateEngine = new Mvc1_X.MvcRazorTemplateEngine(engine, RazorProjectFileSystem.Create(projectPath)); templateEngine.Options.ImportsFileName = "_ViewImports.cshtml"; return templateEngine; } @@ -73,7 +73,7 @@ namespace Microsoft.VisualStudio.Editor.Razor MvcLatest.RazorExtensions.Register(b); }); - var templateEngine = new MvcLatest.MvcRazorTemplateEngine(engine, RazorProject.Create(projectPath)); + var templateEngine = new MvcLatest.MvcRazorTemplateEngine(engine, RazorProjectFileSystem.Create(projectPath)); templateEngine.Options.ImportsFileName = "_ViewImports.cshtml"; return templateEngine; } diff --git a/src/RazorPageGenerator/Program.cs b/src/RazorPageGenerator/Program.cs index 30081b1bc2..aecb2344dc 100644 --- a/src/RazorPageGenerator/Program.cs +++ b/src/RazorPageGenerator/Program.cs @@ -73,7 +73,7 @@ Examples: public static IList MainCore(RazorEngine razorEngine, string targetProjectDirectory) { var viewDirectories = Directory.EnumerateDirectories(targetProjectDirectory, "Views", SearchOption.AllDirectories); - var razorProject = RazorProject.Create(targetProjectDirectory); + var razorProject = RazorProjectFileSystem.Create(targetProjectDirectory); var templateEngine = new RazorTemplateEngine(razorEngine, razorProject); templateEngine.Options.DefaultImports = RazorSourceDocument.Create(@" @using System diff --git a/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/DefaultMvcImportFeatureTest.cs b/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/DefaultMvcImportFeatureTest.cs index 32e254a45b..3ae6d8dd13 100644 --- a/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/DefaultMvcImportFeatureTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/DefaultMvcImportFeatureTest.cs @@ -29,12 +29,13 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions { // Arrange var imports = new List(); + var projectItem = new TestRazorProjectItem("/Contact/Index.cshtml"); var testFileSystem = new TestRazorProjectFileSystem(new[] { new TestRazorProjectItem("/Index.cshtml"), new TestRazorProjectItem("/_ViewImports.cshtml"), new TestRazorProjectItem("/Contact/_ViewImports.cshtml"), - new TestRazorProjectItem("/Contact/Index.cshtml"), + projectItem, }); var mvcImportFeature = new DefaultMvcImportFeature() { @@ -42,7 +43,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions }; // Act - mvcImportFeature.AddHierarchicalImports("/Contact/Index.cshtml", imports); + mvcImportFeature.AddHierarchicalImports(projectItem, imports); // Assert Assert.Collection(imports, @@ -55,17 +56,15 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions { // Arrange var imports = new List(); - var testFileSystem = new TestRazorProjectFileSystem(new[] - { - new TestRazorProjectItem("/Pages/Contact/Index.cshtml"), - }); + var projectItem = new TestRazorProjectItem("/Pages/Contact/Index.cshtml"); + var testFileSystem = new TestRazorProjectFileSystem(new[] { projectItem }); var mvcImportFeature = new DefaultMvcImportFeature() { ProjectEngine = Mock.Of(projectEngine => projectEngine.FileSystem == testFileSystem) }; // Act - mvcImportFeature.AddHierarchicalImports("/Pages/Contact/Index.cshtml", imports); + mvcImportFeature.AddHierarchicalImports(projectItem, imports); // Assert Assert.Collection(imports, diff --git a/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/MvcRazorTemplateEngineTest.cs b/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/MvcRazorTemplateEngineTest.cs index 6170065edf..58e440547e 100644 --- a/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/MvcRazorTemplateEngineTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Test/MvcRazorTemplateEngineTest.cs @@ -26,7 +26,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions }; var mvcRazorTemplateEngine = new MvcRazorTemplateEngine( RazorEngine.Create(), - new TestRazorProject()); + new TestRazorProjectFileSystem()); // Act var imports = mvcRazorTemplateEngine.Options.DefaultImports; @@ -52,7 +52,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions }; var mvcRazorTemplateEngine = new MvcRazorTemplateEngine( RazorEngine.Create(), - new TestRazorProject()); + new TestRazorProjectFileSystem()); // Act var imports = mvcRazorTemplateEngine.Options.DefaultImports; @@ -70,7 +70,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions // Arrange var mvcRazorTemplateEngine = new MvcRazorTemplateEngine( RazorEngine.Create(), - new TestRazorProject()); + new TestRazorProjectFileSystem()); // Act var imports = mvcRazorTemplateEngine.Options.DefaultImports; diff --git a/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X.Test/DefaultMvcImportFeatureTest.cs b/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X.Test/DefaultMvcImportFeatureTest.cs index 31d66517a1..3741760b4a 100644 --- a/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X.Test/DefaultMvcImportFeatureTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X.Test/DefaultMvcImportFeatureTest.cs @@ -29,12 +29,13 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X { // Arrange var imports = new List(); + var projectItem = new TestRazorProjectItem("/Contact/Index.cshtml"); var testFileSystem = new TestRazorProjectFileSystem(new[] { new TestRazorProjectItem("/Index.cshtml"), new TestRazorProjectItem("/_ViewImports.cshtml"), new TestRazorProjectItem("/Contact/_ViewImports.cshtml"), - new TestRazorProjectItem("/Contact/Index.cshtml"), + projectItem, }); var mvcImportFeature = new DefaultMvcImportFeature() { @@ -42,7 +43,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X }; // Act - mvcImportFeature.AddHierarchicalImports("/Contact/Index.cshtml", imports); + mvcImportFeature.AddHierarchicalImports(projectItem, imports); // Assert Assert.Collection(imports, @@ -55,17 +56,15 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X { // Arrange var imports = new List(); - var testFileSystem = new TestRazorProjectFileSystem(new[] - { - new TestRazorProjectItem("/Pages/Contact/Index.cshtml"), - }); + var projectItem = new TestRazorProjectItem("/Pages/Contact/Index.cshtml"); + var testFileSystem = new TestRazorProjectFileSystem(new[] { projectItem }); var mvcImportFeature = new DefaultMvcImportFeature() { ProjectEngine = Mock.Of(projectEngine => projectEngine.FileSystem == testFileSystem) }; // Act - mvcImportFeature.AddHierarchicalImports("/Pages/Contact/Index.cshtml", imports); + mvcImportFeature.AddHierarchicalImports(projectItem, imports); // Assert Assert.Collection(imports, diff --git a/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X.Test/MvcRazorTemplateEngineTest.cs b/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X.Test/MvcRazorTemplateEngineTest.cs index 5ceff69208..c2378397a6 100644 --- a/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X.Test/MvcRazorTemplateEngineTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X.Test/MvcRazorTemplateEngineTest.cs @@ -26,7 +26,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X }; var mvcRazorTemplateEngine = new MvcRazorTemplateEngine( RazorEngine.Create(), - new TestRazorProject()); + new TestRazorProjectFileSystem()); // Act var imports = mvcRazorTemplateEngine.Options.DefaultImports; @@ -52,7 +52,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X }; var mvcRazorTemplateEngine = new MvcRazorTemplateEngine( RazorEngine.Create(), - new TestRazorProject()); + new TestRazorProjectFileSystem()); // Act var imports = mvcRazorTemplateEngine.Options.DefaultImports; @@ -70,7 +70,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X // Arrange var mvcRazorTemplateEngine = new MvcRazorTemplateEngine( RazorEngine.Create(), - new TestRazorProject()); + new TestRazorProjectFileSystem()); // Act var imports = mvcRazorTemplateEngine.Options.DefaultImports; diff --git a/test/Microsoft.AspNetCore.Razor.Design.Test/IntegrationTests/DesignTimeBuildIntegrationTest.cs b/test/Microsoft.AspNetCore.Razor.Design.Test/IntegrationTests/DesignTimeBuildIntegrationTest.cs new file mode 100644 index 0000000000..6480149992 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Design.Test/IntegrationTests/DesignTimeBuildIntegrationTest.cs @@ -0,0 +1,34 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Threading.Tasks; +using Xunit; + +namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests +{ + public class DesignTimeBuildIntegrationTest : MSBuildIntegrationTestBase + { + [Fact] + [InitializeTestProject("SimpleMvc")] + public async Task DesignTimeBuild_DoesNotRunRazorTargets() + { + // Using Compile here instead of CompileDesignTime because the latter is only defined when using + // the VS targets. This is a close enough simulation for an SDK project + var result = await DotnetMSBuild("Compile", "/p:RazorCompileOnBuild=true /p:DesignTimeBuild=true /clp:PerformanceSummary"); + + Assert.BuildPassed(result); + Assert.FileDoesNotExist(result, OutputPath, "SimpleMvc.dll"); + Assert.FileDoesNotExist(result, OutputPath, "SimpleMvc.pdb"); + Assert.FileDoesNotExist(result, OutputPath, "SimpleMvc.PrecompiledViews.dll"); + Assert.FileDoesNotExist(result, OutputPath, "SimpleMvc.PrecompiledViews.pdb"); + + // This target should be part of the design time build. + Assert.Contains("RazorGetAssemblyAttributes", result.Output); + + // We don't want to see the expensive Razor targets in the performance summary, since they shouldn't run + // during a design time build. + Assert.DoesNotContain("RazorCoreGenerate", result.Output); + Assert.DoesNotContain("RazorCoreCompile", result.Output); + } + } +} diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectEngineIntegrationTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectEngineIntegrationTest.cs index ce95f80f6f..e767978411 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectEngineIntegrationTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectEngineIntegrationTest.cs @@ -12,10 +12,10 @@ namespace Microsoft.AspNetCore.Razor.Language public void Process_GetsImportsFromFeature() { // Arrange - var sourceDocument = TestRazorSourceDocument.Create(); + var projectItem = new TestRazorProjectItem("Index.cshtml"); var testImport = TestRazorSourceDocument.Create(); var importFeature = new Mock(); - importFeature.Setup(feature => feature.GetImports(It.IsAny())) + importFeature.Setup(feature => feature.GetImports(It.IsAny())) .Returns(new[] { testImport }); var projectEngine = RazorProjectEngine.Create(TestRazorProjectFileSystem.Empty, builder => { @@ -23,7 +23,7 @@ namespace Microsoft.AspNetCore.Razor.Language }); // Act - var codeDocument = projectEngine.Process(sourceDocument); + var codeDocument = projectEngine.Process(projectItem); // Assert var import = Assert.Single(codeDocument.Imports); @@ -34,11 +34,11 @@ namespace Microsoft.AspNetCore.Razor.Language public void Process_GeneratesCodeDocumentWithValidCSharpDocument() { // Arrange - var sourceDocument = TestRazorSourceDocument.Create(); + var projectItem = new TestRazorProjectItem("Index.cshtml"); var projectEngine = RazorProjectEngine.Create(TestRazorProjectFileSystem.Empty); // Act - var codeDocument = projectEngine.Process(sourceDocument); + var codeDocument = projectEngine.Process(projectItem); // Assert var csharpDocument = codeDocument.GetCSharpDocument(); diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectEngineTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectEngineTest.cs deleted file mode 100644 index 3224a5d9f0..0000000000 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectEngineTest.cs +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using Moq; -using Xunit; - -namespace Microsoft.AspNetCore.Razor.Language -{ - public class DefaultRazorProjectEngineTest - { - [Fact] - public void Process_AsksFileSystemForItems() - { - // Arrange - var razorProjectItem = new TestRazorProjectItem("/some/path.cshtml"); - var testFileSystem = new Mock(); - testFileSystem.Setup(fileSystem => fileSystem.GetItem("/some/path.cshtml")) - .Returns(razorProjectItem) - .Verifiable(); - var projectEngine = RazorProjectEngine.Create(testFileSystem.Object); - - // Act - projectEngine.Process("/some/path.cshtml"); - - // Assert - testFileSystem.Verify(); - } - } -} diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/FileSystemRazorProjectTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectFileSystemTest.cs similarity index 82% rename from test/Microsoft.AspNetCore.Razor.Language.Test/FileSystemRazorProjectTest.cs rename to test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectFileSystemTest.cs index e2d471c8fd..addc55ebea 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/FileSystemRazorProjectTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectFileSystemTest.cs @@ -8,12 +8,12 @@ using Xunit; namespace Microsoft.AspNetCore.Razor.Language { - public class FileSystemRazorProjectTest + public class DefaultRazorProjectFileSystemTest { private static string TestFolder { get; } = Path.Combine( - TestProject.GetProjectDirectory(typeof(FileSystemRazorProjectTest)), - "TestFiles", - "FileSystemRazorProject"); + TestProject.GetProjectDirectory(typeof(DefaultRazorProjectFileSystemTest)), + "TestFiles", + "DefaultRazorProjectFileSystem"); [Theory] [InlineData(null)] @@ -21,20 +21,20 @@ namespace Microsoft.AspNetCore.Razor.Language public void NormalizeAndEnsureValidPath_ThrowsIfPathIsNullOrEmpty(string path) { // Arrange - var project = new TestFileSystemRazorProject("C:/some/test/path/root"); + var fileSystem = new TestRazorProjectFileSystem("C:/some/test/path/root"); // Act and Assert - ExceptionAssert.ThrowsArgumentNullOrEmptyString(() => project.NormalizeAndEnsureValidPath(path), "path"); + ExceptionAssert.ThrowsArgumentNullOrEmptyString(() => fileSystem.NormalizeAndEnsureValidPath(path), "path"); } [Fact] public void NormalizeAndEnsureValidPath_NormalizesToAbsolutePath() { // Arrange - var project = new TestFileSystemRazorProject("C:/some/test/path/root"); + var fileSystem = new TestRazorProjectFileSystem("C:/some/test/path/root"); // Act - var absolutePath = project.NormalizeAndEnsureValidPath("file.cshtml"); + var absolutePath = fileSystem.NormalizeAndEnsureValidPath("file.cshtml"); // Assert Assert.Equal("C:/some/test/path/root/file.cshtml", absolutePath); @@ -44,10 +44,10 @@ namespace Microsoft.AspNetCore.Razor.Language public void NormalizeAndEnsureValidPath_NormalizesToAbsolutePathWithoutForwardSlash() { // Arrange - var project = new TestFileSystemRazorProject("C:/some/test/path/root"); + var fileSystem = new TestRazorProjectFileSystem("C:/some/test/path/root"); // Act - var absolutePath = project.NormalizeAndEnsureValidPath("/file.cshtml"); + var absolutePath = fileSystem.NormalizeAndEnsureValidPath("/file.cshtml"); // Assert Assert.Equal("C:/some/test/path/root/file.cshtml", absolutePath); @@ -57,10 +57,10 @@ namespace Microsoft.AspNetCore.Razor.Language public void NormalizeAndEnsureValidPath_NormalizesToForwardSlashes() { // Arrange - var project = new TestFileSystemRazorProject(@"C:\some\test\path\root"); + var fileSystem = new TestRazorProjectFileSystem(@"C:\some\test\path\root"); // Act - var absolutePath = project.NormalizeAndEnsureValidPath(@"something\file.cshtml"); + var absolutePath = fileSystem.NormalizeAndEnsureValidPath(@"something\file.cshtml"); // Assert Assert.Equal("C:/some/test/path/root/something/file.cshtml", absolutePath); @@ -70,10 +70,10 @@ namespace Microsoft.AspNetCore.Razor.Language public void EnumerateItems_DiscoversAllCshtmlFiles() { // Arrange - var fileSystemProject = new FileSystemRazorProject(TestFolder); + var fileSystem = new DefaultRazorProjectFileSystem(TestFolder); // Act - var items = fileSystemProject.EnumerateItems("/"); + var items = fileSystem.EnumerateItems("/"); // Assert Assert.Collection( @@ -130,10 +130,10 @@ namespace Microsoft.AspNetCore.Razor.Language public void EnumerateItems_DiscoversAllCshtmlFiles_UnderSpecifiedBasePath() { // Arrange - var fileSystemProject = new FileSystemRazorProject(TestFolder); + var fileSystem = new DefaultRazorProjectFileSystem(TestFolder); // Act - var items = fileSystemProject.EnumerateItems("/Views"); + var items = fileSystem.EnumerateItems("/Views"); // Assert Assert.Collection( @@ -172,10 +172,10 @@ namespace Microsoft.AspNetCore.Razor.Language public void EnumerateItems_ReturnsEmptySequence_WhenBasePathDoesNotExist() { // Arrange - var fileSystemProject = new FileSystemRazorProject(TestFolder); + var fileSystem = new DefaultRazorProjectFileSystem(TestFolder); // Act - var items = fileSystemProject.EnumerateItems("/Does-Not-Exist"); + var items = fileSystem.EnumerateItems("/Does-Not-Exist"); // Assert Assert.Empty(items); @@ -185,10 +185,10 @@ namespace Microsoft.AspNetCore.Razor.Language public void FindHierarchicalItems_FindsItemsWithMatchingNames() { // Arrange - var fileSystemProject = new FileSystemRazorProject(TestFolder); + var fileSystem = new DefaultRazorProjectFileSystem(TestFolder); // Act - var items = fileSystemProject.FindHierarchicalItems("/Views/Home/Index.cshtml", "_ViewImports.cshtml"); + var items = fileSystem.FindHierarchicalItems("/Views/Home/Index.cshtml", "_ViewImports.cshtml"); // Assert Assert.Collection( @@ -224,10 +224,10 @@ namespace Microsoft.AspNetCore.Razor.Language { // Arrange var filePath = "/Views/About/About.cshtml"; - var fileSystemProject = new FileSystemRazorProject(TestFolder); + var fileSystem = new DefaultRazorProjectFileSystem(TestFolder); // Act - var item = fileSystemProject.GetItem(filePath); + var item = fileSystem.GetItem(filePath); // Assert Assert.True(item.Exists); @@ -242,18 +242,18 @@ namespace Microsoft.AspNetCore.Razor.Language { // Arrange var path = "/NotFound.cshtml"; - var fileSystemProject = new FileSystemRazorProject(TestFolder); + var fileSystem = new DefaultRazorProjectFileSystem(TestFolder); // Act - var item = fileSystemProject.GetItem(path); + var item = fileSystem.GetItem(path); // Assert Assert.False(item.Exists); } - private class TestFileSystemRazorProject : FileSystemRazorProject + private class TestRazorProjectFileSystem : DefaultRazorProjectFileSystem { - public TestFileSystemRazorProject(string root) : base(root) + public TestRazorProjectFileSystem(string root) : base(root) { } diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/FileSystemRazorProjectItemTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectItemTest.cs similarity index 70% rename from test/Microsoft.AspNetCore.Razor.Language.Test/FileSystemRazorProjectItemTest.cs rename to test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectItemTest.cs index a5193f45f9..1fa4453bd3 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/FileSystemRazorProjectItemTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectItemTest.cs @@ -6,21 +6,21 @@ using Xunit; namespace Microsoft.AspNetCore.Razor.Language { - public class FileSystemRazorProjectItemTest + public class DefaultRazorProjectItemTest { private static string TestFolder { get; } = Path.Combine( - TestProject.GetProjectDirectory(typeof(FileSystemRazorProjectItemTest)), - "TestFiles", - "FileSystemRazorProject"); + TestProject.GetProjectDirectory(typeof(DefaultRazorProjectItemTest)), + "TestFiles", + "DefaultRazorProjectFileSystem"); [Fact] - public void FileSystemRazorProjectItem_SetsProperties() + public void DefaultRazorProjectItem_SetsProperties() { // Arrange var fileInfo = new FileInfo(Path.Combine(TestFolder, "Home.cshtml")); // Act - var projectItem = new FileSystemRazorProjectItem("/", "/Home.cshtml", "Home.cshtml", fileInfo); + var projectItem = new DefaultRazorProjectItem("/", "/Home.cshtml", "Home.cshtml", fileInfo); // Assert Assert.Equal("/Home.cshtml", projectItem.FilePath); @@ -38,7 +38,7 @@ namespace Microsoft.AspNetCore.Razor.Language var fileInfo = new FileInfo(Path.Combine(TestFolder, "Views", "FileDoesNotExist.cshtml")); // Act - var projectItem = new FileSystemRazorProjectItem("/Views", "/FileDoesNotExist.cshtml", Path.Combine("Views", "FileDoesNotExist.cshtml"), fileInfo); + var projectItem = new DefaultRazorProjectItem("/Views", "/FileDoesNotExist.cshtml", Path.Combine("Views", "FileDoesNotExist.cshtml"), fileInfo); // Assert Assert.False(projectItem.Exists); @@ -49,7 +49,7 @@ namespace Microsoft.AspNetCore.Razor.Language { // Arrange var fileInfo = new FileInfo(Path.Combine(TestFolder, "Home.cshtml")); - var projectItem = new FileSystemRazorProjectItem("/", "/Home.cshtml", "Home.cshtml", fileInfo); + var projectItem = new DefaultRazorProjectItem("/", "/Home.cshtml", "Home.cshtml", fileInfo); // Act var stream = projectItem.Read(); diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/IntegrationTests/RazorTemplateEngineIntegrationTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/IntegrationTests/RazorTemplateEngineIntegrationTest.cs index 025ff5aa1f..ad26823b85 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/IntegrationTests/RazorTemplateEngineIntegrationTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/IntegrationTests/RazorTemplateEngineIntegrationTest.cs @@ -12,12 +12,12 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests public void GenerateCodeWithDefaults() { // Arrange - var project = new FileSystemRazorProject(TestProjectRoot); + var fileSystem = new DefaultRazorProjectFileSystem(TestProjectRoot); var razorEngine = RazorEngine.Create(engine => { engine.Features.Add(new SuppressChecksumOptionsFeature()); }); - var templateEngine = new RazorTemplateEngine(razorEngine, project); + var templateEngine = new RazorTemplateEngine(razorEngine, fileSystem); // Act var cSharpDocument = templateEngine.GenerateCode($"{FileName}.cshtml"); @@ -30,14 +30,14 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests public void GenerateCodeWithBaseType() { // Arrange - var project = new FileSystemRazorProject(TestProjectRoot); + var fileSystem = new DefaultRazorProjectFileSystem(TestProjectRoot); var razorEngine = RazorEngine.Create(engine => { engine.Features.Add(new SuppressChecksumOptionsFeature()); engine.SetBaseType("MyBaseType"); }); - var templateEngine = new RazorTemplateEngine(razorEngine, project); + var templateEngine = new RazorTemplateEngine(razorEngine, fileSystem); // Act var cSharpDocument = templateEngine.GenerateCode($"{FileName}.cshtml"); @@ -50,7 +50,7 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests public void GenerateCodeWithConfigureClass() { // Arrange - var project = new FileSystemRazorProject(TestProjectRoot); + var fileSystem = new DefaultRazorProjectFileSystem(TestProjectRoot); var razorEngine = RazorEngine.Create(engine => { engine.Features.Add(new SuppressChecksumOptionsFeature()); @@ -70,7 +70,7 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests @class.BaseType = "CustomBaseType"; }); }); - var templateEngine = new RazorTemplateEngine(razorEngine, project); + var templateEngine = new RazorTemplateEngine(razorEngine, fileSystem); // Act var cSharpDocument = templateEngine.GenerateCode($"{FileName}.cshtml"); @@ -83,14 +83,14 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests public void GenerateCodeWithSetNamespace() { // Arrange - var project = new FileSystemRazorProject(TestProjectRoot); + var fileSystem = new DefaultRazorProjectFileSystem(TestProjectRoot); var razorEngine = RazorEngine.Create(engine => { engine.Features.Add(new SuppressChecksumOptionsFeature()); engine.SetNamespace("MyApp.Razor.Views"); }); - var templateEngine = new RazorTemplateEngine(razorEngine, project); + var templateEngine = new RazorTemplateEngine(razorEngine, fileSystem); // Act var cSharpDocument = templateEngine.GenerateCode($"{FileName}.cshtml"); diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/RazorTemplateEngineTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/RazorTemplateEngineTest.cs index 5e757d9252..e77c5a05fa 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/RazorTemplateEngineTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/RazorTemplateEngineTest.cs @@ -15,16 +15,16 @@ namespace Microsoft.AspNetCore.Razor.Language public void GetImports_CanQueryInformationOnNonExistentFileWithoutImports() { // Arrange - var project = new TestRazorProject(); + var fileSystem = new TestRazorProjectFileSystem(); var razorEngine = RazorEngine.Create(); - var templateEngine = new RazorTemplateEngine(razorEngine, project) + var templateEngine = new RazorTemplateEngine(razorEngine, fileSystem) { Options = { ImportsFileName = "MyImport.cshtml" } }; - var projectItemToQuery = project.GetItem("/Views/Home/Index.cshtml"); + var projectItemToQuery = fileSystem.GetItem("/Views/Home/Index.cshtml"); // Act var imports = templateEngine.GetImports(projectItemToQuery); @@ -39,7 +39,7 @@ namespace Microsoft.AspNetCore.Razor.Language // Arrange var path = "/Views/Home/MyImport.cshtml"; var projectItem = new TestRazorProjectItem(path); - var project = new TestRazorProject(new[] { projectItem }); + var project = new TestRazorProjectFileSystem(new[] { projectItem }); var razorEngine = RazorEngine.Create(); var templateEngine = new RazorTemplateEngine(razorEngine, project) { @@ -62,7 +62,7 @@ namespace Microsoft.AspNetCore.Razor.Language public void GenerateCode_ThrowsIfItemCannotBeFound() { // Arrange - var project = new TestRazorProject(new RazorProjectItem[] { }); + var project = new TestRazorProjectFileSystem(new RazorProjectItem[] { }); var razorEngine = RazorEngine.Create(); var templateEngine = new RazorTemplateEngine(razorEngine, project); @@ -76,7 +76,7 @@ namespace Microsoft.AspNetCore.Razor.Language public void SettingOptions_ThrowsIfValueIsNull() { // Arrange - var project = new TestRazorProject(new RazorProjectItem[] { }); + var project = new TestRazorProjectFileSystem(new RazorProjectItem[] { }); var razorEngine = RazorEngine.Create(); var templateEngine = new RazorTemplateEngine(razorEngine, project); @@ -92,7 +92,7 @@ namespace Microsoft.AspNetCore.Razor.Language // Arrange var path = "/Views/Home/Index.cshtml"; var projectItem = new TestRazorProjectItem(path); - var project = new TestRazorProject(new[] { projectItem }); + var project = new TestRazorProjectFileSystem(new[] { projectItem }); var razorEngine = RazorEngine.Create(); var templateEngine = new RazorTemplateEngine(razorEngine, project); @@ -110,7 +110,7 @@ namespace Microsoft.AspNetCore.Razor.Language { // Arrange var path = "/Views/Home/Index.cshtml"; - var project = new TestRazorProject(new RazorProjectItem[] { }); + var project = new TestRazorProjectFileSystem(new RazorProjectItem[] { }); var razorEngine = RazorEngine.Create(); var templateEngine = new RazorTemplateEngine(razorEngine, project); @@ -125,7 +125,7 @@ namespace Microsoft.AspNetCore.Razor.Language // Arrange var path = "/Views/Home/Index.cshtml"; var projectItem = new TestRazorProjectItem(path); - var project = new TestRazorProject(new[] { projectItem }); + var project = new TestRazorProjectFileSystem(new[] { projectItem }); var razorEngine = RazorEngine.Create(); var templateEngine = new RazorTemplateEngine(razorEngine, project); @@ -144,7 +144,7 @@ namespace Microsoft.AspNetCore.Razor.Language // Arrange var path = "/Views/Home/Index.cshtml"; var projectItem = new TestRazorProjectItem(path); - var project = new TestRazorProject(new[] { projectItem }); + var project = new TestRazorProjectFileSystem(new[] { projectItem }); var razorEngine = RazorEngine.Create(); var templateEngine = new RazorTemplateEngine(razorEngine, project); @@ -168,7 +168,7 @@ namespace Microsoft.AspNetCore.Razor.Language { // Arrange var projectItem = new TestRazorProjectItem("/Views/Home/Index.cshtml"); - var project = new TestRazorProject(new[] { projectItem }); + var project = new TestRazorProjectFileSystem(new[] { projectItem }); var razorEngine = RazorEngine.Create(); var templateEngine = new RazorTemplateEngine(razorEngine, project) { @@ -192,7 +192,7 @@ namespace Microsoft.AspNetCore.Razor.Language var projectItem = new TestRazorProjectItem("/Views/Home/Index.cshtml"); var import1 = new TestRazorProjectItem("/MyImport.cshtml"); var import2 = new TestRazorProjectItem("/Views/Home/MyImport.cshtml"); - var project = new TestRazorProject(new[] { import1, import2, projectItem }); + var project = new TestRazorProjectFileSystem(new[] { import1, import2, projectItem }); var razorEngine = RazorEngine.Create(); var templateEngine = new RazorTemplateEngine(razorEngine, project) { @@ -218,7 +218,7 @@ namespace Microsoft.AspNetCore.Razor.Language var projectItem = new TestRazorProjectItem("/Views/Home/Index.cshtml"); var import1 = new TestRazorProjectItem("/MyImport.cshtml"); var import2 = new TestRazorProjectItem("/Views/Home/MyImport.cshtml"); - var project = new TestRazorProject(new[] { import1, import2, projectItem }); + var project = new TestRazorProjectFileSystem(new[] { import1, import2, projectItem }); var razorEngine = RazorEngine.Create(); var defaultImport = RazorSourceDocument.ReadFrom(new MemoryStream(), "Default.cshtml"); var templateEngine = new RazorTemplateEngine(razorEngine, project) @@ -245,7 +245,7 @@ namespace Microsoft.AspNetCore.Razor.Language { // Arrange var projectItem = new TestRazorProjectItem("/Views/Home/Index.cshtml"); - var project = new TestRazorProject(new[] { projectItem }); + var project = new TestRazorProjectFileSystem(new[] { projectItem }); var razorEngine = RazorEngine.Create(); var defaultImport = RazorSourceDocument.ReadFrom(new MemoryStream(), "Default.cshtml"); var templateEngine = new RazorTemplateEngine(razorEngine, project) @@ -269,7 +269,7 @@ namespace Microsoft.AspNetCore.Razor.Language { // Arrange var expected = new[] { "/Views/Home/MyImport.cshtml", "/Views/MyImport.cshtml", "/MyImport.cshtml" }; - var project = new TestRazorProject(); + var project = new TestRazorProjectFileSystem(); var razorEngine = RazorEngine.Create(); var templateEngine = new RazorTemplateEngine(razorEngine, project) { @@ -293,9 +293,9 @@ namespace Microsoft.AspNetCore.Razor.Language // Arrange var expected = new[] { "/Views/Home/MyImport.cshtml", "/Views/MyImport.cshtml", "/MyImport.cshtml" }; var projectItem = new TestRazorProjectItem("/Views/Home/Index.cshtml"); - var project = new TestRazorProject(new[] { projectItem }); + var fileSystem = new TestRazorProjectFileSystem(new[] { projectItem }); var razorEngine = RazorEngine.Create(); - var templateEngine = new RazorTemplateEngine(razorEngine, project) + var templateEngine = new RazorTemplateEngine(razorEngine, fileSystem) { Options = { @@ -316,11 +316,11 @@ namespace Microsoft.AspNetCore.Razor.Language { // Arrange var testFolder = Path.Combine( - TestProject.GetProjectDirectory(typeof(FileSystemRazorProjectTest)), + TestProject.GetProjectDirectory(typeof(DefaultRazorProjectFileSystemTest)), "TestFiles", - "FileSystemRazorProject"); + "DefaultRazorProjectFileSystem"); - var project = new FileSystemRazorProject(testFolder); + var project = new DefaultRazorProjectFileSystem(testFolder); var razorEngine = RazorEngine.Create(); var templateEngine = new RazorTemplateEngine(razorEngine, project) { diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/FileSystemRazorProject/Home.cshtml b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/DefaultRazorProjectFileSystem/Home.cshtml similarity index 100% rename from test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/FileSystemRazorProject/Home.cshtml rename to test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/DefaultRazorProjectFileSystem/Home.cshtml diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/FileSystemRazorProject/Views/About/About.cshtml b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/DefaultRazorProjectFileSystem/Views/About/About.cshtml similarity index 100% rename from test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/FileSystemRazorProject/Views/About/About.cshtml rename to test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/DefaultRazorProjectFileSystem/Views/About/About.cshtml diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/FileSystemRazorProject/Views/Home/Index.cshtml b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/DefaultRazorProjectFileSystem/Views/Home/Index.cshtml similarity index 100% rename from test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/FileSystemRazorProject/Views/Home/Index.cshtml rename to test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/DefaultRazorProjectFileSystem/Views/Home/Index.cshtml diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/FileSystemRazorProject/Views/Home/Index.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/DefaultRazorProjectFileSystem/Views/Home/Index.txt similarity index 100% rename from test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/FileSystemRazorProject/Views/Home/Index.txt rename to test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/DefaultRazorProjectFileSystem/Views/Home/Index.txt diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/FileSystemRazorProject/Views/Home/_ViewImports.cshtml b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/DefaultRazorProjectFileSystem/Views/Home/_ViewImports.cshtml similarity index 100% rename from test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/FileSystemRazorProject/Views/Home/_ViewImports.cshtml rename to test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/DefaultRazorProjectFileSystem/Views/Home/_ViewImports.cshtml diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/FileSystemRazorProject/Views/_ViewImports.cshtml b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/DefaultRazorProjectFileSystem/Views/_ViewImports.cshtml similarity index 100% rename from test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/FileSystemRazorProject/Views/_ViewImports.cshtml rename to test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/DefaultRazorProjectFileSystem/Views/_ViewImports.cshtml diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/FileSystemRazorProject/_ViewImports.cshtml b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/DefaultRazorProjectFileSystem/_ViewImports.cshtml similarity index 100% rename from test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/FileSystemRazorProject/_ViewImports.cshtml rename to test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/DefaultRazorProjectFileSystem/_ViewImports.cshtml diff --git a/test/Microsoft.AspNetCore.Razor.Test.Common/Language/TestRazorProject.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/TestRazorProject.cs similarity index 100% rename from test/Microsoft.AspNetCore.Razor.Test.Common/Language/TestRazorProject.cs rename to test/Microsoft.AspNetCore.Razor.Language.Test/TestRazorProject.cs diff --git a/test/Microsoft.VisualStudio.Editor.Razor.Test/DefaultVisualStudioRazorParserIntegrationTest.cs b/test/Microsoft.VisualStudio.Editor.Razor.Test/DefaultVisualStudioRazorParserIntegrationTest.cs index cb7df55d12..9b38140366 100644 --- a/test/Microsoft.VisualStudio.Editor.Razor.Test/DefaultVisualStudioRazorParserIntegrationTest.cs +++ b/test/Microsoft.VisualStudio.Editor.Razor.Test/DefaultVisualStudioRazorParserIntegrationTest.cs @@ -544,7 +544,7 @@ namespace Microsoft.VisualStudio.Editor.Razor var items = new List(); items.Add(new TestRazorProjectItem(path)); - var project = new TestRazorProject(items); + var project = new TestRazorProjectFileSystem(items); var templateEngine = new RazorTemplateEngine(engine, project); templateEngine.Options.DefaultImports = RazorSourceDocument.Create("@addTagHelper *, Test", "_TestImports.cshtml"); diff --git a/test/Microsoft.VisualStudio.Editor.Razor.Test/RazorSyntaxTreePartialParserTest.cs b/test/Microsoft.VisualStudio.Editor.Razor.Test/RazorSyntaxTreePartialParserTest.cs index b82bf58c6b..074fa0e1be 100644 --- a/test/Microsoft.VisualStudio.Editor.Razor.Test/RazorSyntaxTreePartialParserTest.cs +++ b/test/Microsoft.VisualStudio.Editor.Razor.Test/RazorSyntaxTreePartialParserTest.cs @@ -599,7 +599,7 @@ namespace Microsoft.VisualStudio.Editor.Razor var items = new List(); items.Add(new TestRazorProjectItem(path)); - var project = new TestRazorProject(items); + var project = new TestRazorProjectFileSystem(items); var templateEngine = new RazorTemplateEngine(engine, project); templateEngine.Options.DefaultImports = RazorSourceDocument.Create("@addTagHelper *, Test", "_TestImports.cshtml");