diff --git a/src/Microsoft.AspNetCore.Mvc.Core/Infrastructure/DefaultAssemblyProvider.cs b/src/Microsoft.AspNetCore.Mvc.Core/Infrastructure/DefaultAssemblyProvider.cs index 3681e8ef2a..ee79a57f30 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/Infrastructure/DefaultAssemblyProvider.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/Infrastructure/DefaultAssemblyProvider.cs @@ -6,6 +6,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; +using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyModel; using Microsoft.Extensions.PlatformAbstractions; @@ -23,8 +24,8 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure /// /// Initializes a new instance of . /// - /// The . - public DefaultAssemblyProvider(IApplicationEnvironment environment) + /// The . + public DefaultAssemblyProvider(IHostingEnvironment environment) : this( Assembly.Load(new AssemblyName(environment.ApplicationName)), DependencyContext.Load(Assembly.Load(new AssemblyName(environment.ApplicationName)))) diff --git a/src/Microsoft.AspNetCore.Mvc.Core/project.json b/src/Microsoft.AspNetCore.Mvc.Core/project.json index 552e4431c2..cdd40bf0d6 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/project.json +++ b/src/Microsoft.AspNetCore.Mvc.Core/project.json @@ -24,7 +24,6 @@ "version": "1.0.0-*" }, "Microsoft.Extensions.FileProviders.Abstractions": "1.0.0-*", - "Microsoft.Extensions.PlatformAbstractions": "1.0.0-*", "Microsoft.Extensions.DependencyModel": "1.0.0-*", "Microsoft.Extensions.ClosedGenericMatcher.Sources": { "version": "1.0.0-*", diff --git a/src/Microsoft.AspNetCore.Mvc.Dnx/DnxRoslynCompilationService.cs b/src/Microsoft.AspNetCore.Mvc.Dnx/DnxRoslynCompilationService.cs index 2f72a90809..c36219acad 100644 --- a/src/Microsoft.AspNetCore.Mvc.Dnx/DnxRoslynCompilationService.cs +++ b/src/Microsoft.AspNetCore.Mvc.Dnx/DnxRoslynCompilationService.cs @@ -13,6 +13,7 @@ using System.Reflection.PortableExecutable; using System.Runtime.Loader; #endif using System.Text; +using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc.Razor.Compilation; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; @@ -20,7 +21,6 @@ using Microsoft.CodeAnalysis.Text; using Microsoft.Dnx.Compilation.CSharp; using Microsoft.Extensions.CompilationAbstractions; using Microsoft.Extensions.Options; -using Microsoft.Extensions.PlatformAbstractions; namespace Microsoft.AspNetCore.Mvc.Razor.Internal { @@ -32,7 +32,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Internal private readonly ConcurrentDictionary _metadataFileCache = new ConcurrentDictionary(StringComparer.OrdinalIgnoreCase); - private readonly IApplicationEnvironment _environment; + private readonly IHostingEnvironment _environment; private readonly ILibraryExporter _libraryExporter; private readonly RazorViewEngineOptions _options; private readonly Lazy> _applicationReferences; @@ -48,7 +48,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Internal /// Accessor to . /// The . public DnxRoslynCompilationService( - IApplicationEnvironment environment, + IHostingEnvironment environment, ILibraryExporter libraryExporter, IOptions optionsAccessor, IRazorViewEngineFileProviderAccessor fileProviderAccessor) diff --git a/src/Microsoft.AspNetCore.Mvc.Localization/ViewLocalizer.cs b/src/Microsoft.AspNetCore.Mvc.Localization/ViewLocalizer.cs index 3e2dbd0429..3ec50fe965 100644 --- a/src/Microsoft.AspNetCore.Mvc.Localization/ViewLocalizer.cs +++ b/src/Microsoft.AspNetCore.Mvc.Localization/ViewLocalizer.cs @@ -7,10 +7,10 @@ using System.Diagnostics; using System.Globalization; using System.IO; using System.Text; +using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Mvc.ViewFeatures; using Microsoft.Extensions.Localization; -using Microsoft.Extensions.PlatformAbstractions; namespace Microsoft.AspNetCore.Mvc.Localization { @@ -28,20 +28,20 @@ namespace Microsoft.AspNetCore.Mvc.Localization /// Creates a new . /// /// The . - /// The . - public ViewLocalizer(IHtmlLocalizerFactory localizerFactory, IApplicationEnvironment applicationEnvironment) + /// The . + public ViewLocalizer(IHtmlLocalizerFactory localizerFactory, IHostingEnvironment hostingEnvironment) { if (localizerFactory == null) { throw new ArgumentNullException(nameof(localizerFactory)); } - if (applicationEnvironment == null) + if (hostingEnvironment == null) { - throw new ArgumentNullException(nameof(applicationEnvironment)); + throw new ArgumentNullException(nameof(hostingEnvironment)); } - _applicationName = applicationEnvironment.ApplicationName; + _applicationName = hostingEnvironment.ApplicationName; _localizerFactory = localizerFactory; } diff --git a/src/Microsoft.AspNetCore.Mvc.Razor.Host/project.json b/src/Microsoft.AspNetCore.Mvc.Razor.Host/project.json index 46a2cf6266..13e2d3d565 100644 --- a/src/Microsoft.AspNetCore.Mvc.Razor.Host/project.json +++ b/src/Microsoft.AspNetCore.Mvc.Razor.Host/project.json @@ -23,14 +23,9 @@ } }, "frameworks": { - "net451": { - "dependencies": { - "Microsoft.Extensions.PlatformAbstractions": "1.0.0-*" - } - }, + "net451": { }, "netstandard1.3": { "dependencies": { - "Microsoft.Extensions.PlatformAbstractions": "1.0.0-*", "System.Collections.Concurrent": "4.0.12-*", "System.ComponentModel.TypeConverter": "4.0.1-*", "System.Reflection.Extensions": "4.0.1-*", diff --git a/src/Microsoft.AspNetCore.Mvc.Razor/Internal/DefaultRoslynCompilationService.cs b/src/Microsoft.AspNetCore.Mvc.Razor/Internal/DefaultRoslynCompilationService.cs index a3e1879797..8b9a5da614 100644 --- a/src/Microsoft.AspNetCore.Mvc.Razor/Internal/DefaultRoslynCompilationService.cs +++ b/src/Microsoft.AspNetCore.Mvc.Razor/Internal/DefaultRoslynCompilationService.cs @@ -14,6 +14,7 @@ using System.Runtime.Loader; #endif using System.Text; using Microsoft.AspNetCore.Diagnostics; +using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc.Razor.Compilation; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; @@ -23,7 +24,6 @@ using Microsoft.Extensions.DependencyModel; using Microsoft.Extensions.FileProviders; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; -using Microsoft.Extensions.PlatformAbstractions; namespace Microsoft.AspNetCore.Mvc.Razor.Internal { @@ -50,12 +50,12 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Internal /// /// Initalizes a new instance of the class. /// - /// The environment for the executing application. + /// The . /// Accessor to . /// The . /// The . public DefaultRoslynCompilationService( - IApplicationEnvironment environment, + IHostingEnvironment environment, IOptions optionsAccessor, IRazorViewEngineFileProviderAccessor fileProviderAccessor, ILoggerFactory loggerFactory) @@ -326,7 +326,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Internal mappedLineSpan.EndLinePosition.Character + 1); } - private static DependencyContext GetDependencyContext(IApplicationEnvironment environment) + private static DependencyContext GetDependencyContext(IHostingEnvironment environment) { if (environment.ApplicationName != null) { diff --git a/src/Microsoft.AspNetCore.Mvc.Razor/Internal/DependencyContextRazorViewEngineOptionsSetup.cs b/src/Microsoft.AspNetCore.Mvc.Razor/Internal/DependencyContextRazorViewEngineOptionsSetup.cs index d2eb5de88c..e7f4bc5960 100644 --- a/src/Microsoft.AspNetCore.Mvc.Razor/Internal/DependencyContextRazorViewEngineOptionsSetup.cs +++ b/src/Microsoft.AspNetCore.Mvc.Razor/Internal/DependencyContextRazorViewEngineOptionsSetup.cs @@ -5,11 +5,11 @@ using System; using System.Collections.Generic; using System.Linq; using System.Reflection; +using Microsoft.AspNetCore.Hosting; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.Extensions.DependencyModel; using Microsoft.Extensions.Options; -using Microsoft.Extensions.PlatformAbstractions; namespace Microsoft.AspNetCore.Mvc.Razor.Internal { @@ -22,14 +22,14 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Internal /// /// Initializes a new instance of . /// - public DependencyContextRazorViewEngineOptionsSetup(IApplicationEnvironment applicationEnvironment) - : base(options => ConfigureRazor(options, applicationEnvironment)) + public DependencyContextRazorViewEngineOptionsSetup(IHostingEnvironment hostingEnvironment) + : base(options => ConfigureRazor(options, hostingEnvironment)) { } - private static void ConfigureRazor(RazorViewEngineOptions options, IApplicationEnvironment applicationEnvironment) + private static void ConfigureRazor(RazorViewEngineOptions options, IHostingEnvironment hostingEnvironment) { - var applicationAssembly = Assembly.Load(new AssemblyName(applicationEnvironment.ApplicationName)); + var applicationAssembly = Assembly.Load(new AssemblyName(hostingEnvironment.ApplicationName)); var dependencyContext = DependencyContext.Load(applicationAssembly); var compilationOptions = dependencyContext?.CompilationOptions ?? Extensions.DependencyModel.CompilationOptions.Default; diff --git a/src/Microsoft.AspNetCore.Mvc.Razor/RazorViewEngineOptionsSetup.cs b/src/Microsoft.AspNetCore.Mvc.Razor/RazorViewEngineOptionsSetup.cs index 4f8b6ee89a..97607bc9ec 100644 --- a/src/Microsoft.AspNetCore.Mvc.Razor/RazorViewEngineOptionsSetup.cs +++ b/src/Microsoft.AspNetCore.Mvc.Razor/RazorViewEngineOptionsSetup.cs @@ -5,10 +5,7 @@ using System.Linq; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc.Razor; using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.CSharp; -using Microsoft.Extensions.FileProviders; using Microsoft.Extensions.Options; -using Microsoft.Extensions.PlatformAbstractions; namespace Microsoft.AspNetCore.Mvc { @@ -20,21 +17,21 @@ namespace Microsoft.AspNetCore.Mvc /// /// Initializes a new instance of . /// - /// for the application. /// for the application. public RazorViewEngineOptionsSetup( - IApplicationEnvironment applicationEnvironment, IHostingEnvironment hostingEnvironment) - : base(options => ConfigureRazor(options, applicationEnvironment, hostingEnvironment)) + : base(options => ConfigureRazor(options, hostingEnvironment)) { } private static void ConfigureRazor( RazorViewEngineOptions razorOptions, - IApplicationEnvironment applicationEnvironment, IHostingEnvironment hostingEnvironment) { - razorOptions.FileProviders.Add(new PhysicalFileProvider(applicationEnvironment.ApplicationBasePath)); + if (hostingEnvironment.ContentRootFileProvider != null) + { + razorOptions.FileProviders.Add(hostingEnvironment.ContentRootFileProvider); + } var compilationOptions = razorOptions.CompilationOptions; string configurationSymbol; diff --git a/test/Microsoft.AspNetCore.Mvc.FunctionalTests/MvcEncodedTestFixtureOfT.cs b/test/Microsoft.AspNetCore.Mvc.FunctionalTests/MvcEncodedTestFixtureOfT.cs index 5d588ee2aa..16d6c494d6 100644 --- a/test/Microsoft.AspNetCore.Mvc.FunctionalTests/MvcEncodedTestFixtureOfT.cs +++ b/test/Microsoft.AspNetCore.Mvc.FunctionalTests/MvcEncodedTestFixtureOfT.cs @@ -9,9 +9,9 @@ namespace Microsoft.AspNetCore.Mvc.FunctionalTests { public class MvcEncodedTestFixture : MvcTestFixture { - protected override void InitializeServices(IServiceCollection services, string relativePath) + protected override void InitializeServices(IServiceCollection services) { - base.InitializeServices(services, relativePath); + base.InitializeServices(services); services.AddTransient(); services.AddTransient(); services.AddTransient(); diff --git a/test/Microsoft.AspNetCore.Mvc.FunctionalTests/MvcTestFixture.cs b/test/Microsoft.AspNetCore.Mvc.FunctionalTests/MvcTestFixture.cs index 5f2733f15b..54ce70b7ef 100644 --- a/test/Microsoft.AspNetCore.Mvc.FunctionalTests/MvcTestFixture.cs +++ b/test/Microsoft.AspNetCore.Mvc.FunctionalTests/MvcTestFixture.cs @@ -36,7 +36,8 @@ namespace Microsoft.AspNetCore.Mvc.FunctionalTests using (new CultureReplacer()) { var builder = new WebHostBuilder() - .ConfigureServices(serviceCollection => InitializeServices(serviceCollection, relativePath)) + .UseContentRoot(GetApplicationPath(relativePath)) + .ConfigureServices(InitializeServices) .UseStartup(typeof(TStartup)); _server = new TestServer(builder); @@ -54,14 +55,22 @@ namespace Microsoft.AspNetCore.Mvc.FunctionalTests _server.Dispose(); } - protected virtual void InitializeServices(IServiceCollection services, string relativePath) + private static string GetApplicationPath(string relativePath) + { + var startupAssembly = typeof(TStartup).GetTypeInfo().Assembly; + var applicationName = startupAssembly.GetName().Name; +#if DNX451 + var libraryManager = DnxPlatformServices.Default.LibraryManager; + var library = libraryManager.GetLibrary(applicationName); + return Path.GetDirectoryName(library.Path); +#else + var applicationBasePath = PlatformServices.Default.Application.ApplicationBasePath; + return Path.GetFullPath(Path.Combine(applicationBasePath, relativePath, applicationName)); +#endif + } + + protected virtual void InitializeServices(IServiceCollection services) { - // When an application executes in a regular context, the application base path points to the root - // directory where the application is located, for example .../samples/MvcSample.Web. However, when - // executing an application as part of a test, the ApplicationBasePath of the IApplicationEnvironment - // points to the root folder of the test project. - // To compensate, we need to calculate the correct project path and override the application - // environment value so that components like the view engine work properly in the context of the test. var startupAssembly = typeof(TStartup).GetTypeInfo().Assembly; var applicationName = startupAssembly.GetName().Name; @@ -69,21 +78,8 @@ namespace Microsoft.AspNetCore.Mvc.FunctionalTests #if DNX451 services.AddSingleton(CompilationServices.Default.LibraryExporter); services.AddSingleton(); - - var libraryManager = DnxPlatformServices.Default.LibraryManager; - var library = libraryManager.GetLibrary(applicationName); - var applicationRoot = Path.GetDirectoryName(library.Path); -#else - var applicationRoot = Path.GetFullPath(Path.Combine( - applicationEnvironment.ApplicationBasePath, - relativePath, - applicationName - )); #endif - services.AddSingleton( - new TestApplicationEnvironment(applicationEnvironment, applicationName, applicationRoot)); - // Inject a custom assembly provider. Overrides AddMvc() because that uses TryAdd(). var assemblyProvider = new StaticAssemblyProvider(); assemblyProvider.CandidateAssemblies.Add(startupAssembly); diff --git a/test/Microsoft.AspNetCore.Mvc.FunctionalTests/TestApplicationEnvironment.cs b/test/Microsoft.AspNetCore.Mvc.FunctionalTests/TestApplicationEnvironment.cs deleted file mode 100644 index ef551d491e..0000000000 --- a/test/Microsoft.AspNetCore.Mvc.FunctionalTests/TestApplicationEnvironment.cs +++ /dev/null @@ -1,44 +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 System.Runtime.Versioning; -using Microsoft.Extensions.PlatformAbstractions; - -namespace Microsoft.AspNetCore.Mvc.FunctionalTests -{ - // An application environment that overrides the base path of the original - // application environment in order to make it point to the folder of the original web - // aaplication so that components like ViewEngines can find views as if they were executing - // in a regular context. - public class TestApplicationEnvironment : IApplicationEnvironment - { - private readonly IApplicationEnvironment _original; - - public TestApplicationEnvironment(IApplicationEnvironment original, string name, string basePath) - { - _original = original; - ApplicationName = name; - ApplicationBasePath = basePath; - } - - public string ApplicationName { get; } - - public string ApplicationVersion - { - get - { - return _original.ApplicationVersion; - } - } - - public string ApplicationBasePath { get; } - - public FrameworkName RuntimeFramework - { - get - { - return _original.RuntimeFramework; - } - } - } -} \ No newline at end of file diff --git a/test/Microsoft.AspNetCore.Mvc.Localization.Test/HtmlLocalizerOfTTest.cs b/test/Microsoft.AspNetCore.Mvc.Localization.Test/HtmlLocalizerOfTTest.cs index f00c6998b9..bef4d07124 100644 --- a/test/Microsoft.AspNetCore.Mvc.Localization.Test/HtmlLocalizerOfTTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Localization.Test/HtmlLocalizerOfTTest.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.Globalization; +using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.Extensions.Localization; using Microsoft.Extensions.PlatformAbstractions; @@ -39,9 +40,6 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test public void HtmlLocalizerOfTTest_UseIndexerWithArguments_ReturnsLocalizedHtmlString() { // Arrange - var applicationEnvironment = new Mock(); - applicationEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication"); - var localizedString = new LocalizedHtmlString("Hello", "Bonjour test"); var htmlLocalizer = new Mock(); diff --git a/test/Microsoft.AspNetCore.Mvc.Localization.Test/ViewLocalizerTest.cs b/test/Microsoft.AspNetCore.Mvc.Localization.Test/ViewLocalizerTest.cs index 81844644cc..0e40de4a06 100644 --- a/test/Microsoft.AspNetCore.Mvc.Localization.Test/ViewLocalizerTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Localization.Test/ViewLocalizerTest.cs @@ -5,10 +5,10 @@ using System; using System.Collections.Generic; using System.Globalization; using System.Linq; +using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Mvc.ViewEngines; using Microsoft.Extensions.Localization; -using Microsoft.Extensions.PlatformAbstractions; using Moq; using Xunit; @@ -31,15 +31,15 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test public void ViewLocalizer_LooksForCorrectResourceBaseNameLocation(string appName, string viewPath, string executingPath, string expectedBaseName) { // Arrange - var applicationEnvironment = new Mock(); - applicationEnvironment.Setup(a => a.ApplicationName).Returns(appName); + var hostingEnvironment = new Mock(); + hostingEnvironment.Setup(a => a.ApplicationName).Returns(appName); var htmlLocalizerFactory = new Mock(MockBehavior.Loose); var view = new Mock(); view.Setup(v => v.Path).Returns(viewPath); var viewContext = new ViewContext(); viewContext.ExecutingFilePath = executingPath; viewContext.View = view.Object; - var viewLocalizer = new ViewLocalizer(htmlLocalizerFactory.Object, applicationEnvironment.Object); + var viewLocalizer = new ViewLocalizer(htmlLocalizerFactory.Object, hostingEnvironment.Object); // Act viewLocalizer.Contextualize(viewContext); @@ -55,8 +55,8 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test public void ViewLocalizer_UseIndexer_ReturnsLocalizedHtmlString() { // Arrange - var applicationEnvironment = new Mock(); - applicationEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication"); + var hostingEnvironment = new Mock(); + hostingEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication"); var localizedString = new LocalizedHtmlString("Hello", "Bonjour"); @@ -67,7 +67,7 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test htmlLocalizerFactory.Setup(h => h.Create("TestApplication.example", "TestApplication")) .Returns(htmlLocalizer.Object); - var viewLocalizer = new ViewLocalizer(htmlLocalizerFactory.Object, applicationEnvironment.Object); + var viewLocalizer = new ViewLocalizer(htmlLocalizerFactory.Object, hostingEnvironment.Object); var view = new Mock(); view.Setup(v => v.Path).Returns("example"); @@ -87,8 +87,8 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test public void ViewLocalizer_UseIndexerWithArguments_ReturnsLocalizedHtmlString() { // Arrange - var applicationEnvironment = new Mock(); - applicationEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication"); + var hostingEnvironment = new Mock(); + hostingEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication"); var localizedString = new LocalizedHtmlString("Hello", "Bonjour test"); @@ -99,7 +99,7 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test htmlLocalizerFactory.Setup( h => h.Create("TestApplication.example", "TestApplication")).Returns(htmlLocalizer.Object); - var viewLocalizer = new ViewLocalizer(htmlLocalizerFactory.Object, applicationEnvironment.Object); + var viewLocalizer = new ViewLocalizer(htmlLocalizerFactory.Object, hostingEnvironment.Object); var view = new Mock(); view.Setup(v => v.Path).Returns("example"); @@ -121,9 +121,9 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test // Arrange var stringLocalizer = new TestStringLocalizer(); var htmlLocalizer = new HtmlLocalizer(stringLocalizer); - var applicationEnvironment = new Mock(); - applicationEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication"); - var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), applicationEnvironment.Object); + var hostingEnvironment = new Mock(); + hostingEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication"); + var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), hostingEnvironment.Object); var view = new Mock(); view.Setup(v => v.Path).Returns("example"); @@ -146,9 +146,9 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test // Arrange var stringLocalizer = new TestStringLocalizer(); var htmlLocalizer = new HtmlLocalizer(stringLocalizer); - var applicationEnvironment = new Mock(); - applicationEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication"); - var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), applicationEnvironment.Object); + var hostingEnvironment = new Mock(); + hostingEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication"); + var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), hostingEnvironment.Object); var view = new Mock(); view.Setup(v => v.Path).Returns("example"); @@ -172,9 +172,9 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test // Arrange var stringLocalizer = new TestStringLocalizer(); var htmlLocalizer = new HtmlLocalizer(stringLocalizer); - var applicationEnvironment = new Mock(); - applicationEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication"); - var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), applicationEnvironment.Object); + var hostingEnvironment = new Mock(); + hostingEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication"); + var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), hostingEnvironment.Object); var view = new Mock(); view.Setup(v => v.Path).Returns("example"); @@ -196,9 +196,9 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test // Arrange var stringLocalizer = new TestStringLocalizer(); var htmlLocalizer = new HtmlLocalizer(stringLocalizer); - var applicationEnvironment = new Mock(); - applicationEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication"); - var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), applicationEnvironment.Object); + var hostingEnvironment = new Mock(); + hostingEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication"); + var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), hostingEnvironment.Object); var view = new Mock(); view.Setup(v => v.Path).Returns("example"); @@ -220,9 +220,9 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test // Arrange var stringLocalizer = new TestStringLocalizer(); var htmlLocalizer = new HtmlLocalizer(stringLocalizer); - var applicationEnvironment = new Mock(); - applicationEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication"); - var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), applicationEnvironment.Object); + var hostingEnvironment = new Mock(); + hostingEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication"); + var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), hostingEnvironment.Object); var view = new Mock(); view.Setup(v => v.Path).Returns("example"); @@ -244,9 +244,9 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test // Arrange var stringLocalizer = new TestStringLocalizer(); var htmlLocalizer = new HtmlLocalizer(stringLocalizer); - var applicationEnvironment = new Mock(); - applicationEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication"); - var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), applicationEnvironment.Object); + var hostingEnvironment = new Mock(); + hostingEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication"); + var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), hostingEnvironment.Object); var view = new Mock(); view.Setup(v => v.Path).Returns("example"); @@ -268,9 +268,9 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test // Arrange var stringLocalizer = new TestStringLocalizer(); var htmlLocalizer = new HtmlLocalizer(stringLocalizer); - var applicationEnvironment = new Mock(); - applicationEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication"); - var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), applicationEnvironment.Object); + var hostingEnvironment = new Mock(); + hostingEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication"); + var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), hostingEnvironment.Object); var view = new Mock(); view.Setup(v => v.Path).Returns("example"); diff --git a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/LinkTagHelperTest.cs b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/LinkTagHelperTest.cs index acc6eaefb8..b93504a2b4 100644 --- a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/LinkTagHelperTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/LinkTagHelperTest.cs @@ -23,7 +23,6 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Microsoft.AspNetCore.Routing; using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.FileProviders; -using Microsoft.Extensions.PlatformAbstractions; using Microsoft.Extensions.Primitives; using Microsoft.Extensions.WebEncoders.Testing; using Moq; @@ -1034,13 +1033,6 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers return hostingEnvironment.Object; } - private static IApplicationEnvironment MakeApplicationEnvironment(string applicationName = "testApplication") - { - var applicationEnvironment = new Mock(); - applicationEnvironment.Setup(a => a.ApplicationName).Returns(applicationName); - return applicationEnvironment.Object; - } - private static IMemoryCache MakeCache() => new MemoryCache(new MemoryCacheOptions()); private static IUrlHelperFactory MakeUrlHelperFactory() diff --git a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/ScriptTagHelperTest.cs b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/ScriptTagHelperTest.cs index 05c280f14a..76c6b8e2f3 100644 --- a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/ScriptTagHelperTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/ScriptTagHelperTest.cs @@ -971,13 +971,6 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers return hostingEnvironment.Object; } - private static IApplicationEnvironment MakeApplicationEnvironment(string applicationName = "testApplication") - { - var applicationEnvironment = new Mock(); - applicationEnvironment.Setup(a => a.ApplicationName).Returns(applicationName); - return applicationEnvironment.Object; - } - private static IMemoryCache MakeCache() => new MemoryCache(new MemoryCacheOptions()); private static IUrlHelperFactory MakeUrlHelperFactory() diff --git a/test/Microsoft.AspNetCore.Mvc.Test/MvcOptionsSetupTest.cs b/test/Microsoft.AspNetCore.Mvc.Test/MvcOptionsSetupTest.cs index 77d0e72e89..de6f7e0f64 100644 --- a/test/Microsoft.AspNetCore.Mvc.Test/MvcOptionsSetupTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Test/MvcOptionsSetupTest.cs @@ -2,7 +2,6 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; -using System.IO; using System.Linq; using System.Reflection; using System.Threading; @@ -18,9 +17,9 @@ using Microsoft.AspNetCore.Mvc.ModelBinding.Metadata; using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; using Microsoft.AspNetCore.Mvc.Razor; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.FileProviders; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; -using Microsoft.Extensions.PlatformAbstractions; using Moq; using Newtonsoft.Json.Linq; using Xunit; @@ -247,17 +246,14 @@ namespace Microsoft.AspNetCore.Mvc private static void AddViewEngineOptionsServices(IServiceCollection serviceCollection) { - serviceCollection.AddSingleton(Mock.Of()); - var applicationEnvironment = new Mock(); - applicationEnvironment.SetupGet(e => e.ApplicationName) + var hostingEnvironment = new Mock(); + hostingEnvironment.SetupGet(e => e.ApplicationName) .Returns(typeof(MvcOptionsSetupTest).GetTypeInfo().Assembly.GetName().Name); - // ApplicationBasePath is used to set up a PhysicalFileProvider which requires - // a real directory. - applicationEnvironment.SetupGet(e => e.ApplicationBasePath) - .Returns(Directory.GetCurrentDirectory()); + hostingEnvironment.SetupGet(e => e.ContentRootFileProvider) + .Returns(Mock.Of()); - serviceCollection.AddSingleton(applicationEnvironment.Object); + serviceCollection.AddSingleton(hostingEnvironment.Object); } } } diff --git a/test/Microsoft.AspNetCore.Mvc.Test/RazorViewEngineOptionsSetupTest.cs b/test/Microsoft.AspNetCore.Mvc.Test/RazorViewEngineOptionsSetupTest.cs index fece4a7244..f47ee5c334 100644 --- a/test/Microsoft.AspNetCore.Mvc.Test/RazorViewEngineOptionsSetupTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Test/RazorViewEngineOptionsSetupTest.cs @@ -19,20 +19,20 @@ namespace Microsoft.AspNetCore.Mvc { // Arrange var options = new RazorViewEngineOptions(); - var appEnv = new Mock(); - appEnv.SetupGet(e => e.ApplicationBasePath) - .Returns(Directory.GetCurrentDirectory()); + var expected = Mock.Of(); var hostingEnv = new Mock(); + hostingEnv.SetupGet(e => e.ContentRootFileProvider) + .Returns(expected); hostingEnv.SetupGet(e => e.EnvironmentName) .Returns("Development"); - var optionsSetup = new RazorViewEngineOptionsSetup(appEnv.Object, hostingEnv.Object); + var optionsSetup = new RazorViewEngineOptionsSetup(hostingEnv.Object); // Act optionsSetup.Configure(options); // Assert var fileProvider = Assert.Single(options.FileProviders); - Assert.IsType(fileProvider); + Assert.Same(expected, fileProvider); } [Theory] @@ -43,13 +43,10 @@ namespace Microsoft.AspNetCore.Mvc { // Arrange var options = new RazorViewEngineOptions(); - var appEnv = new Mock(); - appEnv.SetupGet(e => e.ApplicationBasePath) - .Returns(Directory.GetCurrentDirectory()); var hostingEnv = new Mock(); hostingEnv.SetupGet(e => e.EnvironmentName) .Returns(environment); - var optionsSetup = new RazorViewEngineOptionsSetup(appEnv.Object, hostingEnv.Object); + var optionsSetup = new RazorViewEngineOptionsSetup(hostingEnv.Object); // Act optionsSetup.Configure(options); @@ -68,13 +65,10 @@ namespace Microsoft.AspNetCore.Mvc { // Arrange var options = new RazorViewEngineOptions(); - var appEnv = new Mock(); - appEnv.SetupGet(e => e.ApplicationBasePath) - .Returns(Directory.GetCurrentDirectory()); var hostingEnv = new Mock(); hostingEnv.SetupGet(e => e.EnvironmentName) .Returns(environment); - var optionsSetup = new RazorViewEngineOptionsSetup(appEnv.Object, hostingEnv.Object); + var optionsSetup = new RazorViewEngineOptionsSetup(hostingEnv.Object); // Act optionsSetup.Configure(options); diff --git a/test/WebSites/FilesWebSite/Controllers/DownloadFilesController.cs b/test/WebSites/FilesWebSite/Controllers/DownloadFilesController.cs index 5db977a8d2..3ee3e47a05 100644 --- a/test/WebSites/FilesWebSite/Controllers/DownloadFilesController.cs +++ b/test/WebSites/FilesWebSite/Controllers/DownloadFilesController.cs @@ -3,29 +3,29 @@ using System.IO; using System.Text; +using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.PlatformAbstractions; namespace FilesWebSite { public class DownloadFilesController : Controller { - private readonly IApplicationEnvironment _appEnvironment; + private readonly IHostingEnvironment _hostingEnvironment; - public DownloadFilesController(IApplicationEnvironment appEnvironment) + public DownloadFilesController(IHostingEnvironment hostingEnvironment) { - _appEnvironment = appEnvironment; + _hostingEnvironment = hostingEnvironment; } public IActionResult DowloadFromDisk() { - var path = Path.Combine(_appEnvironment.ApplicationBasePath, "sample.txt"); + var path = Path.Combine(_hostingEnvironment.ContentRootPath, "sample.txt"); return PhysicalFile(path, "text/plain"); } public IActionResult DowloadFromDiskWithFileName() { - var path = Path.Combine(_appEnvironment.ApplicationBasePath, "sample.txt"); + var path = Path.Combine(_hostingEnvironment.ContentRootPath, "sample.txt"); return PhysicalFile(path, "text/plain", "downloadName.txt"); }