public void AddLog(string message, string stacktrace, LogType type)
        {
            lock (_lock)
            {
                m_NeedToProcessLogs = true;
                var log = new LogEvent
                {
                    LogType    = type,
                    Message    = message,
                    StackTrace = stacktrace,
                };

                AllLogs.Add(log);

                if (IsNUnitResultStateException(stacktrace, type))
                {
                    if (message.StartsWith("SuccessException"))
                    {
                        IsNUnitException        = true;
                        IsNUnitSuccessException = true;
                        if (message.StartsWith("SuccessException: "))
                        {
                            NUnitExceptionMessage = message.Substring("SuccessException: ".Length);
                            return;
                        }
                    }
                    else if (message.StartsWith("InconclusiveException"))
                    {
                        IsNUnitException             = true;
                        IsNUnitInconclusiveException = true;
                        if (message.StartsWith("InconclusiveException: "))
                        {
                            NUnitExceptionMessage = message.Substring("InconclusiveException: ".Length);
                            return;
                        }
                    }
                    else if (message.StartsWith("IgnoreException"))
                    {
                        IsNUnitException       = true;
                        IsNUnitIgnoreException = true;
                        if (message.StartsWith("IgnoreException: "))
                        {
                            NUnitExceptionMessage = message.Substring("IgnoreException: ".Length);
                            return;
                        }
                    }
                }

                if (IsFailingLog(type) && !IgnoreFailingMessages)
                {
                    FailingLogs.Add(log);
                }
            }
        }
        internal void ProcessExpectedLogs()
        {
            lock (_lock)
            {
                if (!m_NeedToProcessLogs || !ExpectedLogs.Any())
                {
                    return;
                }

                LogMatch expectedLog = null;
                foreach (var logEvent in AllLogs)
                {
                    if (!ExpectedLogs.Any())
                    {
                        break;
                    }
                    if (expectedLog == null && ExpectedLogs.Any())
                    {
                        expectedLog = ExpectedLogs.Peek();
                    }

                    if (expectedLog != null && expectedLog.Matches(logEvent))
                    {
                        ExpectedLogs.Dequeue();
                        logEvent.IsHandled = true;
                        if (FailingLogs.Any(expectedLog.Matches))
                        {
                            var failingLog = FailingLogs.First(expectedLog.Matches);
                            FailingLogs.Remove(failingLog);
                        }
                        expectedLog = null;
                    }
                }
                m_NeedToProcessLogs = false;
            }
        }
 internal bool AnyFailingLogs()
 {
     ProcessExpectedLogs();
     return(FailingLogs.Any());
 }
Example #4
0
 public bool AnyFailingLogs()
 {
     ProcessExpectedLogs();
     return(FailingLogs.Any());
 }