예제 #1
0
        public async Task <int> InvokeAsync(InvocationContext context)
        {
            var timeTaken = Stopwatch.StartNew();

            logger.LogInformation("Test Command execute");
            console.WriteLine("Starting test command".StyleBold());
            //console.WriteLine("Using ")

            console.WriteRichLine($"Using configuration: {options.Configuration}");

            var config = await LoadConfig();

            if (config.IsNone)
            {
                return(ExitCodes.ConfigurationFailure);
            }

            await console.CreateProgressBar("Running tests");

            var progress = new Progress <double>((p) => console.ReportProgress(p));

            var results = await executor.RunAllSuitesAsync((Config)config, progress, options.Sequential? 1 : Environment.ProcessorCount);

            await console.DestroyProgressBar();

            // summarize results
            await resultFormatter.WriteResultsHeader();

            var resultStats = new ResultsStatistics();

            foreach (var result in results)
            {
                resultStats.ProcessRecord(result);
                await resultFormatter.WriteResult(resultStats.TotalResults, result);
            }


            timeTaken.Stop();
            await resultFormatter.WriteResultsFooter(new FinalResults(
                                                         (Config)config,
                                                         resultStats,
                                                         timeTaken.Elapsed
                                                         ));

            //logger.LogDebug("Received {count} results from executor", results);

            return(resultStats.TotalFailures is 0 ? ExitCodes.Success : ExitCodes.TestFailure);
        }