util.py
65 lines
| 2.5 KiB
| text/x-python
|
PythonLexer
Brian E Granger
|
r1234 | # encoding: utf-8 | ||
"""This file contains utility classes for performing tests with Deferreds. | ||||
""" | ||||
Brian Granger
|
r2498 | #----------------------------------------------------------------------------- | ||
# Copyright (C) 2009 The IPython Development Team | ||||
Brian E Granger
|
r1234 | # | ||
# Distributed under the terms of the BSD License. The full license is in | ||||
# the file COPYING, distributed as part of this software. | ||||
Brian Granger
|
r2498 | #----------------------------------------------------------------------------- | ||
Brian E Granger
|
r1234 | |||
Brian Granger
|
r2498 | #----------------------------------------------------------------------------- | ||
Brian E Granger
|
r1234 | # Imports | ||
Brian Granger
|
r2498 | #----------------------------------------------------------------------------- | ||
Brian E Granger
|
r1234 | |||
from twisted.trial import unittest | ||||
from twisted.internet import defer | ||||
Brian Granger
|
r2498 | #----------------------------------------------------------------------------- | ||
# Classes and functions | ||||
#----------------------------------------------------------------------------- | ||||
Brian E Granger
|
r1234 | class DeferredTestCase(unittest.TestCase): | ||
def assertDeferredEquals(self, deferred, expectedResult, | ||||
Fernando Perez
|
r2116 | chainDeferred=None): | ||
Brian E Granger
|
r1234 | """Calls assertEquals on the result of the deferred and expectedResult. | ||
chainDeferred can be used to pass in previous Deferred objects that | ||||
have tests being run on them. This chaining of Deferred's in tests | ||||
is needed to insure that all Deferred's are cleaned up at the end of | ||||
a test. | ||||
""" | ||||
if chainDeferred is None: | ||||
chainDeferred = defer.succeed(None) | ||||
Fernando Perez
|
r2116 | |||
Brian E Granger
|
r1234 | def gotResult(actualResult): | ||
self.assertEquals(actualResult, expectedResult) | ||||
deferred.addCallback(gotResult) | ||||
return chainDeferred.addCallback(lambda _: deferred) | ||||
def assertDeferredRaises(self, deferred, expectedException, | ||||
Fernando Perez
|
r2116 | chainDeferred=None): | ||
Brian E Granger
|
r1234 | """Calls assertRaises on the Failure of the deferred and expectedException. | ||
chainDeferred can be used to pass in previous Deferred objects that | ||||
have tests being run on them. This chaining of Deferred's in tests | ||||
is needed to insure that all Deferred's are cleaned up at the end of | ||||
a test. | ||||
""" | ||||
if chainDeferred is None: | ||||
chainDeferred = defer.succeed(None) | ||||
def gotFailure(f): | ||||
#f.printTraceback() | ||||
self.assertRaises(expectedException, f.raiseException) | ||||
#return f | ||||
deferred.addBoth(gotFailure) | ||||
return chainDeferred.addCallback(lambda _: deferred) | ||||