home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / share / doc / python-libxml2 / examples / tstLastError.py < prev    next >
Encoding:
Python Source  |  2005-08-24  |  2.8 KB  |  83 lines

  1. #!/usr/bin/python -u
  2. import sys, unittest
  3.  
  4. import libxml2
  5.  
  6. class TestCase(unittest.TestCase):
  7.  
  8.     def runTest(self):
  9.         self.test1()
  10.         self.test2()
  11.  
  12.     def setUp(self):
  13.         libxml2.debugMemory(1)
  14.  
  15.     def tearDown(self):
  16.         libxml2.cleanupParser()
  17.         if libxml2.debugMemory(1) != 0:
  18.             libxml2.dumpMemory() 
  19.             self.fail("Memory leak %d bytes" % (libxml2.debugMemory(1),))
  20.     else:
  21.         print "OK"
  22.  
  23.     def failUnlessXmlError(self,f,args,exc,domain,code,message,level,file,line):
  24.         """Run function f, with arguments args and expect an exception exc;
  25.         when the exception is raised, check the libxml2.lastError for
  26.         expected values."""
  27.         # disable the default error handler
  28.         libxml2.registerErrorHandler(None,None)
  29.         try:
  30.         apply(f,args)
  31.         except exc:
  32.             e = libxml2.lastError()
  33.             if e is None:
  34.                 self.fail("lastError not set")
  35.             if 0:
  36.                 print "domain = ",e.domain()
  37.                 print "code = ",e.code()
  38.                 print "message =",repr(e.message())
  39.                 print "level =",e.level()
  40.                 print "file =",e.file()
  41.                 print "line =",e.line()
  42.                 print
  43.             self.failUnlessEqual(domain,e.domain())
  44.             self.failUnlessEqual(code,e.code())
  45.             self.failUnlessEqual(message,e.message())
  46.             self.failUnlessEqual(level,e.level())
  47.             self.failUnlessEqual(file,e.file())
  48.             self.failUnlessEqual(line,e.line())
  49.         else:
  50.             self.fail("exception %s should have been raised" % exc)
  51.  
  52.     def test1(self):
  53.         """Test readFile with a file that does not exist"""
  54.         self.failUnlessXmlError(libxml2.readFile,
  55.                         ("dummy.xml",None,0),
  56.                         libxml2.treeError,
  57.                         domain=libxml2.XML_FROM_IO,
  58.                         code=libxml2.XML_IO_LOAD_ERROR,
  59.                         message='failed to load external entity "dummy.xml"\n',
  60.                         level=libxml2.XML_ERR_WARNING,
  61.                         file=None,
  62.                         line=0)
  63.  
  64.     def test2(self):
  65.         """Test a well-formedness error: we get the last error only"""
  66.         s = "<x>\n<a>\n</x>"
  67.         self.failUnlessXmlError(libxml2.readMemory,
  68.                         (s,len(s),"dummy.xml",None,0),
  69.                         libxml2.treeError,
  70.                         domain=libxml2.XML_FROM_PARSER,
  71.                         code=libxml2.XML_ERR_TAG_NOT_FINISHED,
  72.                         message='Premature end of data in tag x line 1\n',
  73.                         level=libxml2.XML_ERR_FATAL,
  74.                         file='dummy.xml',
  75.                         line=3)
  76.  
  77. if __name__ == "__main__":
  78.     test = TestCase()
  79.     test.setUp()
  80.     test.test1()
  81.     test.test2()
  82.     test.tearDown()
  83.