using System.IO; using System.Threading; using NUnit.Framework; using OpenTap.Cli; using OpenTap.EngineUnitTestUtils; using OpenTap.Plugins.BasicSteps; namespace OpenTap.Engine.UnitTests { public class RunCliActionTest { const string planFile = "list-external-parameters.TapPlan"; [Test] public void ListExternalParameters() { var runcli = new RunCliAction { ListExternal = true, TestPlanPath = planFile, NonInteractive = true }; var plan = new TestPlan(); var step = new ProcessStep() { LogHeader = null, // test that the log header is a null string. Application = "tap.exe" // test that application is a non-null string. }; plan.ChildTestSteps.Add(step); var stepType = TypeData.GetTypeData(step); stepType.GetMember(nameof(step.LogHeader)).Parameterize(plan, step, "log-header"); stepType.GetMember(nameof(step.Timeout)).Parameterize(plan, step, "timeout"); stepType.GetMember(nameof(step.WaitForEnd)).Parameterize(plan, step, "wait-for-end"); stepType.GetMember(nameof(step.VerdictOnMatch)).Parameterize(plan, step, "match-verdict"); stepType.GetMember(nameof(step.Application)).Parameterize(plan, step, "application"); plan.Save(planFile); var traceListener = new TestTraceListener(); Log.AddListener(traceListener); try { var exitCode = runcli.Execute(CancellationToken.None); Assert.AreEqual(0, exitCode); Log.Flush(); var log = traceListener.allLog.ToString(); StringAssert.Contains("Listing 5 External Test Plan Parameters", log); StringAssert.Contains("application = tap.exe", log); StringAssert.Contains("log-header = ", log); StringAssert.Contains("wait-for-end = True", log); StringAssert.Contains("match-verdict = Pass", log); } finally { Log.RemoveListener(traceListener); File.Delete(planFile); } } } }