public TestCreateReporterTests()
        {
            _reporter          = new TeamCityReporter();
            _result            = new CoverageResult();
            _result.Identifier = Guid.NewGuid().ToString();

            var lines = new Lines {
                { 1, 1 }, { 2, 0 }
            };

            var branches = new Branches
            {
                new BranchInfo
                {
                    Line      = 1,
                    Hits      = 1,
                    Offset    = 23,
                    EndOffset = 24,
                    Path      = 0,
                    Ordinal   = 1
                },
                new BranchInfo
                {
                    Line      = 1,
                    Hits      = 0,
                    Offset    = 23,
                    EndOffset = 27,
                    Path      = 1,
                    Ordinal   = 2
                },
                new BranchInfo
                {
                    Line      = 1,
                    Hits      = 0,
                    Offset    = 23,
                    EndOffset = 27,
                    Path      = 1,
                    Ordinal   = 2
                }
            };

            var methods      = new Methods();
            var methodString = "System.Void Coverlet.Core.Reporters.Tests.CoberturaReporterTests::TestReport()";

            methods.Add(methodString, new Method());
            methods[methodString].Lines    = lines;
            methods[methodString].Branches = branches;

            var classes = new Classes {
                { "Coverlet.Core.Reporters.Tests.CoberturaReporterTests", methods }
            };

            var documents = new Documents {
                { "doc.cs", classes }
            };

            _result.Modules = new Modules {
                { "module", documents }
            };
        }
Example #2
0
        private static IBuildServerReporter CreateBuildServerReporter(ReportFormatType reportFormat)
        {
            IBuildServerReporter reporter;

            switch (reportFormat)
            {
            case ReportFormatType.TeamCityVerbose:
                reporter = new TeamCityReporter(showSuccessMessage: true);
                break;

            case ReportFormatType.TeamCityNoSuccessMessage:
                reporter = new TeamCityReporter(showSuccessMessage: false);
                break;

            default:
                reporter = new NullBuildServerReporter();
                break;
            }
            return(reporter);
        }
        public ExitCode Run(string[] arguments)
        {
            ExceptionReporter reporter = new ExceptionReporter(_console);

            Options options = new Options();

            if (!options.ParseArguments(arguments))
            {
                _console.WriteLine(Options.Usage());
                return(ExitCode.Failure);
            }

            List <ISpecificationRunListener> listeners = new List <ISpecificationRunListener>();

            var timingListener = new TimingRunListener();

            listeners.Add(timingListener);
            listeners.Add(new AssemblyLocationAwareListener());

            ISpecificationRunListener mainListener;

            if (options.TeamCityIntegration ||
                (!options.DisableTeamCityAutodetection &&
                 Environment.GetEnvironmentVariable("TEAMCITY_PROJECT_NAME") != null))
            {
                mainListener = new TeamCityReporter(_console.WriteLine, timingListener);
            }
            else
            {
                mainListener = new RunListener(_console, options.Silent, timingListener);
            }

            try
            {
                if (!String.IsNullOrEmpty(options.HtmlPath))
                {
                    if (IsHtmlPathValid(options.HtmlPath))
                    {
                        listeners.Add(GetHtmlReportListener(options));
                    }
                    else
                    {
                        _console.WriteLine("Invalid html path:" + options.HtmlPath);
                        _console.WriteLine(Options.Usage());
                        return(ExitCode.Failure);
                    }
                }

                if (!String.IsNullOrEmpty(options.XmlPath))
                {
                    if (IsHtmlPathValid(options.XmlPath))
                    {
                        listeners.Add(GetXmlReportListener(options, timingListener));
                    }
                    else
                    {
                        _console.WriteLine("Invalid xml path:" + options.XmlPath);
                        _console.WriteLine(Options.Usage());
                        return(ExitCode.Failure);
                    }
                }

                listeners.Add(mainListener);

                if (options.AssemblyFiles.Count == 0)
                {
                    _console.WriteLine(Options.Usage());
                    return(ExitCode.Failure);
                }

                var listener = new AggregateRunListener(listeners);

                ISpecificationRunner specificationRunner = new AppDomainRunner(listener, options.GetRunOptions());
                List <Assembly>      assemblies          = new List <Assembly>();
                foreach (string assemblyName in options.AssemblyFiles)
                {
                    if (!File.Exists(assemblyName))
                    {
                        throw NewException.MissingAssembly(assemblyName);
                    }

                    Assembly assembly = Assembly.LoadFrom(assemblyName);
                    assemblies.Add(assembly);
                }

                if (options.WaitForDebugger)
                {
                    WaitForDebugger();
                    if (Debugger.IsAttached == false)
                    {
                        _console.WriteLine("Fatal error: Timeout while waiting for debugger to attach");
                        return(ExitCode.Failure);
                    }
                }

                specificationRunner.RunAssemblies(assemblies);
            }
            catch (Exception ex)
            {
                reporter.ReportException(ex);
                return(ExitCode.Error);
            }

            if (mainListener is ISpecificationResultProvider)
            {
                var errorProvider = (ISpecificationResultProvider)mainListener;
                if (errorProvider.FailureOccurred)
                {
                    return(ExitCode.Failure);
                }
            }
            return(ExitCode.Success);
        }
        public ExitCode Run(string[] arguments)
        {
            ExceptionReporter reporter = new ExceptionReporter(_console);

            Options options = new Options();

            if (!options.ParseArguments(arguments))
            {
                _console.WriteLine(Options.Usage());
                return(ExitCode.Failure);
            }

            var timer     = new TimingRunListener();
            var listeners = new List <ISpecificationRunListener>
            {
                timer
            };

            ISpecificationRunListener mainListener;

            if (options.TeamCityIntegration ||
                (!options.DisableTeamCityAutodetection &&
                 Environment.GetEnvironmentVariable("TEAMCITY_PROJECT_NAME") != null))
            {
                mainListener = new TeamCityReporter(_console.WriteLine, timer);
            }
            else
            {
                mainListener = new RunListener(_console, DetermineOutput(options, _console), timer);
            }

            try
            {
                if (!String.IsNullOrEmpty(options.HtmlPath))
                {
                    if (IsHtmlPathValid(options.HtmlPath))
                    {
                        listeners.Add(GetHtmlReportListener(options));
                    }
                    else
                    {
                        _console.WriteLine("Invalid html path: {0}", options.HtmlPath);
                        _console.WriteLine(Options.Usage());
                        return(ExitCode.Failure);
                    }
                }

                if (!String.IsNullOrEmpty(options.XmlPath))
                {
                    if (IsHtmlPathValid(options.XmlPath))
                    {
                        listeners.Add(GetXmlReportListener(options, timer));
                    }
                    else
                    {
                        _console.WriteLine("Invalid xml path: {0}", options.XmlPath);
                        _console.WriteLine(Options.Usage());
                        return(ExitCode.Failure);
                    }
                }

                listeners.Add(mainListener);

                if (options.AssemblyFiles.Count == 0)
                {
                    _console.WriteLine(Options.Usage());
                    return(ExitCode.Failure);
                }

                var listener = new AggregateRunListener(listeners);

                ISpecificationRunner specificationRunner = new AppDomainRunner(listener, options.GetRunOptions());
                List <Assembly>      assemblies          = new List <Assembly>();
                foreach (string assemblyName in options.AssemblyFiles)
                {
                    if (!File.Exists(assemblyName))
                    {
                        throw NewException.MissingAssembly(assemblyName);
                    }

                    var excludedAssemblies = new[] { "Machine.Specifications.dll", "Machine.Specifications.Clr4.dll" };
                    if (excludedAssemblies.Any(x => Path.GetFileName(assemblyName) == x))
                    {
                        _console.WriteLine("Warning: Excluded {0} from the test run because the file name matches either of these: {1}", assemblyName, String.Join(", ", excludedAssemblies));
                        continue;
                    }

                    Assembly assembly = Assembly.LoadFrom(assemblyName);
                    assemblies.Add(assembly);
                }

                if (options.WaitForDebugger)
                {
                    WaitForDebugger();
                    if (Debugger.IsAttached == false)
                    {
                        _console.WriteLine("Fatal error: Timeout while waiting for debugger to attach");
                        return(ExitCode.Failure);
                    }
                }

                specificationRunner.RunAssemblies(assemblies);
            }
            catch (Exception ex)
            {
                reporter.ReportException(ex);
                return(ExitCode.Error);
            }

            if (mainListener is ISpecificationResultProvider)
            {
                var errorProvider = (ISpecificationResultProvider)mainListener;
                if (errorProvider.FailureOccurred)
                {
                    return(ExitCode.Failure);
                }
            }
            return(ExitCode.Success);
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="onFinished">Gets invoked when the runner is done</param>
 public BufferedAssemblyTeamCityReporter(Action <BufferedAssemblyTeamCityReporter> onFinished)
 {
     _buffer     = new StringBuilder();
     _onFinished = new InvokeOnce <BufferedAssemblyTeamCityReporter>(onFinished);
     _reporter   = new TeamCityReporter(WriteToBuffer, new TimingRunListener());
 }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="onFinished">Gets invoked when the runner is done</param>
 public BufferedAssemblyTeamCityReporter(Action<BufferedAssemblyTeamCityReporter> onFinished)
 {
     _buffer = new StringBuilder();
     _onFinished = new InvokeOnce<BufferedAssemblyTeamCityReporter>(onFinished);
     _reporter = new TeamCityReporter(WriteToBuffer, new TimingRunListener());
 }
Example #7
0
        public ExitCode Run(string[] arguments)
        {
            ExceptionReporter reporter = new ExceptionReporter(_console);

            Options options = new Options();

            if (!options.ParseArguments(arguments))
            {
                _console.WriteLine(Options.Usage());
                return(ExitCode.Failure);
            }

            List <ISpecificationRunListener> listeners = new List <ISpecificationRunListener>();

            var timingListener = new TimingRunListener();

            listeners.Add(timingListener);
            listeners.Add(new AssemblyLocationAwareListener());

            ISpecificationRunListener mainListener;

            if (options.TeamCityIntegration)
            {
                mainListener = new TeamCityReporter(_console.WriteLine, timingListener);
            }
            else
            {
                mainListener = new RunListener(_console, options.Silent, timingListener);
            }

            try
            {
                if (!String.IsNullOrEmpty(options.HtmlPath))
                {
                    if (IsHtmlPathValid(options.HtmlPath))
                    {
                        listeners.Add(GetHtmlReportListener(options));
                    }
                    else
                    {
                        _console.WriteLine("Invalid html path:" + options.HtmlPath);
                        _console.WriteLine(Options.Usage());
                        return(ExitCode.Failure);
                    }
                }

                if (!String.IsNullOrEmpty(options.XmlPath))
                {
                    if (IsHtmlPathValid(options.XmlPath))
                    {
                        listeners.Add(GetXmlReportListener(options, timingListener));
                    }
                    else
                    {
                        _console.WriteLine("Invalid xml path:" + options.XmlPath);
                        _console.WriteLine(Options.Usage());
                        return(ExitCode.Failure);
                    }
                }

                listeners.Add(mainListener);

                if (options.AssemblyFiles.Count == 0)
                {
                    _console.WriteLine(Options.Usage());
                    return(ExitCode.Failure);
                }

                var listener = new AggregateRunListener(listeners);

                ISpecificationRunner specificationRunner = new AppDomainRunner(listener, options.GetRunOptions());
                List <Assembly>      assemblies          = new List <Assembly>();
                foreach (string assemblyName in options.AssemblyFiles)
                {
                    if (!File.Exists(assemblyName))
                    {
                        throw NewException.MissingAssembly(assemblyName);
                    }

                    Assembly assembly = Assembly.LoadFrom(assemblyName);
                    assemblies.Add(assembly);
                }

                specificationRunner.RunAssemblies(assemblies);
            }
            catch (Exception ex)
            {
                reporter.ReportException(ex);
                return(ExitCode.Error);
            }

            if (mainListener is ISpecificationResultProvider)
            {
                var errorProvider = (ISpecificationResultProvider)mainListener;
                if (errorProvider.FailureOccurred)
                {
                    return(ExitCode.Failure);
                }
            }
            return(ExitCode.Success);
        }
Example #8
0
        public ExitCode Run(string[] arguments)
        {
            ExceptionReporter reporter = new ExceptionReporter(_console);

            Options options = new Options();
            if (!options.ParseArguments(arguments))
            {
                _console.WriteLine(Resources.UsageStatement);
                return ExitCode.Failure;
            }

            List<ISpecificationRunListener> listeners = new List<ISpecificationRunListener>();

            var timingListener = new TimingRunListener();
            listeners.Add(timingListener);
            listeners.Add(new AssemblyLocationAwareListener());

            ISpecificationRunListener mainListener;
            if (options.TeamCityIntegration)
            {
                mainListener = new TeamCityReporter(_console.WriteLine, timingListener);
            }
            else
            {
                mainListener = new RunListener(_console, options.Silent, timingListener);
            }

            try
            {
                if (SetupCustomListeners(options, listeners, timingListener))
                {
                    return ExitCode.Failure;
                }

                listeners.Add(mainListener);

                if (options.AssemblyFiles.Count == 0)
                {
                    _console.WriteLine(Resources.UsageStatement);
                    return ExitCode.Failure;
                }

                var listener = new AggregateRunListener(listeners);

                ISpecificationRunner specificationRunner = new AppDomainRunner(listener, options.GetRunOptions());
                List<Assembly> assemblies = new List<Assembly>();
                foreach (string assemblyName in options.AssemblyFiles)
                {
                    if (!File.Exists(assemblyName))
                    {
                        throw NewException.MissingAssembly(assemblyName);
                    }

                    Assembly assembly = Assembly.LoadFrom(assemblyName);
                    assemblies.Add(assembly);
                }

                specificationRunner.RunAssemblies(assemblies);
            }
            catch (Exception ex)
            {
                reporter.ReportException(ex);
                return ExitCode.Error;
            }

            if (mainListener is ISpecificationResultProvider)
            {
                var errorProvider = (ISpecificationResultProvider)mainListener;
                if (errorProvider.FailureOccurred)
                {
                    return ExitCode.Failure;
                }
            }

            return ExitCode.Success;
        }