DebugClients/Python/DCTestResult.py

branch
debugger speed
changeset 5178
878ce843ca9f
parent 5131
889ed5ff7a68
child 5179
5f56410e7624
diff -r 8c48f5e0cd92 -r 878ce843ca9f DebugClients/Python/DCTestResult.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DebugClients/Python/DCTestResult.py	Mon Sep 19 22:47:52 2016 +0200
@@ -0,0 +1,130 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2009 - 2016 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a TestResult derivative for the eric6 debugger.
+"""
+
+import select
+from unittest import TestResult
+
+
+class DCTestResult(TestResult):
+    """
+    A TestResult derivative to work with eric6's debug client.
+    
+    For more details see unittest.py of the standard python distribution.
+    """
+    def __init__(self, dbgClient):
+        """
+        Constructor
+        
+        @param dbgClient reference to the debug client
+        @type DebugClientBase
+        """
+        TestResult.__init__(self)
+        self.__dbgClient = dbgClient
+        
+    def addFailure(self, test, err):
+        """
+        Public method called if a test failed.
+        
+        @param test Reference to the test object
+        @param err The error traceback
+        """
+        TestResult.addFailure(self, test, err)
+        tracebackLines = self._exc_info_to_string(err, test)
+        self.__dbgClient.sendJsonCommand("ResponseUTTestFailed", {
+            "testname": str(test),
+            "traceback": tracebackLines,
+            "id": test.id(),
+        })
+        
+    def addError(self, test, err):
+        """
+        Public method called if a test errored.
+        
+        @param test Reference to the test object
+        @param err The error traceback
+        """
+        TestResult.addError(self, test, err)
+        tracebackLines = self._exc_info_to_string(err, test)
+        self.__dbgClient.sendJsonCommand("ResponseUTTestErrored", {
+            "testname": str(test),
+            "traceback": tracebackLines,
+            "id": test.id(),
+        })
+        
+    def addSkip(self, test, reason):
+        """
+        Public method called if a test was skipped.
+        
+        @param test reference to the test object
+        @param reason reason for skipping the test (string)
+        """
+        TestResult.addSkip(self, test, reason)
+        self.__dbgClient.sendJsonCommand("ResponseUTTestSkipped", {
+            "testname": str(test),
+            "reason": reason,
+            "id": test.id(),
+        })
+        
+    def addExpectedFailure(self, test, err):
+        """
+        Public method called if a test failed expected.
+        
+        @param test reference to the test object
+        @param err error traceback
+        """
+        TestResult.addExpectedFailure(self, test, err)
+        tracebackLines = self._exc_info_to_string(err, test)
+        self.__dbgClient.sendJsonCommand("ResponseUTTestFailedExpected", {
+            "testname": str(test),
+            "traceback": tracebackLines,
+            "id": test.id(),
+        })
+        
+    def addUnexpectedSuccess(self, test):
+        """
+        Public method called if a test succeeded expectedly.
+        
+        @param test reference to the test object
+        """
+        TestResult.addUnexpectedSuccess(self, test)
+        self.__dbgClient.sendJsonCommand("ResponseUTTestSucceededUnexpected", {
+            "testname": str(test),
+            "id": test.id(),
+        })
+        
+    def startTest(self, test):
+        """
+        Public method called at the start of a test.
+        
+        @param test Reference to the test object
+        """
+        TestResult.startTest(self, test)
+        self.__dbgClient.sendJsonCommand("ResponseUTStartTest", {
+            "testname": str(test),
+            "description": test.shortDescription(),
+        })
+
+    def stopTest(self, test):
+        """
+        Public method called at the end of a test.
+        
+        @param test Reference to the test object
+        """
+        TestResult.stopTest(self, test)
+        self.__dbgClient.sendJsonCommand("ResponseUTStopTest", {})
+        
+        # ensure that pending input is processed
+        rrdy, wrdy, xrdy = select.select(
+            [self.__dbgClient.readstream], [], [], 0.01)
+
+        if self.__dbgClient.readstream in rrdy:
+            self.__dbgClient.readReady(self.__dbgClient.readstream)
+
+#
+# eflag: noqa = M702

eric ide

mercurial