Annotation of embedaddon/libxml2/python/tests/cutnpaste.py, revision 1.1
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>""":
! 38: print "reconciliateNs() failed"
! 39: sys.exit(1)
! 40: target.freeDoc()
! 41:
! 42: # Memory debug specific
! 43: libxml2.cleanupParser()
! 44: if libxml2.debugMemory(1) == 0:
! 45: print "OK"
! 46: else:
! 47: print "Memory leak %d bytes" % (libxml2.debugMemory(1))
! 48: libxml2.dumpMemory()
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>