Annotation of embedaddon/libxml2/python/tests/tstLastError.py, revision 1.1.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>