/// <summary> /// Gets the name of a test script and runs it. /// There must be a corresponding XML script file in the /// location specified in the GtdConfig.xml file. /// </summary> /// <param name="script">The name of the test script (.xml not needed).</param> public void fromFile(string script) { if (!(script.ToLower()).EndsWith(@".xml")) { script += ".xml"; } TestState ts = null; if (varsDefined) // true only if AddVariable() was called. { ts = TestState.getOnly(); // Re-open the log using the script name - lose what's there. Logger.getOnly().close(Logger.Disposition.Hung); // The next call to Logger.getOnly() will create one with using the script name. } else { ts = TestState.getOnly(m_appSymbol); // Allocating ts here insures deallocation } ts.Script = script; // must come before ts.PublishVars(); ts.PublishVars(); // get the script path from the configuration file string path = ts.getScriptPath() + @"\" + script; XmlElement scriptRoot = XmlFiler.getDocumentElement(path, "accil", false); Assert.IsNotNull(scriptRoot, "Missing document element 'accil'."); Instructionator.initialize("AxilInstructions.xml"); OnDesktop dt = new OnDesktop(); Assert.IsNotNull(dt, "OnDesktop not created for script " + path); dt.Element = scriptRoot; // not quite code-behind, but OK dt.Number = ts.IncInstructionCount; //dt = new XmlInstructionBuilder().Parse(path); // now execute any variables if they've been added before executing the desktop foreach (Var v in m_vars) { v.Execute(); } System.GC.Collect(); // forces collection on NUnit process only Beep beeep = new Beep(); beeep.Execute(); // play a beep tone so we know when the test starts dt.Execute(); varsDefined = false; // the next test may not have any Logger.getOnly().close(Logger.Disposition.Pass); Thread.Sleep(1000); }
/// <summary> /// Initializes the log with xml header stuff. /// </summary> private void initLog() { TestState ts = TestState.getOnly(); string date = DateTime.Now.Date.ToShortDateString(); m_sw.WriteLine(@"<?xml version=""1.0"" encoding=""UTF-8""?>"); m_sw.WriteLine(@"<?xml-stylesheet type=""text/xsl"" href=""gtdLog.xsl""?>"); m_sw.WriteLine(@"<gtdLog>"); m_sw.WriteLine(@" <set-up date=""{0}"">", date); m_sw.WriteLine(@" <application path=""{0}"" exe=""{1}""/>", ts.getAppPath(), ts.getAppExe()); m_sw.WriteLine(@" <script path=""{0}"" name=""{1}""/>", ts.getScriptPath(), ts.Script); m_sw.WriteLine(@" <model path=""{0}"" name=""{1}""/>", ts.getModelPath(), ts.getModelName()); m_sw.WriteLine(@" </set-up>"); m_init = true; }
private Logger() { // open a file TestState ts = TestState.getOnly(); string path = ts.getScriptPath() + @"\"; string script; if (ts.Script == null) { script = "Logger2" + ".xlg"; } else { script = ts.Script.Split(".".ToCharArray(), 2)[0] + ".xlg"; } m_sw = File.CreateText(path + script); m_init = false; s_isClosed = false; }