593 # set the system exception handling function to ensure, that |
593 # set the system exception handling function to ensure, that |
594 # we report on all unhandled exceptions |
594 # we report on all unhandled exceptions |
595 sys.excepthook = self.__unhandled_exception |
595 sys.excepthook = self.__unhandled_exception |
596 |
596 |
597 # generate a coverage object |
597 # generate a coverage object |
598 self.cover = coverage(auto_data=True, |
598 self.cover = coverage( |
|
599 auto_data=True, |
599 data_file="%s.coverage" % os.path.splitext(sys.argv[0])[0]) |
600 data_file="%s.coverage" % os.path.splitext(sys.argv[0])[0]) |
600 self.cover.use_cache(True) |
601 self.cover.use_cache(True) |
601 |
602 |
602 if int(erase): |
603 if int(erase): |
603 self.cover.erase() |
604 self.cover.erase() |
669 cond = None |
670 cond = None |
670 else: |
671 else: |
671 try: |
672 try: |
672 compile(cond, '<string>', 'eval') |
673 compile(cond, '<string>', 'eval') |
673 except SyntaxError: |
674 except SyntaxError: |
674 self.write('%s%s,%d\n' % \ |
675 self.write( |
675 (DebugProtocol.ResponseBPConditionError, fn, |
676 '%s%s,%d\n' % \ |
676 line)) |
677 (DebugProtocol.ResponseBPConditionError, |
|
678 fn, line)) |
677 return |
679 return |
678 self.mainThread.set_break(fn, line, temporary, cond) |
680 self.mainThread.set_break(fn, line, temporary, cond) |
679 else: |
681 else: |
680 self.mainThread.clear_break(fn, line) |
682 self.mainThread.clear_break(fn, line) |
681 |
683 |
809 self.write(DebugProtocol.ResponseException + '\n') |
811 self.write(DebugProtocol.ResponseException + '\n') |
810 |
812 |
811 return |
813 return |
812 |
814 |
813 if cmd == DebugProtocol.RequestBanner: |
815 if cmd == DebugProtocol.RequestBanner: |
814 self.write('%s%s\n' % (DebugProtocol.ResponseBanner, |
816 self.write( |
815 unicode(("Python %s" % sys.version, socket.gethostname(), |
817 '%s%s\n' % ( |
816 self.variant)))) |
818 DebugProtocol.ResponseBanner, |
|
819 unicode(("Python %s" % sys.version, |
|
820 socket.gethostname(), |
|
821 self.variant)))) |
817 return |
822 return |
818 |
823 |
819 if cmd == DebugProtocol.RequestCapabilities: |
824 if cmd == DebugProtocol.RequestCapabilities: |
820 self.write('%s%d, "Python"\n' % ( |
825 self.write('%s%d, "Python"\n' % ( |
821 DebugProtocol.ResponseCapabilities, |
826 DebugProtocol.ResponseCapabilities, |
854 except AttributeError: |
859 except AttributeError: |
855 self.test = unittest.defaultTestLoader\ |
860 self.test = unittest.defaultTestLoader\ |
856 .loadTestsFromModule(utModule) |
861 .loadTestsFromModule(utModule) |
857 except: |
862 except: |
858 exc_type, exc_value, exc_tb = sys.exc_info() |
863 exc_type, exc_value, exc_tb = sys.exc_info() |
859 self.write('%s%s\n' % (DebugProtocol.ResponseUTPrepared, |
864 self.write( |
860 unicode((0, str(exc_type), str(exc_value))))) |
865 '%s%s\n' % ( |
|
866 DebugProtocol.ResponseUTPrepared, |
|
867 unicode((0, str(exc_type), str(exc_value))))) |
861 self.__exceptionRaised() |
868 self.__exceptionRaised() |
862 return |
869 return |
863 |
870 |
864 # generate a coverage object |
871 # generate a coverage object |
865 if int(cov): |
872 if int(cov): |
866 from coverage import coverage |
873 from coverage import coverage |
867 self.cover = coverage(auto_data=True, |
874 self.cover = coverage( |
|
875 auto_data=True, |
868 data_file="%s.coverage" % os.path.splitext(covname)[0]) |
876 data_file="%s.coverage" % os.path.splitext(covname)[0]) |
869 self.cover.use_cache(True) |
877 self.cover.use_cache(True) |
870 if int(erase): |
878 if int(erase): |
871 self.cover.erase() |
879 self.cover.erase() |
872 else: |
880 else: |
873 self.cover = None |
881 self.cover = None |
874 |
882 |
875 self.write('%s%s\n' % (DebugProtocol.ResponseUTPrepared, |
883 self.write( |
876 unicode((self.test.countTestCases(), "", "")))) |
884 '%s%s\n' % ( |
|
885 DebugProtocol.ResponseUTPrepared, |
|
886 unicode((self.test.countTestCases(), "", "")))) |
877 return |
887 return |
878 |
888 |
879 if cmd == DebugProtocol.RequestUTRun: |
889 if cmd == DebugProtocol.RequestUTRun: |
880 from DCTestResult import DCTestResult |
890 from DCTestResult import DCTestResult |
881 self.testResult = DCTestResult(self) |
891 self.testResult = DCTestResult(self) |
1630 if value.isValid(): |
1640 if value.isValid(): |
1631 varlist.append(("row", "int", "%s" % value.row())) |
1641 varlist.append(("row", "int", "%s" % value.row())) |
1632 varlist.append(("column", "int", "%s" % value.column())) |
1642 varlist.append(("column", "int", "%s" % value.column())) |
1633 varlist.append( |
1643 varlist.append( |
1634 ("internalId", "int", "%s" % value.internalId())) |
1644 ("internalId", "int", "%s" % value.internalId())) |
1635 varlist.append(("internalPointer", "void *", "%s" % \ |
1645 varlist.append( |
1636 value.internalPointer())) |
1646 ("internalPointer", "void *", "%s" % \ |
|
1647 value.internalPointer())) |
1637 elif qttype == 'QRegExp': |
1648 elif qttype == 'QRegExp': |
1638 varlist.append(("pattern", "str", "%s" % value.pattern())) |
1649 varlist.append(("pattern", "str", "%s" % value.pattern())) |
1639 |
1650 |
1640 # GUI stuff |
1651 # GUI stuff |
1641 elif qttype == 'QAction': |
1652 elif qttype == 'QAction': |
1827 |
1838 |
1828 self.write("%s%s||%s\n" % (DebugProtocol.ResponseCompletion, |
1839 self.write("%s%s||%s\n" % (DebugProtocol.ResponseCompletion, |
1829 unicode(completions), text)) |
1840 unicode(completions), text)) |
1830 |
1841 |
1831 def startDebugger(self, filename=None, host=None, port=None, |
1842 def startDebugger(self, filename=None, host=None, port=None, |
1832 enableTrace=1, exceptions=1, tracePython=0, redirect=1): |
1843 enableTrace=1, exceptions=1, tracePython=0, redirect=1): |
1833 """ |
1844 """ |
1834 Public method used to start the remote debugger. |
1845 Public method used to start the remote debugger. |
1835 |
1846 |
1836 @param filename the program to be debugged (string) |
1847 @param filename the program to be debugged (string) |
1837 @param host hostname of the debug server (string) |
1848 @param host hostname of the debug server (string) |
1883 # now start debugging |
1894 # now start debugging |
1884 if enableTrace: |
1895 if enableTrace: |
1885 self.mainThread.set_trace() |
1896 self.mainThread.set_trace() |
1886 |
1897 |
1887 def startProgInDebugger(self, progargs, wd='', host=None, |
1898 def startProgInDebugger(self, progargs, wd='', host=None, |
1888 port=None, exceptions=1, tracePython=0, redirect=1): |
1899 port=None, exceptions=1, tracePython=0, |
|
1900 redirect=1): |
1889 """ |
1901 """ |
1890 Public method used to start the remote debugger. |
1902 Public method used to start the remote debugger. |
1891 |
1903 |
1892 @param progargs commandline for the program to be debugged |
1904 @param progargs commandline for the program to be debugged |
1893 (list of strings) |
1905 (list of strings) |