TestResult RunAssembly(MachineAssemblyTest assemblyTest, ITestCommand command, TestStep parentTestStep)
        {
            ITestContext assemblyContext = command.StartPrimaryChildStep(parentTestStep);

            AssemblyInfo assemblyInfo = new AssemblyInfo(assemblyTest.Name, assemblyTest.AssemblyFilePath);
            TestOutcome  outcome      = TestOutcome.Passed;

            _listener.OnAssemblyStart(assemblyInfo);
            assemblyTest.AssemblyContexts.Each(context => context.OnAssemblyStart());

            foreach (ITestCommand contextCommand in command.Children)
            {
                MachineContextTest contextTest = contextCommand.Test as MachineContextTest;
                if (contextTest == null)
                {
                    continue;
                }

                var contextResult = RunContextTest(assemblyTest, contextTest, contextCommand, assemblyContext.TestStep);
                outcome = outcome.CombineWith(contextResult.Outcome);
                assemblyContext.SetInterimOutcome(outcome);
            }

            assemblyTest.AssemblyContexts.Reverse().Each(context => context.OnAssemblyComplete());
            _listener.OnAssemblyEnd(assemblyInfo);

            return(assemblyContext.FinishStep(outcome, null));
        }
Beispiel #2
0
 void OnAssemblyEnd(Assembly assembly)
 {
     try
     {
         _listener.OnAssemblyEnd(assembly.GetInfo());
     }
     catch (Exception err)
     {
         _listener.OnFatalError(new ExceptionResult(err));
     }
 }
        public void Run(Assembly assembly, IEnumerable <Context> contexts)
        {
            bool hasExecutableSpecifications = contexts.Where(x => x.HasExecutableSpecifications).Any();

            var explorer                 = new AssemblyExplorer();
            var assemblyContexts         = new List <IAssemblyContext>(explorer.FindAssemblyContextsIn(assembly));
            var globalCleanups           = new List <ICleanupAfterEveryContextInAssembly>(explorer.FindAssemblyWideContextCleanupsIn(assembly));
            var specificationSupplements = new List <ISupplementSpecificationResults>(explorer.FindSpecificationSupplementsIn(assembly));

            _listener.OnAssemblyStart(assembly.GetInfo());

            var executedAssemblyContexts = new List <IAssemblyContext>();

            try
            {
                if (hasExecutableSpecifications)
                {
                    assemblyContexts.ForEach(assemblyContext =>
                    {
                        assemblyContext.OnAssemblyStart();
                        executedAssemblyContexts.Add(assemblyContext);
                    });
                }

                foreach (var context in contexts)
                {
                    RunContext(context, globalCleanups, specificationSupplements);
                }
            }
            catch (Exception err)
            {
                _listener.OnFatalError(new ExceptionResult(err));
            }
            finally
            {
                if (hasExecutableSpecifications)
                {
                    try
                    {
                        executedAssemblyContexts.Reverse();
                        executedAssemblyContexts.ForEach(assemblyContext => assemblyContext.OnAssemblyComplete());
                    }
                    catch (Exception err)
                    {
                        _listener.OnFatalError(new ExceptionResult(err));
                        throw;
                    }
                }
            }

            _listener.OnAssemblyEnd(assembly.GetInfo());
        }
Beispiel #4
0
        private void OnListenEvent(string value)
        {
            using (var stringReader = new StringReader(value)) {
                XDocument doc     = XDocument.Load(stringReader);
                XElement  element = doc.XPathSelectElement("/listener/*");

                switch (element.Name.ToString())
                {
                case "onassemblystart":
                    _runListener.OnAssemblyStart(AssemblyInfo.Parse(element.XPathSelectElement("//onassemblystart/*").ToString()));
                    break;

                case "onassemblyend":
                    _runListener.OnAssemblyEnd(AssemblyInfo.Parse(element.XPathSelectElement("//onassemblyend/*").ToString()));
                    break;

                case "onrunstart":
                    _runListener.OnRunStart();
                    break;

                case "onrunend":
                    _runListener.OnRunEnd();
                    break;

                case "oncontextstart":
                    _runListener.OnContextStart(ContextInfo.Parse(element.XPathSelectElement("//oncontextstart/*").ToString()));
                    break;

                case "oncontextend":
                    _runListener.OnContextEnd(ContextInfo.Parse(element.XPathSelectElement("//oncontextend/*").ToString()));
                    break;

                case "onspecificationstart":
                    _runListener.OnSpecificationStart(SpecificationInfo.Parse(element.XPathSelectElement("//onspecificationstart/*").ToString()));
                    break;

                case "onspecificationend":
                    _runListener.OnSpecificationEnd(
                        SpecificationInfo.Parse(element.XPathSelectElement("//onspecificationend/specificationinfo").ToString()),
                        Result.Parse(element.XPathSelectElement("//onspecificationend/result").ToString()));
                    break;

                case "onfatalerror":
                    _runListener.OnFatalError(ExceptionResult.Parse(element.XPathSelectElement("//onfatalerror/*").ToString()));
                    break;
                }
            }
        }
        public static void Run(this ISpecificationRunListener adapter, AssemblyInfo assemblyInfo,
                               SpecificationInfo specificationInfo, Result failure, ExceptionResult exceptionResult,
                               ContextInfo contexInfo)
        {
            adapter.OnAssemblyStart(assemblyInfo);
            adapter.OnAssemblyEnd(assemblyInfo);

            adapter.OnSpecificationStart(specificationInfo);
            adapter.OnSpecificationEnd(specificationInfo, failure);

            adapter.OnFatalError(exceptionResult);

            adapter.OnContextStart(contexInfo);
            adapter.OnContextEnd(contexInfo);

            adapter.OnRunStart();
            adapter.OnRunEnd();
        }
Beispiel #6
0
 public void OnAssemblyEnd(AssemblyInfo assembly)
 {
     runListener.OnAssemblyEnd(assembly);
 }
Beispiel #7
0
 public void OnAssemblyEnd(Runner.AssemblyInfo assembly)
 {
     listener.OnAssemblyEnd(new AssemblyInfo(assembly.Name, assembly.Location));
 }
Beispiel #8
0
 public virtual void OnAssemblyEnd(AssemblyInfo assemblyInfo)
 {
     _runListener.OnAssemblyEnd(assemblyInfo);
 }