• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/usr/bin/env python3
2import sys
3import libxml2
4
5# Memory debug specific
6libxml2.debugMemory(1)
7
8ctxt = libxml2.createFileParserCtxt("valid.xml")
9ctxt.validate(1)
10ctxt.parseDocument()
11doc = ctxt.doc()
12valid = ctxt.isValid()
13
14if doc.name != "valid.xml":
15    print("doc.name failed")
16    sys.exit(1)
17root = doc.children
18if root.name != "doc":
19    print("root.name failed")
20    sys.exit(1)
21if valid != 1:
22    print("validity chec failed")
23    sys.exit(1)
24doc.freeDoc()
25
26i = 1000
27while i > 0:
28    ctxt = libxml2.createFileParserCtxt("valid.xml")
29    ctxt.validate(1)
30    ctxt.parseDocument()
31    doc = ctxt.doc()
32    valid = ctxt.isValid()
33    doc.freeDoc()
34    if valid != 1:
35        print("validity check failed")
36        sys.exit(1)
37    i = i - 1
38
39#deactivate error messages from the validation
40def noerr(ctx, str):
41    pass
42
43libxml2.registerErrorHandler(noerr, None)
44
45ctxt = libxml2.createFileParserCtxt("invalid.xml")
46ctxt.validate(1)
47ctxt.parseDocument()
48doc = ctxt.doc()
49valid = ctxt.isValid()
50if doc.name != "invalid.xml":
51    print("doc.name failed")
52    sys.exit(1)
53root = doc.children
54if root.name != "doc":
55    print("root.name failed")
56    sys.exit(1)
57if valid != 0:
58    print("validity chec failed")
59    sys.exit(1)
60doc.freeDoc()
61
62i = 1000
63while i > 0:
64    ctxt = libxml2.createFileParserCtxt("invalid.xml")
65    ctxt.validate(1)
66    ctxt.parseDocument()
67    doc = ctxt.doc()
68    valid = ctxt.isValid()
69    doc.freeDoc()
70    if valid != 0:
71        print("validity check failed")
72        sys.exit(1)
73    i = i - 1
74del ctxt
75
76# Memory debug specific
77libxml2.cleanupParser()
78if libxml2.debugMemory(1) == 0:
79    print("OK")
80else:
81    print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
82    libxml2.dumpMemory()
83