def testDeferredYielding(self): """ Ensure that yielding a Deferred directly is trapped as an error. """ # See the comment _deferGenerator about d.callback(Deferred). def _genDeferred(): yield getThing() _genDeferred = deferredGenerator(_genDeferred) return self.assertFailure(_genDeferred(), TypeError)
x = waitForDeferred(getThing()) yield x x = x.getResult() self.assertEquals(x, "hi") ow = waitForDeferred(getOwie()) yield ow try: ow.getResult() except ZeroDivisionError, e: self.assertEquals(str(e), 'OMG') yield "WOOSH" return _genBasics = deferredGenerator(_genBasics) def _genBuggy(self): yield waitForDeferred(getThing()) 1/0 _genBuggy = deferredGenerator(_genBuggy) def _genNothing(self): if 0: yield 1 _genNothing = deferredGenerator(_genNothing) def _genHandledTerminalFailure(self): x = waitForDeferred(fail(TerminalException("Handled Terminal Failure"))) yield x try:
class DeferredGeneratorTests(BaseDefgenTests, unittest.TestCase): # First provide all the generator impls necessary for BaseDefgenTests def _genBasics(self): x = waitForDeferred(getThing()) yield x x = x.getResult() self.assertEquals(x, "hi") ow = waitForDeferred(getOwie()) yield ow try: ow.getResult() except ZeroDivisionError as e: self.assertEquals(str(e), 'OMG') yield "WOOSH" return _genBasics = deferredGenerator(_genBasics) def _genBuggy(self): yield waitForDeferred(getThing()) 1 / 0 _genBuggy = deferredGenerator(_genBuggy) def _genNothing(self): if 0: yield 1 _genNothing = deferredGenerator(_genNothing) def _genHandledTerminalFailure(self): x = waitForDeferred(fail( TerminalException("Handled Terminal Failure"))) yield x try: x.getResult() except TerminalException: pass _genHandledTerminalFailure = deferredGenerator(_genHandledTerminalFailure) def _genHandledTerminalAsyncFailure(self, d): x = waitForDeferred(d) yield x try: x.getResult() except TerminalException: pass _genHandledTerminalAsyncFailure = deferredGenerator( _genHandledTerminalAsyncFailure) def _genStackUsage(self): for x in range(5000): # Test with yielding a deferred x = waitForDeferred(succeed(1)) yield x x = x.getResult() yield 0 _genStackUsage = deferredGenerator(_genStackUsage) def _genStackUsage2(self): for x in range(5000): # Test with yielding a random value yield 1 yield 0 _genStackUsage2 = deferredGenerator(_genStackUsage2) # Tests unique to deferredGenerator def testDeferredYielding(self): """ Ensure that yielding a Deferred directly is trapped as an error. """ # See the comment _deferGenerator about d.callback(Deferred). def _genDeferred(): yield getThing() _genDeferred = deferredGenerator(_genDeferred) return self.assertFailure(_genDeferred(), TypeError)