VirtualBox

source: vbox/trunk/src/libs/libxml2-2.12.6/python/tests/nsdel.py@ 104106

Last change on this file since 104106 was 104106, checked in by vboxsync, 11 months ago

libxml2-2.9.14: Applied and adjusted our libxml2 changes to 2.9.14. bugref:10640

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

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette