import sys import eventlet from eventlet import debug from eventlet import api from tests import LimitedTestCase, main from unittest import TestCase try: from cStringIO import StringIO except ImportError: from StringIO import StringIO class TestSpew(TestCase): def setUp(self): self.orig_trace = sys.settrace sys.settrace = self._settrace self.tracer = None def tearDown(self): sys.settrace = self.orig_trace sys.stdout = sys.__stdout__ def _settrace(self, cb): self.tracer = cb def test_spew(self): debug.spew() self.failUnless(isinstance(self.tracer, debug.Spew)) def test_unspew(self): debug.spew() debug.unspew() self.failUnlessEqual(self.tracer, None) def test_line(self): sys.stdout = StringIO() s = debug.Spew() f = sys._getframe() s(f, "line", None) lineno = f.f_lineno - 1 # -1 here since we called with frame f in the line above output = sys.stdout.getvalue() self.failUnless("debug_test:%i" % lineno in output, "Didn't find line %i in %s" % (lineno, output)) self.failUnless("f=