File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libxml2 / python / tests / nsdel.py
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Sun Jun 15 19:53:34 2014 UTC (10 years, 3 months ago) by misho
Branches: libxml2, MAIN
CVS tags: v2_9_1p0, v2_9_1, HEAD
libxml2 2.9.1

    1: #!/usr/bin/python -u
    2: #
    3: # this test exercise the XPath basic engine, parser, etc, and
    4: # allows to detect memory leaks
    5: #
    6: import sys
    7: import libxml2
    8: 
    9: instance="""<?xml version="1.0"?>
   10: <tag xmlns:foo='urn:foo' xmlns:bar='urn:bar' xmlns:baz='urn:baz' />"""
   11: 
   12: def namespaceDefs(node):
   13:     n = node.nsDefs()
   14:     while n:
   15:         yield n
   16:         n = n.next
   17: 
   18: def checkNamespaceDefs(node, count):
   19:     nsList = list(namespaceDefs(node))
   20:     #print nsList
   21:     if len(nsList) != count :
   22:         raise Exception("Error: saw %d namespace declarations.  Expected %d" % (len(nsList), count))
   23:     
   24: # Memory debug specific
   25: libxml2.debugMemory(1)
   26: 
   27: # Remove single namespace
   28: doc = libxml2.parseDoc(instance)
   29: node = doc.getRootElement()
   30: checkNamespaceDefs(node, 3)
   31: ns = node.removeNsDef('urn:bar')
   32: checkNamespaceDefs(node, 2)
   33: ns.freeNsList()
   34: doc.freeDoc()
   35: 
   36: # Remove all namespaces
   37: doc = libxml2.parseDoc(instance)
   38: node = doc.getRootElement()
   39: checkNamespaceDefs(node, 3)
   40: ns = node.removeNsDef(None)
   41: checkNamespaceDefs(node, 0)
   42: ns.freeNsList()
   43: doc.freeDoc()
   44: 
   45: # Remove a namespace refered to by a child
   46: doc = libxml2.newDoc("1.0")
   47: root = doc.newChild(None, "root", None)
   48: namespace = root.newNs("http://example.com/sample", "s")
   49: child = root.newChild(namespace, "child", None)
   50: root.removeNsDef("http://example.com/sample")
   51: doc.reconciliateNs(root)
   52: namespace.freeNsList()
   53: doc.serialize() # This should not segfault
   54: doc.freeDoc()
   55: 
   56: # Memory debug specific
   57: libxml2.cleanupParser()
   58: if libxml2.debugMemory(1) == 0:
   59:     print("OK")
   60: else:
   61:     print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
   62:     libxml2.dumpMemory()

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>