private static string Execute(bool logErrors, Action <string> onErrorHandler, params string[] statements) { TestHostUserInterface ui = new TestHostUserInterface(); if (logErrors) { ui.OnWriteErrorLineString = s => ui.Log.Append(s); } TestHost host = new TestHost(ui); var myRunSpace = CreateRunspace(host); myRunSpace.Open(); foreach (var statement in statements) { using (var currentPipeline = myRunSpace.CreatePipeline()) { currentPipeline.Commands.Add(statement); currentPipeline.Commands.Add("Out-Default"); currentPipeline.Invoke(); } } return(ui.Log.ToString()); }
public void ValueGatheringWithArrayInputAndConversion() { var ui = new TestHostUserInterface(); var intArray = new [] { 4, 5, 6 }; ui.SetInput(String.Join(Environment.NewLine, intArray) + Environment.NewLine + Environment.NewLine); var res = TestHost.Execute(true, null, ui, CmdletName(typeof(TestIntegerArraySumCommand))); var lines = res.Split(new [] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); Assert.AreEqual(TestIntegerArraySumCommand.Transform(intArray), lines[lines.Length - 1]); }
public void MandatoryValueIsGatheredIfNotProvided() { var ui = new TestHostUserInterface(); string val = "foobar"; ui.SetInput(val + Environment.NewLine); var res = TestHost.Execute(true, null, ui, CmdletName(typeof(TestWithMandatoryCommand))); var lines = res.Split(new [] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); Assert.AreEqual(TestWithMandatoryCommand.Transform(val), lines[lines.Length - 1]); }
public void ValueGatheringForPSCredentialWithStringAsCredential() { var ui = new TestHostUserInterface(); ui.SetInput("Bo" + Environment.NewLine + "SecretPassword" + Environment.NewLine); var res = TestHost.Execute(true, null, ui, CmdletName(typeof(TestPrintCredentialsCommand)) + " 'BiBa'"); var lines = res.Split(new [] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); Assert.That(lines[lines.Length - 2], Is.EqualTo("User: BiBaBo")); Assert.That(lines[lines.Length - 1], Is.EqualTo("Password: SecretPassword")); }
public void ValueGatheringCanProvideHelp() { var ui = new TestHostUserInterface(); string val = "test"; string input = "!?" + Environment.NewLine + val + Environment.NewLine; ui.SetInput(input); var res = TestHost.Execute(true, null, ui, CmdletName(typeof(TestWithMandatoryCommand))); var lines = res.Split(new [] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); Assert.Greater(lines.Length, 3, "Not enough output"); Assert.AreEqual(TestWithMandatoryCommand.Transform(val), lines[lines.Length - 1]); Assert.AreEqual(TestWithMandatoryCommand.HELP_MSG, lines[lines.Length - 3]); }
public static string Execute(bool logErrors, Action <string> onErrorHandler, TestHostUserInterface ui, params string[] statements) { if (logErrors) { ui.OnWriteErrorLineString = onErrorHandler ?? (s => ui.Log.Append(s)); } TestHost host = new TestHost(ui); // use public static property, so we can access e.g. the ExecutionContext after execution LastUsedRunspace = CreateRunspace(host); LastUsedRunspace.Open(); _doExit = false; LastExitCode = null; foreach (var statement in statements) { if (_doExit) { break; } using (var currentPipeline = LastUsedRunspace.CreatePipeline()) { currentPipeline.Commands.AddScript(statement, false); currentPipeline.Commands.Add("Out-Default"); try { currentPipeline.Invoke(); } catch (Exception e) { ui.WriteErrorLine(e.ToString()); } // pipeline might failed, write errors to ui if (currentPipeline.PipelineStateInfo.State.Equals(PipelineState.Failed)) { foreach (var error in currentPipeline.Error.ReadToEnd()) { ui.WriteErrorLine(error.ToString()); } } } } return(ui.Log.ToString()); }
public static string Execute(bool logErrors, Action<string> onErrorHandler, TestHostUserInterface ui, params string[] statements) { if (logErrors) { ui.OnWriteErrorLineString = onErrorHandler ?? (s => ui.Log.Append(s)); } TestHost host = new TestHost(ui); // use public static property, so we can access e.g. the ExecutionContext after execution LastUsedRunspace = CreateRunspace(host); LastUsedRunspace.Open(); _doExit = false; LastExitCode = null; foreach (var statement in statements) { if (_doExit) { break; } using (var currentPipeline = LastUsedRunspace.CreatePipeline()) { currentPipeline.Commands.AddScript(statement, false); currentPipeline.Commands.Add("Out-Default"); try { currentPipeline.Invoke(); } catch (Exception e) { ui.WriteErrorLine(e.ToString()); } // pipeline might failed, write errors to ui if (currentPipeline.PipelineStateInfo.State.Equals(PipelineState.Failed)) { foreach (var error in currentPipeline.Error.ReadToEnd()) { ui.WriteErrorLine(error.ToString()); } } } } return ui.Log.ToString(); }
public static string Execute(params string[] statements) { TestHostUserInterface ui = new TestHostUserInterface(); TestHost host = new TestHost(ui); var myRunSpace = RunspaceFactory.CreateRunspace(host); myRunSpace.Open(); foreach (var statement in statements) { using (var currentPipeline = myRunSpace.CreatePipeline()) { currentPipeline.Commands.Add(statement); currentPipeline.Commands.Add("Out-Default"); currentPipeline.Invoke(); } } return ui.Log.ToString(); }
public static string Execute(params string[] statements) { TestHostUserInterface ui = new TestHostUserInterface(); TestHost host = new TestHost(ui); var myRunSpace = RunspaceFactory.CreateRunspace(host); myRunSpace.Open(); foreach (var statement in statements) { using (var currentPipeline = myRunSpace.CreatePipeline()) { currentPipeline.Commands.Add(statement); currentPipeline.Commands.Add("Out-Default"); currentPipeline.Invoke(); } } return(ui.Log.ToString()); }
public TestHost(TestHostUserInterface ui) { // TODO: Complete member initialization this._ui = ui; }
private void CreateFreshHostAndUI(bool interactive) { HostUI = new TestHostUserInterface(); FullHost = new FullHost(interactive); FullHost.LocalHost.SetHostUserInterface(HostUI); }
private static string Execute(bool logErrors, Action<string> onErrorHandler, params string[] statements) { TestHostUserInterface ui = new TestHostUserInterface(); if (logErrors) ui.OnWriteErrorLineString = s => ui.Log.Append(s); TestHost host = new TestHost(ui); var myRunSpace = CreateRunspace(host); myRunSpace.Open(); foreach (var statement in statements) { using (var currentPipeline = myRunSpace.CreatePipeline()) { currentPipeline.Commands.Add(statement); currentPipeline.Commands.Add("Out-Default"); currentPipeline.Invoke(); } } return ui.Log.ToString(); }