/// <summary> /// Constructs details of test case. /// 1. Gets log from the txt file /// 2. Copies capture to the log folder, and saves the path. /// </summary> /// <param name="txtfile">The path to the log txt file which contains the detail log</param> /// <returns>Returns the log information</returns> public string ConstructCaseDetail(string txtfile, string captureFolder) { FileStream fs = new FileStream(txtfile, FileMode.Open); string type = ""; // Help judge whether the line is the end of the file, help distinguish file content StreamReader sr = new StreamReader(fs); string line; string content = ""; string standardOutType = ""; DataType.TestCaseDetail caseDetail = new DataType.TestCaseDetail(sr.ReadLine(), sr.ReadLine(), sr.ReadLine(), sr.ReadLine()); DataType.StandardOutDetail stdDetail; string dllFile = sr.ReadLine(); if (!dllFiles.Contains(dllFile)) { dllFiles.Add(dllFile); } while ((line = sr.ReadLine()) != null) { if (line == "") //Rule out blank line continue; if (line.StartsWith("===========")) { type = line.Replace("=", ""); continue; } LogType eType = (LogType)Enum.Parse(typeof(LogType), type); switch (eType) { case LogType.ErrorStackTrace: caseDetail.ErrorStackTrace.Add(line); break; case LogType.ErrorMessage: caseDetail.ErrorMessage.Add(line); break; case LogType.StandardOut: int begin = line.IndexOf('['); int end = line.IndexOf(']'); if (begin != -1 && end != -1) { if (standardOutType != "") { stdDetail = new DataType.StandardOutDetail() { Content = content, Type = standardOutType }; caseDetail.StandardOut.Add(stdDetail); } if (end > begin && end < line.Length) { standardOutType = line.Substring(begin + 1, end - begin - 1); if (!caseDetail.StandardOutTypes.Contains(standardOutType)) caseDetail.StandardOutTypes.Add(standardOutType); } content = line; } else content += line; break; default: break; } } stdDetail = new DataType.StandardOutDetail() { Content = content, Type = standardOutType }; fs.Close(); caseDetail.StandardOut.Add(stdDetail); caseDetail.CapturePath = CopyCaptureAndReturnPath(caseDetail.Name, captureFolder); return (serializer.Serialize(caseDetail)); }
/// <summary> /// Constructs details of test case. /// 1. Gets log from the txt file /// 2. Copies capture to the log folder, and saves the path. /// </summary> /// <param name="txtfile">The path to the log txt file which contains the detail log</param> /// <returns>Returns the log information</returns> public string ConstructCaseDetail(string txtfile, string captureFolder) { FileStream fs = new FileStream(txtfile, FileMode.Open); string type = ""; // Help judge whether the line is the end of the file, help distinguish file content StreamReader sr = new StreamReader(fs); string line; string content = ""; string standardOutType = ""; DataType.TestCaseDetail caseDetail = new DataType.TestCaseDetail(sr.ReadLine(), sr.ReadLine(), sr.ReadLine(), sr.ReadLine()); DataType.StandardOutDetail stdDetail; string dllFile = sr.ReadLine(); if (!dllFiles.Contains(dllFile)) { dllFiles.Add(dllFile); } while ((line = sr.ReadLine()) != null) { if (line == "") //Rule out blank line { continue; } if (line.StartsWith("===========")) { type = line.Replace("=", ""); continue; } LogType eType = (LogType)Enum.Parse(typeof(LogType), type); switch (eType) { case LogType.ErrorStackTrace: caseDetail.ErrorStackTrace.Add(line); break; case LogType.ErrorMessage: caseDetail.ErrorMessage.Add(line); break; case LogType.StandardOut: int begin = line.IndexOf('['); int end = line.IndexOf(']'); if (begin != -1 && end != -1) { if (standardOutType != "") { stdDetail = new DataType.StandardOutDetail() { Content = content, Type = standardOutType }; caseDetail.StandardOut.Add(stdDetail); } if (end > begin && end < line.Length) { standardOutType = line.Substring(begin + 1, end - begin - 1); if (!caseDetail.StandardOutTypes.Contains(standardOutType)) { caseDetail.StandardOutTypes.Add(standardOutType); } } content = line; } else { content += line; } break; default: break; } } stdDetail = new DataType.StandardOutDetail() { Content = content, Type = standardOutType }; fs.Close(); caseDetail.StandardOut.Add(stdDetail); caseDetail.CapturePath = CopyCaptureAndReturnPath(caseDetail.Name, captureFolder); return(serializer.Serialize(caseDetail)); }