public void ShouldSupportRemoteSession() { var sbps = new List <ScriptBreakpoint>(); _debugger = new ScriptDebugger(true, null); _runspace.Dispose(); _runspace = RunspaceFactory.CreateRunspace(_debugger); _runspace.Open(); _debugger.SetRunspace(_runspace); _debugger.SetBreakpoints(sbps); var node = new ScriptProgramNode(null); node.FileName = "Enter-PSSession localhost"; var mre = new ManualResetEvent(false); string outputString = null; _debugger.DebuggingFinished += (sender, args) => mre.Set(); _debugger.OutputString += (sender, args) => outputString = args.Value; _debugger.Execute(node); Assert.IsTrue(mre.WaitOne(5000)); mre.Reset(); node = new ScriptProgramNode(null); node.FileName = "$host.Name"; _debugger.Execute(node); Assert.IsTrue(mre.WaitOne(5000)); Assert.AreEqual("ServerRemoteHost", outputString); }
public void ShouldAcceptArguments() { var fi = new FileInfo(".\\TestFile.ps1"); var sbps = new List <ScriptBreakpoint>(); _debugger = new ScriptDebugger(true, null); _debugger.SetRunspace(_runspace); _debugger.SetBreakpoints(sbps); var node = new ScriptProgramNode(null); node.FileName = fi.FullName; node.IsFile = true; node.Arguments = "'Arg1' 'Arg2'"; var mre = new ManualResetEvent(false); _debugger.DebuggingFinished += (sender, args) => mre.Set(); _debugger.Execute(node); Assert.IsTrue(mre.WaitOne(5000)); var arg1 = _runspace.SessionStateProxy.GetVariable("Argument1"); var arg2 = _runspace.SessionStateProxy.GetVariable("Argument2"); Assert.AreEqual("Arg1", arg1); Assert.AreEqual("Arg2", arg2); }
public void ShouldBreakOnBreakPoint() { var engineEvents = new Mock <IEngineEvents>(); var fi = new FileInfo(".\\TestFile.ps1"); var sbps = new List <ScriptBreakpoint> { new ScriptBreakpoint(null, fi.FullName, 3, 0, engineEvents.Object) }; _debugger = new ScriptDebugger(true, null); _debugger.SetRunspace(_runspace); _debugger.SetBreakpoints(sbps); var node = new ScriptProgramNode(null); node.IsFile = true; node.FileName = fi.FullName; var mre = new ManualResetEvent(false); bool breakpointHit = false; _debugger.BreakpointHit += (sender, args) => { breakpointHit = true; _debugger.Continue(); }; _debugger.DebuggingFinished += (sender, args) => mre.Set(); _debugger.Execute(node); Assert.IsTrue(mre.WaitOne(5000)); Assert.IsTrue(breakpointHit); }
public void ShouldBreakOnBreakPoint() { var engineEvents = new Mock <IEngineEvents>(); var fi = new FileInfo(".\\TestFile.ps1"); var sbps = new List <ScriptBreakpoint> { new ScriptBreakpoint(null, fi.FullName, 3, 0, engineEvents.Object) }; _debugger.BreakpointManager.SetBreakpoints(sbps); foreach (var bp in sbps) { bp.Bind(); } var node = new ScriptProgramNode(null); node.IsFile = true; node.FileName = fi.FullName; var mre = new ManualResetEvent(false); bool breakpointHit = false; _debugger.BreakpointManager.BreakpointHit += (sender, args) => { breakpointHit = true; System.Threading.Tasks.Task.Factory.StartNew(() => _debugger.Continue()); }; _debugger.DebuggingFinished += (sender, args) => mre.Set(); _debugger.IsDebugging = true; _debugger.Execute(node); _debugger.IsDebugging = false; Assert.IsTrue(mre.WaitOne(5000)); Assert.IsTrue(breakpointHit); }
public void ShouldExecuteSnippet() { var sbps = new List <ScriptBreakpoint>(); _debugger.BreakpointManager.SetBreakpoints(sbps); var node = new ScriptProgramNode(null); node.FileName = "$Global:MyVariable = 'Test'"; var mre = new ManualResetEvent(false); _debugger.DebuggingFinished += (sender, args) => mre.Set(); _debugger.Execute(node); Assert.IsTrue(mre.WaitOne(5000)); var myVariable = PowerShellDebuggingService.Runspace.SessionStateProxy.GetVariable("MyVariable"); Assert.AreEqual("Test", myVariable); }
public RemoteEnumDebugPrograms(ScriptDebugProcess process) { _program = process.Node; }