static IEnumerable <string> Assemblies(MSpecTestRunner.Run run)
 {
     return(run.RunInfos
            .Select(x => x.Assembly)
            .Distinct()
            .Select(x => "\"" + x + "\""));
 }
        static TestRunInfo FindRunInfo(MSpecTestRunner.Run run, Assembly assembly)
        {
            var runInfo = run.RunInfos
                          .FirstOrDefault(x => StringComparer.Ordinal.Equals(x.Assembly, assembly.AssemblyLocation));

            if (runInfo == null)
            {
                Debug.WriteError("Could not match reported assembly {0} to any of the tested assemblies", assembly.AssemblyLocation);
            }

            return(runInfo);
        }
 public string Build(MSpecTestRunner.Run run)
 {
     return(new[]
     {
         TimeInfo(run),
         Filters(run),
         XmlReport(run),
         Assemblies(run)
     }
            .SelectMany(x => x)
            .Aggregate((acc, curr) => acc + " " + curr));
 }
        IEnumerable <string> Filters(MSpecTestRunner.Run run)
        {
            var filters = CreateFilterFile(run.RunInfos);

            if (filters == null)
            {
                yield break;
            }

            run.RegisterCleanup(() =>
            {
                if (_fileSystem.FileExists(filters))
                {
                    File.Delete(filters);
                }
            });

            yield return(String.Format("--filter \"{0}\"", filters));
        }
        IEnumerable <string> XmlReport(MSpecTestRunner.Run run)
        {
            var report = Path.GetTempFileName();

            run.RegisterResultHarvester(() =>
            {
                var parser = new MSpecReportParser(report, run);
                return(parser.Parse());
            });

            run.RegisterCleanup(() =>
            {
                if (_fileSystem.FileExists(report))
                {
                    File.Delete(report);
                }
            });

            yield return(String.Format("--xml \"{0}\"", report));
        }
 public MSpecReportParser(string reportFile, MSpecTestRunner.Run run)
 {
     _reportFile = reportFile;
     _run        = run;
 }
 IEnumerable <string> TimeInfo(MSpecTestRunner.Run run)
 {
     yield return(String.Format("--timeinfo"));
 }