/// <summary/>
        public MessageBus(IMessageSink messageSink, bool stopOnFail = false)
        {
            this.messageSink = messageSink;
            this.stopOnFail  = stopOnFail;

            reporterThread = new XunitWorkerThread(ReporterWorker);
        }
Beispiel #2
0
        /// <inheritdoc/>
        public override void Post(SendOrPostCallback d, object state)
        {
            // The call to Post() may be the state machine signaling that an exception is
            // about to be thrown, so we make sure the operation count gets incremented
            // before the Task.Run, and then decrement the count when the operation is done.
            OperationStarted();

            try
            {
                if (innerContext == null)
                {
                    XunitWorkerThread.QueueUserWorkItem(() =>
                    {
                        try
                        {
                            d(state);
                        }
                        catch (Exception ex)
                        {
                            exception = ex;
                        }
                        finally
                        {
                            OperationCompleted();
                        }
                    });
                }
                else
                {
                    innerContext.Post(_ =>
                    {
                        try
                        {
                            d(state);
                        }
                        catch (Exception ex)
                        {
                            exception = ex;
                        }
                        finally
                        {
                            OperationCompleted();
                        }
                    }, null);
                }
            }
            catch { }
        }
        /// <inheritdoc/>
        public void Find(string typeName, bool includeSourceInformation, IMessageSink discoveryMessageSink, ITestFrameworkDiscoveryOptions discoveryOptions)
        {
            Guard.ArgumentNotNullOrEmpty("typeName", typeName);
            Guard.ArgumentNotNull("discoveryMessageSink", discoveryMessageSink);
            Guard.ArgumentNotNull("discoveryOptions", discoveryOptions);

            XunitWorkerThread.QueueUserWorkItem(() =>
            {
                using (var messageBus = CreateMessageBus(discoveryMessageSink, discoveryOptions))
                    using (new PreserveWorkingFolder(AssemblyInfo))
                    {
                        var typeInfo = AssemblyInfo.GetType(typeName);
                        if (typeInfo != null && IsValidTestClass(typeInfo))
                        {
                            var testClass = CreateTestClass(typeInfo);
                            FindTestsForTypeAndWrapExceptions(testClass, includeSourceInformation, messageBus, discoveryOptions);
                        }

                        messageBus.QueueMessage(new DiscoveryCompleteMessage());
                    }
            });
        }
        /// <inheritdoc/>
        public void Find(bool includeSourceInformation, IMessageSink discoveryMessageSink, ITestFrameworkDiscoveryOptions discoveryOptions)
        {
            Guard.ArgumentNotNull("discoveryMessageSink", discoveryMessageSink);
            Guard.ArgumentNotNull("discoveryOptions", discoveryOptions);

            XunitWorkerThread.QueueUserWorkItem(() =>
            {
                using (var messageBus = CreateMessageBus(discoveryMessageSink, discoveryOptions))
                    using (new PreserveWorkingFolder(AssemblyInfo))
                    {
                        foreach (var type in AssemblyInfo.GetTypes(false).Where(IsValidTestClass))
                        {
                            var testClass = CreateTestClass(type);
                            if (!FindTestsForTypeAndWrapExceptions(testClass, includeSourceInformation, messageBus, discoveryOptions))
                            {
                                break;
                            }
                        }

                        messageBus.QueueMessage(new DiscoveryCompleteMessage());
                    }
            });
        }
Beispiel #5
0
        /// <summary/>
        public MessageBus(IMessageSink messageSink)
        {
            this.messageSink = messageSink;

            reporterThread = new XunitWorkerThread(ReporterWorker);
        }
Beispiel #6
0
        /// <summary/>
        public MessageBus(IMessageSink messageSink)
        {
            this.messageSink = messageSink;

            reporterThread = new XunitWorkerThread(ReporterWorker);
        }