Example #1
0
        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_));
            }
        }
Example #2
0
        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);
                }
            });
        }
Example #3
0
        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);
                }
            });
        }
Example #4
0
        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_));
            }
        }
Example #5
0
        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);
                    }
                });
        }
Example #6
0
        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);
                    }
                });
        }