Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 public AppStateManager(IEnumerable <IAppHost> appHosts,
                        IVirtualPathProvider virtualPathProvider,
                        ICacheStrategy cacheStrategy,
                        IAppDomainManager appDomainManager)
 {
     _virtualPathProvider = virtualPathProvider;
     _appHosts            = appHosts;
     _cacheStrategy       = cacheStrategy;
     _appDomainManager    = appDomainManager;
 }
Esempio n. 4
0
 /// <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);
 }
Esempio n. 5
0
 /// <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);
 }
Esempio n. 6
0
        /// <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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DomainTextTransformer"/> class.
 /// </summary>
 public DomainTextTransformer()
 {
     _appDomainManager = ServiceLocator.Resolve<IAppDomainManager>();
     Initialize();
 }
Esempio n. 9
0
 /// <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();
 }
Esempio n. 10
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DomainTextTransformer"/> class.
 /// </summary>
 public DomainTextTransformer()
 {
     _appDomainManager = ServiceLocator.Resolve <IAppDomainManager>();
     Initialize();
 }
Esempio n. 11
0
 /// <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();
 }