Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        public void ShouldExecuteSnippet()
        {
            var sbps = new List<ScriptBreakpoint>();
            _debugger = new ScriptDebugger(true, null);
            _debugger.SetRunspace(_runspace);
            _debugger.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 = _runspace.SessionStateProxy.GetVariable("MyVariable");

            Assert.AreEqual("Test", myVariable);
        }
Esempio n. 4
0
        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);
        }