test262/tools/misc/FixPathsAndIds.py
David Fugate 09186bafb4 84 IE Test Center test cases had corrupted 'path' properties in
their test case objects.  Created an automated tool, FixPathsAndIds.py,
to fix these.

TestCasePackager.py no longer throws when it encounters a non-*.js
file where it expects test cases.  Instead, it simply ignores it.
2011-03-30 09:48:29 -07:00

80 lines
3.0 KiB
Python

#--Imports---------------------------------------------------------------------
import argparse
import os
import sys
import re
#--Globals---------------------------------------------------------------------
PRE_PATH = "TestCases/"
#------------------------------------------------------------------------------
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, partialPath):
global PRE_PATH
tempPath = filePath.replace(partialPath + os.path.sep, "", 1)
tempPath = tempPath.replace(os.path.sep, "/")
tempId = tempPath.rsplit("/", 1)[1][:-3]
with open(filePath, "r") as f:
origLines = f.readlines()
with open(filePath, "w") as f:
pathHit = False
idHit = False
testHit = False
descriptHit = False
for line in origLines:
#TODO?
#if (not testHit) and re.match("^$", line)!=None:
# #Throw away empty lines until we hit the first test function
# continue
#elif (not testHit) and re.search("test\s*:\s*function\s+testcase\(\)", line)!=None:
# testHit = True
# line = line.rstrip() + os.linesep
if (not pathHit) and re.search("path\s*:\s*\"", line)!=None:
pathHit = True
line = re.sub("\"[^\"]*\"",
"\"%s\"" % (PRE_PATH + tempPath),
line)
elif (not idHit) and re.search("id\s*:\s*\"", line)!=None:
idHit = True
line = re.sub("\"[^\"]*\"",
"\"%s\"" % tempId,
line)
#TODO?
#elif (not descriptHit) and re.search("description\s*:\s*\"", line)!=None:
# descriptHit = True
# line = line.strip() + os.linesep
f.write(line)
#--Main------------------------------------------------------------------------
if __name__=="__main__":
__parser = argparse.ArgumentParser(description='Tool used to fix the id and path properties of test case objects')
__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 fix 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, ARGS.tpath)
print "Done!"