Annotation of embedaddon/libxml2/python/tests/cutnpaste.py, revision 1.1.1.2

1.1       misho       1: #!/usr/bin/python -u
                      2: import sys
                      3: import libxml2
                      4: 
                      5: # Memory debug specific
                      6: libxml2.debugMemory(1)
                      7: 
                      8: #
                      9: # Testing XML document serialization
                     10: #
                     11: source = libxml2.parseDoc("""<?xml version="1.0"?>
                     12: <root xmlns:foo="http://example.org/foo"
                     13:       xmlns:bar="http://example.org/bar">
                     14: <include xmlns="http://example.org/include">
                     15: <fragment><foo:elem bar="tricky"/></fragment>
                     16: </include>
                     17: </root>
                     18: """)
                     19: 
                     20: target = libxml2.parseDoc("""<?xml version="1.0"?>
                     21: <root xmlns:foobar="http://example.org/bar"/>""")
                     22: 
                     23: fragment = source.xpathEval("//*[name()='fragment']")[0]
                     24: dest = target.getRootElement()
                     25: 
                     26: # do a cut and paste operation
                     27: fragment.unlinkNode()
                     28: dest.addChild(fragment)
                     29: # do the namespace fixup
                     30: dest.reconciliateNs(target)
                     31: 
                     32: # The source tree can be freed at that point
                     33: source.freeDoc()
                     34: 
                     35: # check the resulting tree
                     36: str = dest.serialize()
                     37: if str != """<root xmlns:foobar="http://example.org/bar" xmlns:default="http://example.org/include" xmlns:foo="http://example.org/foo"><default:fragment><foo:elem bar="tricky"/></default:fragment></root>""":
1.1.1.2 ! misho      38:     print("reconciliateNs() failed")
1.1       misho      39:     sys.exit(1)
                     40: target.freeDoc()
                     41: 
                     42: # Memory debug specific
                     43: libxml2.cleanupParser()
                     44: if libxml2.debugMemory(1) == 0:
1.1.1.2 ! misho      45:     print("OK")
1.1       misho      46: else:
1.1.1.2 ! misho      47:     print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
1.1       misho      48:     libxml2.dumpMemory()

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