Reacting to Hosting changes
This commit is contained in:
parent
1ae1cdb10b
commit
bf1fc7dab3
|
|
@ -6,6 +6,7 @@ using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.Extensions.DependencyModel;
|
using Microsoft.Extensions.DependencyModel;
|
||||||
using Microsoft.Extensions.PlatformAbstractions;
|
using Microsoft.Extensions.PlatformAbstractions;
|
||||||
|
|
||||||
|
|
@ -23,8 +24,8 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of <see cref="DefaultAssemblyProvider"/>.
|
/// Initializes a new instance of <see cref="DefaultAssemblyProvider"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="environment">The <see cref="IApplicationEnvironment"/>.</param>
|
/// <param name="environment">The <see cref="IHostingEnvironment"/>.</param>
|
||||||
public DefaultAssemblyProvider(IApplicationEnvironment environment)
|
public DefaultAssemblyProvider(IHostingEnvironment environment)
|
||||||
: this(
|
: this(
|
||||||
Assembly.Load(new AssemblyName(environment.ApplicationName)),
|
Assembly.Load(new AssemblyName(environment.ApplicationName)),
|
||||||
DependencyContext.Load(Assembly.Load(new AssemblyName(environment.ApplicationName))))
|
DependencyContext.Load(Assembly.Load(new AssemblyName(environment.ApplicationName))))
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,6 @@
|
||||||
"version": "1.0.0-*"
|
"version": "1.0.0-*"
|
||||||
},
|
},
|
||||||
"Microsoft.Extensions.FileProviders.Abstractions": "1.0.0-*",
|
"Microsoft.Extensions.FileProviders.Abstractions": "1.0.0-*",
|
||||||
"Microsoft.Extensions.PlatformAbstractions": "1.0.0-*",
|
|
||||||
"Microsoft.Extensions.DependencyModel": "1.0.0-*",
|
"Microsoft.Extensions.DependencyModel": "1.0.0-*",
|
||||||
"Microsoft.Extensions.ClosedGenericMatcher.Sources": {
|
"Microsoft.Extensions.ClosedGenericMatcher.Sources": {
|
||||||
"version": "1.0.0-*",
|
"version": "1.0.0-*",
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ using System.Reflection.PortableExecutable;
|
||||||
using System.Runtime.Loader;
|
using System.Runtime.Loader;
|
||||||
#endif
|
#endif
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Mvc.Razor.Compilation;
|
using Microsoft.AspNetCore.Mvc.Razor.Compilation;
|
||||||
using Microsoft.CodeAnalysis;
|
using Microsoft.CodeAnalysis;
|
||||||
using Microsoft.CodeAnalysis.CSharp;
|
using Microsoft.CodeAnalysis.CSharp;
|
||||||
|
|
@ -20,7 +21,6 @@ using Microsoft.CodeAnalysis.Text;
|
||||||
using Microsoft.Dnx.Compilation.CSharp;
|
using Microsoft.Dnx.Compilation.CSharp;
|
||||||
using Microsoft.Extensions.CompilationAbstractions;
|
using Microsoft.Extensions.CompilationAbstractions;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using Microsoft.Extensions.PlatformAbstractions;
|
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Mvc.Razor.Internal
|
namespace Microsoft.AspNetCore.Mvc.Razor.Internal
|
||||||
{
|
{
|
||||||
|
|
@ -32,7 +32,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Internal
|
||||||
private readonly ConcurrentDictionary<string, AssemblyMetadata> _metadataFileCache =
|
private readonly ConcurrentDictionary<string, AssemblyMetadata> _metadataFileCache =
|
||||||
new ConcurrentDictionary<string, AssemblyMetadata>(StringComparer.OrdinalIgnoreCase);
|
new ConcurrentDictionary<string, AssemblyMetadata>(StringComparer.OrdinalIgnoreCase);
|
||||||
|
|
||||||
private readonly IApplicationEnvironment _environment;
|
private readonly IHostingEnvironment _environment;
|
||||||
private readonly ILibraryExporter _libraryExporter;
|
private readonly ILibraryExporter _libraryExporter;
|
||||||
private readonly RazorViewEngineOptions _options;
|
private readonly RazorViewEngineOptions _options;
|
||||||
private readonly Lazy<List<MetadataReference>> _applicationReferences;
|
private readonly Lazy<List<MetadataReference>> _applicationReferences;
|
||||||
|
|
@ -48,7 +48,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Internal
|
||||||
/// <param name="optionsAccessor">Accessor to <see cref="RazorViewEngineOptions"/>.</param>
|
/// <param name="optionsAccessor">Accessor to <see cref="RazorViewEngineOptions"/>.</param>
|
||||||
/// <param name="fileProviderAccessor">The <see cref="IRazorViewEngineFileProviderAccessor"/>.</param>
|
/// <param name="fileProviderAccessor">The <see cref="IRazorViewEngineFileProviderAccessor"/>.</param>
|
||||||
public DnxRoslynCompilationService(
|
public DnxRoslynCompilationService(
|
||||||
IApplicationEnvironment environment,
|
IHostingEnvironment environment,
|
||||||
ILibraryExporter libraryExporter,
|
ILibraryExporter libraryExporter,
|
||||||
IOptions<RazorViewEngineOptions> optionsAccessor,
|
IOptions<RazorViewEngineOptions> optionsAccessor,
|
||||||
IRazorViewEngineFileProviderAccessor fileProviderAccessor)
|
IRazorViewEngineFileProviderAccessor fileProviderAccessor)
|
||||||
|
|
|
||||||
|
|
@ -7,10 +7,10 @@ using System.Diagnostics;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Mvc.Rendering;
|
using Microsoft.AspNetCore.Mvc.Rendering;
|
||||||
using Microsoft.AspNetCore.Mvc.ViewFeatures;
|
using Microsoft.AspNetCore.Mvc.ViewFeatures;
|
||||||
using Microsoft.Extensions.Localization;
|
using Microsoft.Extensions.Localization;
|
||||||
using Microsoft.Extensions.PlatformAbstractions;
|
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Mvc.Localization
|
namespace Microsoft.AspNetCore.Mvc.Localization
|
||||||
{
|
{
|
||||||
|
|
@ -28,20 +28,20 @@ namespace Microsoft.AspNetCore.Mvc.Localization
|
||||||
/// Creates a new <see cref="ViewLocalizer"/>.
|
/// Creates a new <see cref="ViewLocalizer"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="localizerFactory">The <see cref="IHtmlLocalizerFactory"/>.</param>
|
/// <param name="localizerFactory">The <see cref="IHtmlLocalizerFactory"/>.</param>
|
||||||
/// <param name="applicationEnvironment">The <see cref="IApplicationEnvironment"/>.</param>
|
/// <param name="hostingEnvironment">The <see cref="IHostingEnvironment"/>.</param>
|
||||||
public ViewLocalizer(IHtmlLocalizerFactory localizerFactory, IApplicationEnvironment applicationEnvironment)
|
public ViewLocalizer(IHtmlLocalizerFactory localizerFactory, IHostingEnvironment hostingEnvironment)
|
||||||
{
|
{
|
||||||
if (localizerFactory == null)
|
if (localizerFactory == null)
|
||||||
{
|
{
|
||||||
throw new ArgumentNullException(nameof(localizerFactory));
|
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;
|
_localizerFactory = localizerFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,14 +23,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"frameworks": {
|
"frameworks": {
|
||||||
"net451": {
|
"net451": { },
|
||||||
"dependencies": {
|
|
||||||
"Microsoft.Extensions.PlatformAbstractions": "1.0.0-*"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"netstandard1.3": {
|
"netstandard1.3": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Extensions.PlatformAbstractions": "1.0.0-*",
|
|
||||||
"System.Collections.Concurrent": "4.0.12-*",
|
"System.Collections.Concurrent": "4.0.12-*",
|
||||||
"System.ComponentModel.TypeConverter": "4.0.1-*",
|
"System.ComponentModel.TypeConverter": "4.0.1-*",
|
||||||
"System.Reflection.Extensions": "4.0.1-*",
|
"System.Reflection.Extensions": "4.0.1-*",
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ using System.Runtime.Loader;
|
||||||
#endif
|
#endif
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using Microsoft.AspNetCore.Diagnostics;
|
using Microsoft.AspNetCore.Diagnostics;
|
||||||
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Mvc.Razor.Compilation;
|
using Microsoft.AspNetCore.Mvc.Razor.Compilation;
|
||||||
using Microsoft.CodeAnalysis;
|
using Microsoft.CodeAnalysis;
|
||||||
using Microsoft.CodeAnalysis.CSharp;
|
using Microsoft.CodeAnalysis.CSharp;
|
||||||
|
|
@ -23,7 +24,6 @@ using Microsoft.Extensions.DependencyModel;
|
||||||
using Microsoft.Extensions.FileProviders;
|
using Microsoft.Extensions.FileProviders;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using Microsoft.Extensions.PlatformAbstractions;
|
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Mvc.Razor.Internal
|
namespace Microsoft.AspNetCore.Mvc.Razor.Internal
|
||||||
{
|
{
|
||||||
|
|
@ -50,12 +50,12 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Internal
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initalizes a new instance of the <see cref="DefaultRoslynCompilationService"/> class.
|
/// Initalizes a new instance of the <see cref="DefaultRoslynCompilationService"/> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="environment">The environment for the executing application.</param>
|
/// <param name="environment">The <see cref="IHostingEnvironment"/>.</param>
|
||||||
/// <param name="optionsAccessor">Accessor to <see cref="RazorViewEngineOptions"/>.</param>
|
/// <param name="optionsAccessor">Accessor to <see cref="RazorViewEngineOptions"/>.</param>
|
||||||
/// <param name="fileProviderAccessor">The <see cref="IRazorViewEngineFileProviderAccessor"/>.</param>
|
/// <param name="fileProviderAccessor">The <see cref="IRazorViewEngineFileProviderAccessor"/>.</param>
|
||||||
/// <param name="loggerFactory">The <see cref="ILoggerFactory"/>.</param>
|
/// <param name="loggerFactory">The <see cref="ILoggerFactory"/>.</param>
|
||||||
public DefaultRoslynCompilationService(
|
public DefaultRoslynCompilationService(
|
||||||
IApplicationEnvironment environment,
|
IHostingEnvironment environment,
|
||||||
IOptions<RazorViewEngineOptions> optionsAccessor,
|
IOptions<RazorViewEngineOptions> optionsAccessor,
|
||||||
IRazorViewEngineFileProviderAccessor fileProviderAccessor,
|
IRazorViewEngineFileProviderAccessor fileProviderAccessor,
|
||||||
ILoggerFactory loggerFactory)
|
ILoggerFactory loggerFactory)
|
||||||
|
|
@ -326,7 +326,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Internal
|
||||||
mappedLineSpan.EndLinePosition.Character + 1);
|
mappedLineSpan.EndLinePosition.Character + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static DependencyContext GetDependencyContext(IApplicationEnvironment environment)
|
private static DependencyContext GetDependencyContext(IHostingEnvironment environment)
|
||||||
{
|
{
|
||||||
if (environment.ApplicationName != null)
|
if (environment.ApplicationName != null)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -5,11 +5,11 @@ using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.CodeAnalysis;
|
using Microsoft.CodeAnalysis;
|
||||||
using Microsoft.CodeAnalysis.CSharp;
|
using Microsoft.CodeAnalysis.CSharp;
|
||||||
using Microsoft.Extensions.DependencyModel;
|
using Microsoft.Extensions.DependencyModel;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using Microsoft.Extensions.PlatformAbstractions;
|
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Mvc.Razor.Internal
|
namespace Microsoft.AspNetCore.Mvc.Razor.Internal
|
||||||
{
|
{
|
||||||
|
|
@ -22,14 +22,14 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Internal
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of <see cref="DependencyContextRazorViewEngineOptionsSetup"/>.
|
/// Initializes a new instance of <see cref="DependencyContextRazorViewEngineOptionsSetup"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DependencyContextRazorViewEngineOptionsSetup(IApplicationEnvironment applicationEnvironment)
|
public DependencyContextRazorViewEngineOptionsSetup(IHostingEnvironment hostingEnvironment)
|
||||||
: base(options => ConfigureRazor(options, applicationEnvironment))
|
: 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 dependencyContext = DependencyContext.Load(applicationAssembly);
|
||||||
var compilationOptions = dependencyContext?.CompilationOptions ?? Extensions.DependencyModel.CompilationOptions.Default;
|
var compilationOptions = dependencyContext?.CompilationOptions ?? Extensions.DependencyModel.CompilationOptions.Default;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,7 @@ using System.Linq;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Mvc.Razor;
|
using Microsoft.AspNetCore.Mvc.Razor;
|
||||||
using Microsoft.CodeAnalysis;
|
using Microsoft.CodeAnalysis;
|
||||||
using Microsoft.CodeAnalysis.CSharp;
|
|
||||||
using Microsoft.Extensions.FileProviders;
|
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using Microsoft.Extensions.PlatformAbstractions;
|
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Mvc
|
namespace Microsoft.AspNetCore.Mvc
|
||||||
{
|
{
|
||||||
|
|
@ -20,21 +17,21 @@ namespace Microsoft.AspNetCore.Mvc
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of <see cref="RazorViewEngineOptions"/>.
|
/// Initializes a new instance of <see cref="RazorViewEngineOptions"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="applicationEnvironment"><see cref="IApplicationEnvironment"/> for the application.</param>
|
|
||||||
/// <param name="hostingEnvironment"><see cref="IHostingEnvironment"/> for the application.</param>
|
/// <param name="hostingEnvironment"><see cref="IHostingEnvironment"/> for the application.</param>
|
||||||
public RazorViewEngineOptionsSetup(
|
public RazorViewEngineOptionsSetup(
|
||||||
IApplicationEnvironment applicationEnvironment,
|
|
||||||
IHostingEnvironment hostingEnvironment)
|
IHostingEnvironment hostingEnvironment)
|
||||||
: base(options => ConfigureRazor(options, applicationEnvironment, hostingEnvironment))
|
: base(options => ConfigureRazor(options, hostingEnvironment))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void ConfigureRazor(
|
private static void ConfigureRazor(
|
||||||
RazorViewEngineOptions razorOptions,
|
RazorViewEngineOptions razorOptions,
|
||||||
IApplicationEnvironment applicationEnvironment,
|
|
||||||
IHostingEnvironment hostingEnvironment)
|
IHostingEnvironment hostingEnvironment)
|
||||||
{
|
{
|
||||||
razorOptions.FileProviders.Add(new PhysicalFileProvider(applicationEnvironment.ApplicationBasePath));
|
if (hostingEnvironment.ContentRootFileProvider != null)
|
||||||
|
{
|
||||||
|
razorOptions.FileProviders.Add(hostingEnvironment.ContentRootFileProvider);
|
||||||
|
}
|
||||||
|
|
||||||
var compilationOptions = razorOptions.CompilationOptions;
|
var compilationOptions = razorOptions.CompilationOptions;
|
||||||
string configurationSymbol;
|
string configurationSymbol;
|
||||||
|
|
|
||||||
|
|
@ -9,9 +9,9 @@ namespace Microsoft.AspNetCore.Mvc.FunctionalTests
|
||||||
{
|
{
|
||||||
public class MvcEncodedTestFixture<TStartup> : MvcTestFixture<TStartup>
|
public class MvcEncodedTestFixture<TStartup> : MvcTestFixture<TStartup>
|
||||||
{
|
{
|
||||||
protected override void InitializeServices(IServiceCollection services, string relativePath)
|
protected override void InitializeServices(IServiceCollection services)
|
||||||
{
|
{
|
||||||
base.InitializeServices(services, relativePath);
|
base.InitializeServices(services);
|
||||||
services.AddTransient<HtmlEncoder, HtmlTestEncoder>();
|
services.AddTransient<HtmlEncoder, HtmlTestEncoder>();
|
||||||
services.AddTransient<JavaScriptEncoder, JavaScriptTestEncoder>();
|
services.AddTransient<JavaScriptEncoder, JavaScriptTestEncoder>();
|
||||||
services.AddTransient<UrlEncoder, UrlTestEncoder>();
|
services.AddTransient<UrlEncoder, UrlTestEncoder>();
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,8 @@ namespace Microsoft.AspNetCore.Mvc.FunctionalTests
|
||||||
using (new CultureReplacer())
|
using (new CultureReplacer())
|
||||||
{
|
{
|
||||||
var builder = new WebHostBuilder()
|
var builder = new WebHostBuilder()
|
||||||
.ConfigureServices(serviceCollection => InitializeServices(serviceCollection, relativePath))
|
.UseContentRoot(GetApplicationPath(relativePath))
|
||||||
|
.ConfigureServices(InitializeServices)
|
||||||
.UseStartup(typeof(TStartup));
|
.UseStartup(typeof(TStartup));
|
||||||
|
|
||||||
_server = new TestServer(builder);
|
_server = new TestServer(builder);
|
||||||
|
|
@ -54,14 +55,22 @@ namespace Microsoft.AspNetCore.Mvc.FunctionalTests
|
||||||
_server.Dispose();
|
_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 startupAssembly = typeof(TStartup).GetTypeInfo().Assembly;
|
||||||
var applicationName = startupAssembly.GetName().Name;
|
var applicationName = startupAssembly.GetName().Name;
|
||||||
|
|
||||||
|
|
@ -69,21 +78,8 @@ namespace Microsoft.AspNetCore.Mvc.FunctionalTests
|
||||||
#if DNX451
|
#if DNX451
|
||||||
services.AddSingleton(CompilationServices.Default.LibraryExporter);
|
services.AddSingleton(CompilationServices.Default.LibraryExporter);
|
||||||
services.AddSingleton<ICompilationService, DnxRoslynCompilationService>();
|
services.AddSingleton<ICompilationService, DnxRoslynCompilationService>();
|
||||||
|
|
||||||
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
|
#endif
|
||||||
|
|
||||||
services.AddSingleton<IApplicationEnvironment>(
|
|
||||||
new TestApplicationEnvironment(applicationEnvironment, applicationName, applicationRoot));
|
|
||||||
|
|
||||||
// Inject a custom assembly provider. Overrides AddMvc() because that uses TryAdd().
|
// Inject a custom assembly provider. Overrides AddMvc() because that uses TryAdd().
|
||||||
var assemblyProvider = new StaticAssemblyProvider();
|
var assemblyProvider = new StaticAssemblyProvider();
|
||||||
assemblyProvider.CandidateAssemblies.Add(startupAssembly);
|
assemblyProvider.CandidateAssemblies.Add(startupAssembly);
|
||||||
|
|
|
||||||
|
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Mvc.Rendering;
|
using Microsoft.AspNetCore.Mvc.Rendering;
|
||||||
using Microsoft.Extensions.Localization;
|
using Microsoft.Extensions.Localization;
|
||||||
using Microsoft.Extensions.PlatformAbstractions;
|
using Microsoft.Extensions.PlatformAbstractions;
|
||||||
|
|
@ -39,9 +40,6 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test
|
||||||
public void HtmlLocalizerOfTTest_UseIndexerWithArguments_ReturnsLocalizedHtmlString()
|
public void HtmlLocalizerOfTTest_UseIndexerWithArguments_ReturnsLocalizedHtmlString()
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var applicationEnvironment = new Mock<IApplicationEnvironment>();
|
|
||||||
applicationEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
|
||||||
|
|
||||||
var localizedString = new LocalizedHtmlString("Hello", "Bonjour test");
|
var localizedString = new LocalizedHtmlString("Hello", "Bonjour test");
|
||||||
|
|
||||||
var htmlLocalizer = new Mock<IHtmlLocalizer>();
|
var htmlLocalizer = new Mock<IHtmlLocalizer>();
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,10 @@ using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Mvc.Rendering;
|
using Microsoft.AspNetCore.Mvc.Rendering;
|
||||||
using Microsoft.AspNetCore.Mvc.ViewEngines;
|
using Microsoft.AspNetCore.Mvc.ViewEngines;
|
||||||
using Microsoft.Extensions.Localization;
|
using Microsoft.Extensions.Localization;
|
||||||
using Microsoft.Extensions.PlatformAbstractions;
|
|
||||||
using Moq;
|
using Moq;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
|
|
@ -31,15 +31,15 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test
|
||||||
public void ViewLocalizer_LooksForCorrectResourceBaseNameLocation(string appName, string viewPath, string executingPath, string expectedBaseName)
|
public void ViewLocalizer_LooksForCorrectResourceBaseNameLocation(string appName, string viewPath, string executingPath, string expectedBaseName)
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var applicationEnvironment = new Mock<IApplicationEnvironment>();
|
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||||
applicationEnvironment.Setup(a => a.ApplicationName).Returns(appName);
|
hostingEnvironment.Setup(a => a.ApplicationName).Returns(appName);
|
||||||
var htmlLocalizerFactory = new Mock<IHtmlLocalizerFactory>(MockBehavior.Loose);
|
var htmlLocalizerFactory = new Mock<IHtmlLocalizerFactory>(MockBehavior.Loose);
|
||||||
var view = new Mock<IView>();
|
var view = new Mock<IView>();
|
||||||
view.Setup(v => v.Path).Returns(viewPath);
|
view.Setup(v => v.Path).Returns(viewPath);
|
||||||
var viewContext = new ViewContext();
|
var viewContext = new ViewContext();
|
||||||
viewContext.ExecutingFilePath = executingPath;
|
viewContext.ExecutingFilePath = executingPath;
|
||||||
viewContext.View = view.Object;
|
viewContext.View = view.Object;
|
||||||
var viewLocalizer = new ViewLocalizer(htmlLocalizerFactory.Object, applicationEnvironment.Object);
|
var viewLocalizer = new ViewLocalizer(htmlLocalizerFactory.Object, hostingEnvironment.Object);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
viewLocalizer.Contextualize(viewContext);
|
viewLocalizer.Contextualize(viewContext);
|
||||||
|
|
@ -55,8 +55,8 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test
|
||||||
public void ViewLocalizer_UseIndexer_ReturnsLocalizedHtmlString()
|
public void ViewLocalizer_UseIndexer_ReturnsLocalizedHtmlString()
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var applicationEnvironment = new Mock<IApplicationEnvironment>();
|
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||||
applicationEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
hostingEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
||||||
|
|
||||||
var localizedString = new LocalizedHtmlString("Hello", "Bonjour");
|
var localizedString = new LocalizedHtmlString("Hello", "Bonjour");
|
||||||
|
|
||||||
|
|
@ -67,7 +67,7 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test
|
||||||
htmlLocalizerFactory.Setup(h => h.Create("TestApplication.example", "TestApplication"))
|
htmlLocalizerFactory.Setup(h => h.Create("TestApplication.example", "TestApplication"))
|
||||||
.Returns(htmlLocalizer.Object);
|
.Returns(htmlLocalizer.Object);
|
||||||
|
|
||||||
var viewLocalizer = new ViewLocalizer(htmlLocalizerFactory.Object, applicationEnvironment.Object);
|
var viewLocalizer = new ViewLocalizer(htmlLocalizerFactory.Object, hostingEnvironment.Object);
|
||||||
|
|
||||||
var view = new Mock<IView>();
|
var view = new Mock<IView>();
|
||||||
view.Setup(v => v.Path).Returns("example");
|
view.Setup(v => v.Path).Returns("example");
|
||||||
|
|
@ -87,8 +87,8 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test
|
||||||
public void ViewLocalizer_UseIndexerWithArguments_ReturnsLocalizedHtmlString()
|
public void ViewLocalizer_UseIndexerWithArguments_ReturnsLocalizedHtmlString()
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var applicationEnvironment = new Mock<IApplicationEnvironment>();
|
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||||
applicationEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
hostingEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
||||||
|
|
||||||
var localizedString = new LocalizedHtmlString("Hello", "Bonjour test");
|
var localizedString = new LocalizedHtmlString("Hello", "Bonjour test");
|
||||||
|
|
||||||
|
|
@ -99,7 +99,7 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test
|
||||||
htmlLocalizerFactory.Setup(
|
htmlLocalizerFactory.Setup(
|
||||||
h => h.Create("TestApplication.example", "TestApplication")).Returns(htmlLocalizer.Object);
|
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<IView>();
|
var view = new Mock<IView>();
|
||||||
view.Setup(v => v.Path).Returns("example");
|
view.Setup(v => v.Path).Returns("example");
|
||||||
|
|
@ -121,9 +121,9 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test
|
||||||
// Arrange
|
// Arrange
|
||||||
var stringLocalizer = new TestStringLocalizer();
|
var stringLocalizer = new TestStringLocalizer();
|
||||||
var htmlLocalizer = new HtmlLocalizer(stringLocalizer);
|
var htmlLocalizer = new HtmlLocalizer(stringLocalizer);
|
||||||
var applicationEnvironment = new Mock<IApplicationEnvironment>();
|
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||||
applicationEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
hostingEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
||||||
var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), applicationEnvironment.Object);
|
var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), hostingEnvironment.Object);
|
||||||
|
|
||||||
var view = new Mock<IView>();
|
var view = new Mock<IView>();
|
||||||
view.Setup(v => v.Path).Returns("example");
|
view.Setup(v => v.Path).Returns("example");
|
||||||
|
|
@ -146,9 +146,9 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test
|
||||||
// Arrange
|
// Arrange
|
||||||
var stringLocalizer = new TestStringLocalizer();
|
var stringLocalizer = new TestStringLocalizer();
|
||||||
var htmlLocalizer = new HtmlLocalizer(stringLocalizer);
|
var htmlLocalizer = new HtmlLocalizer(stringLocalizer);
|
||||||
var applicationEnvironment = new Mock<IApplicationEnvironment>();
|
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||||
applicationEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
hostingEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
||||||
var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), applicationEnvironment.Object);
|
var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), hostingEnvironment.Object);
|
||||||
|
|
||||||
var view = new Mock<IView>();
|
var view = new Mock<IView>();
|
||||||
view.Setup(v => v.Path).Returns("example");
|
view.Setup(v => v.Path).Returns("example");
|
||||||
|
|
@ -172,9 +172,9 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test
|
||||||
// Arrange
|
// Arrange
|
||||||
var stringLocalizer = new TestStringLocalizer();
|
var stringLocalizer = new TestStringLocalizer();
|
||||||
var htmlLocalizer = new HtmlLocalizer(stringLocalizer);
|
var htmlLocalizer = new HtmlLocalizer(stringLocalizer);
|
||||||
var applicationEnvironment = new Mock<IApplicationEnvironment>();
|
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||||
applicationEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
hostingEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
||||||
var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), applicationEnvironment.Object);
|
var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), hostingEnvironment.Object);
|
||||||
|
|
||||||
var view = new Mock<IView>();
|
var view = new Mock<IView>();
|
||||||
view.Setup(v => v.Path).Returns("example");
|
view.Setup(v => v.Path).Returns("example");
|
||||||
|
|
@ -196,9 +196,9 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test
|
||||||
// Arrange
|
// Arrange
|
||||||
var stringLocalizer = new TestStringLocalizer();
|
var stringLocalizer = new TestStringLocalizer();
|
||||||
var htmlLocalizer = new HtmlLocalizer(stringLocalizer);
|
var htmlLocalizer = new HtmlLocalizer(stringLocalizer);
|
||||||
var applicationEnvironment = new Mock<IApplicationEnvironment>();
|
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||||
applicationEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
hostingEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
||||||
var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), applicationEnvironment.Object);
|
var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), hostingEnvironment.Object);
|
||||||
|
|
||||||
var view = new Mock<IView>();
|
var view = new Mock<IView>();
|
||||||
view.Setup(v => v.Path).Returns("example");
|
view.Setup(v => v.Path).Returns("example");
|
||||||
|
|
@ -220,9 +220,9 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test
|
||||||
// Arrange
|
// Arrange
|
||||||
var stringLocalizer = new TestStringLocalizer();
|
var stringLocalizer = new TestStringLocalizer();
|
||||||
var htmlLocalizer = new HtmlLocalizer(stringLocalizer);
|
var htmlLocalizer = new HtmlLocalizer(stringLocalizer);
|
||||||
var applicationEnvironment = new Mock<IApplicationEnvironment>();
|
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||||
applicationEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
hostingEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
||||||
var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), applicationEnvironment.Object);
|
var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), hostingEnvironment.Object);
|
||||||
|
|
||||||
var view = new Mock<IView>();
|
var view = new Mock<IView>();
|
||||||
view.Setup(v => v.Path).Returns("example");
|
view.Setup(v => v.Path).Returns("example");
|
||||||
|
|
@ -244,9 +244,9 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test
|
||||||
// Arrange
|
// Arrange
|
||||||
var stringLocalizer = new TestStringLocalizer();
|
var stringLocalizer = new TestStringLocalizer();
|
||||||
var htmlLocalizer = new HtmlLocalizer(stringLocalizer);
|
var htmlLocalizer = new HtmlLocalizer(stringLocalizer);
|
||||||
var applicationEnvironment = new Mock<IApplicationEnvironment>();
|
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||||
applicationEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
hostingEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
||||||
var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), applicationEnvironment.Object);
|
var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), hostingEnvironment.Object);
|
||||||
|
|
||||||
var view = new Mock<IView>();
|
var view = new Mock<IView>();
|
||||||
view.Setup(v => v.Path).Returns("example");
|
view.Setup(v => v.Path).Returns("example");
|
||||||
|
|
@ -268,9 +268,9 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test
|
||||||
// Arrange
|
// Arrange
|
||||||
var stringLocalizer = new TestStringLocalizer();
|
var stringLocalizer = new TestStringLocalizer();
|
||||||
var htmlLocalizer = new HtmlLocalizer(stringLocalizer);
|
var htmlLocalizer = new HtmlLocalizer(stringLocalizer);
|
||||||
var applicationEnvironment = new Mock<IApplicationEnvironment>();
|
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||||
applicationEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
hostingEnvironment.Setup(a => a.ApplicationName).Returns("TestApplication");
|
||||||
var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), applicationEnvironment.Object);
|
var viewLocalizer = new ViewLocalizer(new TestHtmlLocalizerFactory(), hostingEnvironment.Object);
|
||||||
|
|
||||||
var view = new Mock<IView>();
|
var view = new Mock<IView>();
|
||||||
view.Setup(v => v.Path).Returns("example");
|
view.Setup(v => v.Path).Returns("example");
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,6 @@ using Microsoft.AspNetCore.Razor.TagHelpers;
|
||||||
using Microsoft.AspNetCore.Routing;
|
using Microsoft.AspNetCore.Routing;
|
||||||
using Microsoft.Extensions.Caching.Memory;
|
using Microsoft.Extensions.Caching.Memory;
|
||||||
using Microsoft.Extensions.FileProviders;
|
using Microsoft.Extensions.FileProviders;
|
||||||
using Microsoft.Extensions.PlatformAbstractions;
|
|
||||||
using Microsoft.Extensions.Primitives;
|
using Microsoft.Extensions.Primitives;
|
||||||
using Microsoft.Extensions.WebEncoders.Testing;
|
using Microsoft.Extensions.WebEncoders.Testing;
|
||||||
using Moq;
|
using Moq;
|
||||||
|
|
@ -1034,13 +1033,6 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers
|
||||||
return hostingEnvironment.Object;
|
return hostingEnvironment.Object;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IApplicationEnvironment MakeApplicationEnvironment(string applicationName = "testApplication")
|
|
||||||
{
|
|
||||||
var applicationEnvironment = new Mock<IApplicationEnvironment>();
|
|
||||||
applicationEnvironment.Setup(a => a.ApplicationName).Returns(applicationName);
|
|
||||||
return applicationEnvironment.Object;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static IMemoryCache MakeCache() => new MemoryCache(new MemoryCacheOptions());
|
private static IMemoryCache MakeCache() => new MemoryCache(new MemoryCacheOptions());
|
||||||
|
|
||||||
private static IUrlHelperFactory MakeUrlHelperFactory()
|
private static IUrlHelperFactory MakeUrlHelperFactory()
|
||||||
|
|
|
||||||
|
|
@ -971,13 +971,6 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers
|
||||||
return hostingEnvironment.Object;
|
return hostingEnvironment.Object;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IApplicationEnvironment MakeApplicationEnvironment(string applicationName = "testApplication")
|
|
||||||
{
|
|
||||||
var applicationEnvironment = new Mock<IApplicationEnvironment>();
|
|
||||||
applicationEnvironment.Setup(a => a.ApplicationName).Returns(applicationName);
|
|
||||||
return applicationEnvironment.Object;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static IMemoryCache MakeCache() => new MemoryCache(new MemoryCacheOptions());
|
private static IMemoryCache MakeCache() => new MemoryCache(new MemoryCacheOptions());
|
||||||
|
|
||||||
private static IUrlHelperFactory MakeUrlHelperFactory()
|
private static IUrlHelperFactory MakeUrlHelperFactory()
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
|
@ -18,9 +17,9 @@ using Microsoft.AspNetCore.Mvc.ModelBinding.Metadata;
|
||||||
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
||||||
using Microsoft.AspNetCore.Mvc.Razor;
|
using Microsoft.AspNetCore.Mvc.Razor;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.FileProviders;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using Microsoft.Extensions.PlatformAbstractions;
|
|
||||||
using Moq;
|
using Moq;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
@ -247,17 +246,14 @@ namespace Microsoft.AspNetCore.Mvc
|
||||||
|
|
||||||
private static void AddViewEngineOptionsServices(IServiceCollection serviceCollection)
|
private static void AddViewEngineOptionsServices(IServiceCollection serviceCollection)
|
||||||
{
|
{
|
||||||
serviceCollection.AddSingleton(Mock.Of<IHostingEnvironment>());
|
var hostingEnvironment = new Mock<IHostingEnvironment>();
|
||||||
var applicationEnvironment = new Mock<IApplicationEnvironment>();
|
hostingEnvironment.SetupGet(e => e.ApplicationName)
|
||||||
applicationEnvironment.SetupGet(e => e.ApplicationName)
|
|
||||||
.Returns(typeof(MvcOptionsSetupTest).GetTypeInfo().Assembly.GetName().Name);
|
.Returns(typeof(MvcOptionsSetupTest).GetTypeInfo().Assembly.GetName().Name);
|
||||||
|
|
||||||
// ApplicationBasePath is used to set up a PhysicalFileProvider which requires
|
hostingEnvironment.SetupGet(e => e.ContentRootFileProvider)
|
||||||
// a real directory.
|
.Returns(Mock.Of<IFileProvider>());
|
||||||
applicationEnvironment.SetupGet(e => e.ApplicationBasePath)
|
|
||||||
.Returns(Directory.GetCurrentDirectory());
|
|
||||||
|
|
||||||
serviceCollection.AddSingleton(applicationEnvironment.Object);
|
serviceCollection.AddSingleton(hostingEnvironment.Object);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,20 +19,20 @@ namespace Microsoft.AspNetCore.Mvc
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var options = new RazorViewEngineOptions();
|
var options = new RazorViewEngineOptions();
|
||||||
var appEnv = new Mock<IApplicationEnvironment>();
|
var expected = Mock.Of<IFileProvider>();
|
||||||
appEnv.SetupGet(e => e.ApplicationBasePath)
|
|
||||||
.Returns(Directory.GetCurrentDirectory());
|
|
||||||
var hostingEnv = new Mock<IHostingEnvironment>();
|
var hostingEnv = new Mock<IHostingEnvironment>();
|
||||||
|
hostingEnv.SetupGet(e => e.ContentRootFileProvider)
|
||||||
|
.Returns(expected);
|
||||||
hostingEnv.SetupGet(e => e.EnvironmentName)
|
hostingEnv.SetupGet(e => e.EnvironmentName)
|
||||||
.Returns("Development");
|
.Returns("Development");
|
||||||
var optionsSetup = new RazorViewEngineOptionsSetup(appEnv.Object, hostingEnv.Object);
|
var optionsSetup = new RazorViewEngineOptionsSetup(hostingEnv.Object);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
optionsSetup.Configure(options);
|
optionsSetup.Configure(options);
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
var fileProvider = Assert.Single(options.FileProviders);
|
var fileProvider = Assert.Single(options.FileProviders);
|
||||||
Assert.IsType<PhysicalFileProvider>(fileProvider);
|
Assert.Same(expected, fileProvider);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
|
|
@ -43,13 +43,10 @@ namespace Microsoft.AspNetCore.Mvc
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var options = new RazorViewEngineOptions();
|
var options = new RazorViewEngineOptions();
|
||||||
var appEnv = new Mock<IApplicationEnvironment>();
|
|
||||||
appEnv.SetupGet(e => e.ApplicationBasePath)
|
|
||||||
.Returns(Directory.GetCurrentDirectory());
|
|
||||||
var hostingEnv = new Mock<IHostingEnvironment>();
|
var hostingEnv = new Mock<IHostingEnvironment>();
|
||||||
hostingEnv.SetupGet(e => e.EnvironmentName)
|
hostingEnv.SetupGet(e => e.EnvironmentName)
|
||||||
.Returns(environment);
|
.Returns(environment);
|
||||||
var optionsSetup = new RazorViewEngineOptionsSetup(appEnv.Object, hostingEnv.Object);
|
var optionsSetup = new RazorViewEngineOptionsSetup(hostingEnv.Object);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
optionsSetup.Configure(options);
|
optionsSetup.Configure(options);
|
||||||
|
|
@ -68,13 +65,10 @@ namespace Microsoft.AspNetCore.Mvc
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var options = new RazorViewEngineOptions();
|
var options = new RazorViewEngineOptions();
|
||||||
var appEnv = new Mock<IApplicationEnvironment>();
|
|
||||||
appEnv.SetupGet(e => e.ApplicationBasePath)
|
|
||||||
.Returns(Directory.GetCurrentDirectory());
|
|
||||||
var hostingEnv = new Mock<IHostingEnvironment>();
|
var hostingEnv = new Mock<IHostingEnvironment>();
|
||||||
hostingEnv.SetupGet(e => e.EnvironmentName)
|
hostingEnv.SetupGet(e => e.EnvironmentName)
|
||||||
.Returns(environment);
|
.Returns(environment);
|
||||||
var optionsSetup = new RazorViewEngineOptionsSetup(appEnv.Object, hostingEnv.Object);
|
var optionsSetup = new RazorViewEngineOptionsSetup(hostingEnv.Object);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
optionsSetup.Configure(options);
|
optionsSetup.Configure(options);
|
||||||
|
|
|
||||||
|
|
@ -3,29 +3,29 @@
|
||||||
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.Extensions.PlatformAbstractions;
|
|
||||||
|
|
||||||
namespace FilesWebSite
|
namespace FilesWebSite
|
||||||
{
|
{
|
||||||
public class DownloadFilesController : Controller
|
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()
|
public IActionResult DowloadFromDisk()
|
||||||
{
|
{
|
||||||
var path = Path.Combine(_appEnvironment.ApplicationBasePath, "sample.txt");
|
var path = Path.Combine(_hostingEnvironment.ContentRootPath, "sample.txt");
|
||||||
return PhysicalFile(path, "text/plain");
|
return PhysicalFile(path, "text/plain");
|
||||||
}
|
}
|
||||||
|
|
||||||
public IActionResult DowloadFromDiskWithFileName()
|
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");
|
return PhysicalFile(path, "text/plain", "downloadName.txt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue