Esempio n. 1
0
def test_run(testdir):
    from tests_python import debugger_unittest
    import sys
    import os

    if debugger_unittest.IS_PY3K:
        foo_dir = debugger_unittest._get_debugger_test_file(os.path.join('resources', 'launch', 'foo'))
        foo_module = 'tests_python.resources.launch.foo'
    else:
        foo_dir = debugger_unittest._get_debugger_test_file(os.path.join('resources', 'launch_py2', 'foo'))
        foo_module = 'tests_python.resources.launch_py2.foo'

    pydevd_dir = os.path.dirname(os.path.dirname(__file__))
    assert os.path.exists(os.path.join(pydevd_dir, 'pydevd.py'))

    _run_and_check(testdir, testdir.makepyfile('''
import sys
sys.path.append(%(pydevd_dir)r)
import pydevd
py_db = pydevd.PyDB()
py_db.ready_to_run = True
py_db.run(%(foo_dir)r)
''' % locals()))

    _run_and_check(testdir, testdir.makepyfile('''
import sys
sys.path.append(%(pydevd_dir)r)
import pydevd
py_db = pydevd.PyDB()
py_db.run(%(foo_dir)r, set_trace=False)
''' % locals()))

    if sys.version_info[0:2] == (2, 6):
        # Not valid for Python 2.6
        return

    _run_and_check(testdir, testdir.makepyfile('''
import sys
sys.path.append(%(pydevd_dir)r)
sys.argv.append('--as-module')
import pydevd
py_db = pydevd.PyDB()
py_db.ready_to_run = True
py_db.run(%(foo_module)r, is_module=True)
''' % locals()))

    _run_and_check(testdir, testdir.makepyfile('''
import sys
sys.argv.append('--as-module')
sys.path.append(%(pydevd_dir)r)
import pydevd
py_db = pydevd.PyDB()
py_db.run(%(foo_module)r, is_module=True, set_trace=False)
''' % locals()))
Esempio n. 2
0
 def get_command_line_args(self):
     free_port = get_free_port()
     self.django_port = free_port
     return [
         debugger_unittest._get_debugger_test_file(os.path.join('my_django_proj_17', 'manage.py')),
         'runserver',
         '--noreload',
         str(free_port),
     ]
Esempio n. 3
0
 def write_add_breakpoint(self, line, func):
     '''
         @param line: starts at 1
     '''
     breakpoint_id = self.next_breakpoint_id()
     template_file = debugger_unittest._get_debugger_test_file(os.path.join('my_django_proj_17', 'my_app', 'templates', 'my_app', 'index.html'))
     self.write("111\t%s\t%s\t%s\t%s\t%s\t%s\tNone\tNone" % (self.next_seq(), breakpoint_id, 'django-line', template_file, line, func))
     self.log.append('write_add_django_breakpoint: %s line: %s func: %s' % (breakpoint_id, line, func))
     return breakpoint_id
Esempio n. 4
0
 def get_command_line_args(self):
     assert self.DJANGO_FOLDER is not None
     free_port = get_free_port()
     self.django_port = free_port
     return [
         debugger_unittest._get_debugger_test_file(os.path.join(self.DJANGO_FOLDER, 'manage.py')),
         'runserver',
         '--noreload',
         str(free_port),
     ]
Esempio n. 5
0
 def write_add_breakpoint_django(self, line, func, template):
     '''
         @param line: starts at 1
     '''
     assert self.DJANGO_FOLDER is not None
     breakpoint_id = self.next_breakpoint_id()
     template_file = debugger_unittest._get_debugger_test_file(os.path.join(self.DJANGO_FOLDER, 'my_app', 'templates', 'my_app', template))
     self.write("111\t%s\t%s\t%s\t%s\t%s\t%s\tNone\tNone" % (self.next_seq(), breakpoint_id, 'django-line', template_file, line, func))
     self.log.append('write_add_django_breakpoint: %s line: %s func: %s' % (breakpoint_id, line, func))
     return breakpoint_id
 def get_command_line_args(self):
     assert self.DJANGO_FOLDER is not None
     free_port = get_free_port()
     self.django_port = free_port
     return [
         debugger_unittest._get_debugger_test_file(os.path.join(self.DJANGO_FOLDER, 'manage.py')),
         'runserver',
         '--noreload',
         '--nothreading',
         str(free_port),
     ]
Esempio n. 7
0
        def test_file(
                self,
                filename,
                **kwargs
            ):
            WriterThread.TEST_FILE = debugger_unittest._get_debugger_test_file(filename)
            for key, value in kwargs.items():
                assert hasattr(WriterThread, key)
                setattr(WriterThread, key, value)

            with runner.check_case(WriterThread) as writer:
                yield writer
Esempio n. 8
0
        def test_file(
                self,
                filename,
                **kwargs
            ):
            WriterThread.TEST_FILE = debugger_unittest._get_debugger_test_file(filename)
            for key, value in kwargs.items():
                assert hasattr(WriterThread, key)
                setattr(WriterThread, key, value)

            with runner.check_case(WriterThread) as writer:
                yield writer
Esempio n. 9
0
class WriterThreadCase13(debugger_unittest.AbstractWriterThread):

    TEST_FILE = debugger_unittest._get_debugger_test_file(
        '_debugger_case13.py')

    def run(self):
        self.start_socket()
        self.write_add_breakpoint(35, 'main')
        self.write(
            "%s\t%s\t%s" %
            (CMD_SET_PROPERTY_TRACE, self.next_seq(), "true;false;false;true"))
        self.write_make_initial_run()
        thread_id, frame_id, line = self.wait_for_breakpoint_hit('111', True)

        self.write_get_frame(thread_id, frame_id)

        self.write_step_in(thread_id)
        thread_id, frame_id, line = self.wait_for_breakpoint_hit('107', True)
        # Should go inside setter method
        assert line == 25, 'Expected return to be in line 25, was: %s' % line

        self.write_step_in(thread_id)
        thread_id, frame_id, line = self.wait_for_breakpoint_hit('107', True)

        self.write_step_in(thread_id)
        thread_id, frame_id, line = self.wait_for_breakpoint_hit('107', True)
        # Should go inside getter method
        assert line == 21, 'Expected return to be in line 21, was: %s' % line

        self.write_step_in(thread_id)
        thread_id, frame_id, line = self.wait_for_breakpoint_hit('107', True)

        # Disable property tracing
        self.write(
            "%s\t%s\t%s" %
            (CMD_SET_PROPERTY_TRACE, self.next_seq(), "true;true;true;true"))
        self.write_step_in(thread_id)
        thread_id, frame_id, line = self.wait_for_breakpoint_hit('107', True)
        # Should Skip step into properties setter
        assert line == 39, 'Expected return to be in line 39, was: %s' % line

        # Enable property tracing
        self.write(
            "%s\t%s\t%s" %
            (CMD_SET_PROPERTY_TRACE, self.next_seq(), "true;false;false;true"))
        self.write_step_in(thread_id)
        thread_id, frame_id, line = self.wait_for_breakpoint_hit('107', True)
        # Should go inside getter method
        assert line == 8, 'Expected return to be in line 8, was: %s' % line

        self.write_run_thread(thread_id)

        self.finished_ok = True
Esempio n. 10
0
 def write_add_breakpoint_django(self, line, func, template):
     '''
         @param line: starts at 1
     '''
     breakpoint_id = self.next_breakpoint_id()
     template_file = debugger_unittest._get_debugger_test_file(
         os.path.join('my_django_proj_17', 'my_app', 'templates', 'my_app',
                      template))
     self.write("111\t%s\t%s\t%s\t%s\t%s\t%s\tNone\tNone" %
                (self.next_seq(), breakpoint_id, 'django-line',
                 template_file, line, func))
     self.log.append('write_add_django_breakpoint: %s line: %s func: %s' %
                     (breakpoint_id, line, func))
     return breakpoint_id
Esempio n. 11
0
 def write_add_breakpoint_jinja2(self, line, func, template):
     '''
         @param line: starts at 1
     '''
     assert self.FLASK_FOLDER is not None
     breakpoint_id = self.next_breakpoint_id()
     template_file = debugger_unittest._get_debugger_test_file(
         os.path.join(self.FLASK_FOLDER, 'templates', template))
     self.write("111\t%s\t%s\t%s\t%s\t%s\t%s\tNone\tNone" %
                (self.next_seq(), breakpoint_id, 'jinja2-line',
                 template_file, line, func))
     self.log.append('write_add_breakpoint_jinja: %s line: %s func: %s' %
                     (breakpoint_id, line, func))
     return breakpoint_id
Esempio n. 12
0
        def test_file(self, filename, **kwargs):
            def update_command_line_args(writer, args):
                ret = debugger_unittest.AbstractWriterThread.update_command_line_args(
                    writer, args)
                ret.append(str(writer.port))
                return ret

            WriterThread.TEST_FILE = debugger_unittest._get_debugger_test_file(
                filename)
            WriterThread.update_command_line_args = update_command_line_args
            for key, value in kwargs.items():
                assert hasattr(WriterThread, key)
                setattr(WriterThread, key, value)

            with runner.check_case(WriterThread) as writer:
                yield writer
Esempio n. 13
0
        def test_file(self, filename, **kwargs):
            def update_command_line_args(writer, args):
                ret = debugger_unittest.AbstractWriterThread.update_command_line_args(
                    writer, args)
                ret.insert(ret.index('--qt-support'), '--multiprocess')
                return ret

            WriterThread.update_command_line_args = update_command_line_args
            WriterThread.TEST_FILE = debugger_unittest._get_debugger_test_file(
                filename)
            for key, value in kwargs.items():
                assert hasattr(WriterThread, key)
                setattr(WriterThread, key, value)

            with debugger_runner_simple.check_case(WriterThread) as writer:
                yield writer
Esempio n. 14
0
class WriterThreadCase18(debugger_unittest.AbstractWriterThread):

    TEST_FILE = debugger_unittest._get_debugger_test_file('_debugger_case18.py')

    def run(self):
        self.start_socket()
        self.write_add_breakpoint(5, 'm2')
        self.write_make_initial_run()

        thread_id, frame_id, line = self.wait_for_breakpoint_hit('111', True)
        assert line == 5, 'Expected return to be in line 2, was: %s' % line

        self.write_change_variable(thread_id, frame_id, 'a', '40')
        self.write_run_thread(thread_id)

        self.finished_ok = True
Esempio n. 15
0
class WriterThreadCase4(debugger_unittest.AbstractWriterThread):

    TEST_FILE = debugger_unittest._get_debugger_test_file('_debugger_case4.py')

    def run(self):
        self.start_socket()
        self.write_make_initial_run()

        thread_id = self.wait_for_new_thread()

        self.write_suspend_thread(thread_id)

        time.sleep(4)  # wait for time enough for the test to finish if it wasn't suspended

        self.write_run_thread(thread_id)

        self.finished_ok = True
Esempio n. 16
0
class WriterThreadCase14(debugger_unittest.AbstractWriterThread):

    TEST_FILE = debugger_unittest._get_debugger_test_file(
        '_debugger_case14.py')

    def run(self):
        self.start_socket()
        self.write_add_breakpoint(22, 'main')
        self.write_make_initial_run()

        thread_id, frame_id, line = self.wait_for_breakpoint_hit('111', True)
        assert thread_id, '%s not valid.' % thread_id
        assert frame_id, '%s not valid.' % frame_id

        # Access some variable
        self.write_debug_console_expression("%s\t%s\tEVALUATE\tcarObj.color" %
                                            (thread_id, frame_id))
        self.wait_for_var(['<more>False</more>', '%27Black%27'])
        assert 7 == self._sequence, 'Expected 9. Had: %s' % self._sequence

        # Change some variable
        self.write_debug_console_expression(
            "%s\t%s\tEVALUATE\tcarObj.color='Red'" % (thread_id, frame_id))
        self.write_debug_console_expression("%s\t%s\tEVALUATE\tcarObj.color" %
                                            (thread_id, frame_id))
        self.wait_for_var(['<more>False</more>', '%27Red%27'])
        assert 11 == self._sequence, 'Expected 13. Had: %s' % self._sequence

        # Iterate some loop
        self.write_debug_console_expression(
            "%s\t%s\tEVALUATE\tfor i in range(3):" % (thread_id, frame_id))
        self.wait_for_var(
            ['<xml><more>True</more></xml>', '<xml><more>1</more></xml>'])
        self.write_debug_console_expression("%s\t%s\tEVALUATE\t    print(i)" %
                                            (thread_id, frame_id))
        self.write_debug_console_expression("%s\t%s\tEVALUATE\t" %
                                            (thread_id, frame_id))
        self.wait_for_var([
            '<xml><more>False</more><output message="0"></output><output message="1"></output><output message="2"></output></xml>',
            '<xml><more>0</more><output message="0"></output><output message="1"></output><output message="2"></output></xml>'
        ])
        assert 17 == self._sequence, 'Expected 19. Had: %s' % self._sequence

        self.write_run_thread(thread_id)
        self.finished_ok = True
        def test_file(
                self,
                filename,
                **kwargs
            ):

            def update_command_line_args(writer, args):
                ret = debugger_unittest.AbstractWriterThread.update_command_line_args(writer, args)
                ret.insert(ret.index('--qt-support'), '--multiprocess')
                return ret

            WriterThread.update_command_line_args = update_command_line_args
            WriterThread.TEST_FILE = debugger_unittest._get_debugger_test_file(filename)
            for key, value in kwargs.items():
                assert hasattr(WriterThread, key)
                setattr(WriterThread, key, value)

            with runner.check_case(WriterThread) as writer:
                yield writer
Esempio n. 18
0
class WriterThreadCase19(debugger_unittest.AbstractWriterThread):

    TEST_FILE = debugger_unittest._get_debugger_test_file('_debugger_case19.py')

    def run(self):
        self.start_socket()
        self.write_add_breakpoint(8, None)
        self.write_make_initial_run()

        thread_id, frame_id, line = self.wait_for_breakpoint_hit('111', True)

        assert line == 8, 'Expected return to be in line 8, was: %s' % line

        self.write_evaluate_expression('%s\t%s\t%s' % (thread_id, frame_id, 'LOCAL'), 'a.__var')
        self.wait_for_evaluation('<var name="a.__var" type="int" value="int')
        self.write_run_thread(thread_id)


        self.finished_ok = True
Esempio n. 19
0
class WriterThreadCaseQThread3(debugger_unittest.AbstractWriterThread):

    TEST_FILE = debugger_unittest._get_debugger_test_file('_debugger_case_qthread3.py')

    def run(self):
        self.start_socket()
        breakpoint_id = self.write_add_breakpoint(19, 'run')
        self.write_make_initial_run()

        thread_id, frame_id = self.wait_for_breakpoint_hit()

        self.write_remove_breakpoint(breakpoint_id)
        self.write_run_thread(thread_id)

        self.log.append('Checking sequence. Found: %s' % (self._sequence))
        assert 9 == self._sequence, 'Expected 9. Had: %s' % self._sequence

        self.log.append('Marking finished ok.')
        self.finished_ok = True
Esempio n. 20
0
        def test_file(
                self,
                filename,
                **kwargs
            ):

            def update_command_line_args(writer, args):
                ret = debugger_unittest.AbstractWriterThread.update_command_line_args(writer, args)
                ret.append(str(writer.port))
                return ret

            WriterThread.TEST_FILE = debugger_unittest._get_debugger_test_file(filename)
            WriterThread.update_command_line_args = update_command_line_args
            for key, value in kwargs.items():
                assert hasattr(WriterThread, key)
                setattr(WriterThread, key, value)

            with runner.check_case(WriterThread) as writer:
                yield writer
Esempio n. 21
0
class WriterThreadAddTerminationExceptionBreak(debugger_unittest.AbstractWriterThread):

    TEST_FILE = debugger_unittest._get_debugger_test_file('_debugger_case10.py')

    def run(self):
        self.start_socket()
        self.write_add_breakpoint(10, 'Method2')
        self.write_add_exception_breakpoint_with_policy('IndexError', "0", "1", "0")
        self.write_make_initial_run()
        time.sleep(.5)

        thread_id, frame_id, line, suspend_type = self.wait_for_breakpoint_hit_with_suspend_type('111', True)

        assert line == 10, 'Expected return to be in line 10, was: %s' % line
        # we can use frame evaluation with exception breakpoint with "On termination" suspend policy
        assert suspend_type == "frame_eval", 'Expected suspend type to be "frame_eval", but was: %s' % suspend_type

        self.write_run_thread(thread_id)

        self.finished_ok = True
Esempio n. 22
0
        def test_file(self, filename, port, **kwargs):
            additional_args = kwargs.pop('additional_args', [])

            def update_command_line_args(writer, args):
                ret = debugger_unittest.AbstractWriterThread.update_command_line_args(
                    writer, args)
                ret.append(str(port))
                ret.extend(additional_args)
                return ret

            WriterThread.TEST_FILE = debugger_unittest._get_debugger_test_file(
                filename)
            WriterThread.update_command_line_args = update_command_line_args
            for key, value in kwargs.items():
                assert hasattr(WriterThread, key)
                setattr(WriterThread, key, value)

            with debugger_runner_remote.check_case(
                    WriterThread, wait_for_port=False) as writer:
                yield writer
Esempio n. 23
0
class WriterThreadCase17a(debugger_unittest.AbstractWriterThread):

    TEST_FILE = debugger_unittest._get_debugger_test_file('_debugger_case17a.py')

    def run(self):
        self.start_socket()
        self.write_enable_dont_trace(True)
        self.write_add_breakpoint(2, 'm1')
        self.write_make_initial_run()

        thread_id, frame_id, line = self.wait_for_breakpoint_hit('111', True)

        self.write_step_in(thread_id)
        thread_id, frame_id, line = self.wait_for_breakpoint_hit('107', True)
        # Should Skip step into properties setter
        assert line == 10, 'Expected return to be in line 10, was: %s' % line
        self.write_run_thread(thread_id)


        self.finished_ok = True
Esempio n. 24
0
class WriterThreadCase15(debugger_unittest.AbstractWriterThread):

    TEST_FILE = debugger_unittest._get_debugger_test_file('_debugger_case15.py')

    def run(self):
        self.start_socket()
        self.write_add_breakpoint(22, 'main')
        self.write_make_initial_run()

        thread_id, frame_id, line = self.wait_for_breakpoint_hit('111', True)

        # Access some variable
        self.write_custom_operation("%s\t%s\tEXPRESSION\tcarObj.color" % (thread_id, frame_id), "EXEC", "f=lambda x: 'val=%s' % x", "f")
        self.wait_for_custom_operation('val=Black')
        assert 7 == self._sequence, 'Expected 7. Had: %s' % self._sequence

        self.write_custom_operation("%s\t%s\tEXPRESSION\tcarObj.color" % (thread_id, frame_id), "EXECFILE", debugger_unittest._get_debugger_test_file('_debugger_case15_execfile.py'), "f")
        self.wait_for_custom_operation('val=Black')
        assert 9 == self._sequence, 'Expected 9. Had: %s' % self._sequence

        self.write_run_thread(thread_id)
        self.finished_ok = True
Esempio n. 25
0
class WriterThreadStepReturn(debugger_unittest.AbstractWriterThread):

    TEST_FILE = debugger_unittest._get_debugger_test_file(
        '_debugger_case56.py')

    def run(self):
        self.start_socket()
        self.write_add_breakpoint(2, 'Call2')
        self.write_make_initial_run()

        thread_id, frame_id, suspend_type = self.wait_for_breakpoint_hit_with_suspend_type(
        )

        assert suspend_type == "frame_eval", 'Expected suspend type to be "frame_eval", but was: %s' % suspend_type
        self.write_get_frame(thread_id, frame_id)

        self.write_step_return(thread_id)

        thread_id, frame_id, line, suspend_type = self.wait_for_breakpoint_hit_with_suspend_type(
            '109', True)

        assert line == 8, 'Expecting it to go to line 8. Went to: %s' % line
        # Step return uses temporary breakpoint, so we use tracing debugger
        assert suspend_type == "trace", 'Expected suspend type to be "trace", but was: %s' % suspend_type

        self.write_step_in(thread_id)

        thread_id, frame_id, line, suspend_type = self.wait_for_breakpoint_hit_with_suspend_type(
            '107', True)

        # goes to line 4 in jython (function declaration line)
        assert line in (
            4, 5), 'Expecting it to go to line 4 or 5. Went to: %s' % line
        # we use tracing debugger for stepping
        assert suspend_type == "trace", 'Expected suspend type to be "trace", but was: %s' % suspend_type

        self.write_run_thread(thread_id)

        self.finished_ok = True
Esempio n. 26
0
class WriterThreadCase8(debugger_unittest.AbstractWriterThread):

    TEST_FILE = debugger_unittest._get_debugger_test_file('_debugger_case89.py')

    def run(self):
        self.start_socket()
        self.write_add_breakpoint(10, 'Method3')
        self.write_make_initial_run()

        thread_id, frame_id = self.wait_for_breakpoint_hit('111')

        self.write_step_return(thread_id)

        thread_id, frame_id, line = self.wait_for_breakpoint_hit('109', True)

        assert line == 15, 'Expected return to be in line 15, was: %s' % line

        self.write_run_thread(thread_id)

        assert 9 == self._sequence, 'Expected 9. Had: %s' % self._sequence

        self.finished_ok = True
Esempio n. 27
0
class WriterThreadExceptionBreak(debugger_unittest.AbstractWriterThread):

    TEST_FILE = debugger_unittest._get_debugger_test_file(
        '_debugger_case_simple_calls.py')

    def run(self):
        self.start_socket()
        self.write_add_breakpoint(10, 'Method2')
        self.write_add_exception_breakpoint_with_policy(
            'IndexError', "1", "0", "0")
        self.write_make_initial_run()
        time.sleep(.5)

        thread_id, frame_id, line, suspend_type = self.wait_for_breakpoint_hit_with_suspend_type(
            '111', True)

        assert line == 10, 'Expected return to be in line 10, was: %s' % line
        # we use tracing debugger if there are exception breakpoints
        assert suspend_type == "trace", 'Expected suspend type to be "trace", but was: %s' % suspend_type

        self.write_run_thread(thread_id)

        self.finished_ok = True
Esempio n. 28
0
class WriterThreadStepAndResume(debugger_unittest.AbstractWriterThread):

    TEST_FILE = debugger_unittest._get_debugger_test_file(
        '_debugger_case_simple_calls.py')

    def run(self):
        self.start_socket()
        self.write_add_breakpoint(10, 'Method2')
        self.write_add_breakpoint(2, 'Method1')
        self.write_make_initial_run()

        thread_id, frame_id, line, suspend_type = self.wait_for_breakpoint_hit_with_suspend_type(
            '111', True)

        assert line == 10, 'Expected return to be in line 10, was: %s' % line
        assert suspend_type == "frame_eval", 'Expected suspend type to be "frame_eval", but was: %s' % suspend_type

        self.write_step_over(thread_id)
        thread_id, frame_id, line, suspend_type = self.wait_for_breakpoint_hit_with_suspend_type(
            '108', True)

        assert line == 11, 'Expected return to be in line 11, was: %s' % line
        # we use tracing debugger while stepping
        assert suspend_type == "trace", 'Expected suspend type to be "trace", but was: %s' % suspend_type

        self.write_run_thread(thread_id)

        thread_id, frame_id, line, suspend_type = self.wait_for_breakpoint_hit_with_suspend_type(
            '111', True)

        assert line == 2, 'Expected return to be in line 2, was: %s' % line
        # we enable frame evaluation debugger after "Resume" command
        assert suspend_type == "frame_eval", 'Expected suspend type to be "frame_eval", but was: %s' % suspend_type

        self.write_run_thread(thread_id)

        self.finished_ok = True
Esempio n. 29
0
class WriterThreadCase1(debugger_unittest.AbstractWriterThread):

    TEST_FILE = debugger_unittest._get_debugger_test_file('_debugger_case1.py')

    def run(self):
        self.start_socket()

        self.log.append('writing add breakpoint')
        self.write_add_breakpoint(6, 'set_up')

        self.log.append('making initial run')
        self.write_make_initial_run()

        self.log.append('waiting for breakpoint hit')
        thread_id, frame_id = self.wait_for_breakpoint_hit()

        self.log.append('get frame')
        self.write_get_frame(thread_id, frame_id)

        self.log.append('step over')
        self.write_step_over(thread_id)

        self.log.append('get frame')
        self.write_get_frame(thread_id, frame_id)

        self.log.append('run thread')
        self.write_run_thread(thread_id)

        self.log.append('asserting')
        try:
            assert 13 == self._sequence, 'Expected 13. Had: %s' % self._sequence
        except:
            self.log.append('assert failed!')
            raise
        self.log.append('asserted')

        self.finished_ok = True
Esempio n. 30
0
class WriterThreadCaseSetNextStatement(debugger_unittest.AbstractWriterThread):

    TEST_FILE = debugger_unittest._get_debugger_test_file(
        '_debugger_case_set_next_statement.py')

    def run(self):
        self.start_socket()
        breakpoint_id = self.write_add_breakpoint(6, None)
        self.write_make_initial_run()

        thread_id, frame_id, line = self.wait_for_breakpoint_hit('111', True)

        assert line == 6, 'Expected return to be in line 6, was: %s' % line

        self.write_evaluate_expression(
            '%s\t%s\t%s' % (thread_id, frame_id, 'LOCAL'), 'a')
        self.wait_for_evaluation(
            '<var name="a" type="int" qualifier="{}" value="int: 2"'.format(
                builtin_qualifier))
        self.write_set_next_statement(thread_id, 2, 'method')
        thread_id, frame_id, line = self.wait_for_breakpoint_hit('111', True)
        assert line == 2, 'Expected return to be in line 2, was: %s' % line

        self.write_step_over(thread_id)
        thread_id, frame_id, line = self.wait_for_breakpoint_hit('108', True)

        self.write_evaluate_expression(
            '%s\t%s\t%s' % (thread_id, frame_id, 'LOCAL'), 'a')
        self.wait_for_evaluation(
            '<var name="a" type="int" qualifier="{}" value="int: 1"'.format(
                builtin_qualifier))

        self.write_remove_breakpoint(breakpoint_id)
        self.write_run_thread(thread_id)

        self.finished_ok = True
Esempio n. 31
0
class WriterThreadCase7(debugger_unittest.AbstractWriterThread):

    TEST_FILE = debugger_unittest._get_debugger_test_file('_debugger_case7.py')

    def run(self):
        self.start_socket()
        self.write_add_breakpoint(2, 'Call')
        self.write_make_initial_run()

        thread_id, frame_id = self.wait_for_breakpoint_hit('111')

        self.write_get_frame(thread_id, frame_id)

        self.wait_for_vars('<xml></xml>')  # no vars at this point

        self.write_step_over(thread_id)

        self.write_get_frame(thread_id, frame_id)

        self.wait_for_vars(
            '<xml><var name="variable_for_test_1" type="int" qualifier="{}" value="int%253A 10" />%0A</xml>'
            .format(builtin_qualifier))

        self.write_step_over(thread_id)

        self.write_get_frame(thread_id, frame_id)

        self.wait_for_vars(
            '<xml><var name="variable_for_test_1" type="int" qualifier="{0}" value="int%253A 10" />%0A<var name="variable_for_test_2" type="int" qualifier="{0}" value="int%253A 20" />%0A</xml>'
            .format(builtin_qualifier))

        self.write_run_thread(thread_id)

        assert 17 == self._sequence, 'Expected 17. Had: %s' % self._sequence

        self.finished_ok = True
Esempio n. 32
0
 def get_main_filename(self):
     return debugger_unittest._get_debugger_test_file('_debugger_case_m_switch.py')
 def get_cwd(self):
     return debugger_unittest._get_debugger_test_file(self.FLASK_FOLDER)
Esempio n. 34
0
 def get_main_filename(self):
     return debugger_unittest._get_debugger_test_file('_debugger_case_m_switch.py')
Esempio n. 35
0
 def get_cwd(self):
     return debugger_unittest._get_debugger_test_file(self.FLASK_FOLDER)
Esempio n. 36
0
    def run(self):
        self.start_socket()
        self.write_add_breakpoint(22, 'main')
        self.write_make_initial_run()

        thread_id, frame_id, line = self.wait_for_breakpoint_hit('111', True)

        # Access some variable
        self.write_custom_operation("%s\t%s\tEXPRESSION\tcarObj.color" % (thread_id, frame_id), "EXEC", "f=lambda x: 'val=%s' % x", "f")
        self.wait_for_custom_operation('val=Black')
        assert 7 == self._sequence, 'Expected 7. Had: %s' % self._sequence

        self.write_custom_operation("%s\t%s\tEXPRESSION\tcarObj.color" % (thread_id, frame_id), "EXECFILE", debugger_unittest._get_debugger_test_file('_debugger_case15_execfile.py'), "f")
        self.wait_for_custom_operation('val=Black')
        assert 9 == self._sequence, 'Expected 9. Had: %s' % self._sequence

        self.write_run_thread(thread_id)
        self.finished_ok = True
Esempio n. 37
0
 def get_main_filename(self):
     return debugger_unittest._get_debugger_test_file('_debugger_case_module_entry_point.py')
Esempio n. 38
0
class WriterThreadCase16(debugger_unittest.AbstractWriterThread):

    TEST_FILE = debugger_unittest._get_debugger_test_file('_debugger_case16.py')

    def run(self):
        self.start_socket()
        self.write_add_breakpoint(9, 'main')
        self.write_make_initial_run()

        thread_id, frame_id, line = self.wait_for_breakpoint_hit('111', True)

        # In this test we check that the three arrays of different shapes, sizes and types
        # are all resolved properly as ndarrays.

        # First pass check is that we have all three expected variables defined
        self.write_get_frame(thread_id, frame_id)
        self.wait_for_vars('<var name="smallarray" type="ndarray" value="ndarray%253A %255B  0.%252B1.j   1.%252B1.j   2.%252B1.j   3.%252B1.j   4.%252B1.j   5.%252B1.j   6.%252B1.j   7.%252B1.j%250A   8.%252B1.j   9.%252B1.j  10.%252B1.j  11.%252B1.j  12.%252B1.j  13.%252B1.j  14.%252B1.j  15.%252B1.j%250A  16.%252B1.j  17.%252B1.j  18.%252B1.j  19.%252B1.j  20.%252B1.j  21.%252B1.j  22.%252B1.j  23.%252B1.j%250A  24.%252B1.j  25.%252B1.j  26.%252B1.j  27.%252B1.j  28.%252B1.j  29.%252B1.j  30.%252B1.j  31.%252B1.j%250A  32.%252B1.j  33.%252B1.j  34.%252B1.j  35.%252B1.j  36.%252B1.j  37.%252B1.j  38.%252B1.j  39.%252B1.j%250A  40.%252B1.j  41.%252B1.j  42.%252B1.j  43.%252B1.j  44.%252B1.j  45.%252B1.j  46.%252B1.j  47.%252B1.j%250A  48.%252B1.j  49.%252B1.j  50.%252B1.j  51.%252B1.j  52.%252B1.j  53.%252B1.j  54.%252B1.j  55.%252B1.j%250A  56.%252B1.j  57.%252B1.j  58.%252B1.j  59.%252B1.j  60.%252B1.j  61.%252B1.j  62.%252B1.j  63.%252B1.j%250A  64.%252B1.j  65.%252B1.j  66.%252B1.j  67.%252B1.j  68.%252B1.j  69.%252B1.j  70.%252B1.j  71.%252B1.j%250A  72.%252B1.j  73.%252B1.j  74.%252B1.j  75.%252B1.j  76.%252B1.j  77.%252B1.j  78.%252B1.j  79.%252B1.j%250A  80.%252B1.j  81.%252B1.j  82.%252B1.j  83.%252B1.j  84.%252B1.j  85.%252B1.j  86.%252B1.j  87.%252B1.j%250A  88.%252B1.j  89.%252B1.j  90.%252B1.j  91.%252B1.j  92.%252B1.j  93.%252B1.j  94.%252B1.j  95.%252B1.j%250A  96.%252B1.j  97.%252B1.j  98.%252B1.j  99.%252B1.j%255D" isContainer="True" />')
        self.wait_for_vars('<var name="bigarray" type="ndarray" value="ndarray%253A %255B%255B    0     1     2 ...%252C  9997  9998  9999%255D%250A %255B10000 10001 10002 ...%252C 19997 19998 19999%255D%250A %255B20000 20001 20002 ...%252C 29997 29998 29999%255D%250A ...%252C %250A %255B70000 70001 70002 ...%252C 79997 79998 79999%255D%250A %255B80000 80001 80002 ...%252C 89997 89998 89999%255D%250A %255B90000 90001 90002 ...%252C 99997 99998 99999%255D%255D" isContainer="True" />')
        self.wait_for_vars('<var name="hugearray" type="ndarray" value="ndarray%253A %255B      0       1       2 ...%252C 9999997 9999998 9999999%255D" isContainer="True" />')

        # For each variable, check each of the resolved (meta data) attributes...
        self.write_get_variable(thread_id, frame_id, 'smallarray')
        self.wait_for_var('<var name="min" type="complex128"')
        self.wait_for_var('<var name="max" type="complex128"')
        self.wait_for_var('<var name="shape" type="tuple"')
        self.wait_for_var('<var name="dtype" type="dtype"')
        self.wait_for_var('<var name="size" type="int"')
        # ...and check that the internals are resolved properly
        self.write_get_variable(thread_id, frame_id, 'smallarray\t__internals__')
        self.wait_for_var('<var name="%27size%27')

        self.write_get_variable(thread_id, frame_id, 'bigarray')
        self.wait_for_var([
            '<var name="min" type="int64" value="int64%253A 0" />',
            '<var name="min" type="int64" value="int64%3A 0" />',
            '<var name="size" type="int" value="int%3A 100000" />',
        ])
        self.wait_for_var([
            '<var name="max" type="int64" value="int64%253A 99999" />',
            '<var name="max" type="int32" value="int32%253A 99999" />',
            '<var name="max" type="int64" value="int64%3A 99999"'
        ])
        self.wait_for_var('<var name="shape" type="tuple"')
        self.wait_for_var('<var name="dtype" type="dtype"')
        self.wait_for_var('<var name="size" type="int"')
        self.write_get_variable(thread_id, frame_id, 'bigarray\t__internals__')
        self.wait_for_var('<var name="%27size%27')

        # this one is different because it crosses the magic threshold where we don't calculate
        # the min/max
        self.write_get_variable(thread_id, frame_id, 'hugearray')
        self.wait_for_var([
            '<var name="min" type="str" value="str%253A ndarray too big%252C calculating min would slow down debugging" />',
            '<var name="min" type="str" value="str%3A ndarray too big%252C calculating min would slow down debugging" />',
        ])
        self.wait_for_var([
            '<var name="max" type="str" value="str%253A ndarray too big%252C calculating max would slow down debugging" />',
            '<var name="max" type="str" value="str%3A ndarray too big%252C calculating max would slow down debugging" />',
        ])
        self.wait_for_var('<var name="shape" type="tuple"')
        self.wait_for_var('<var name="dtype" type="dtype"')
        self.wait_for_var('<var name="size" type="int"')
        self.write_get_variable(thread_id, frame_id, 'hugearray\t__internals__')
        self.wait_for_var('<var name="%27size%27')

        self.write_run_thread(thread_id)
        self.finished_ok = True
Esempio n. 39
0
 def test_file(self, filename):
     WriterThread.TEST_FILE = debugger_unittest._get_debugger_test_file(filename)
     with runner.check_case(WriterThread) as writer:
         yield writer
Esempio n. 40
0
def test_case_skipping_filters(case_setup, custom_setup):
    with case_setup.test_file('my_code/my_code.py') as writer:
        json_facade = JsonFacade(writer)

        writer.write_set_protocol('http_json')
        if custom_setup == 'set_exclude_launch_path_match_filename':
            json_facade.write_launch(debugStdLib=True,
                                     rules=[
                                         {
                                             'path': '**/other.py',
                                             'include': False
                                         },
                                     ])

        elif custom_setup == 'set_exclude_launch_path_match_folder':
            json_facade.write_launch(
                debugStdLib=True,
                rules=[
                    {
                        'path':
                        debugger_unittest._get_debugger_test_file(
                            'not_my_code'),
                        'include':
                        False
                    },
                ])

        elif custom_setup == 'set_exclude_launch_module_full':
            json_facade.write_launch(debugStdLib=True,
                                     rules=[
                                         {
                                             'module': 'not_my_code.other',
                                             'include': False
                                         },
                                     ])

        elif custom_setup == 'set_exclude_launch_module_prefix':
            json_facade.write_launch(debugStdLib=True,
                                     rules=[
                                         {
                                             'module': 'not_my_code',
                                             'include': False
                                         },
                                     ])

        elif custom_setup == 'set_just_my_code':
            writer.write_set_project_roots(
                [debugger_unittest._get_debugger_test_file('my_code')])
            json_facade.write_launch(debugStdLib=False)

        elif custom_setup == 'set_just_my_code_and_include':
            # I.e.: nothing in my_code (add it with rule).
            writer.write_set_project_roots(
                [debugger_unittest._get_debugger_test_file('launch')])
            json_facade.write_launch(debugStdLib=False,
                                     rules=[
                                         {
                                             'module': '__main__',
                                             'include': True
                                         },
                                     ])

        else:
            raise AssertionError('Unhandled: %s' % (custom_setup, ))

        json_facade.write_set_breakpoints(
            writer.get_line_index_with_content('break here'))
        json_facade.write_make_initial_run()

        json_facade.wait_for_json_message(
            ThreadEvent, lambda event: event.body.reason == 'started')

        hit = writer.wait_for_breakpoint_hit()

        writer.write_step_in(hit.thread_id)
        hit = writer.wait_for_breakpoint_hit(reason=REASON_STEP_INTO)
        assert hit.name == 'callback1'

        writer.write_step_in(hit.thread_id)
        hit = writer.wait_for_breakpoint_hit(reason=REASON_STEP_INTO)
        assert hit.name == 'callback2'

        writer.write_step_over(hit.thread_id)
        hit = writer.wait_for_breakpoint_hit(
            reason=REASON_STEP_INTO)  # Note: goes from step over to step into
        assert hit.name == 'callback1'

        writer.write_step_over(hit.thread_id)
        hit = writer.wait_for_breakpoint_hit(
            reason=REASON_STEP_INTO)  # Note: goes from step over to step into
        assert hit.name == '<module>'

        writer.write_step_over(hit.thread_id)
        hit = writer.wait_for_breakpoint_hit(reason=REASON_STEP_OVER)
        assert hit.name == '<module>'

        writer.write_step_over(hit.thread_id)

        if IS_JYTHON:
            writer.write_run_thread(hit.thread_id)
        else:
            writer.write_step_over(hit.thread_id)

        writer.finished_ok = True
Esempio n. 41
0
 def get_main_filename(self):
     return debugger_unittest._get_debugger_test_file('_debugger_case_module_entry_point.py')
 class PerformanceCheck(PerformanceWriterThread):
     TEST_FILE = debugger_unittest._get_debugger_test_file(filename)
     BENCHMARK_NAME = benchmark_name