diff options
author | David Fugate <dfugate@microsoft.com> | 2011-06-30 14:31:11 -0700 |
---|---|---|
committer | David Fugate <dfugate@microsoft.com> | 2011-06-30 14:31:11 -0700 |
commit | 42b534663f60b1017bc3c3a9816081be2756cea1 (patch) | |
tree | 90c8a133b4689621d3f52b6cb94c43cc31281c4e /tools | |
parent | 4cbb71f6b0f0b630e01ca2131dab2ebf6e65723c (diff) |
Added a small script, InvalidTestDetector.py, to help detect test dependencies on DOM and
host objects (which make them invalid for test262). Using this, I found one benign 'alert'
usage (it was never even called) and removed it.
Diffstat (limited to 'tools')
-rw-r--r-- | tools/misc/InvalidTestDetector.py | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/tools/misc/InvalidTestDetector.py b/tools/misc/InvalidTestDetector.py new file mode 100644 index 000000000..43813a82d --- /dev/null +++ b/tools/misc/InvalidTestDetector.py @@ -0,0 +1,59 @@ +#--Imports--------------------------------------------------------------------- +import argparse +import os +import sys +import re + +#--Globals--------------------------------------------------------------------- + +#List of regular expressions covering suspect code snippets which might be +#invalid from an ES5 POV +QUESTIONABLE_RE_LIST = ["window", + "document(?!ation)", + "alert", + "setTimeout", + "ActiveX", + ] +QUESTIONABLE_RE_LIST = [re.compile(x, re.I) for x in QUESTIONABLE_RE_LIST] + +#------------------------------------------------------------------------------ +def getAllJSFiles(dirName): + ''' + Returns all JS files under dirName + ''' + retVal = [] + if os.path.isfile(dirName) and dirName.endswith(".js"): + retVal = [dirName] + elif os.path.isdir(dirName): + tempList = [os.path.join(dirName, x) for x in os.listdir(dirName)] + for x in tempList: + retVal += getAllJSFiles(x) + #else: + # raise Exception("getAllJSFiles: encountered a non-file/non-dir:" + dirName) + return retVal + +#------------------------------------------------------------------------------ +def handleFile(filePath): + with open(filePath, "r") as f: + origLines = f.readlines() + + for line in origLines: + for tempRe in QUESTIONABLE_RE_LIST: + if tempRe.search(line)!=None: + print filePath + print "\t", line + +#--Main------------------------------------------------------------------------ +if __name__=="__main__": + __parser = argparse.ArgumentParser(description='Tool used to detect (potentially) invalid test cases') + __parser.add_argument('tpath', action='store', + help='Full path to test cases. E.g., C:\repos\test262-msft\test\suite\ietestcenter') + ARGS = __parser.parse_args() + if not os.path.exists(ARGS.tpath): + print "Cannot examine tests in '%s' when it doesn't exist!" % ARGS.tpath + sys.exit(1) + + ALL_JS_FILES = getAllJSFiles(ARGS.tpath) + for fileName in ALL_JS_FILES: + handleFile(fileName) + print "Done!"
\ No newline at end of file |