public void FolderReport(string resultsDirectory, string outputDirectory) { List<string> allFiles = Directory.GetFiles(resultsDirectory, "*.*", SearchOption.TopDirectoryOnly).ToList(); var links = new List<string>(); string outputFile; // if no files, end process if (allFiles.Count == 0) { logger.Info("No XML files were found in the given location. Exiting.."); return; } string html = HTML.Folder.Base; source = new Source(); // force link to always point to the existing folder links.Add("./Index.html"); foreach (string file in allFiles) { ///Console.WriteLine("\n" + new string('-', 9)); Console.WriteLine(""); outputFile = Path.Combine(outputDirectory, Path.GetFileNameWithoutExtension(file) + ".html"); Report reportData = BuildReport(file, outputFile); if (reportData != null) { // force link to always point to the existing folder links.Add("./" + Path.GetFileNameWithoutExtension(file) + ".html"); int passed = reportData.Passed; int failed = reportData.Failed + reportData.Errors; int other = reportData.Inconclusive + reportData.Skipped; string runResult; if (reportData.Status == Status.Inconclusive || reportData.Status == Status.Skipped || reportData.Status == Status.Unknown) { runResult = "other"; } else if (reportData.Status == Status.Error || reportData.Status == Status.Failed) { runResult = Status.Failed.ToString(); } else { runResult = reportData.Status.ToString(); } html = html.Replace(ReportHelper.MarkupFlag("insertResult"), HTML.Folder.Row) .Replace(ReportHelper.MarkupFlag("fullFilename"), Path.GetFileNameWithoutExtension(file) + ".html") .Replace(ReportHelper.MarkupFlag("filename"), Path.GetFileNameWithoutExtension(file)) .Replace(ReportHelper.MarkupFlag("assembly"), Path.GetFileName(reportData.AssemblyName)) .Replace(ReportHelper.MarkupFlag("runresult"), runResult.ToLower()) .Replace(ReportHelper.MarkupFlag("totalTests"), reportData.Total.ToString()) .Replace(ReportHelper.MarkupFlag("totalPassed"), passed.ToString()) .Replace(ReportHelper.MarkupFlag("totalFailed"), failed.ToString()) .Replace(ReportHelper.MarkupFlag("allOtherTests"), other.ToString()); if (reportData.Total > 0) { html = html.Replace(ReportHelper.MarkupFlag("passedPercentage"), (Convert.ToInt32(passed) * 100 / Convert.ToInt32(reportData.Total)).ToString()) .Replace(ReportHelper.MarkupFlag("failedPercentage"), (Convert.ToInt32(failed) * 100 / Convert.ToInt32(reportData.Total)).ToString()) .Replace(ReportHelper.MarkupFlag("othersPercentage"), (Convert.ToInt32(other) * 100 / Convert.ToInt32(reportData.Total)).ToString()); } else { html = html.Replace(ReportHelper.MarkupFlag("passedPercentage"), "0") .Replace(ReportHelper.MarkupFlag("failedPercentage"), "0") .Replace(ReportHelper.MarkupFlag("othersPercentage"), "0"); } } } string navLinks = ""; foreach (string link in links) { navLinks += HTML.Folder.NavLink .Replace(ReportHelper.MarkupFlag("linkSrc"), link) .Replace(ReportHelper.MarkupFlag("linkName"), Path.GetFileNameWithoutExtension(link)); } foreach (KeyValuePair<string, string> pair in source.SourceFiles) { File.WriteAllText(pair.Key, pair.Value .Replace(ReportHelper.MarkupFlag("nav"), navLinks) .Replace(ReportHelper.MarkupFlag("filename"), Path.GetFileNameWithoutExtension(pair.Key)) .Replace(ReportHelper.MarkupFlag("consoleLogs"), logger.GetLogsAsString())); } File.WriteAllText(Path.Combine(outputDirectory, "Index.html"), html .Replace(ReportHelper.MarkupFlag("nav"), navLinks) .Replace(ReportHelper.MarkupFlag("consoleLogs"), logger.GetLogsAsString())); }
public Parser(String path) { Source = new Source(path); }