Blame python/tests/tstLastError.py

Packit Service a31ea6
#!/usr/bin/python -u
Packit Service a31ea6
import sys, unittest
Packit Service a31ea6
Packit Service a31ea6
import libxml2
Packit Service a31ea6
Packit Service a31ea6
class TestCase(unittest.TestCase):
Packit Service a31ea6
Packit Service a31ea6
    def runTest(self):
Packit Service a31ea6
        self.test1()
Packit Service a31ea6
        self.test2()
Packit Service a31ea6
Packit Service a31ea6
    def setUp(self):
Packit Service a31ea6
        libxml2.debugMemory(1)
Packit Service a31ea6
Packit Service a31ea6
    def tearDown(self):
Packit Service a31ea6
        libxml2.cleanupParser()
Packit Service a31ea6
        if libxml2.debugMemory(1) != 0:
Packit Service a31ea6
            libxml2.dumpMemory() 
Packit Service a31ea6
            self.fail("Memory leak %d bytes" % (libxml2.debugMemory(1),))
Packit Service a31ea6
        else:
Packit Service a31ea6
            print("OK")
Packit Service a31ea6
Packit Service a31ea6
    def failUnlessXmlError(self,f,args,exc,domain,code,message,level,file,line):
Packit Service a31ea6
        """Run function f, with arguments args and expect an exception exc;
Packit Service a31ea6
        when the exception is raised, check the libxml2.lastError for
Packit Service a31ea6
        expected values."""
Packit Service a31ea6
        # disable the default error handler
Packit Service a31ea6
        libxml2.registerErrorHandler(None,None)
Packit Service a31ea6
        try:
Packit Service a31ea6
            f(*args)
Packit Service a31ea6
        except exc:
Packit Service a31ea6
            e = libxml2.lastError()
Packit Service a31ea6
            if e is None:
Packit Service a31ea6
                self.fail("lastError not set")
Packit Service a31ea6
            if 0:
Packit Service a31ea6
                print("domain = ",e.domain())
Packit Service a31ea6
                print("code = ",e.code())
Packit Service a31ea6
                print("message =",repr(e.message()))
Packit Service a31ea6
                print("level =",e.level())
Packit Service a31ea6
                print("file =",e.file())
Packit Service a31ea6
                print("line =",e.line())
Packit Service a31ea6
                print()
Packit Service a31ea6
            self.failUnlessEqual(domain,e.domain())
Packit Service a31ea6
            self.failUnlessEqual(code,e.code())
Packit Service a31ea6
            self.failUnlessEqual(message,e.message())
Packit Service a31ea6
            self.failUnlessEqual(level,e.level())
Packit Service a31ea6
            self.failUnlessEqual(file,e.file())
Packit Service a31ea6
            self.failUnlessEqual(line,e.line())
Packit Service a31ea6
        else:
Packit Service a31ea6
            self.fail("exception %s should have been raised" % exc)
Packit Service a31ea6
Packit Service a31ea6
    def test1(self):
Packit Service a31ea6
        """Test readFile with a file that does not exist"""
Packit Service a31ea6
        self.failUnlessXmlError(libxml2.readFile,
Packit Service a31ea6
                        ("dummy.xml",None,0),
Packit Service a31ea6
                        libxml2.treeError,
Packit Service a31ea6
                        domain=libxml2.XML_FROM_IO,
Packit Service a31ea6
                        code=libxml2.XML_IO_LOAD_ERROR,
Packit Service a31ea6
                        message='failed to load external entity "dummy.xml"\n',
Packit Service a31ea6
                        level=libxml2.XML_ERR_WARNING,
Packit Service a31ea6
                        file=None,
Packit Service a31ea6
                        line=0)
Packit Service a31ea6
Packit Service a31ea6
    def test2(self):
Packit Service a31ea6
        """Test a well-formedness error: we get the last error only"""
Packit Service a31ea6
        s = "<x>\n\n</x>"
Packit Service a31ea6
        self.failUnlessXmlError(libxml2.readMemory,
Packit Service a31ea6
                        (s,len(s),"dummy.xml",None,0),
Packit Service a31ea6
                        libxml2.treeError,
Packit Service a31ea6
                        domain=libxml2.XML_FROM_PARSER,
Packit Service a31ea6
                        code=libxml2.XML_ERR_TAG_NOT_FINISHED,
Packit Service a31ea6
                        message='Premature end of data in tag x line 1\n',
Packit Service a31ea6
                        level=libxml2.XML_ERR_FATAL,
Packit Service a31ea6
                        file='dummy.xml',
Packit Service a31ea6
                        line=3)
Packit Service a31ea6
Packit Service a31ea6
if __name__ == "__main__":
Packit Service a31ea6
    test = TestCase()
Packit Service a31ea6
    test.setUp()
Packit Service a31ea6
    test.test1()
Packit Service a31ea6
    test.test2()
Packit Service a31ea6
    test.tearDown()