38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#!/usr/bin/python -u
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncimport sys
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncimport libxml2
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync# Memory debug specific
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynclibxml2.debugMemory(1)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncuri = libxml2.parseURI("http://example.org:8088/foo/bar?query=simple#fragid")
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncif uri.scheme() != 'http':
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync print "Error parsing URI: wrong scheme"
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync sys.exit(1)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncif uri.server() != 'example.org':
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync print "Error parsing URI: wrong server"
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync sys.exit(1)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncif uri.port() != 8088:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync print "Error parsing URI: wrong port"
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync sys.exit(1)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncif uri.path() != '/foo/bar':
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync print "Error parsing URI: wrong path"
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync sys.exit(1)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncif uri.query() != 'query=simple':
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync print "Error parsing URI: wrong query"
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync sys.exit(1)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncif uri.fragment() != 'fragid':
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync print "Error parsing URI: wrong query"
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync sys.exit(1)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncuri.setScheme("https")
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncuri.setPort(223)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncuri.setFragment(None)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncresult=uri.saveUri()
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncif result != "https://example.org:223/foo/bar?query=simple":
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync print "Error modifying or saving the URI"
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncuri = None
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync# Memory debug specific
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynclibxml2.cleanupParser()
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncif libxml2.debugMemory(1) == 0:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync print "OK"
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncelse:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync print "Memory leak %d bytes" % (libxml2.debugMemory(1))
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync libxml2.dumpMemory()