// Helpers void LogError(string messageType, IFailureInformation failureInfo) { var message = $"[{messageType}] {failureInfo.ExceptionTypes[0]}: {ExceptionUtility.CombineMessages(failureInfo)}"; var stack = ExceptionUtility.CombineStackTraces(failureInfo); logger.LogImportantMessage($"##teamcity[message text='{Escape(message)}' errorDetails='{Escape(stack)}' status='ERROR']"); }
static XElement CreateFailureElement(IFailureInformation failureInfo) { return(new XElement("failure", new XAttribute("exception-type", failureInfo.ExceptionTypes[0]), new XElement("message", new XCData(XmlEscape(ExceptionUtility.CombineMessages(failureInfo)))), new XElement("stack-trace", new XCData(ExceptionUtility.CombineStackTraces(failureInfo) ?? string.Empty)) )); }
/// <inheritdoc /> protected override void HandleTestFailed(MessageHandlerArgs <ITestFailed> args) { var testFailed = args.Message; VstsUpdateTest(args.Message.Test, "Failed", Convert.ToInt64(testFailed.ExecutionTime * 1000), ExceptionUtility.CombineMessages(testFailed), ExceptionUtility.CombineStackTraces(testFailed), testFailed.Output); base.HandleTestFailed(args); }
/// <inheritdoc /> protected override void HandleTestFailed(MessageHandlerArgs <ITestFailed> args) { var testFailed = args.Message; var dict = assemblyNames[args.Message.TestAssembly.Assembly.Name].Item2; AppVeyorUpdateTest(GetFinishedTestName(testFailed.Test.DisplayName, dict), "xUnit", assemblyNames[args.Message.TestAssembly.Assembly.Name].Item1, "Failed", Convert.ToInt64(testFailed.ExecutionTime * 1000), ExceptionUtility.CombineMessages(testFailed), ExceptionUtility.CombineStackTraces(testFailed), testFailed.Output); base.HandleTestFailed(args); }
/// <summary> /// Logs an error message to the logger. /// </summary> /// <param name="failureType">The type of the failure</param> /// <param name="failureInfo">The failure information</param> protected void LogError(string failureType, IFailureInformation failureInfo) { var frameInfo = StackFrameInfo.FromFailure(failureInfo); lock (Logger.LockObject) { Logger.LogError(frameInfo, $" [{failureType}] {Escape(failureInfo.ExceptionTypes.FirstOrDefault() ?? "(Unknown Exception Type)")}"); foreach (var messageLine in ExceptionUtility.CombineMessages(failureInfo).Split(new[] { Environment.NewLine }, StringSplitOptions.None)) Logger.LogImportantMessage(frameInfo, $" {messageLine}"); LogStackTrace(frameInfo, ExceptionUtility.CombineStackTraces(failureInfo)); } }
/// <summary> /// Called when <see cref="ITestFailed"/> is raised. /// </summary> /// <param name="args">An object that contains the event data.</param> protected virtual void HandleTestFailed(MessageHandlerArgs<ITestFailed> args) { var testFailed = args.Message; var frameInfo = StackFrameInfo.FromFailure(testFailed); lock (Logger.LockObject) { Logger.LogError(frameInfo, $" {Escape(testFailed.Test.DisplayName)} [FAIL]"); foreach (var messageLine in ExceptionUtility.CombineMessages(testFailed).Split(new[] { Environment.NewLine }, StringSplitOptions.None)) Logger.LogImportantMessage(frameInfo, $" {messageLine}"); LogStackTrace(frameInfo, ExceptionUtility.CombineStackTraces(testFailed)); LogOutput(frameInfo, testFailed.Output); } }
protected override bool Visit(ITestFailed testFailed) { if (assemblyElement != null) { var testElement = CreateTestResultElement(testFailed, "Fail"); testElement.Add( new XElement("failure", new XAttribute("exception-type", testFailed.ExceptionTypes[0]), new XElement("message", new XCData(XmlEscape(ExceptionUtility.CombineMessages(testFailed)))), new XElement("stack-trace", new XCData(ExceptionUtility.CombineStackTraces(testFailed) ?? String.Empty)) ) ); } return(base.Visit(testFailed)); }
/// <inheritdoc/> protected override bool Visit(ITestFailed testFailed) { var frameInfo = StackFrameInfo.FromFailure(testFailed); lock (Logger.LockObject) { Logger.LogError(frameInfo, $" {Escape(testFailed.Test.DisplayName)} [FAIL]"); foreach (var messageLine in ExceptionUtility.CombineMessages(testFailed).Split(new[] { Environment.NewLine }, StringSplitOptions.None)) { Logger.LogImportantMessage(frameInfo, $" {messageLine}"); } LogStackTrace(frameInfo, ExceptionUtility.CombineStackTraces(testFailed)); LogOutput(frameInfo, testFailed.Output); } return(base.Visit(testFailed)); }
/// <summary> /// Handles instances of <see cref="ITestFailed" />. /// </summary> protected virtual void HandleTestFailed(MessageHandlerArgs <ITestFailed> args) { var testFailed = args.Message; logger.LogImportantMessage($"##teamcity[testFailed name='{Escape(displayNameFormatter.DisplayName(testFailed.Test))}' details='{Escape(ExceptionUtility.CombineMessages(testFailed))}|r|n{Escape(ExceptionUtility.CombineStackTraces(testFailed))}' flowId='{ToFlowId(testFailed.TestCollection.DisplayName)}']"); LogFinish(testFailed); }