Esempio n. 1
0
 public ScriptProperty(ScriptDebugger debugger, string name, object value)
 {
     Log.DebugFormat("{0} {1}", name, value);
     Name      = name;
     Value     = value;
     _debugger = debugger;
 }
Esempio n. 2
0
        public void ShouldSetLineBreakpoint()
        {
            var engineEvents = new Mock<IEngineEvents>();

            var sbps = new List<ScriptBreakpoint>
                           {
                               new ScriptBreakpoint(null, ".\\TestFile.ps1", 1, 0, engineEvents.Object)
                           };

            _debugger = new ScriptDebugger(true, null);
            _debugger.SetRunspace(_runspace);
            _debugger.SetBreakpoints(sbps);

            using (var pipe = _runspace.CreatePipeline())
            {
                pipe.Commands.Add("Get-PSBreakpoint");
                var breakpoints = pipe.Invoke();

                //Verify the breakpoint was added to the runspace.
                Assert.AreEqual(1, breakpoints.Count);
            }

            //Verify the callback event was triggered.
            engineEvents.Verify(m => m.Breakpoint(null, sbps[0]), Times.Once());
        }
Esempio n. 3
0
 public ScriptPropertyCollection(ScriptDebugger debugger)
 {
     Log.Debug("debugger");
     foreach (var keyVal in debugger.Variables)
     {
         var val = keyVal.Value;
         Add(ScriptPropertyFactory.MakeProperty(debugger, keyVal.Key, val));
     }
 }
Esempio n. 4
0
        public EnumerableScriptProperty(ScriptDebugger debugger, string name, object value) : base(debugger, name, value)
        {
            if (!(value is IEnumerable))
            {
                throw new ArgumentException("Value must be of type IEnumerable.");
            }

            _enumerable = value as IEnumerable;
        }
Esempio n. 5
0
 protected ScriptProperty(ScriptDebugger debugger, Variable var, string path)
 {
     Log.DebugFormat("{0} {1}", var.VarName, var.VarValue);
     Name      = var.VarName;
     Value     = var.VarValue;
     IsEnum    = var.IsEnum;
     _debugger = debugger;
     TypeName  = (var.Type == null ? string.Empty : var.Type);
     _path     = path;
 }
Esempio n. 6
0
 public ScriptProperty(ScriptDebugger debugger, string name, string value, bool isEnum, string type, string path)
 {
     Log.DebugFormat("{0} {1}", name, value);
     Name      = name;
     Value     = value;
     IsEnum    = isEnum;
     _debugger = debugger;
     TypeName  = (type == null ? string.Empty : type);
     _path     = path;
 }
Esempio n. 7
0
        public PSObjectScriptProperty(ScriptDebugger debugger, string name, object value) : base(debugger, name, value)
        {
            if (!(value is PSObject))
            {
                throw new ArgumentException("Value must be of type PSObject");
            }


            _psObject = value as PSObject;
        }
 public ScriptStackFrame(ScriptProgramNode node, string scriptName, string frame, int startLine, int endLine, int startColumn, int endColumn)
 {
     if (node == null)
     {
         throw new ArgumentNullException("node");
     }
     _node     = node;
     _debugger = node.Debugger;
     // VS is zero based, PS is 1 based
     _docContext = new ScriptDocumentContext(scriptName, frame, startLine - 1, endLine - 1, startColumn - 1, endColumn - 1);
 }
Esempio n. 9
0
 public ScriptStackFrame(ScriptProgramNode node, CallStackFrame frame)
 {
     if (node == null)
     {
         throw new ArgumentNullException("node");
     }
     _node     = node;
     _debugger = node.Debugger;
     // VS is zero based, PS is 1 based
     _docContext = new ScriptDocumentContext(frame.ScriptName, frame.ScriptLineNumber - 1, 0, frame.ToString());
     _frame      = frame;
 }
Esempio n. 10
0
        public ScriptExpression(ScriptDebugger debugger, string name, object value)
        {
            Log.DebugFormat("Name [{0}] Value [{1}]", name, value);

            if (name.StartsWith("$"))
            {
                name = name.Remove(0, 1);
            }

            _name     = name;
            _value    = value;
            _debugger = debugger;
        }
Esempio n. 11
0
        public void ShouldNotDieIfNoBreakpoints()
        {
            _debugger = new ScriptDebugger(true, null);
            _debugger.SetRunspace(_runspace);

            using (var pipe = _runspace.CreatePipeline())
            {
                pipe.Commands.Add("Get-PSBreakpoint");
                var breakpoints = pipe.Invoke();

                Assert.AreEqual(0, breakpoints.Count);
            }
        }
Esempio n. 12
0
        public ScriptExpression(ScriptDebugger debugger, Variable var)
        {
            if (var != null)
            {
                Log.DebugFormat("Name [{0}] Value [{1}]", var.VarName, var.VarValue);

                if (var.VarName.StartsWith("$"))
                {
                    var.VarName = var.VarName.Remove(0, 1);
                }

                _var = var;
            }
            _debugger = debugger;
        }
Esempio n. 13
0
        public static ScriptProperty MakeProperty(ScriptDebugger debugger, Variable var, string parentPath)
        {
            if (var == null)
            {
                return(null);
            }

            if (var.IsEnumerable && !var.Type.Contains("System.String"))
            {
                return(new EnumerableScriptProperty(debugger, var, parentPath));
            }

            if (var.IsPSObject)
            {
                return(new PSObjectScriptProperty(debugger, var, parentPath));
            }

            return(new ScriptProperty(debugger, var.VarName, var.VarValue, var.IsEnum, var.Type, parentPath));
        }
Esempio n. 14
0
        public static ScriptProperty MakeProperty(ScriptDebugger debugger, string name, object value)
        {
            var psObject = value as PSObject;

            if (psObject != null && psObject.BaseObject is IEnumerable && !psObject.TypeNames.Contains("System.String"))
            {
                return(new EnumerableScriptProperty(debugger, name, psObject.BaseObject));
            }

            if (psObject != null)
            {
                return(new PSObjectScriptProperty(debugger, name, value));
            }


            if (value is IEnumerable && !(value is string))
            {
                return(new EnumerableScriptProperty(debugger, name, value));
            }

            return(new ScriptProperty(debugger, name, value));
        }
Esempio n. 15
0
        public void ShouldClearBreakpoints()
        {
            using (var pipe = _runspace.CreatePipeline())
            {
                var command = new Command("Set-PSBreakpoint");
                command.Parameters.Add("Script", ".\\TestFile.ps1");
                command.Parameters.Add("Line", 1);

                pipe.Commands.Add(command);
                pipe.Invoke();
            }

            _debugger = new ScriptDebugger(true, null);
            _debugger.SetRunspace(_runspace);
            _debugger.SetBreakpoints(new List<ScriptBreakpoint>());

            using (var pipe = _runspace.CreatePipeline())
            {
                pipe.Commands.Add("Get-PSBreakpoint");
                var breakpoints = pipe.Invoke();
                
                Assert.AreEqual(0, breakpoints.Count);
            }
        }
Esempio n. 16
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. 17
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. 18
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. 19
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);
        }
 public RawHostUi(ScriptDebugger debugger)
 {
     _debugger = debugger;
 }
 public PowerShellReplEvaluator(ScriptDebugger debugger)
 {
     Debugger = debugger;
 }
 /// <summary>
 /// Ctor
 /// </summary>
 /// <param name="debugger">Script debugger</param>
 public BreakpointManager(ScriptDebugger debugger)
     : this()
 {
     _debugger = debugger;
 }
Esempio n. 23
0
 public void Init()
 {
     _host = new ScriptDebugger(true, null);
 }
 public HostUi(ScriptDebugger scriptDebugger)
 {
     _scriptDebugger = scriptDebugger;
 }
Esempio n. 25
0
 public PSObjectScriptProperty(ScriptDebugger debugger, Variable var, string parentPath)
     : base(debugger, var, parentPath)
 {
     _val = var.VarName;
 }
 public DebugServiceEventsHandlerProxy(ScriptDebugger debugger, bool uiOutput)
 {
     _debugger = debugger;
     _uiOutput = uiOutput;
 }