[Python-checkins] python/dist/src/Lib/test test_trace.py,1.4,1.5

mwh@users.sourceforge.net mwh@users.sourceforge.net
Fri, 08 Nov 2002 05:08:48 -0800


Update of /cvsroot/python/python/dist/src/Lib/test
In directory usw-pr-cvs1:/tmp/cvs-serv14898/Lib/test

Modified Files:
	test_trace.py 
Log Message:
This is Richie Hindle's patch:

[ 631276 ] Exceptions raised by line trace function

It conflicted with the patches from Armin I just checked it, so I had
to so some bits by hand.



Index: test_trace.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_trace.py,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** test_trace.py	2 Oct 2002 13:13:46 -0000	1.4
--- test_trace.py	8 Nov 2002 13:08:45 -0000	1.5
***************
*** 179,192 ****
  
  class RaisingTraceFuncTestCase(unittest.TestCase):
!     def test_it(self):
!         def tr(frame, event, arg):
              raise ValueError # just something that isn't RuntimeError
!         def f():
              return 1
          try:
              for i in xrange(sys.getrecursionlimit() + 1):
!                 sys.settrace(tr)
                  try:
!                     f()
                  except ValueError:
                      pass
--- 179,208 ----
  
  class RaisingTraceFuncTestCase(unittest.TestCase):
!     def trace(self, frame, event, arg):
!         """A trace function that raises an exception in response to a
!         specific trace event."""
!         if event == self.raiseOnEvent:
              raise ValueError # just something that isn't RuntimeError
!         else:
!             return self.trace
!     
!     def f(self):
!         """The function to trace; raises an exception if that's the case
!         we're testing, so that the 'exception' trace event fires."""
!         if self.raiseOnEvent == 'exception':
!             x = 0
!             y = 1/x
!         else:
              return 1
+     
+     def run_test_for_event(self, event):
+         """Tests that an exception raised in response to the given event is
+         handled OK."""
+         self.raiseOnEvent = event
          try:
              for i in xrange(sys.getrecursionlimit() + 1):
!                 sys.settrace(self.trace)
                  try:
!                     self.f()
                  except ValueError:
                      pass
***************
*** 195,199 ****
          except RuntimeError:
              self.fail("recursion counter not reset")
!             
  
  def test_main():
--- 211,224 ----
          except RuntimeError:
              self.fail("recursion counter not reset")
!     
!     # Test the handling of exceptions raised by each kind of trace event.
!     def test_call(self):
!         self.run_test_for_event('call')
!     def test_line(self):
!         self.run_test_for_event('line')
!     def test_return(self):
!         self.run_test_for_event('return')
!     def test_exception(self):
!         self.run_test_for_event('exception')
  
  def test_main():