Annotation of embedaddon/libxml2/python/tests/tstLastError.py, revision 1.1
1.1 ! misho 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()
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>