示例#1
0
        public void Run(XunitTestAssemblyTask assemblyTask, TaskProvider taskProvider)
        {
            var priorCurrentDirectory = Environment.CurrentDirectory;
            try
            {
                // Use the assembly in the folder that the user has specified, or, if not, use the assembly location
                var assemblyFolder = GetAssemblyFolder(configuration, assemblyTask);
                var assemblyPath = Path.Combine(assemblyFolder, GetFileName(assemblyTask.AssemblyLocation));

                Environment.CurrentDirectory = assemblyFolder;

                // If we just pass null for the config file, the AppDomain will load {assembly}.config if it exists,
                // or use the config file of this app domain, which will usually be JetBrains.ReSharper.TaskRunner.*.exe.config.
                // If we specify the name directly, it will just use it, or have no configuration, with no fallback.
                // This is good because it stops the TaskRunner.exe config leaking into your tests. For example, that
                // file redirects all ReSharper assemblies to the current version. When the default AppDomain loads our
                // code, the assemblies are successfully redirected, and we use the latest version. If the new AppDomain
                // uses the same redirects, and the test assembly references resharper assemblies (e.g. xunitcontrib tests!)
                // the redirects are applied, but the new AppDomain can't find the newer assemblies, and throws
                var configFile = assemblyPath + ".config";

                using (var executorWrapper = new ExecutorWrapper(assemblyPath, configFile, configuration.ShadowCopy))
                {
                    SetTempFolderPath(executorWrapper);

                    var run = new XunitTestRun(server, executorWrapper, taskProvider);
                    run.RunTests();
                }
            }
            finally
            {
                Environment.CurrentDirectory = priorCurrentDirectory;
            }
        }
示例#2
0
        public void Run(XunitTestAssemblyTask assemblyTask, TaskProvider taskProvider)
        {
            var priorCurrentDirectory = Environment.CurrentDirectory;

            try
            {
                // Use the assembly in the folder that the user has specified, or, if not, use the assembly location
                var assemblyFolder = GetAssemblyFolder(configuration, assemblyTask);
                var assemblyPath   = Path.Combine(assemblyFolder, GetFileName(assemblyTask.AssemblyLocation));

                Environment.CurrentDirectory = assemblyFolder;

                // If we just pass null for the config file, the AppDomain will load {assembly}.config if it exists,
                // or use the config file of this app domain, which will usually be JetBrains.ReSharper.TaskRunner.*.exe.config.
                // If we specify the name directly, it will just use it, or have no configuration, with no fallback.
                // This is good because it stops the TaskRunner.exe config leaking into your tests. For example, that
                // file redirects all ReSharper assemblies to the current version. When the default AppDomain loads our
                // code, the assemblies are successfully redirected, and we use the latest version. If the new AppDomain
                // uses the same redirects, and the test assembly references resharper assemblies (e.g. xunitcontrib tests!)
                // the redirects are applied, but the new AppDomain can't find the newer assemblies, and throws
                var configFile = assemblyPath + ".config";

                using (var executorWrapper = new ExecutorWrapper(assemblyPath, configFile, configuration.ShadowCopy))
                {
                    SetTempFolderPath(executorWrapper);

                    var run = new XunitTestRun(server, executorWrapper, taskProvider);
                    run.RunTests();
                }
            }
            finally
            {
                Environment.CurrentDirectory = priorCurrentDirectory;
            }
        }
 public static TaskProvider Create(RemoteTaskServer server, TaskExecutionNode assemblyNode)
 {
     var taskProvider = new TaskProvider(server);
     foreach (var classNode in assemblyNode.Children)
     {
         var classTask = (XunitTestClassTask) classNode.RemoteTask;
         taskProvider.AddClass(classTask);
         foreach (var methodNode in classNode.Children)
         {
             var methodTask = (XunitTestMethodTask) methodNode.RemoteTask;
             taskProvider.AddMethod(classTask, methodTask);
             foreach (var theoryNode in methodNode.Children)
                 taskProvider.AddTheory(methodTask, (XunitTestTheoryTask)theoryNode.RemoteTask);
         }
     }
     return taskProvider;
 }
示例#4
0
        public static TaskProvider Create(RemoteTaskServer server, TaskExecutionNode assemblyNode)
        {
            var taskProvider = new TaskProvider(server);

            foreach (var classNode in assemblyNode.Children)
            {
                var classTask = (XunitTestClassTask)classNode.RemoteTask;
                taskProvider.AddClass(classTask);
                foreach (var methodNode in classNode.Children)
                {
                    var methodTask = (XunitTestMethodTask)methodNode.RemoteTask;
                    taskProvider.AddMethod(classTask, methodTask);
                    foreach (var theoryNode in methodNode.Children)
                    {
                        taskProvider.AddTheory(methodTask, (XunitTestTheoryTask)theoryNode.RemoteTask);
                    }
                }
            }
            return(taskProvider);
        }
示例#5
0
 public override void ExecuteRecursive(TaskExecutionNode node)
 {
     taskServer.TaskRunStarting();
     testRunner.Run((XunitTestAssemblyTask)node.RemoteTask, TaskProvider.Create(taskServer, node));
     taskServer.TaskRunFinished();
 }
示例#6
0
 public ReSharperRunnerLogger(RemoteTaskServer server, TaskProvider taskProvider)
 {
     this.server       = server;
     this.taskProvider = taskProvider;
 }
 public ReSharperRunnerLogger(RemoteTaskServer server, TaskProvider taskProvider)
 {
     this.server = server;
     this.taskProvider = taskProvider;
 }
 public XunitTestRun(RemoteTaskServer server, IExecutorWrapper executor, TaskProvider taskProvider)
 {
     this.server = server;
     this.executor = executor;
     this.taskProvider = taskProvider;
 }
示例#9
0
 public XunitTestRun(RemoteTaskServer server, IExecutorWrapper executor, TaskProvider taskProvider)
 {
     this.server       = server;
     this.executor     = executor;
     this.taskProvider = taskProvider;
 }