Xunit2Discoverer(AppDomainSupport appDomainSupport, ISourceInformationProvider sourceInformationProvider, IAssemblyInfo assemblyInfo, string assemblyFileName, string xunitExecutionAssemblyPath, string configFileName, bool shadowCopy, string shadowCopyFolder, IMessageSink diagnosticMessageSink, bool verifyAssembliesOnDisk) { Guard.ArgumentNotNull("assemblyInfo", (object)assemblyInfo ?? assemblyFileName); if (verifyAssembliesOnDisk) Guard.FileExists("xunitExecutionAssemblyPath", xunitExecutionAssemblyPath); #if PLATFORM_DOTNET CanUseAppDomains = false; #else CanUseAppDomains = !IsDotNet(xunitExecutionAssemblyPath); #endif DiagnosticMessageSink = diagnosticMessageSink ?? new NullMessageSink(); var appDomainAssembly = assemblyFileName ?? xunitExecutionAssemblyPath; appDomain = AppDomainManagerFactory.Create(appDomainSupport != AppDomainSupport.Denied && CanUseAppDomains, appDomainAssembly, configFileName, shadowCopy, shadowCopyFolder); var testFrameworkAssemblyName = GetTestFrameworkAssemblyName(xunitExecutionAssemblyPath); // If we didn't get an assemblyInfo object, we can leverage the reflection-based IAssemblyInfo wrapper if (assemblyInfo == null) assemblyInfo = appDomain.CreateObject<IAssemblyInfo>(testFrameworkAssemblyName, "Xunit.Sdk.ReflectionAssemblyInfo", assemblyFileName); framework = appDomain.CreateObject<ITestFramework>(testFrameworkAssemblyName, "Xunit.Sdk.TestFrameworkProxy", assemblyInfo, sourceInformationProvider, DiagnosticMessageSink); discoverer = Framework.GetDiscoverer(assemblyInfo); }
Xunit2Discoverer(bool useAppDomain, ISourceInformationProvider sourceInformationProvider, IAssemblyInfo assemblyInfo, string assemblyFileName, string xunitExecutionAssemblyPath, string configFileName, bool shadowCopy, string shadowCopyFolder, IMessageSink diagnosticMessageSink, bool verifyAssembliesOnDisk) { Guard.ArgumentNotNull("assemblyInfo", (object)assemblyInfo ?? assemblyFileName); if (verifyAssembliesOnDisk) { Guard.FileExists("xunitExecutionAssemblyPath", xunitExecutionAssemblyPath); } DiagnosticMessageSink = diagnosticMessageSink ?? new NullMessageSink(); var appDomainAssembly = assemblyFileName ?? xunitExecutionAssemblyPath; appDomain = AppDomainManagerFactory.Create(useAppDomain, appDomainAssembly, configFileName, shadowCopy, shadowCopyFolder); var testFrameworkAssemblyName = GetTestFrameworkAssemblyName(xunitExecutionAssemblyPath); // If we didn't get an assemblyInfo object, we can leverage the reflection-based IAssemblyInfo wrapper if (assemblyInfo == null) { assemblyInfo = appDomain.CreateObject <IAssemblyInfo>(testFrameworkAssemblyName, "Xunit.Sdk.ReflectionAssemblyInfo", assemblyFileName); } framework = appDomain.CreateObject <ITestFramework>(testFrameworkAssemblyName, "Xunit.Sdk.TestFrameworkProxy", assemblyInfo, sourceInformationProvider, DiagnosticMessageSink); discoverer = Framework.GetDiscoverer(assemblyInfo); }
public AppStateManager(IEnumerable <IAppHost> appHosts, IVirtualPathProvider virtualPathProvider, ICacheStrategy cacheStrategy, IAppDomainManager appDomainManager) { _virtualPathProvider = virtualPathProvider; _appHosts = appHosts; _cacheStrategy = cacheStrategy; _appDomainManager = appDomainManager; }
/// <summary> /// Initializes a new instance of the <see cref="Xunit1Executor" /> class. /// </summary> /// <param name="useAppDomain">Determines whether tests should be run in a separate app domain.</param> /// <param name="testAssemblyFileName">The filename of the test assembly.</param> /// <param name="configFileName">The filename of the configuration file.</param> /// <param name="shadowCopy">Set to <c>true</c> to enable shadow copying the assemblies.</param> /// <param name="shadowCopyFolder">The path on disk to use for shadow copying; if <c>null</c>, a folder /// will be automatically (randomly) generated</param> public Xunit1Executor(bool useAppDomain, string testAssemblyFileName, string configFileName = null, bool shadowCopy = true, string shadowCopyFolder = null) { appDomain = AppDomainManagerFactory.Create(useAppDomain, testAssemblyFileName, configFileName, shadowCopy, shadowCopyFolder); xunitAssemblyPath = GetXunitAssemblyPath(testAssemblyFileName); xunitAssemblyName = AssemblyName.GetAssemblyName(xunitAssemblyPath); executor = CreateObject("Xunit.Sdk.Executor", testAssemblyFileName); TestFrameworkDisplayName = string.Format(CultureInfo.InvariantCulture, "xUnit.net {0}", AssemblyName.GetAssemblyName(xunitAssemblyPath).Version); }
/// <summary> /// Initializes a new instance of the <see cref="Xunit1Executor" /> class. /// </summary> /// <param name="diagnosticMessageSink">The message sink which receives <see cref="_DiagnosticMessage"/> messages.</param> /// <param name="useAppDomain">Determines whether tests should be run in a separate app domain.</param> /// <param name="testAssemblyFileName">The filename of the test assembly.</param> /// <param name="configFileName">The filename of the configuration file.</param> /// <param name="shadowCopy">Set to <c>true</c> to enable shadow copying the assemblies.</param> /// <param name="shadowCopyFolder">The path on disk to use for shadow copying; if <c>null</c>, a folder /// will be automatically (randomly) generated</param> public Xunit1Executor( _IMessageSink diagnosticMessageSink, bool useAppDomain, string testAssemblyFileName, string?configFileName = null, bool shadowCopy = true, string?shadowCopyFolder = null) { Guard.ArgumentNotNull(testAssemblyFileName); appDomain = AppDomainManagerFactory.Create(useAppDomain, testAssemblyFileName, configFileName, shadowCopy, shadowCopyFolder, diagnosticMessageSink); xunitAssemblyPath = GetXunitAssemblyPath(testAssemblyFileName); xunitAssemblyName = AssemblyName.GetAssemblyName(xunitAssemblyPath); executor = Guard.NotNull("Could not create Xunit.Sdk.Executor object for v1 test assembly", CreateObject("Xunit.Sdk.Executor", testAssemblyFileName)); TestFrameworkDisplayName = string.Format(CultureInfo.InvariantCulture, "xUnit.net {0}", AssemblyName.GetAssemblyName(xunitAssemblyPath).Version); }
Xunit2Discoverer(AppDomainSupport appDomainSupport, ISourceInformationProvider sourceInformationProvider, IAssemblyInfo assemblyInfo, string assemblyFileName, string xunitExecutionAssemblyPath, string configFileName, bool shadowCopy, string shadowCopyFolder, IMessageSink diagnosticMessageSink, bool verifyAssembliesOnDisk) { Guard.ArgumentNotNull("assemblyInfo", (object)assemblyInfo ?? assemblyFileName); #if NET35 || NET452 // Only safe to assume the execution reference is copied in a desktop project if (verifyAssembliesOnDisk) { Guard.FileExists("xunitExecutionAssemblyPath", xunitExecutionAssemblyPath); } CanUseAppDomains = !IsDotNet(xunitExecutionAssemblyPath); #else CanUseAppDomains = false; #endif DiagnosticMessageSink = diagnosticMessageSink ?? new NullMessageSink(); var appDomainAssembly = assemblyFileName ?? xunitExecutionAssemblyPath; appDomain = AppDomainManagerFactory.Create(appDomainSupport != AppDomainSupport.Denied && CanUseAppDomains, appDomainAssembly, configFileName, shadowCopy, shadowCopyFolder); #if NET35 || NET452 var runnerUtilityAssemblyLocation = Path.GetDirectoryName(typeof(AssemblyHelper).Assembly.GetLocalCodeBase()); assemblyHelper = appDomain.CreateObjectFrom <AssemblyHelper>(typeof(AssemblyHelper).Assembly.Location, typeof(AssemblyHelper).FullName, runnerUtilityAssemblyLocation); #endif testFrameworkAssemblyName = GetTestFrameworkAssemblyName(xunitExecutionAssemblyPath); // If we didn't get an assemblyInfo object, we can leverage the reflection-based IAssemblyInfo wrapper if (assemblyInfo == null) { assemblyInfo = appDomain.CreateObject <IAssemblyInfo>(testFrameworkAssemblyName, "Xunit.Sdk.ReflectionAssemblyInfo", assemblyFileName); } framework = appDomain.CreateObject <ITestFramework>(testFrameworkAssemblyName, "Xunit.Sdk.TestFrameworkProxy", assemblyInfo, sourceInformationProvider, DiagnosticMessageSink); discoverer = Framework.GetDiscoverer(assemblyInfo); }
/// <summary> /// Initializes a new instance of the <see cref="DomainTextTransformer"/> class. /// </summary> public DomainTextTransformer() { _appDomainManager = ServiceLocator.Resolve<IAppDomainManager>(); Initialize(); }
/// <summary> /// Initializes a new instance of the <see cref="DomainTextTransformer"/> class. /// </summary> /// <param name="appDomainManager">The app domain manager.</param> /// <param name="host">The host.</param> /// <param name="engine">The engine.</param> internal DomainTextTransformer(IAppDomainManager appDomainManager, ITextTransformerHost host, ITextTemplatingEngine engine) : base(host, engine) { _appDomainManager = appDomainManager; Initialize(); }
/// <summary> /// Initializes a new instance of the <see cref="DomainTextTransformer"/> class. /// </summary> public DomainTextTransformer() { _appDomainManager = ServiceLocator.Resolve <IAppDomainManager>(); Initialize(); }