public DelegatingExecutionSummarySinkTests()
    {
        innerSink = Substitute.For <IMessageSinkWithTypes>();
        innerSink.OnMessageWithTypes(null, null).ReturnsForAnyArgs(true);

        testMessage = Substitute.For <IMessageSinkMessage>();
    }
    public DelegatingExecutionSummarySinkTests()
    {
        innerSink = Substitute.For<IMessageSinkWithTypes>();
        innerSink.OnMessageWithTypes(null, null).ReturnsForAnyArgs(true);

        testMessage = Substitute.For<IMessageSinkMessage>();
    }
Esempio n. 3
0
        public bool OnMessage(IMessageSinkMessage?message)
        {
            if (message != null)
            {
                return(runnerSink.OnMessageWithTypes(message, GetMessageTypes(message)));
            }

            return(true);
        }
        /// <inheritdoc/>
        public bool OnMessageWithTypes(IMessageSinkMessage message, HashSet <string> messageTypes)
        {
            var result = innerSink.OnMessageWithTypes(message, messageTypes);

            return(message.Dispatch <IErrorMessage>(messageTypes, args => Interlocked.Increment(ref errors)) &&
                   message.Dispatch <ITestAssemblyCleanupFailure>(messageTypes, args => Interlocked.Increment(ref errors)) &&
                   message.Dispatch <ITestAssemblyFinished>(messageTypes, HandleTestAssemblyFinished) &&
                   message.Dispatch <ITestCaseCleanupFailure>(messageTypes, args => Interlocked.Increment(ref errors)) &&
                   message.Dispatch <ITestClassCleanupFailure>(messageTypes, args => Interlocked.Increment(ref errors)) &&
                   message.Dispatch <ITestCleanupFailure>(messageTypes, args => Interlocked.Increment(ref errors)) &&
                   message.Dispatch <ITestCollectionCleanupFailure>(messageTypes, args => Interlocked.Increment(ref errors)) &&
                   message.Dispatch <ITestMethodCleanupFailure>(messageTypes, args => Interlocked.Increment(ref errors)) &&
                   result &&
                   !cancelThunk());
        }
Esempio n. 5
0
        void SendLongRunningMessage()
        {
            var now = UtcNow;
            var longRunningTestCases = executingTestCases.Where(kvp => (now - kvp.Value) >= longRunningTime)
                                       .ToDictionary(k => k.Key, v => now - v.Value);

            if (longRunningTestCases.Count > 0)
            {
                // If they've subscribed for long running test messages, just give them one...
                if (LongRunningTestsEvent != null)
                {
                    LongRunningTestsEvent.Invoke(new MessageHandlerArgs <ILongRunningTestsMessage>(new LongRunningTestsMessage(longRunningTime, longRunningTestCases)));
                }

                // ...otherwise, turn it into a diagnostic message, for older runners.
                else
                {
                    var messages = longRunningTestCases.Select(pair => $"[Long Running Test] '{pair.Key.DisplayName}', Elapsed: {pair.Value:hh\\:mm\\:ss}");
                    var message  = string.Join(Environment.NewLine, messages);

                    diagnosticMessageSink?.OnMessageWithTypes(new DiagnosticMessage(message), DiagnosticMessageTypes);
                }
            }
        }
        public override bool OnMessageWithTypes(IMessageSinkMessage message, HashSet <string> messageTypes)
        {
            var result = innerSink.OnMessageWithTypes(message, messageTypes);

            return(base.OnMessageWithTypes(message, messageTypes) && result);
        }
Esempio n. 7
0
 /// <inheritdoc/>
 public bool OnMessageWithTypes(IMessageSinkMessage message, HashSet <string> messageTypes)
 => inner.OnMessageWithTypes(message, messageTypes);
Esempio n. 8
0
 public bool OnMessage(IMessageSinkMessage message)
 => runnerSink.OnMessageWithTypes(message, GetMessageTypes(message));
 /// <summary>
 /// Provides a simulation of <see cref="IMessageSink.OnMessage"/> for <see cref="IMessageSinkWithTypes"/>,
 /// to make it easier to directly dispatch messages from the runner.
 /// </summary>
 /// <param name="messageSink">The message sink</param>
 /// <param name="message">The message to be dispatched</param>
 /// <returns>The result of calling the message sink</returns>
 public static bool OnMessage(this IMessageSinkWithTypes messageSink, IMessageSinkMessage message)
 => messageSink.OnMessageWithTypes(message, MessageSinkAdapter.GetImplementedInterfaces(message));
Esempio n. 10
0
 public override bool OnMessageWithTypes(IMessageSinkMessage message, string[] messageTypes)
 {
     return(base.OnMessageWithTypes(message, messageTypes) &&
            next.OnMessageWithTypes(message, messageTypes));
 }
Esempio n. 11
0
        /// <inheritdoc/>
        public override bool OnMessageWithTypes(IMessageSinkMessage message, string[] messageTypes)
        {
            var result = base.OnMessageWithTypes(message, messageTypes);

            return(innerMessageSink.OnMessageWithTypes(message, messageTypes) || result);
        }