Esempio n. 1
0
        public IContextScope Run(IEnumerable <IOperationProvider> contextProviders)
        {
            var setupResults     = new List <IOperationResult>();
            var cleanupProviders = new Stack <IOperationProvider>();

            // TODO: Repetition with TestRunner
            foreach (var contextProvider in contextProviders)
            {
                if (cleanupProviders.Contains(contextProvider))
                {
                    continue;
                }

                var setupResult = _operationRunner.Run(contextProvider);
                setupResults.Add(setupResult);

                if (setupResult.State == State.Failed)
                {
                    break;
                }

                if (setupResult.State == State.Passed && contextProvider.CleanupProvider != null)
                {
                    cleanupProviders.Push(contextProvider.CleanupProvider);
                }
            }

            return(new ContextScope(setupResults, _operationRunner, cleanupProviders.ToList()));
        }
Esempio n. 2
0
        protected ContextResult Run(IEnumerable <IOperationProvider> operationProviders)
        {
            var operationResults     = new List <IOperationResult>();
            var cleanupProviderStack = new Stack <IOperationProvider>();

            foreach (var operationProvider in operationProviders)
            {
                Trace.Assert(
                    !cleanupProviderStack.Contains(operationProvider) || operationProvider == cleanupProviderStack.Pop(),
                    $"Cleanup ({operationProvider.Action}) is not in order to setup.");

                var operationResult = _operationRunner.Run(operationProvider);
                operationResults.Add(operationResult);

                if (operationResult.State == State.Failed && operationResult.Type != OperationType.Assertion)
                {
                    break;
                }

                if (operationProvider.CleanupProvider != null)
                {
                    cleanupProviderStack.Push(operationProvider.CleanupProvider);
                }
            }

            return(new ContextResult
            {
                OperationResults = operationResults,
                CleanupProviders = cleanupProviderStack
            });
        }
Esempio n. 3
0
        public ITestResult Run(IIntent intent, ITestProvider provider)
        {
            if (provider.Ignored)
            {
                return(_resultFactory.CreateIgnoredTestResult(provider));
            }

            _listener.OnTestStarted(intent);

            IOutputRecording outputRecording;
            var operationResults     = new List <IOperationResult>();
            var cleanupProviderStack = new Stack <IOperationProvider>();
            var stopWatch            = Stopwatch.StartNew();

            using (outputRecording = _resultFactory.CreateOutputRecording())
            {
                // TODO: Repetition with ContextRunner
                foreach (var operationProvider in provider.OperationProviders)
                {
                    Trace.Assert(
                        !cleanupProviderStack.Contains(operationProvider) || operationProvider == cleanupProviderStack.Pop(),
                        string.Format("Cleanup ({0}) is not in order to setup.", operationProvider.Action));

                    var operationResult = _operationRunner.Run(operationProvider);
                    operationResults.Add(operationResult);

                    if (operationResult.State == State.Failed && operationResult.Type != OperationType.Assertion)
                    {
                        break;
                    }

                    if (operationProvider.CleanupProvider != null)
                    {
                        cleanupProviderStack.Push(operationProvider.CleanupProvider);
                    }
                }

                Trace.Assert(
                    !cleanupProviderStack.Any() || operationResults.Any(x => x.State == State.Failed),
                    "Either cleanup stack must be empty, or any result must have failed.");

                operationResults.AddRange(cleanupProviderStack.Select(_operationRunner.Run));
            }

            var result = _resultFactory.CreateTestResult(provider, stopWatch.Elapsed, outputRecording, operationResults);

            _listener.OnTestFinished(result);

            return(result);
        }
Esempio n. 4
0
 public void Dispose()
 {
     _cleanupResults.AddRange(_cleanupProviders.Select(x => _operationRunner.Run(x)));
 }