summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorGary Oberbrunner <garyo@oberbrunner.com>2013-05-04 16:28:50 -0400
committerGary Oberbrunner <garyo@oberbrunner.com>2013-05-04 16:28:50 -0400
commitcc7ac69ca8331dd77fef8ac334bed0c1ad42e4a2 (patch)
tree9140cb365149a3397726b85feb8f73de851cf16e /bin
parent8e70741f93305f5b28bd3f77954f615aa0fcf840 (diff)
downloadscons-cc7ac69ca8331dd77fef8ac334bed0c1ad42e4a2.tar.gz
New doc toolchain changes:
bin/SConsDoc.py: catch parse exceptions and improve error msgs bin/docs-validate.py: allow testing individual files from cmd line src/engine/SCons/Tool/zip.xml: fix text to validate against DTD
Diffstat (limited to 'bin')
-rw-r--r--bin/SConsDoc.py27
-rw-r--r--bin/docs-validate.py28
2 files changed, 35 insertions, 20 deletions
diff --git a/bin/SConsDoc.py b/bin/SConsDoc.py
index 240a8c2b..c9d1e6e5 100644
--- a/bin/SConsDoc.py
+++ b/bin/SConsDoc.py
@@ -330,13 +330,18 @@ if not has_libxml2:
def validateXml(self, fpath, xmlschema_context):
# Use lxml
xmlschema = etree.XMLSchema(xmlschema_context)
- doc = etree.parse(fpath)
+ try:
+ doc = etree.parse(fpath)
+ except Exception, e:
+ print "ERROR: %s fails to parse:"%fpath
+ print e
+ return False
doc.xinclude()
try:
xmlschema.assertValid(doc)
except Exception, e:
+ print "ERROR: %s fails to validate:" % fpath
print e
- print "%s fails to validate" % fpath
return False
return True
@@ -618,16 +623,20 @@ def validate_all_xml(dpaths, xsdfile=default_xsd):
fpaths = []
for dp in dpaths:
- for path, dirs, files in os.walk(dp):
- for f in files:
- if f.endswith('.xml'):
- fp = os.path.join(path, f)
- if isSConsXml(fp):
- fpaths.append(fp)
+ if dp.endswith('.xml') and isSConsXml(dp):
+ path='.'
+ fpaths.append(dp)
+ else:
+ for path, dirs, files in os.walk(dp):
+ for f in files:
+ if f.endswith('.xml'):
+ fp = os.path.join(path, f)
+ if isSConsXml(fp):
+ fpaths.append(fp)
fails = []
for idx, fp in enumerate(fpaths):
- fpath = os.path.join(path, f)
+ fpath = os.path.join(path, fp)
print "%.2f%s (%d/%d) %s" % (float(idx+1)*100.0/float(len(fpaths)),
perc, idx+1, len(fpaths),fp)
diff --git a/bin/docs-validate.py b/bin/docs-validate.py
index 1ed0da04..c445c3f9 100644
--- a/bin/docs-validate.py
+++ b/bin/docs-validate.py
@@ -4,18 +4,24 @@
# documentation files against our own XSD in docs/xsd.
#
-import os
+import sys,os
import SConsDoc
if __name__ == "__main__":
- if SConsDoc.validate_all_xml(['src',
- os.path.join('doc','design'),
- os.path.join('doc','developer'),
- os.path.join('doc','man'),
- os.path.join('doc','python10'),
- os.path.join('doc','reference'),
- os.path.join('doc','user')
- ]):
- print "OK"
+ if len(sys.argv)>1:
+ if SConsDoc.validate_all_xml((sys.argv[1],)):
+ print "OK"
+ else:
+ print "Validation failed! Please correct the errors above and try again."
else:
- print "Validation failed! Please correct the errors above and try again."
+ if SConsDoc.validate_all_xml(['src',
+ os.path.join('doc','design'),
+ os.path.join('doc','developer'),
+ os.path.join('doc','man'),
+ os.path.join('doc','python10'),
+ os.path.join('doc','reference'),
+ os.path.join('doc','user')
+ ]):
+ print "OK"
+ else:
+ print "Validation failed! Please correct the errors above and try again."