示例#1
0
        protected override bool Visit(IErrorMessage error)
        {
            Log.LogError("{0}", Escape(ExceptionUtility.CombineMessages(error)));
            Log.LogError("{0}", ExceptionUtility.CombineStackTraces(error));

            return(base.Visit(error));
        }
示例#2
0
        protected override bool Visit(IErrorMessage error)
        {
            Console.Error.WriteLine("{0}: {1}", error.ExceptionTypes[0], Escape(ExceptionUtility.CombineMessages(error)));
            Console.Error.WriteLine(ExceptionUtility.CombineStackTraces(error));

            return(base.Visit(error));
        }
        /// <summary>
        /// Called when <see cref="_TestFailed"/> is raised.
        /// </summary>
        /// <param name="args">An object that contains the event data.</param>
        protected virtual void HandleTestFailed(MessageHandlerArgs <_TestFailed> args)
        {
            Guard.ArgumentNotNull(nameof(args), args);

            var testFailed = args.Message;
            var frameInfo  = StackFrameInfo.FromErrorMetadata(testFailed);
            var metadata   = MetadataCache.TryGetTestMetadata(testFailed);

            lock (Logger.LockObject)
            {
                if (metadata != null)
                {
                    Logger.LogError(frameInfo, $"    {Escape(metadata.TestDisplayName)} [FAIL]");
                }
                else
                {
                    Logger.LogError(frameInfo, "    <unknown test> [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);
            }
        }
示例#4
0
        protected void WriteError(string failureName, IFailureInformation failureInfo)
        {
            _log.WriteLine($"   [{failureName}] {XmlEscape(failureInfo.ExceptionTypes[0])}");
            _log.WriteLine($"      {XmlEscape(ExceptionUtility.CombineMessages(failureInfo))}");

            WriteStackTrace(ExceptionUtility.CombineStackTraces(failureInfo));
        }
        // Helpers

        void LogError(string messageType, _IErrorMetadata errorMetadata)
        {
            var message = $"[{messageType}] {errorMetadata.ExceptionTypes[0]}: {ExceptionUtility.CombineMessages(errorMetadata)}";
            var stack   = ExceptionUtility.CombineStackTraces(errorMetadata);

            logger.LogImportantMessage($"##teamcity[message text='{Escape(message)}' errorDetails='{Escape(stack)}' status='ERROR']");
        }
示例#6
0
        // 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']");
        }
示例#7
0
        void WriteError(string messageType, IFailureInformation failureInfo)
        {
            var message = $"[{messageType}] {failureInfo.ExceptionTypes[0]}: {ExceptionUtility.CombineMessages(failureInfo)}";
            var stack   = ExceptionUtility.CombineStackTraces(failureInfo);

            Log.LogMessage(MessageImportance.High, "##teamcity[message text='{0}' errorDetails='{1}' status='ERROR']", TeamCityEscape(message), TeamCityEscape(stack));
        }
        protected override bool Visit(IErrorMessage error)
        {
            ExecutionSummary.Errors++;

            logger.LogError("Catastrophic failure: {0}", ExceptionUtility.CombineMessages(error));

            return(!cancelledThunk());
        }
        void HandleErrorMessage(MessageHandlerArgs <IErrorMessage> args)
        {
            ExecutionSummary.Errors++;

            logger.LogError("Catastrophic failure: {0}", ExceptionUtility.CombineMessages(args.Message));

            HandleCancellation(args);
        }
        protected override bool Visit(ITestFailed testFailed)
        {
            AppVeyorUpdateTest(GetFinishedTestName(testFailed.Test.DisplayName), "xUnit", assemblyFileName, "Failed",
                               Convert.ToInt64(testFailed.ExecutionTime * 1000), ExceptionUtility.CombineMessages(testFailed),
                               ExceptionUtility.CombineStackTraces(testFailed), testFailed.Output, null);

            return(base.Visit(testFailed));
        }
示例#11
0
        protected override bool Visit(ITestFailed testFailed)
        {
            _log.WriteLine($"   {XmlEscape(testFailed.Test.DisplayName)} [FAIL]");
            _log.WriteLine($"      {ExceptionUtility.CombineMessages(testFailed).Replace(Environment.NewLine, Environment.NewLine + "      ")}");

            WriteStackTrace(ExceptionUtility.CombineStackTraces(testFailed));

            return(base.Visit(testFailed));
        }
        protected override void HandleTestFailed(MessageHandlerArgs <ITestFailed> args)
        {
            var testFailed = args.Message;

            AppVeyorUpdateTest(GetFinishedTestName(testFailed.Test.DisplayName), "xUnit", assemblyFileName, "Failed",
                               Convert.ToInt64(testFailed.ExecutionTime * 1000), ExceptionUtility.CombineMessages(testFailed),
                               ExceptionUtility.CombineStackTraces(testFailed), testFailed.Output);

            base.HandleTestFailed(args);
        }
示例#13
0
        public void NonXunitException()
        {
            var failureInfo = new FailureInformation {
                new Exception("This is the message")
            };

            var result = ExceptionUtility.CombineMessages(failureInfo);

            Assert.Equal("System.Exception : This is the message", result);
        }
        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);
        }
示例#15
0
        public void NonXunitException()
        {
            var errorMetadata = new ErrorMetadata {
                new Exception("This is the message")
            };

            var result = ExceptionUtility.CombineMessages(errorMetadata);

            Assert.Equal("System.Exception : This is the message", result);
        }
示例#16
0
        protected override bool Visit(ITestFailed testFailed)
        {
            Console.WriteLine("##teamcity[testFailed name='{0}' details='{1}|r|n{2}' flowId='{3}']",
                              TeamCityEscape(testFailed.TestDisplayName),
                              TeamCityEscape(ExceptionUtility.CombineMessages(testFailed)),
                              TeamCityEscape(ExceptionUtility.CombineStackTraces(testFailed)),
                              ToFlowId(testFailed.TestCollection.DisplayName));
            LogFinish(testFailed);

            return(base.Visit(testFailed));
        }
示例#17
0
        protected override bool Visit(ITestFailed testFailed)
        {
            Log.LogMessage(MessageImportance.High, "##teamcity[testFailed name='{0}' details='{1}|r|n{2}' flowId='{3}']",
                           TeamCityEscape(displayNameFormatter.DisplayName(testFailed.Test)),
                           TeamCityEscape(ExceptionUtility.CombineMessages(testFailed)),
                           TeamCityEscape(ExceptionUtility.CombineStackTraces(testFailed)),
                           ToFlowId(testFailed.TestCollection.DisplayName));
            LogFinish(testFailed);

            return(base.Visit(testFailed));
        }
示例#18
0
        protected void WriteError(string failureName, IFailureInformation failureInfo)
        {
            lock (consoleLock)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.Error.WriteLine("   [{0}] {1}", failureName, XmlEscape(failureInfo.ExceptionTypes[0]));
                Console.ForegroundColor = ConsoleColor.Gray;
                Console.Error.WriteLine("      {0}", XmlEscape(ExceptionUtility.CombineMessages(failureInfo)));

                WriteStackTrace(ExceptionUtility.CombineStackTraces(failureInfo));
            }
        }
示例#19
0
        protected override bool Visit(ITestFailed testFailed)
        {
            var result = MakeVsTestResult(TestOutcome.Failed, testFailed);

            result.ErrorMessage    = ExceptionUtility.CombineMessages(testFailed);
            result.ErrorStackTrace = ExceptionUtility.CombineStackTraces(testFailed);

            recorder.RecordEnd(result.TestCase, result.Outcome);
            recorder.RecordResult(result);

            return(!cancelledThunk());
        }
示例#20
0
        protected override bool Visit(IErrorMessage error)
        {
            lock (consoleLock)
            {
                Console.WriteLine("   {0} [FATAL]", Escape(error.ExceptionTypes[0]));
                Console.WriteLine("      {0}", Escape(ExceptionUtility.CombineMessages(error)));

                WriteStackTrace(ExceptionUtility.CombineStackTraces(error));
            }

            return(base.Visit(error));
        }
        /// <summary>
        /// Handles instances of <see cref="_TestFailed" />.
        /// </summary>
        protected virtual void HandleTestFailed(MessageHandlerArgs <_TestFailed> args)
        {
            Guard.ArgumentNotNull(nameof(args), args);

            var testFailed    = args.Message;
            var testMetadata  = metadataCache.TryGetTestMetadata(testFailed);
            var formattedName = Escape(testMetadata != null ? testMetadata.TestDisplayName : "<unknown test>");
            var details       = $"{Escape(ExceptionUtility.CombineMessages(testFailed))}|r|n{Escape(ExceptionUtility.CombineStackTraces(testFailed))}";

            logger.LogImportantMessage($"##teamcity[testFailed name='{formattedName}' details='{details}' flowId='{testFailed.TestCollectionUniqueID}']");

            LogFinish(testFailed);
        }
示例#22
0
        void HandleTestFailed(MessageHandlerArgs <ITestFailed> args)
        {
            TestRunState = TestRunState.Failure;

            var testFailed = args.Message;
            var testResult = testFailed.ToTdNetTestResult(TestState.Failed, totalTests);

            testResult.Message    = ExceptionUtility.CombineMessages(testFailed);
            testResult.StackTrace = ExceptionUtility.CombineStackTraces(testFailed);

            TestListener.TestFinished(testResult);

            WriteOutput(testFailed.Test.DisplayName, testFailed.Output);
        }
示例#23
0
        protected override bool Visit(ITestFailed testFailed)
        {
            var displayName = TeamCityEscape(GetDisplayName(testFailed.Test));

            LogMessage(displayName, false, "##teamcity[testFailed name='{0}' details='{1}|r|n{2}' flowId='{3}']",
                       displayName,
                       TeamCityEscape(ExceptionUtility.CombineMessages(testFailed)),
                       TeamCityEscape(ExceptionUtility.CombineStackTraces(testFailed)),
                       ToFlowId(testFailed.TestCollection.DisplayName));

            LogFinish(testFailed);

            return(base.Visit(testFailed));
        }
示例#24
0
        protected bool WriteError(string failureName, IFailureInformation failureInfo, IEnumerable <ITestCase> testCases)
        {
            foreach (var testCase in testCases)
            {
                var result = MakeVsTestResult(TestOutcome.Failed, testCase, testCase.DisplayName);
                result.ErrorMessage    = String.Format("[{0}]: {1}", failureName, ExceptionUtility.CombineMessages(failureInfo));
                result.ErrorStackTrace = ExceptionUtility.CombineStackTraces(failureInfo);

                recorder.RecordEnd(result.TestCase, result.Outcome);
                recorder.RecordResult(result);
            }

            return(!cancelledThunk());
        }
示例#25
0
        public void NonXunitExceptionWithInnerExceptions()
        {
            var failureInfo = new FailureInformation {
                { new Exception("outer exception"), -1 },
                { new DivideByZeroException("inner exception"), 0 },
                { new XunitException("inner inner exception"), 1 }
            };

            var result = ExceptionUtility.CombineMessages(failureInfo);

            Assert.Equal("System.Exception : outer exception" + Environment.NewLine +
                         "---- System.DivideByZeroException : inner exception" + Environment.NewLine +
                         "-------- inner inner exception", result);
        }
        protected override bool Visit(ITestFailed testFailed)
        {
            lock (consoleLock)
            {
                // TODO: Thread-safe way to figure out the default foreground color
                Console.ForegroundColor = ConsoleColor.Red;
                Console.Error.WriteLine("   {0} [FAIL]", Escape(testFailed.Test.DisplayName));
                Console.ForegroundColor = ConsoleColor.Gray;
                Console.Error.WriteLine("      {0}", ExceptionUtility.CombineMessages(testFailed).Replace(Environment.NewLine, Environment.NewLine + "      "));

                WriteStackTrace(ExceptionUtility.CombineStackTraces(testFailed));
            }

            return(base.Visit(testFailed));
        }
示例#27
0
        protected override bool Visit(ITestFailed failed)
        {
            TestRunState = TestRunState.Failure;

            var testResult = failed.ToTdNetTestResult(TestState.Failed);

            testResult.Message    = ExceptionUtility.CombineMessages(failed);
            testResult.StackTrace = ExceptionUtility.CombineStackTraces(failed);

            TestListener.TestFinished(testResult);

            WriteOutput(failed.TestDisplayName, failed.Output);

            return(true);
        }
示例#28
0
        void LogFailureInformation(IFailureInformation info, Action <string> log = null, StringBuilder sb = null)
        {
            if (info == null)
            {
                return;
            }

            string message = ExceptionUtility.CombineMessages(info);

            do_log($"   Exception messages: {message}", log, sb);

            string traces = ExceptionUtility.CombineStackTraces(info);

            do_log($"   Exception stack traces: {traces}", log, sb);
        }
示例#29
0
        void ReportError(string messageType, IFailureInformation failureInfo)
        {
            TestRunState = TestRunState.Failure;

            var testResult = new TestResult
            {
                Name       = String.Format("*** {0} ***", messageType),
                State      = TestState.Failed,
                TimeSpan   = TimeSpan.Zero,
                TotalTests = 1,
                Message    = ExceptionUtility.CombineMessages(failureInfo),
                StackTrace = ExceptionUtility.CombineStackTraces(failureInfo)
            };

            TestListener.TestFinished(testResult);
        }
示例#30
0
        public void AggregateException()
        {
            var failureInfo = new FailureInformation {
                { new AggregateException(), -1 },
                { new DivideByZeroException("inner #1"), 0 },
                { new NotImplementedException("inner #2"), 0 },
                { new XunitException("this is crazy"), 0 },
            };

            var result = ExceptionUtility.CombineMessages(failureInfo);

            Assert.Equal("System.AggregateException : One or more errors occurred." + Environment.NewLine
                         + "---- System.DivideByZeroException : inner #1" + Environment.NewLine
                         + "---- System.NotImplementedException : inner #2" + Environment.NewLine
                         + "---- this is crazy", result);
        }