1*7c568831SAndroid Build Coastguard Worker#!/usr/bin/env python3 2*7c568831SAndroid Build Coastguard Worker# 3*7c568831SAndroid Build Coastguard Worker# This test exercise the redirection of error messages with a 4*7c568831SAndroid Build Coastguard Worker# functions defined in Python. 5*7c568831SAndroid Build Coastguard Worker# 6*7c568831SAndroid Build Coastguard Workerimport sys 7*7c568831SAndroid Build Coastguard Workerimport setup_test 8*7c568831SAndroid Build Coastguard Workerimport libxml2 9*7c568831SAndroid Build Coastguard Worker 10*7c568831SAndroid Build Coastguard Worker# Memory debug specific 11*7c568831SAndroid Build Coastguard Workerlibxml2.debugMemory(1) 12*7c568831SAndroid Build Coastguard Worker 13*7c568831SAndroid Build Coastguard Workerexpect='--> I/O --> warning : --> failed to load "missing.xml": No such file or directory\n' 14*7c568831SAndroid Build Coastguard Workererr="" 15*7c568831SAndroid Build Coastguard Workerdef callback(ctx, str): 16*7c568831SAndroid Build Coastguard Worker global err 17*7c568831SAndroid Build Coastguard Worker 18*7c568831SAndroid Build Coastguard Worker err = err + "%s %s" % (ctx, str) 19*7c568831SAndroid Build Coastguard Worker 20*7c568831SAndroid Build Coastguard Workergot_exc = 0 21*7c568831SAndroid Build Coastguard Workerlibxml2.registerErrorHandler(callback, "-->") 22*7c568831SAndroid Build Coastguard Workertry: 23*7c568831SAndroid Build Coastguard Worker doc = libxml2.parseFile("missing.xml") 24*7c568831SAndroid Build Coastguard Workerexcept libxml2.parserError: 25*7c568831SAndroid Build Coastguard Worker got_exc = 1 26*7c568831SAndroid Build Coastguard Worker 27*7c568831SAndroid Build Coastguard Workerif got_exc == 0: 28*7c568831SAndroid Build Coastguard Worker print("Failed to get a parser exception") 29*7c568831SAndroid Build Coastguard Worker sys.exit(1) 30*7c568831SAndroid Build Coastguard Worker 31*7c568831SAndroid Build Coastguard Workerif err != expect: 32*7c568831SAndroid Build Coastguard Worker print("error") 33*7c568831SAndroid Build Coastguard Worker print("received %s" %(err)) 34*7c568831SAndroid Build Coastguard Worker print("expected %s" %(expect)) 35*7c568831SAndroid Build Coastguard Worker sys.exit(1) 36*7c568831SAndroid Build Coastguard Worker 37*7c568831SAndroid Build Coastguard Workeri = 10000 38*7c568831SAndroid Build Coastguard Workerwhile i > 0: 39*7c568831SAndroid Build Coastguard Worker try: 40*7c568831SAndroid Build Coastguard Worker doc = libxml2.parseFile("missing.xml") 41*7c568831SAndroid Build Coastguard Worker except libxml2.parserError: 42*7c568831SAndroid Build Coastguard Worker got_exc = 1 43*7c568831SAndroid Build Coastguard Worker err = "" 44*7c568831SAndroid Build Coastguard Worker i = i - 1 45*7c568831SAndroid Build Coastguard Worker 46*7c568831SAndroid Build Coastguard Worker# Memory debug specific 47*7c568831SAndroid Build Coastguard Workerlibxml2.cleanupParser() 48*7c568831SAndroid Build Coastguard Workerif libxml2.debugMemory(1) == 0: 49*7c568831SAndroid Build Coastguard Worker print("OK") 50*7c568831SAndroid Build Coastguard Workerelse: 51*7c568831SAndroid Build Coastguard Worker print("Memory leak %d bytes" % (libxml2.debugMemory(1))) 52