Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(91)

Unified Diff: third_party/libxml/src/xstc/fixup-tests.py

Issue 1193533007: Upgrade to libxml 2.9.2 and libxslt 1.1.28 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove suppressions, have landed in blink now Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/libxml/src/xstc/fixup-tests.py
diff --git a/third_party/libxml/src/xstc/fixup-tests.py b/third_party/libxml/src/xstc/fixup-tests.py
new file mode 100755
index 0000000000000000000000000000000000000000..6e33d1c4cea6ba6e8d7a221a906294fb3fc4b2f7
--- /dev/null
+++ b/third_party/libxml/src/xstc/fixup-tests.py
@@ -0,0 +1,99 @@
+#!/usr/bin/python -u
+
+import sys, os
+import libxml2
+
+
+libxml2.debugMemory(1)
+baseDir = os.path.join('msxsdtest', 'Particles')
+filenames = os.listdir(baseDir)
+mainXSD = str()
+signature = str()
+dictXSD = dict()
+
+def gatherFiles():
+ for file in filenames:
+ if (file[-5] in ["a", "b", "c"]) and (file[-3:] == 'xsd'):
+ # newfilename = string.replace(filename, ' ', '_')
+ signature = file[:-5]
+ mainXSD = signature + ".xsd"
+ imports = []
+ for sub in filenames:
+ if (mainXSD != sub) and (sub[-3:] == 'xsd') and sub.startswith(signature):
+ imports.append(sub)
+ if len(imports) != 0:
+ dictXSD[mainXSD] = imports
+
+def debugMsg(text):
+ #pass
+ print "DEBUG:", text
+
+
+def fixup():
+ for mainXSD in dictXSD:
+ debugMsg("fixing '%s'..." % mainXSD)
+ schemaDoc = None
+ xpmainCtx = None
+ # Load the schema document.
+ schemaFile = os.path.join(baseDir, mainXSD)
+ schemaDoc = libxml2.parseFile(schemaFile)
+ if (schemaDoc is None):
+ print "ERROR: doc '%s' not found" % mainXSD
+ sys.exit(1)
+ try:
+ xpmainCtx = schemaDoc.xpathNewContext()
+ xpmainCtx.xpathRegisterNs("xs", "http://www.w3.org/2001/XMLSchema");
+ xpres = xpmainCtx.xpathEval("/xs:schema")
+ if len(xpres) == 0:
+ print "ERROR: doc '%s' has no <schema> element" % mainXSD
+ sys.exit(1)
+ schemaElem = xpres[0]
+ schemaNs = schemaElem.ns()
+ # Select all <import>s.
+ xpres = xpmainCtx.xpathEval("/xs:schema/xs:import")
+ if len(xpres) != 0:
+ for elem in xpres:
+ loc = elem.noNsProp("schemaLocation")
+ if (loc is not None):
+ debugMsg(" imports '%s'" % loc)
+ if loc in dictXSD[mainXSD]:
+ dictXSD[mainXSD].remove(loc)
+ for loc in dictXSD[mainXSD]:
+ # Read out the targetNamespace.
+ impTargetNs = None
+ impFile = os.path.join(baseDir, loc)
+ impDoc = libxml2.parseFile(impFile)
+ try:
+ xpimpCtx = impDoc.xpathNewContext()
+ try:
+ xpimpCtx.setContextDoc(impDoc)
+ xpimpCtx.xpathRegisterNs("xs", "http://www.w3.org/2001/XMLSchema");
+ xpres = xpimpCtx.xpathEval("/xs:schema")
+ impTargetNs = xpres[0].noNsProp("targetNamespace")
+ finally:
+ xpimpCtx.xpathFreeContext()
+ finally:
+ impDoc.freeDoc()
+
+ # Add the <import>.
+ debugMsg(" adding <import namespace='%s' schemaLocation='%s'/>" % (impTargetNs, loc))
+ newElem = schemaDoc.newDocNode(schemaNs, "import", None)
+ if (impTargetNs is not None):
+ newElem.newProp("namespace", impTargetNs)
+ newElem.newProp("schemaLocation", loc)
+ if schemaElem.children is not None:
+ schemaElem.children.addPrevSibling(newElem)
+ schemaDoc.saveFile(schemaFile)
+ finally:
+ xpmainCtx.xpathFreeContext()
+ schemaDoc.freeDoc()
+
+try:
+ gatherFiles()
+ fixup()
+finally:
+ libxml2.cleanupParser()
+ if libxml2.debugMemory(1) != 0:
+ print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+ libxml2.dumpMemory()
+

Powered by Google App Engine
This is Rietveld 408576698