private async Task RunTestsAsync( IEnumerable <TestCase> tests, IRunContext runContext, IFrameworkHandle frameworkHandle) { frameworkHandle.SendMessage( TestMessageLevel.Informational, string.Format("Persimmon Test Adapter {0} run tests started", version_)); try { var testExecutor = new TestExecutor(); var sink = new TestRunSink(runContext, frameworkHandle); // Register cancellation token. var cts = new CancellationTokenSource(); cancellationTokens_.Enqueue(cts); // Start tests. await Task.WhenAll(tests.GroupBy(testCase => testCase.Source). Select(g => testExecutor.RunAsync(g.Key, g.ToArray(), sink, cts.Token))); } catch (Exception ex) { frameworkHandle.SendMessage( TestMessageLevel.Error, ex.ToString()); } finally { frameworkHandle.SendMessage( TestMessageLevel.Informational, string.Format("Persimmon Test Adapter {0} run tests finished", version_)); } }
internal static void RunAll(string assemblyFileName, Stream stream) { Go(assemblyFileName, stream, AppDomainSupport.IfAvailable, (xunit, configuration, writer) => { using (var sink = new TestRunSink(writer)) { xunit.RunAll(sink, discoveryOptions: TestFrameworkOptions.ForDiscovery(configuration), executionOptions: TestFrameworkOptions.ForExecution(configuration)); sink.Finished.WaitOne(); writer.Write(TestDataKind.EndOfData); } }); }
internal static void RunSpecific(string assemblyFileName, Stream stream) { var testCaseNameSet = new HashSet <string>(ReadTestCaseDisplayNames(stream), StringComparer.Ordinal); Go(assemblyFileName, stream, AppDomainSupport.IfAvailable, (xunit, configuration, writer) => { using (var sink = new TestRunSink(writer)) { var testCaseList = GetTestCaseList(xunit, configuration, testCaseNameSet); xunit.RunTests(testCaseList, sink, executionOptions: TestFrameworkOptions.ForExecution(configuration)); sink.Finished.WaitOne(); writer.Write(TestDataKind.EndOfData); } }); }
private async Task RunTestsAsync( IEnumerable <string> sources, IRunContext runContext, IFrameworkHandle frameworkHandle) { frameworkHandle.SendMessage( TestMessageLevel.Informational, string.Format("Persimmon Test Adapter {0} run tests started", version_)); try { var testExecutor = new TestExecutor(); var sink = new TestRunSink(runContext, frameworkHandle); var filteredSources = sources.Where(path => !excludeAssemblies_.Contains(Path.GetFileNameWithoutExtension(path))); // Register cancellation token. var cts = new CancellationTokenSource(); cancellationTokens_.Enqueue(cts); // Start tests. await Task.WhenAll(filteredSources.Select(targetAssemblyPath => testExecutor.RunAsync(targetAssemblyPath, new TestCase[0], sink, cts.Token))); } catch (Exception ex) { frameworkHandle.SendMessage( TestMessageLevel.Error, ex.ToString()); } finally { frameworkHandle.SendMessage( TestMessageLevel.Informational, string.Format("Persimmon Test Adapter {0} run tests finished", version_)); } }
internal static void RunSpecific(string assemblyFileName, Stream stream) { var testCaseNameSet = new HashSet<string>(ReadTestCaseDisplayNames(stream), StringComparer.Ordinal); Go(assemblyFileName, stream, AppDomainSupport.IfAvailable, (xunit, configuration, writer) => { using (var sink = new TestRunSink(writer)) { var testCaseList = GetTestCaseList(xunit, configuration, testCaseNameSet); xunit.RunTests(testCaseList, sink, executionOptions: TestFrameworkOptions.ForExecution(configuration)); sink.Finished.WaitOne(); writer.Write(TestDataKind.EndOfData); } }); }