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);
        }
예제 #2
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.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);
        }