/// <summary>
        /// Outputs the results to an appropriate file or stdout.
        /// </summary>
        /// <param name="results">The test results.</param>
        /// <param name="cla">The command line arguments.</param>
        /// <exception cref="Exception">Output format must be specified.</exception>
        public void OutputResults(ParsedData results, CommandLineArguments cla)
        {
            using (Stream s = cla.OutputFilename == null ? Console.OpenStandardOutput() : new FileStream(cla.OutputFilename, FileMode.Create))
            {
                ITestResultWriter writer = null;
                switch (cla.OutputFormat)
                {
                    case OutputFormat.CSV:
                        writer = new CSVTestResultWriter();
                        break;
                    case OutputFormat.Json:
                        writer = new JSONTestResultWriter();
                        break;
                    case OutputFormat.KVP:
                        writer = new KVPTestResultWriter();
                        break;
                    case OutputFormat.Xlsx:
                        writer = new XLSXWriter(cla.YellowBand, cla.GreenBand);
                        break;
                    default:
                        throw new Exception("Unsupported output format: " + cla.OutputFormat);
                }

                writer.WriteResults(s, results);
            }
        }
        /// <summary>
        /// Creates a set of <see cref="TestResult"/> objects from test files.
        /// </summary>
        /// <param name="testFileNames">The test file names.</param>
        /// <returns></returns>
        /// <exception cref="System.Exception">Unhandled fileType  + fileType</exception>
        public ParsedData CreateResultsFromTestFiles(IEnumerable<string> testFileNames)
        {
            var results = new ParsedData();

            foreach (string file in testFileNames)
            {
                var fileType = InputFileTypeGuesser.GuessFileType(file);

                switch (fileType)
                {
                    case InputFileType.Trx:
                        results.AddRange(trxFileParser.Parse(file));
                        break;
                    case InputFileType.NUnit2:
                        results.AddRange(nunit2FileParser.Parse(file));
                        break;
                    case InputFileType.NCrunchCoverage:
                        results.AddRange(nCrunchCoverageParser.Parse(file));
                        break;
                    default:
                        throw new Exception("Unhandled fileType " + fileType);
                }
            }

            results.Summarise();

            return results;
        }
        public void WriteResults(Stream s, ParsedData testResults)
        {
            var utf8WithoutBom = new UTF8Encoding(false);

            using (var sw = new StreamWriter(s, utf8WithoutBom))
            {
                foreach (var r in testResults.ResultLines.SortedByFailedOtherPassed)
                {
                    sw.Write(" ResultsPathName=" + Quoter.KVPQuote(r.ResultsPathName));
                    sw.Write(" ResultsFileName=" + Quoter.KVPQuote(r.ResultsFileName));
                    sw.Write(" AssemblyPathName=" + Quoter.KVPQuote(r.AssemblyPathName));
                    sw.Write(" AssemblyFileName=" + Quoter.KVPQuote(r.AssemblyFileName));
                    sw.Write(" FullClassName=" + Quoter.KVPQuote(r.FullClassName));
                    sw.Write(" ClassName=" + Quoter.KVPQuote(r.ClassName));
                    sw.Write(" TestName=" + Quoter.KVPQuote(r.TestName));
                    sw.Write(" ComputerName=" + Quoter.KVPQuote(r.ComputerName));
                    if (r.StartTime != null)
                        sw.Write(" StartTime=" + Quoter.KVPQuote(r.StartTime.Value.ToString("s")));
                    else
                        sw.Write(" StartTime=");
                    if (r.EndTime != null)
                        sw.Write(" EndTime=" + Quoter.KVPQuote(r.EndTime.Value.ToString("s")));
                    else
                        sw.Write(" EndTime=");
                    sw.Write(" DurationInSeconds=" + Quoter.KVPQuote(r.DurationInSeconds.ToString("R", CultureInfo.InvariantCulture)));
                    sw.Write(" DurationHuman=" + Quoter.KVPQuote(r.DurationHuman));
                    sw.Write(" Outcome=" + Quoter.KVPQuote(r.Outcome));
                    sw.Write(" ErrorMessage=" + Quoter.KVPQuote(r.ErrorMessage));
                    sw.Write(" StackTrace=" + Quoter.KVPQuote(r.StackTrace));
                    sw.Write(" TestResultFileType=" + Quoter.KVPQuote(r.TestResultFileType.ToString()));
                    sw.WriteLine();
                }
            }
        }
Beispiel #4
0
        public void CreateSheet(int yellowBand, int greenBand, ParsedData parsedData)
        {
            SetPercentageBands(yellowBand, greenBand);
            parsedData.ThrowIfNull("parsedData");

            IRow row = sheet.CreateRow(0);

            row.CreateHeadings(ColAssemblyFileName, "AssemblyFileName", "ClassName",
                               "TestName", "Outcome", "DurationInSeconds", "DurationInSecondsHuman",
                               "ErrorMessage", "StackTrace", "StartTime", "EndTime",
                               "ResultsPathName", "ResultsFileName", "AssemblyPathName",
                               "FullClassName", "ComputerName", "TestResultFileType");
            sheet.SetColumnWidths(ColAssemblyFileName, 10000, 10000, 10000, 3000, 3000, 3000, 3000, 5500, 5500);

            int i = 1;

            foreach (var r in parsedData.ResultLines.SortedByFailedOtherPassed)
            {
                row = sheet.CreateRow(i);
                row.SetCell(ColAssemblyFileName, r.AssemblyFileName);
                row.SetCell(ColClassName, r.ClassName);
                row.SetCell(ColTestName, r.TestName);
                row.SetCell(ColOutcome, r.Outcome);
                row.SetCell(ColDurationInSeconds, r.DurationInSeconds).Format("0.00").ApplyStyle();
                row.SetCell(ColDurationInSecondsHuman, r.DurationHuman).Alignment(HorizontalAlignment.Right).ApplyStyle();
                row.SetCell(ColErrorMessage, r.ErrorMessage);
                row.SetCell(ColStackTrace, r.StackTrace);
                if (r.StartTime != null)
                {
                    row.SetCell(ColStartTime, r.StartTime.Value).FormatLongDate().ApplyStyle();
                }
                if (r.EndTime != null)
                {
                    row.SetCell(ColEndTime, r.EndTime.Value).FormatLongDate().ApplyStyle();
                }
                row.SetCell(ColResultsPathName, r.ResultsPathName);
                row.SetCell(ColResultsFileName, r.ResultsFileName);
                row.SetCell(ColAssemblyPathName, r.AssemblyPathName);
                row.SetCell(ColFullClassName, r.FullClassName);
                row.SetCell(ColComputerName, r.ComputerName);
                row.SetCell(ColTestResultFileType, r.TestResultFileType.ToString());

                i++;
            }

            sheet.FreezeTopRow();
            ApplyOutcomeFormattingRules(i);
        }
Beispiel #5
0
        public void WriteResults(Stream s, ParsedData testResults)
        {
            var utf8WithoutBom = new UTF8Encoding(false);

            using (var sw = new StreamWriter(s, utf8WithoutBom))
            {
                var settings = new JsonSerializerSettings();
                settings.Formatting        = Formatting.Indented;
                settings.NullValueHandling = NullValueHandling.Ignore;
                settings.Converters.Add(new StringEnumConverter());

                var jser = JsonSerializer.Create(settings);

                jser.Serialize(sw, testResults);
            }
        }
        public void WriteResults(Stream s, ParsedData testResults)
        {
            var utf8WithoutBom = new UTF8Encoding(false);

            using (var sw = new StreamWriter(s, utf8WithoutBom))
            {
                var settings = new JsonSerializerSettings();
                settings.Formatting = Formatting.Indented;
                settings.NullValueHandling = NullValueHandling.Ignore;
                settings.Converters.Add(new StringEnumConverter());

                var jser = JsonSerializer.Create(settings);

                jser.Serialize(sw, testResults);
            }
        }
        public void CreateSheet(int yellowBand, int greenBand, ParsedData parsedData)
        {
            SetPercentageBands(yellowBand, greenBand);
            this.parsedData = parsedData.ThrowIfNull("parsedData");
            maxColumnUsed = ColTotal + parsedData.OutcomeNames.Count();

            int rowNum = CreateSummary(ByTestAssembly, 0, parsedData.SummaryByAssembly, parsedData.OutcomeNames);
            rowNum++;
            rowNum = CreateSummary(ByTestClass, rowNum, parsedData.SummaryByClass, parsedData.OutcomeNames);
            rowNum++;
            CreateSlowestTests(rowNum, parsedData.SlowestTests);

            sheet.SetColumnWidths(ColAssembly, 12000, 12000, 4000, 4000, 2500);
            for (int colNum = ColTotal; colNum <= maxColumnUsed; colNum++)
            {
                sheet.SetColumnWidth(colNum, 3000);
            }
        }
Beispiel #8
0
        public void CreateSheet(int yellowBand, int greenBand, ParsedData parsedData)
        {
            SetPercentageBands(yellowBand, greenBand);
            this.parsedData = parsedData.ThrowIfNull("parsedData");
            maxColumnUsed   = ColTotal + parsedData.OutcomeNames.Count();

            int rowNum = CreateSummary(ByTestAssembly, 0, parsedData.SummaryByAssembly, parsedData.OutcomeNames);

            rowNum++;
            rowNum = CreateSummary(ByTestClass, rowNum, parsedData.SummaryByClass, parsedData.OutcomeNames);
            rowNum++;
            CreateSlowestTests(rowNum, parsedData.SlowestTests);

            sheet.SetColumnWidths(ColAssembly, 12000, 12000, 4000, 4000, 2500);
            for (int colNum = ColTotal; colNum <= maxColumnUsed; colNum++)
            {
                sheet.SetColumnWidth(colNum, 3000);
            }
        }
Beispiel #9
0
        public void WriteResults(Stream s, ParsedData testResults)
        {
            var utf8WithoutBom = new UTF8Encoding(false);

            using (var sw = new StreamWriter(s, utf8WithoutBom))
            {
                foreach (var r in testResults.ResultLines.SortedByFailedOtherPassed)
                {
                    sw.Write(" ResultsPathName=" + Quoter.KVPQuote(r.ResultsPathName));
                    sw.Write(" ResultsFileName=" + Quoter.KVPQuote(r.ResultsFileName));
                    sw.Write(" AssemblyPathName=" + Quoter.KVPQuote(r.AssemblyPathName));
                    sw.Write(" AssemblyFileName=" + Quoter.KVPQuote(r.AssemblyFileName));
                    sw.Write(" FullClassName=" + Quoter.KVPQuote(r.FullClassName));
                    sw.Write(" ClassName=" + Quoter.KVPQuote(r.ClassName));
                    sw.Write(" TestName=" + Quoter.KVPQuote(r.TestName));
                    sw.Write(" ComputerName=" + Quoter.KVPQuote(r.ComputerName));
                    if (r.StartTime != null)
                    {
                        sw.Write(" StartTime=" + Quoter.KVPQuote(r.StartTime.Value.ToString("s")));
                    }
                    else
                    {
                        sw.Write(" StartTime=");
                    }
                    if (r.EndTime != null)
                    {
                        sw.Write(" EndTime=" + Quoter.KVPQuote(r.EndTime.Value.ToString("s")));
                    }
                    else
                    {
                        sw.Write(" EndTime=");
                    }
                    sw.Write(" DurationInSeconds=" + Quoter.KVPQuote(r.DurationInSeconds.ToString("R", CultureInfo.InvariantCulture)));
                    sw.Write(" DurationHuman=" + Quoter.KVPQuote(r.DurationHuman));
                    sw.Write(" Outcome=" + Quoter.KVPQuote(r.Outcome));
                    sw.Write(" ErrorMessage=" + Quoter.KVPQuote(r.ErrorMessage));
                    sw.Write(" StackTrace=" + Quoter.KVPQuote(r.StackTrace));
                    sw.Write(" TestResultFileType=" + Quoter.KVPQuote(r.TestResultFileType.ToString()));
                    sw.WriteLine();
                }
            }
        }
        public void CreateSheet(int yellowBand, int greenBand, ParsedData parsedData)
        {
            SetPercentageBands(yellowBand, greenBand);
            parsedData.ThrowIfNull("parsedData");

            IRow row = sheet.CreateRow(0);
            row.CreateHeadings(ColAssemblyFileName, "AssemblyFileName", "ClassName",
                "TestName", "Outcome", "DurationInSeconds", "DurationInSecondsHuman",
                "ErrorMessage", "StackTrace", "StartTime", "EndTime",
                "ResultsPathName", "ResultsFileName", "AssemblyPathName",
                "FullClassName", "ComputerName", "TestResultFileType");
            sheet.SetColumnWidths(ColAssemblyFileName, 10000, 10000, 10000, 3000, 3000, 3000, 3000, 5500, 5500);

            int i = 1;
            foreach (var r in parsedData.ResultLines.SortedByFailedOtherPassed)
            {
                row = sheet.CreateRow(i);
                row.SetCell(ColAssemblyFileName, r.AssemblyFileName);
                row.SetCell(ColClassName, r.ClassName);
                row.SetCell(ColTestName, r.TestName);
                row.SetCell(ColOutcome, r.Outcome);
                row.SetCell(ColDurationInSeconds, r.DurationInSeconds).Format("0.00").ApplyStyle();
                row.SetCell(ColDurationInSecondsHuman, r.DurationHuman).Alignment(HorizontalAlignment.Right).ApplyStyle();
                row.SetCell(ColErrorMessage, r.ErrorMessage);
                row.SetCell(ColStackTrace, r.StackTrace);
                if (r.StartTime != null)
                    row.SetCell(ColStartTime, r.StartTime.Value).FormatLongDate().ApplyStyle();
                if (r.EndTime != null)
                    row.SetCell(ColEndTime, r.EndTime.Value).FormatLongDate().ApplyStyle();
                row.SetCell(ColResultsPathName, r.ResultsPathName);
                row.SetCell(ColResultsFileName, r.ResultsFileName);
                row.SetCell(ColAssemblyPathName, r.AssemblyPathName);
                row.SetCell(ColFullClassName, r.FullClassName);
                row.SetCell(ColComputerName, r.ComputerName);
                row.SetCell(ColTestResultFileType, r.TestResultFileType.ToString());

                i++;
            }

            sheet.FreezeTopRow();
            ApplyOutcomeFormattingRules(i);
        }
Beispiel #11
0
        public void WriteResults(Stream s, ParsedData parsedData)
        {
            IWorkbook workbook = new XSSFWorkbook();

            if (parsedData.ResultLines.Count() > 0)
            {
                var trsumWriter = new XLSXTestResultSummarySheetWriter(workbook.CreateSheet("TestResults - Summary"));
                trsumWriter.CreateSheet(yellowBand, greenBand, parsedData);

                var trWriter = new XLSXTestResultSheetWriter(workbook.CreateSheet("TestResults"));
                trWriter.CreateSheet(yellowBand, greenBand, parsedData);
            }

            if (parsedData.NCrunchCoverageData.Count() > 0)
            {
                var ncsumWriter = new XLSXNCrunchCoverageSummarySheetWriter(workbook.CreateSheet("NCrunch Coverage - Summary"));
                ncsumWriter.CreateSheet(yellowBand, greenBand, parsedData.NCrunchCoverageData);

                var ncWriter = new XLSXNCrunchCoverageSheetWriter(workbook.CreateSheet("NCrunch Coverage"));
                ncWriter.CreateSheet(yellowBand, greenBand, parsedData.NCrunchCoverageData);
            }

            workbook.Write(s);
        }
Beispiel #12
0
        public void WriteResults(Stream s, ParsedData parsedData)
        {
            IWorkbook workbook = new XSSFWorkbook();

            if (parsedData.ResultLines.Count() > 0)
            {
                var trsumWriter = new XLSXTestResultSummarySheetWriter(workbook.CreateSheet("TestResults - Summary"));
                trsumWriter.CreateSheet(yellowBand, greenBand, parsedData);

                var trWriter = new XLSXTestResultSheetWriter(workbook.CreateSheet("TestResults"));
                trWriter.CreateSheet(yellowBand, greenBand, parsedData);
            }

            if (parsedData.NCrunchCoverageData.Count() > 0)
            {
                var ncsumWriter = new XLSXNCrunchCoverageSummarySheetWriter(workbook.CreateSheet("NCrunch Coverage - Summary"));
                ncsumWriter.CreateSheet(yellowBand, greenBand, parsedData.NCrunchCoverageData);

                var ncWriter = new XLSXNCrunchCoverageSheetWriter(workbook.CreateSheet("NCrunch Coverage"));
                ncWriter.CreateSheet(yellowBand, greenBand, parsedData.NCrunchCoverageData);
            }

            workbook.Write(s);
        }