aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorDavid Fugate <dfugate@microsoft.com>2011-06-30 14:31:11 -0700
committerDavid Fugate <dfugate@microsoft.com>2011-06-30 14:31:11 -0700
commit42b534663f60b1017bc3c3a9816081be2756cea1 (patch)
tree90c8a133b4689621d3f52b6cb94c43cc31281c4e /tools
parent4cbb71f6b0f0b630e01ca2131dab2ebf6e65723c (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.py59
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