VirtualBox

source: vbox/trunk/src/libs/libxml2-2.9.4/python/tests/nsdel.py@ 76389

最後變更 在這個檔案從76389是 65950,由 vboxsync 提交於 8 年 前

libxml 2.9.4: fix export

  • 屬性 svn:eol-style 設為 LF
  • 屬性 svn:executable 設為 *
檔案大小: 1.6 KB
 
1#!/usr/bin/python -u
2#
3# this test exercise the XPath basic engine, parser, etc, and
4# allows to detect memory leaks
5#
6import sys
7import libxml2
8
9instance="""<?xml version="1.0"?>
10<tag xmlns:foo='urn:foo' xmlns:bar='urn:bar' xmlns:baz='urn:baz' />"""
11
12def namespaceDefs(node):
13 n = node.nsDefs()
14 while n:
15 yield n
16 n = n.next
17
18def 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
25libxml2.debugMemory(1)
26
27# Remove single namespace
28doc = libxml2.parseDoc(instance)
29node = doc.getRootElement()
30checkNamespaceDefs(node, 3)
31ns = node.removeNsDef('urn:bar')
32checkNamespaceDefs(node, 2)
33ns.freeNsList()
34doc.freeDoc()
35
36# Remove all namespaces
37doc = libxml2.parseDoc(instance)
38node = doc.getRootElement()
39checkNamespaceDefs(node, 3)
40ns = node.removeNsDef(None)
41checkNamespaceDefs(node, 0)
42ns.freeNsList()
43doc.freeDoc()
44
45# Remove a namespace refered to by a child
46doc = libxml2.newDoc("1.0")
47root = doc.newChild(None, "root", None)
48namespace = root.newNs("http://example.com/sample", "s")
49child = root.newChild(namespace, "child", None)
50root.removeNsDef("http://example.com/sample")
51doc.reconciliateNs(root)
52namespace.freeNsList()
53doc.serialize() # This should not segfault
54doc.freeDoc()
55
56# Memory debug specific
57libxml2.cleanupParser()
58if libxml2.debugMemory(1) == 0:
59 print("OK")
60else:
61 print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
62 libxml2.dumpMemory()
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

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