public override string WriteResultsToFile(Jargon jargon) { if (results == null) { return(string.Empty); } string ret = GetResultsFilePath(); if (string.IsNullOrEmpty(ret)) { return(string.Empty); } OutputWriter formatter; switch (jargon) { case Jargon.NUnitV2: formatter = new NUnit2XmlOutputWriter(DateTime.UtcNow); break; case Jargon.NUnitV3: formatter = new NUnit3XmlOutputWriter(DateTime.UtcNow); break; default: throw new InvalidOperationException($"Jargon {jargon} is not supported by this runner."); } formatter.WriteResultFile(results, ret); return(ret); }
public static string GetXmlFilePath(string path, Jargon xmlType) { var fileName = Path.GetFileName(path); switch (xmlType) { case Jargon.TouchUnit: case Jargon.NUnitV2: case Jargon.NUnitV3: return(path.Replace(fileName, $"nunit-{fileName}")); case Jargon.xUnit: return(path.Replace(fileName, $"xunit-{fileName}")); default: return(path); } }
// test if the file is valid xml, or at least, that can be read it. public static bool IsValidXml(string path, out Jargon type) { type = Jargon.Missing; if (!File.Exists(path)) { return(false); } using (var stream = File.OpenText(path)) { string line; while ((line = stream.ReadLine()) != null) // special case when get got the tcp connection { if (line.Contains("ping")) { continue; } if (line.Contains("test-run")) // first element of the NUnitV3 test collection { type = Jargon.NUnitV3; return(true); } if (line.Contains("TouchUnitTestRun")) { type = Jargon.TouchUnit; return(true); } if (line.Contains("test-results")) // first element of the NUnitV3 test collection { type = Jargon.NUnitV2; return(true); } if (line.Contains("<assemblies>")) // first element of the xUnit test collection { type = Jargon.xUnit; return(true); } } } return(false); }
public override void WriteResultsToFile(TextWriter writer, Jargon jargon) { if (results == null) { return; } OutputWriter formatter; switch (jargon) { case Jargon.NUnitV2: formatter = new NUnit2XmlOutputWriter(DateTime.UtcNow); break; case Jargon.NUnitV3: formatter = new NUnit3XmlOutputWriter(DateTime.UtcNow); break; default: throw new InvalidOperationException($"Jargon {jargon} is not supported by this runner."); } formatter.WriteResultFile(results, writer); }
public static void GenerateTestReport(StreamWriter writer, string resultsPath, Jargon xmlType) { using (var stream = new StreamReader(resultsPath)) using (var reader = XmlReader.Create(stream)) { switch (xmlType) { case Jargon.NUnitV2: case Jargon.TouchUnit: GenerateNUnitV2TestReport(writer, reader); break; case Jargon.xUnit: GeneratexUnitTestReport(writer, reader); break; case Jargon.NUnitV3: GenerateNUnitV3TestReport(writer, reader); break; default: writer.WriteLine($"<span style='padding-left: 15px;'>Could not parse {resultsPath}: Not supported format.</span><br />"); break; } } }
public static (string resultLine, bool failed) GenerateHumanReadableResults(string source, string destination, Jargon xmlType) { (string resultLine, bool failed)parseData; using (var reader = new StreamReader(source)) using (var writer = new StreamWriter(destination, true)) { switch (xmlType) { case Jargon.TouchUnit: parseData = ParseTouchUnitXml(reader, writer); break; case Jargon.NUnitV2: parseData = ParseNUnitXml(reader, writer); break; case Jargon.NUnitV3: parseData = ParseNUnitV3Xml(reader, writer); break; case Jargon.xUnit: parseData = ParsexUnitXml(reader, writer); break; default: parseData = ("", true); break; } } return(parseData); }
public abstract void WriteResultsToFile(TextWriter writer, Jargon jargon);
public abstract string WriteResultsToFile(Jargon jargon);