Esempio n. 1
0
 def test_brokenClassNameAttribute(self):
     """
     If a class raises an exception when accessing its C{__name__} attribute
     B{and} when calling its C{__str__} implementation, L{_reflect.safe_str}
     returns 'BROKEN CLASS' instead of the class name.
     """
     class X(BTBase):
         breakName = True
     xStr = _reflect.safe_str(X())
     self.assertIn("<BROKEN CLASS AT 0x", xStr)
     self.assertIn(os.path.splitext(__file__)[0], xStr)
     self.assertIn("RuntimeError: str!", xStr)
Esempio n. 2
0
 def test_brokenClassAttribute(self):
     """
     If an object raises an exception when accessing its C{__class__}
     attribute, L{_reflect.safe_str} uses C{type} to retrieve the class
     object.
     """
     b = NoClassAttr()
     b.breakStr = True
     bStr = _reflect.safe_str(b)
     self.assertIn("NoClassAttr instance at 0x", bStr)
     self.assertIn(os.path.splitext(__file__)[0], bStr)
     self.assertIn("RuntimeError: str!", bStr)
Esempio n. 3
0
 def test_brokenClassAttribute(self):
     """
     If an object raises an exception when accessing its C{__class__}
     attribute, L{_reflect.safe_str} uses C{type} to retrieve the class
     object.
     """
     b = NoClassAttr()
     b.breakStr = True
     bStr = _reflect.safe_str(b)
     self.assertIn("NoClassAttr instance at 0x", bStr)
     self.assertIn(os.path.splitext(__file__)[0], bStr)
     self.assertIn("RuntimeError: str!", bStr)
Esempio n. 4
0
    def test_brokenClassNameAttribute(self):
        """
        If a class raises an exception when accessing its C{__name__} attribute
        B{and} when calling its C{__str__} implementation, L{_reflect.safe_str}
        returns 'BROKEN CLASS' instead of the class name.
        """
        class X(BTBase):
            breakName = True

        xStr = _reflect.safe_str(X())
        self.assertIn("<BROKEN CLASS AT 0x", xStr)
        self.assertIn(os.path.splitext(__file__)[0], xStr)
        self.assertIn("RuntimeError: str!", xStr)
Esempio n. 5
0
    def printTraceback(self, file=None, elideFrameworkCode=0, detail='default'):
        """Emulate Python's standard error reporting mechanism.
        """
        if file is None:
            file = log.logerr
        w = file.write

        # Preamble
        if detail == 'verbose':
            w( '*--- Failure #%d%s---\n' %
               (self.count,
                (self.pickled and ' (pickled) ') or ' '))
        elif detail == 'brief':
            if self.frames:
                hasFrames = 'Traceback'
            else:
                hasFrames = 'Traceback (failure with no frames)'
            w("%s: %s: %s\n" % (hasFrames, self.type, self.value))
        else:
            w( 'Traceback (most recent call last):\n')

        # Frames, formatted in appropriate style
        if self.frames:
            if not elideFrameworkCode:
                format_frames(self.stack[-traceupLength:], w, detail)
                w("%s\n" % (EXCEPTION_CAUGHT_HERE,))
            format_frames(self.frames, w, detail)
        elif not detail == 'brief':
            # Yeah, it's not really a traceback, despite looking like one...
            w("Failure: ")

        # postamble, if any
        if not detail == 'brief':
            # Unfortunately, self.type will not be a class object if this
            # Failure was created implicitly from a string exception.
            # qual() doesn't make any sense on a string, so check for this
            # case here and just write out the string if that's what we
            # have.
            if isinstance(self.type, (str, unicode)):
                w(self.type + "\n")
            else:
                w("%s: %s\n" % (_reflect.qual(self.type),
                                _reflect.safe_str(self.value)))
        # chaining
        if isinstance(self.value, Failure):
            # TODO: indentation for chained failures?
            file.write(" (chained Failure)\n")
            self.value.printTraceback(file, elideFrameworkCode, detail)
        if detail == 'verbose':
            w('*--- End of Failure #%d ---\n' % self.count)
Esempio n. 6
0
 def test_brokenClassRepr(self):
     class X(BTBase):
         breakRepr = True
     _reflect.safe_str(X)
     _reflect.safe_str(X())
Esempio n. 7
0
 def test_brokenRepr(self):
     b = Breakable()
     b.breakRepr = True
     _reflect.safe_str(b)
Esempio n. 8
0
 def test_workingStr(self):
     x = [1, 2, 3]
     self.assertEquals(_reflect.safe_str(x), str(x))
Esempio n. 9
0
    def test_brokenClassRepr(self):
        class X(BTBase):
            breakRepr = True

        _reflect.safe_str(X)
        _reflect.safe_str(X())
Esempio n. 10
0
 def test_brokenRepr(self):
     b = Breakable()
     b.breakRepr = True
     _reflect.safe_str(b)
Esempio n. 11
0
 def test_workingStr(self):
     x = [1, 2, 3]
     self.assertEquals(_reflect.safe_str(x), str(x))
Esempio n. 12
0
 def getErrorMessage(self):
     """Get a string of the exception which caused this Failure."""
     if isinstance(self.value, Failure):
         return self.value.getErrorMessage()
     return _reflect.safe_str(self.value)