Exemple #1
0
        static void Main(string[] args)
        {
            var escapeDirPath = new Func <string, string>(x => x.Replace("\\", "\\\\"));
            var findArg       = new Func <string, string> (x =>
            {
                string res = null;
                var prefix = "/" + x + ":";
                args.Where(s => s.StartsWith(prefix))
                .ToList()
                .ForEach(s => res = escapeDirPath(s.Substring(prefix.Length)));
                return(res);
            });

            if (args.Any(s => s == "/break"))
            {
                System.Diagnostics.Debugger.Launch();
            }

            if (args.Any(s => s == "/hideAnnotTextarea"))
            {
                Options.hideAnnotTextarea = true;
            }

            if (args.Any(s => s == "/onlyConsiderFailingLocation"))
            {
                Options.onlyConsiderFailingLocation = true;
            }

            if (args.Any(s => s == "/considerFailingStackTrace"))
            {
                Options.considerFailingStackTrace = true;
            }

            var help = false;

            if (args.Any(s => s == "/?"))
            {
                help = true;
            }



            var currDir = findArg("dir");
            var srcPath = findArg("srcPath");
            var baseDir = findArg("baseline");

            Options.defectViewerDir = findArg("defectViewerDir");

            if (help || currDir == null || srcPath == null || Options.defectViewerDir == null)
            {
                Console.WriteLine("Usage:  AvnResultDashboard /dir:<path-to-avn-result> /srcPath:<path-to-sources> /defectViewerDir:<path-to-view.cmd> [/? /break /hideAnnotTextarea /baseline:<path-to-baseline-avn-result>]");
                return;
            }

            var isRelativePath = new Predicate <string>(x => x != null && !x.Contains(":\\"));

            if (isRelativePath(currDir) ||
                isRelativePath(srcPath) ||
                isRelativePath(Options.defectViewerDir) ||
                isRelativePath(baseDir))
            {
                throw new Exception("Specify absolute pathnames for arguments");
            }


            var hrg = new HtmlReportGeneration("myhtmlfile.html", baseDir != null);

            var stripBplFromName = new Func <string, string> (x =>
            {
                if (x.EndsWith(".bpl"))
                {
                    return(x.Substring(0, x.LastIndexOf(".bpl")));
                }
                return(null);
            });
            var resultSrcPairs = Directory.GetDirectories(currDir, "*.bpl")
                                 .Select(x => x.Substring(x.LastIndexOf("\\") + 1))
                                 .Where(x => Directory.Exists(srcPath + "\\" + stripBplFromName(x)))
                                 .Select(x => Tuple.Create(x, stripBplFromName(x)));

            resultSrcPairs
            .ToList()
            .ForEach(x => ProcessSingleModule(
                         x.Item2,
                         currDir + "\\\\" + x.Item1,
                         srcPath + "\\\\" + x.Item2,
                         baseDir == null ? null : baseDir + "\\\\" + x.Item1,
                         hrg));

            var getConfig = new Func <string, string>(x =>
            {
                using (TextReader cf = new StreamReader(Directory.GetFiles(x, "config.txt")[0]))
                {
                    return(cf.ReadToEnd());
                }
            }
                                                      );

            var currConfig = getConfig(currDir);

            //hrg.WriteString("Current Config ==> " + currConfig);

            if (baseDir != null)
            {
                var baseConfig = getConfig(baseDir);
                //hrg.WriteString("Baseline Config ==> " + baseConfig);
            }
            hrg.AddHtmlPostlude();
        }
Exemple #2
0
        /// <summary>
        /// name is a unique identifier (example name) for each example, currently module name
        /// </summary>
        /// <param name="name"></param>
        /// <param name="currDir"></param>
        /// <param name="srcPath"></param>
        /// <param name="baseDir"></param>
        /// <param name="hrg"></param>
        private static void ProcessSingleModule(string name, string currDir, string srcPath, string baseDir, HtmlReportGeneration hrg)
        {
            var ari1 = new AvnResultInfo(currDir, srcPath, name); ari1.LoadResultInfo();

            try
            {
                AvnResultInfo ari2 = null;
                BaselineInfo  bi   = null;
                if (baseDir != null)
                {
                    ari2 = new AvnResultInfo(baseDir, srcPath, name); ari2.LoadResultInfo();
                    bi   = new BaselineInfo(ari1, ari2);
                    bi.MatchResults();
                }
                hrg.WriteHtml(ari1, ari2, bi);
            } catch (Exception e)
            {
                Console.WriteLine(string.Format("ERROR: Skipping {0} due to exception {1}", currDir, e.Message));
            }
        }