| Update of /cvsroot/pywin32/pywin32/com/win32com/test
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8985
Modified Files:
	errorSemantics.py 
Log Message:
Test the new ability to send output to a logging module object.
Index: errorSemantics.py
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/win32com/test/errorSemantics.py,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** errorSemantics.py	10 Nov 2003 00:49:29 -0000	1.5
--- errorSemantics.py	7 Sep 2004 02:10:49 -0000	1.6
***************
*** 96,101 ****
--- 96,147 ----
          raise error("Could not find a traceback in stderr: %r" % (cap.get_captured(),))
  
+ try:
+     import logging
+ except ImportError:
+     logging = None
+ if logging is not None:
+     import win32com
+     class TestLogHandler(logging.Handler):
+         def __init__(self):
+             self.num_emits = 0
+             logging.Handler.__init__(self)
+         def emit(self, record):
+             self.num_emits += 1
+             return
+             print "--- record start"
+             print self.format(record)
+             print "--- record end"
+     
+     def testLogger():
+         assert not hasattr(win32com, "logger")
+         handler = TestLogHandler()
+         formatter = logging.Formatter('%(message)s')
+         handler.setFormatter(formatter)
+         log = logging.getLogger("win32com_test")
+         log.addHandler(handler)
+         win32com.logger = log
+         # Now throw some exceptions!
+         # Native interfaces
+         com_server = wrap(TestServer(), pythoncom.IID_IStream)
+         try:
+             com_server.Commit(0)
+             raise RuntimeError, "should have failed"
+         except pythoncom.error:
+             pass
+         assert handler.num_emits == 1, handler.num_emits
+         handler.num_emits = 0 # reset
+ 
+         com_server = Dispatch(wrap(TestServer()))
+         try:
+             com_server.Commit(0)
+             raise RuntimeError, "should have failed"
+         except pythoncom.error:
+             pass
+         assert handler.num_emits == 1, handler.num_emits
+     
  if __name__=='__main__':
      test()
+     if logging is not None:
+         testLogger()
      from util import CheckClean
      CheckClean()
 |