コード例 #1
0
        protected VendorSampleParser(string testedBSPDirectory, string sampleCatalogName, string subdir = null)
        {
            VendorSampleCatalogName = sampleCatalogName;

            var baseDirectory = Path.GetFullPath(Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), @"..\.."));

            string problemClassifierFile = Path.Combine(baseDirectory, "KnownProblems.xml");

            _KnownProblems = XmlTools.LoadObject <KnownSampleProblemDatabase>(problemClassifierFile);

            BSPDirectory   = Path.GetFullPath(Path.Combine(baseDirectory, testedBSPDirectory));
            CacheDirectory = Path.Combine(baseDirectory, "Cache");
            RulesDirectory = Path.Combine(baseDirectory, "Rules");
            var reportDirectory = Path.Combine(baseDirectory, "Reports");

            if (!string.IsNullOrEmpty(subdir))
            {
                CacheDirectory  = Path.Combine(CacheDirectory, subdir);
                RulesDirectory  = Path.Combine(RulesDirectory, subdir);
                reportDirectory = Path.Combine(reportDirectory, subdir);
            }

            Directory.CreateDirectory(CacheDirectory);
            Directory.CreateDirectory(reportDirectory);

            var toolchainType = XmlTools.LoadObject <BoardSupportPackage>(Path.Combine(BSPDirectory, LoadedBSP.PackageFileName)).GNUTargetID ?? throw new Exception("The BSP does not define GNU target ID.");

            TestDirectory      = _SettingsKey.GetValue("TestDirectory") as string ?? throw new Exception("Registry settings not present. Please apply 'settings.reg'");
            ToolchainDirectory = _SettingsKey.CreateSubKey("ToolchainDirectories").GetValue(toolchainType) as string ?? throw new Exception($"Location for {toolchainType} toolchain is not configured. Please apply 'settings.reg'");

            var toolchain = LoadedToolchain.Load(new ToolchainSource.Other(Environment.ExpandEnvironmentVariables(ToolchainDirectory)));

            BSP = LoadedBSP.Load(new BSPEngine.BSPSummary(Environment.ExpandEnvironmentVariables(Path.GetFullPath(BSPDirectory))), toolchain);

            ReportFile = Path.Combine(reportDirectory, BSP.BSP.PackageVersion.Replace(".", "_") + ".xml");
            if (File.Exists(ReportFile))
            {
                _Report = XmlTools.LoadObject <VendorSampleTestReport>(ReportFile);
            }
            else
            {
                _Report = new VendorSampleTestReport {
                    BSPVersion = BSP.BSP.PackageVersion, BSPID = BSP.BSP.PackageID
                }
            };
        }
コード例 #2
0
            public VendorSampleFilter(VendorSampleTestReport report, IEnumerable <VendorSample> alreadyDiscoveredSamples)
            {
                Dictionary <string, string> sampleDirectories = new Dictionary <string, string>();

                foreach (var s in alreadyDiscoveredSamples)
                {
                    sampleDirectories[s.InternalUniqueID] = s.Path;
                }

                foreach (var rec in report.Records)
                {
                    if (rec.BuildFailedExplicitly && sampleDirectories.TryGetValue(rec.UniqueID, out var dir))
                    {
                        RememberSamplePath(dir.Replace('/', '\\').Split('\\'));
                    }
                }
            }
コード例 #3
0
 public VendorSampleFilter(VendorSampleTestReport report)
 {
     if (report == null)
     {
         _ParseAll = true;
     }
     else
     {
         foreach (var rec in report.Records)
         {
             if (rec.BuildFailedExplicitly)
             {
                 _NamesToParse.Add(rec.ID.SampleName);
                 _IDsToParse.Add(rec.ID);
             }
         }
     }
 }