| Index: Source/devtools/scripts/jsdoc-validator/run_tests.py
|
| diff --git a/Source/devtools/scripts/jsdoc-validator/run_tests.py b/Source/devtools/scripts/jsdoc-validator/run_tests.py
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..c8a0112ce82feaea650e299cb9eb79542ea59f32
|
| --- /dev/null
|
| +++ b/Source/devtools/scripts/jsdoc-validator/run_tests.py
|
| @@ -0,0 +1,74 @@
|
| +#!/usr/bin/python
|
| +
|
| +import hashlib
|
| +import operator
|
| +import os
|
| +import shutil
|
| +import stat
|
| +import subprocess
|
| +import sys
|
| +import tempfile
|
| +
|
| +
|
| +def rel_to_abs(rel_path):
|
| + return os.path.join(script_path, rel_path)
|
| +
|
| +java_exec = 'java -Xms1024m -server -XX:+TieredCompilation'
|
| +tests_dir = 'tests'
|
| +jar_name = 'jsdoc-validator.jar'
|
| +script_path = os.path.dirname(os.path.abspath(__file__))
|
| +tests_path = rel_to_abs(tests_dir)
|
| +validator_jar_file = rel_to_abs(jar_name)
|
| +golden_file = os.path.join(tests_path, 'golden.dat')
|
| +
|
| +test_files = [os.path.join(tests_path, f) for f in os.listdir(tests_path) if f.endswith('.js') and os.path.isfile(os.path.join(tests_path, f))]
|
| +
|
| +validator_command = "%s -jar %s %s" % (java_exec, validator_jar_file, " ".join(sorted(test_files)))
|
| +
|
| +
|
| +def run_and_communicate(command, error_template):
|
| + proc = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
|
| + (out, _) = proc.communicate()
|
| + if proc.returncode:
|
| + print >> sys.stderr, error_template % proc.returncode
|
| + sys.exit(proc.returncode)
|
| + return out
|
| +
|
| +
|
| +def help():
|
| + print 'usage: %s [option]' % os.path.basename(__file__)
|
| + print 'Options:'
|
| + print '--generate-golden: Re-generate golden file'
|
| + print '--dump: Dump the test results to stdout'
|
| +
|
| +
|
| +def main():
|
| + need_golden = False
|
| + need_dump = False
|
| + if len(sys.argv) > 1:
|
| + if sys.argv[1] == '--generate-golden':
|
| + need_golden = True
|
| + elif sys.argv[1] == '--dump':
|
| + need_dump = True
|
| + else:
|
| + help()
|
| + return
|
| +
|
| + result = run_and_communicate(validator_command, "Error running validator: %d")
|
| + if need_dump:
|
| + print result
|
| + return
|
| +
|
| + if need_golden:
|
| + with open(golden_file, 'wt') as golden:
|
| + golden.write(result)
|
| + else:
|
| + with open(golden_file, 'rt') as golden:
|
| + golden_text = golden.read()
|
| + if golden_text == result:
|
| + print 'OK'
|
| + else:
|
| + print 'ERROR: Golden output mismatch'
|
| +
|
| +if __name__ == '__main__':
|
| + main()
|
|
|