/// <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(); } } }
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); }
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); } }
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); }
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); }