protected string ValidateResult(string result) { XmlWizard xmlwiz = new XmlWizard(); if (xmlwiz.ValidateXml(result, "result.xsd") || xmlwiz.ValidateXml(result, "subjresult.xsd")) { return(result); } else { throw new ResultFormatException("Xml result description does not conform to the FrontDesk XSD specification.\n" + " Please use a FrontDesk toolkit when designing tests, or debug the current test " + "to conform with FrontDesk specifications. \nError: " + xmlwiz.GetLastError() + "\n\n<![CDATA[ XML: " + result + "]]>"); } }
public string Discover(AutoEvaluation eval, out double points, out int time, out int count) { //Get Perl IExternalTool perl = ExternalToolFactory.GetInstance().CreateExternalTool("Perl", "5.0", ExternalToolFactory.VersionCompare.ATLEAST); if (perl == null) { throw new JUnitToolException( "Unable to find Perl v5.0 or later. Please check the installation or contact the administrator"); } //Get all files on the disk string tpath = ExportToTemp(eval); //Run disco program perl.Arguments = "jdisco.pl i"; perl.Execute(tpath); Directory.Delete(tpath, true); //Validate XML string xmltests = perl.Output; XmlWizard xmlwiz = new XmlWizard(); if (!xmlwiz.ValidateXml(xmltests, Path.Combine(Globals.WWWDirectory, "Xml/testsuite.xsd"))) { throw new JUnitToolException("Invalid JUnit Test Suite. Check to make sure the test suite conforms to FrontDesk standards"); } //Write XML FileSystem fs = new FileSystem(Globals.CurrentIdentity); CFile zone = fs.GetFile(eval.ZoneID); string tspath = Path.Combine(zone.FullPath, "__testsuite.xml"); CFile xmldesc = fs.GetFile(tspath); if (xmldesc == null) { xmldesc = fs.CreateFile(tspath, false, null); } xmldesc.Data = xmltests.ToCharArray(); fs.Edit(xmldesc); fs.Save(xmldesc); //Copy disco program over CFile.FileList dfiles = new CFile.FileList(); dfiles.Add(fs.GetFile(@"c:\system\junit\jdisco.pl")); dfiles.Add(fs.GetFile(@"c:\system\junit\JUnitDiscover.class")); dfiles.Add(fs.GetFile(@"c:\system\junit\JUnitDiscover$ClassFileFilter.class")); fs.CopyFiles(zone, dfiles, true); //Get suite metadata GetSuiteInfo(xmltests, out points, out time, out count); //Punt all previous results RemoveResults(eval); return(xmltests); }