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()))
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), ]
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
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), ]
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), ]
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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)
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
def get_main_filename(self): return debugger_unittest._get_debugger_test_file('_debugger_case_module_entry_point.py')
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
def test_file(self, filename): WriterThread.TEST_FILE = debugger_unittest._get_debugger_test_file(filename) with runner.check_case(WriterThread) as writer: yield writer
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
class PerformanceCheck(PerformanceWriterThread): TEST_FILE = debugger_unittest._get_debugger_test_file(filename) BENCHMARK_NAME = benchmark_name