Index: third_party/twisted_8_1/twisted/test/test_failure.py |
diff --git a/third_party/twisted_8_1/twisted/test/test_failure.py b/third_party/twisted_8_1/twisted/test/test_failure.py |
deleted file mode 100644 |
index 7dc0ab19e921ee0510a754faf6eb94864795d24d..0000000000000000000000000000000000000000 |
--- a/third_party/twisted_8_1/twisted/test/test_failure.py |
+++ /dev/null |
@@ -1,318 +0,0 @@ |
-# Copyright (c) 2001-2008 Twisted Matrix Laboratories. |
-# See LICENSE for details. |
- |
- |
-""" |
-Test cases for failure module. |
-""" |
- |
-import sys |
-import StringIO |
-import traceback |
- |
-from twisted.trial import unittest, util |
- |
-from twisted.python import failure |
- |
-try: |
- from twisted.test import raiser |
-except ImportError: |
- raiser = None |
- |
- |
-class BrokenStr(Exception): |
- def __str__(self): |
- raise self |
- |
- |
-def getDivisionFailure(): |
- try: |
- 1/0 |
- except: |
- f = failure.Failure() |
- return f |
- |
- |
-class FailureTestCase(unittest.TestCase): |
- |
- def testFailAndTrap(self): |
- """Trapping a failure.""" |
- try: |
- raise NotImplementedError('test') |
- except: |
- f = failure.Failure() |
- error = f.trap(SystemExit, RuntimeError) |
- self.assertEquals(error, RuntimeError) |
- self.assertEquals(f.type, NotImplementedError) |
- |
- def test_notTrapped(self): |
- """Making sure trap doesn't trap what it shouldn't.""" |
- try: |
- raise ValueError() |
- except: |
- f = failure.Failure() |
- self.assertRaises(failure.Failure, f.trap, OverflowError) |
- |
- def testPrinting(self): |
- out = StringIO.StringIO() |
- try: |
- 1/0 |
- except: |
- f = failure.Failure() |
- f.printDetailedTraceback(out) |
- f.printBriefTraceback(out) |
- f.printTraceback(out) |
- |
- def testExplictPass(self): |
- e = RuntimeError() |
- f = failure.Failure(e) |
- f.trap(RuntimeError) |
- self.assertEquals(f.value, e) |
- |
- |
- def _getInnermostFrameLine(self, f): |
- try: |
- f.raiseException() |
- except ZeroDivisionError: |
- tb = traceback.extract_tb(sys.exc_info()[2]) |
- return tb[-1][-1] |
- else: |
- raise Exception( |
- "f.raiseException() didn't raise ZeroDivisionError!?") |
- |
- |
- def testRaiseExceptionWithTB(self): |
- f = getDivisionFailure() |
- innerline = self._getInnermostFrameLine(f) |
- self.assertEquals(innerline, '1/0') |
- |
- |
- def testLackOfTB(self): |
- f = getDivisionFailure() |
- f.cleanFailure() |
- innerline = self._getInnermostFrameLine(f) |
- self.assertEquals(innerline, '1/0') |
- |
- testLackOfTB.todo = "the traceback is not preserved, exarkun said he'll try to fix this! god knows how" |
- |
- |
- _stringException = "bugger off" |
- def _getStringFailure(self): |
- try: |
- raise self._stringException |
- except: |
- f = failure.Failure() |
- return f |
- |
- def test_raiseStringExceptions(self): |
- # String exceptions used to totally bugged f.raiseException |
- f = self._getStringFailure() |
- try: |
- f.raiseException() |
- except: |
- self.assertEquals(sys.exc_info()[0], self._stringException) |
- else: |
- raise AssertionError("Should have raised") |
- test_raiseStringExceptions.suppress = [ |
- util.suppress(message='raising a string exception is deprecated')] |
- |
- |
- def test_printStringExceptions(self): |
- """ |
- L{Failure.printTraceback} should write out stack and exception |
- information, even for string exceptions. |
- """ |
- failure = self._getStringFailure() |
- output = StringIO.StringIO() |
- failure.printTraceback(file=output) |
- lines = output.getvalue().splitlines() |
- # The last line should be the value of the raised string |
- self.assertEqual(lines[-1], self._stringException) |
- |
- test_printStringExceptions.suppress = [ |
- util.suppress(message='raising a string exception is deprecated')] |
- |
- if sys.version_info[:2] >= (2, 6): |
- skipMsg = ("String exceptions aren't supported anymore starting " |
- "Python 2.6") |
- test_raiseStringExceptions.skip = skipMsg |
- test_printStringExceptions.skip = skipMsg |
- |
- |
- def testBrokenStr(self): |
- """ |
- Formatting a traceback of a Failure which refers to an object |
- that has a broken __str__ implementation should not cause |
- getTraceback to raise an exception. |
- """ |
- x = BrokenStr() |
- try: |
- str(x) |
- except: |
- f = failure.Failure() |
- self.assertEquals(f.value, x) |
- try: |
- f.getTraceback() |
- except: |
- self.fail("getTraceback() shouldn't raise an exception") |
- |
- |
- def testConstructionFails(self): |
- """ |
- Creating a Failure with no arguments causes it to try to discover the |
- current interpreter exception state. If no such state exists, creating |
- the Failure should raise a synchronous exception. |
- """ |
- self.assertRaises(failure.NoCurrentExceptionError, failure.Failure) |
- |
- def test_getTracebackObject(self): |
- """ |
- If the C{Failure} has not been cleaned, then C{getTracebackObject} |
- should return the traceback object that it was given in the |
- constructor. |
- """ |
- f = getDivisionFailure() |
- self.assertEqual(f.getTracebackObject(), f.tb) |
- |
- def test_getTracebackObjectFromClean(self): |
- """ |
- If the Failure has been cleaned, then C{getTracebackObject} should |
- return an object that looks the same to L{traceback.extract_tb}. |
- """ |
- f = getDivisionFailure() |
- expected = traceback.extract_tb(f.getTracebackObject()) |
- f.cleanFailure() |
- observed = traceback.extract_tb(f.getTracebackObject()) |
- self.assertEqual(expected, observed) |
- |
- def test_getTracebackObjectWithoutTraceback(self): |
- """ |
- L{failure.Failure}s need not be constructed with traceback objects. If |
- a C{Failure} has no traceback information at all, C{getTracebackObject} |
- should just return None. |
- |
- None is a good value, because traceback.extract_tb(None) -> []. |
- """ |
- f = failure.Failure(Exception("some error")) |
- self.assertEqual(f.getTracebackObject(), None) |
- |
-class FindFailureTests(unittest.TestCase): |
- """ |
- Tests for functionality related to L{Failure._findFailure}. |
- """ |
- |
- def test_findNoFailureInExceptionHandler(self): |
- """ |
- Within an exception handler, _findFailure should return |
- C{None} in case no Failure is associated with the current |
- exception. |
- """ |
- try: |
- 1/0 |
- except: |
- self.assertEqual(failure.Failure._findFailure(), None) |
- else: |
- self.fail("No exception raised from 1/0!?") |
- |
- |
- def test_findNoFailure(self): |
- """ |
- Outside of an exception handler, _findFailure should return None. |
- """ |
- self.assertEqual(sys.exc_info()[-1], None) #environment sanity check |
- self.assertEqual(failure.Failure._findFailure(), None) |
- |
- |
- def test_findFailure(self): |
- """ |
- Within an exception handler, it should be possible to find the |
- original Failure that caused the current exception (if it was |
- caused by raiseException). |
- """ |
- f = getDivisionFailure() |
- f.cleanFailure() |
- try: |
- f.raiseException() |
- except: |
- self.assertEqual(failure.Failure._findFailure(), f) |
- else: |
- self.fail("No exception raised from raiseException!?") |
- |
- |
- def test_failureConstructionFindsOriginalFailure(self): |
- """ |
- When a Failure is constructed in the context of an exception |
- handler that is handling an exception raised by |
- raiseException, the new Failure should be chained to that |
- original Failure. |
- """ |
- f = getDivisionFailure() |
- f.cleanFailure() |
- try: |
- f.raiseException() |
- except: |
- newF = failure.Failure() |
- self.assertEqual(f.getTraceback(), newF.getTraceback()) |
- else: |
- self.fail("No exception raised from raiseException!?") |
- |
- |
- def test_failureConstructionWithMungedStackSucceeds(self): |
- """ |
- Pyrex and Cython are known to insert fake stack frames so as to give |
- more Python-like tracebacks. These stack frames with empty code objects |
- should not break extraction of the exception. |
- """ |
- try: |
- raiser.raiseException() |
- except raiser.RaiserException: |
- f = failure.Failure() |
- self.assertTrue(f.check(raiser.RaiserException)) |
- else: |
- self.fail("No exception raised from extension?!") |
- |
- |
- if raiser is None: |
- skipMsg = "raiser extension not available" |
- test_failureConstructionWithMungedStackSucceeds.skip = skipMsg |
- |
- |
- |
-class TestFormattableTraceback(unittest.TestCase): |
- """ |
- Whitebox tests that show that L{failure._Traceback} constructs objects that |
- can be used by L{traceback.extract_tb}. |
- |
- If the objects can be used by L{traceback.extract_tb}, then they can be |
- formatted using L{traceback.format_tb} and friends. |
- """ |
- |
- def test_singleFrame(self): |
- """ |
- A C{_Traceback} object constructed with a single frame should be able |
- to be passed to L{traceback.extract_tb}, and we should get a singleton |
- list containing a (filename, lineno, methodname, line) tuple. |
- """ |
- tb = failure._Traceback([['method', 'filename.py', 123, {}, {}]]) |
- # Note that we don't need to test that extract_tb correctly extracts |
- # the line's contents. In this case, since filename.py doesn't exist, |
- # it will just use None. |
- self.assertEqual(traceback.extract_tb(tb), |
- [('filename.py', 123, 'method', None)]) |
- |
- def test_manyFrames(self): |
- """ |
- A C{_Traceback} object constructed with multiple frames should be able |
- to be passed to L{traceback.extract_tb}, and we should get a list |
- containing a tuple for each frame. |
- """ |
- tb = failure._Traceback([ |
- ['method1', 'filename.py', 123, {}, {}], |
- ['method2', 'filename.py', 235, {}, {}]]) |
- self.assertEqual(traceback.extract_tb(tb), |
- [('filename.py', 123, 'method1', None), |
- ('filename.py', 235, 'method2', None)]) |
- |
- |
-if sys.version_info[:2] >= (2, 5): |
- from twisted.test.generator_failure_tests import TwoPointFiveFailureTests |