mirror of https://github.com/tc39/test262.git
Remove trailing whitespace from the Python
This commit is contained in:
parent
bbeafbd3c6
commit
dd243a757c
|
@ -1,7 +1,7 @@
|
|||
# Copyright (c) 2012 Ecma International. All rights reserved.
|
||||
# Copyright (c) 2012 Ecma International. All rights reserved.
|
||||
# Ecma International makes this code available under the terms and conditions set
|
||||
# forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
|
||||
# "Use Terms"). Any redistribution of this code must retain the above
|
||||
# forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
|
||||
# "Use Terms"). Any redistribution of this code must retain the above
|
||||
# copyright and this notice and otherwise comply with the Use Terms.
|
||||
|
||||
|
||||
|
@ -19,13 +19,13 @@ def getCoverageData(directory):
|
|||
dirList = [x for x in tempList if os.path.isdir(os.path.join(directory, x))]
|
||||
#Build up a list of JavaScript files under the current directory
|
||||
jsList = [x for xin in tempList if x.endswith(".js")]
|
||||
|
||||
#If the directory contains JavaScript files we'll assume they're all test
|
||||
|
||||
#If the directory contains JavaScript files we'll assume they're all test
|
||||
#cases
|
||||
if len(jsList)!=0:
|
||||
CVG_DICT[os.path.split(directory)[1]] = len(jsList)
|
||||
|
||||
#This might have just been a directory containing other dirs. Call ourself on
|
||||
|
||||
#This might have just been a directory containing other dirs. Call ourself on
|
||||
#it as well
|
||||
for x in dirList:
|
||||
getCoverageData(os.path.join(directory, x))
|
||||
|
@ -61,4 +61,4 @@ def chapterCompare(x, y):
|
|||
startDir = sys.argv[1]
|
||||
getCoverageData(startDir)
|
||||
print "Emitting ECMAScript 5 coverage data for", startDir, "..."
|
||||
emitCoverageData(CVG_DICT)
|
||||
emitCoverageData(CVG_DICT)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# Copyright (c) 2012 Ecma International. All rights reserved.
|
||||
# Copyright (c) 2012 Ecma International. All rights reserved.
|
||||
# Ecma International makes this code available under the terms and conditions set
|
||||
# forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
|
||||
# "Use Terms"). Any redistribution of this code must retain the above
|
||||
# forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
|
||||
# "Use Terms"). Any redistribution of this code must retain the above
|
||||
# copyright and this notice and otherwise comply with the Use Terms.
|
||||
|
||||
#--Imports---------------------------------------------------------------------
|
||||
|
@ -34,7 +34,7 @@ def getAllJSFiles(dirName):
|
|||
def handleFile(filePath):
|
||||
with open(filePath, "r") as f:
|
||||
origLines = f.readlines()
|
||||
|
||||
|
||||
testCase = False
|
||||
runTestCaseCalled = False
|
||||
for line in origLines:
|
||||
|
@ -42,15 +42,15 @@ def handleFile(filePath):
|
|||
testCase = True
|
||||
if runTestCaseRe.search(line)!=None:
|
||||
runTestCaseCalled = True
|
||||
|
||||
|
||||
if testCase==True and runTestCaseCalled==True:
|
||||
pass #print "testcase TEST:", filePath
|
||||
elif testCase==False and runTestCaseCalled==False:
|
||||
pass #print "GLOBAL TEST:", filePath
|
||||
else:
|
||||
print "ERROR:", filePath
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#--Main------------------------------------------------------------------------
|
||||
if __name__=="__main__":
|
||||
|
@ -61,8 +61,8 @@ if __name__=="__main__":
|
|||
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!"
|
||||
print "Done!"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# Copyright (c) 2012 Ecma International. All rights reserved.
|
||||
# Copyright (c) 2012 Ecma International. All rights reserved.
|
||||
# Ecma International makes this code available under the terms and conditions set
|
||||
# forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
|
||||
# "Use Terms"). Any redistribution of this code must retain the above
|
||||
# forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
|
||||
# "Use Terms"). Any redistribution of this code must retain the above
|
||||
# copyright and this notice and otherwise comply with the Use Terms.
|
||||
|
||||
#--Imports---------------------------------------------------------------------
|
||||
|
@ -12,10 +12,10 @@ import re
|
|||
import codecs
|
||||
|
||||
#--Globals---------------------------------------------------------------------
|
||||
ECMA_LICENSE = '''/// Copyright (c) 2012 Ecma International. All rights reserved.
|
||||
ECMA_LICENSE = '''/// Copyright (c) 2012 Ecma International. All rights reserved.
|
||||
/// Ecma International makes this code available under the terms and conditions set
|
||||
/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
|
||||
/// "Use Terms"). Any redistribution of this code must retain the above
|
||||
/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
|
||||
/// "Use Terms"). Any redistribution of this code must retain the above
|
||||
/// copyright and this notice and otherwise comply with the Use Terms.
|
||||
'''
|
||||
|
||||
|
@ -50,12 +50,12 @@ def handleFile(filePath):
|
|||
'''
|
||||
with open(filePath, "rb") as f:
|
||||
origLines = f.readlines()
|
||||
|
||||
|
||||
#See if it's already there
|
||||
if NEW_LICENSE_FIRST_LINE.search(origLines[0])!=None:
|
||||
#print "\talready there:\t", filePath
|
||||
return
|
||||
#TODO: Google employee needs to remove this elif
|
||||
#TODO: Google employee needs to remove this elif
|
||||
# and fix the next elif clause
|
||||
elif GOOGLE_RE.search(filePath)!=None:
|
||||
if DEBUG:
|
||||
|
@ -65,13 +65,13 @@ def handleFile(filePath):
|
|||
errMsg = "\tno idea which license should be used for:\t" + filePath
|
||||
raise Exception(errMsg)
|
||||
return
|
||||
|
||||
|
||||
with codecs.open(filePath,'r','utf8') as f:
|
||||
bomPresent = f.read(2).startswith(u"\ufeff")
|
||||
if bomPresent:
|
||||
print "\tnon-ASCII file detected. Please modify by hand:", filePath
|
||||
return
|
||||
|
||||
|
||||
with open(filePath, "wb") as f:
|
||||
if DEBUG:
|
||||
print "\tmodified:\t", filePath
|
||||
|
@ -80,14 +80,14 @@ def handleFile(filePath):
|
|||
# print "\tBOM was detected for:", filePath
|
||||
# f.write(u"\ufeff")
|
||||
f.write(ECMA_LICENSE)
|
||||
|
||||
|
||||
writeIt = False
|
||||
for line in origLines:
|
||||
if writeIt:
|
||||
f.write(line)
|
||||
elif OLD_LICENSE_LAST_LINE.search(line)!=None:
|
||||
writeIt = True
|
||||
|
||||
|
||||
if not writeIt:
|
||||
print "\tError - didn't find end of the original license:\t", filePath
|
||||
|
||||
|
@ -100,8 +100,8 @@ if __name__=="__main__":
|
|||
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)
|
||||
print "Done!"
|
||||
print "Done!"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# Copyright (c) 2012 Ecma International. All rights reserved.
|
||||
# Copyright (c) 2012 Ecma International. All rights reserved.
|
||||
# Ecma International makes this code available under the terms and conditions set
|
||||
# forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
|
||||
# "Use Terms"). Any redistribution of this code must retain the above
|
||||
# forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
|
||||
# "Use Terms"). Any redistribution of this code must retain the above
|
||||
# copyright and this notice and otherwise comply with the Use Terms.
|
||||
|
||||
#--Imports---------------------------------------------------------------------
|
||||
|
@ -34,15 +34,15 @@ def handleFile(filePath, partialPath):
|
|||
global PRE_PATH
|
||||
tempPath = filePath.replace(partialPath + os.path.sep, "", 1)
|
||||
tempPath = tempPath.replace(os.path.sep, "/")
|
||||
|
||||
|
||||
with open(filePath, "rb") as f:
|
||||
origLines = f.readlines()
|
||||
|
||||
|
||||
with open(filePath, "wb") as f:
|
||||
pathHit = False
|
||||
#testHit = False
|
||||
#descriptHit = False
|
||||
|
||||
|
||||
for line in origLines:
|
||||
#TODO?
|
||||
#if (not testHit) and re.match("^$", line)!=None:
|
||||
|
@ -56,8 +56,8 @@ def handleFile(filePath, partialPath):
|
|||
if line.endswith("\r\n"):
|
||||
lineEnding = "\r\n"
|
||||
pathHit = True
|
||||
line = re.sub(r"@path\s+[^$]+$", #"\"[^\"]*\"",
|
||||
r"@path %s%s" % (PRE_PATH + tempPath, lineEnding),
|
||||
line = re.sub(r"@path\s+[^$]+$", #"\"[^\"]*\"",
|
||||
r"@path %s%s" % (PRE_PATH + tempPath, lineEnding),
|
||||
line)
|
||||
#TODO?
|
||||
#elif (not descriptHit) and re.search("description\s*:\s*\"", line)!=None:
|
||||
|
@ -74,8 +74,8 @@ if __name__=="__main__":
|
|||
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!"
|
||||
print "Done!"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# Copyright (c) 2012 Ecma International. All rights reserved.
|
||||
# Copyright (c) 2012 Ecma International. All rights reserved.
|
||||
# Ecma International makes this code available under the terms and conditions set
|
||||
# forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
|
||||
# "Use Terms"). Any redistribution of this code must retain the above
|
||||
# forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
|
||||
# "Use Terms"). Any redistribution of this code must retain the above
|
||||
# copyright and this notice and otherwise comply with the Use Terms.
|
||||
|
||||
#--Imports---------------------------------------------------------------------
|
||||
|
@ -32,20 +32,20 @@ def getAllJSFiles(dirName):
|
|||
#------------------------------------------------------------------------------
|
||||
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:
|
||||
if (not testHit) and re.match("^$", line)!=None:
|
||||
#Throw away empty lines until we hit the first test function
|
||||
|
@ -71,7 +71,7 @@ def getPartialPath(tc):
|
|||
sys.exit(1)
|
||||
elif not ("." in tc):
|
||||
tc = tc.replace("-", ".0-", 1)
|
||||
|
||||
|
||||
#Generate the partial path of the test case
|
||||
tempList = tc.split("-",1)[0].split(".")
|
||||
partialPath = ""
|
||||
|
@ -96,15 +96,15 @@ if __name__=="__main__":
|
|||
help='Command used to remove a test file from source control')
|
||||
__parser.add_argument('tc', action='store',
|
||||
help='test case to move')
|
||||
|
||||
|
||||
ARGS = __parser.parse_args()
|
||||
if not os.path.exists(ARGS.path):
|
||||
print "Cannot fix tests in '%s' when it doesn't exist!" % ARGS.path
|
||||
sys.exit(1)
|
||||
elif not os.path.isfile(ARGS.tc):
|
||||
print "Cannot move '%s' when it doesn't exist!" % ARGS.tc
|
||||
|
||||
|
||||
partialPath = getPartialPath(ARGS.tc)
|
||||
|
||||
|
||||
print "Done!", partialPath
|
||||
|
||||
|
||||
print "Done!", partialPath
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# Copyright (c) 2012 Ecma International. All rights reserved.
|
||||
# Copyright (c) 2012 Ecma International. All rights reserved.
|
||||
# Ecma International makes this code available under the terms and conditions set
|
||||
# forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
|
||||
# "Use Terms"). Any redistribution of this code must retain the above
|
||||
# forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
|
||||
# "Use Terms"). Any redistribution of this code must retain the above
|
||||
# copyright and this notice and otherwise comply with the Use Terms.
|
||||
|
||||
#--Imports---------------------------------------------------------------------
|
||||
|
@ -14,7 +14,7 @@ import re
|
|||
|
||||
#List of regular expressions covering suspect code snippets which might be
|
||||
#invalid from an ES5 POV
|
||||
QUESTIONABLE_RE_LIST = ["window",
|
||||
QUESTIONABLE_RE_LIST = ["window",
|
||||
"document(?!ation)",
|
||||
"alert",
|
||||
"setTimeout",
|
||||
|
@ -42,7 +42,7 @@ def getAllJSFiles(dirName):
|
|||
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:
|
||||
|
@ -58,8 +58,8 @@ if __name__=="__main__":
|
|||
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!"
|
||||
print "Done!"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# Copyright (c) 2012 Ecma International. All rights reserved.
|
||||
# Copyright (c) 2012 Ecma International. All rights reserved.
|
||||
# Ecma International makes this code available under the terms and conditions set
|
||||
# forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
|
||||
# "Use Terms"). Any redistribution of this code must retain the above
|
||||
# forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
|
||||
# "Use Terms"). Any redistribution of this code must retain the above
|
||||
# copyright and this notice and otherwise comply with the Use Terms.
|
||||
|
||||
#--Imports---------------------------------------------------------------------
|
||||
|
@ -17,5 +17,5 @@ def convertDocString(docString):
|
|||
envelope = parseTestRecord.parseTestRecord(docString, '')
|
||||
envelope.pop('header', None)
|
||||
envelope.pop('test', None)
|
||||
|
||||
|
||||
return envelope
|
||||
|
|
|
@ -21,7 +21,7 @@ def load(str):
|
|||
line = lines.pop(0)
|
||||
if myIsAllSpaces(line):
|
||||
continue
|
||||
result = mYamlKV.match(line)
|
||||
result = mYamlKV.match(line)
|
||||
if result:
|
||||
if not dict:
|
||||
dict = {}
|
||||
|
@ -62,7 +62,7 @@ def myMultilineList(lines, value):
|
|||
indent = indent or leading
|
||||
value += [myReadOneLine(myRemoveListHeader(indent, line))]
|
||||
return (lines, value)
|
||||
|
||||
|
||||
def myRemoveListHeader(indent, line):
|
||||
line = line[indent:]
|
||||
return mYamlMultilineList.match(line).group(1)
|
||||
|
@ -81,7 +81,7 @@ def myReadOneLine(value):
|
|||
except ValueError:
|
||||
pass
|
||||
return value
|
||||
|
||||
|
||||
def myFlowList(value):
|
||||
result = mYamlListPattern.match(value)
|
||||
values = result.group(1).split(",")
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# Copyright (c) 2012 Ecma International. All rights reserved.
|
||||
# Copyright (c) 2012 Ecma International. All rights reserved.
|
||||
# Ecma International makes this code available under the terms and conditions set
|
||||
# forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
|
||||
# "Use Terms"). Any redistribution of this code must retain the above
|
||||
# forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
|
||||
# "Use Terms"). Any redistribution of this code must retain the above
|
||||
# copyright and this notice and otherwise comply with the Use Terms.
|
||||
|
||||
#--Imports---------------------------------------------------------------------
|
||||
|
@ -87,14 +87,14 @@ def createDepDirs(dirName):
|
|||
os.mkdir(dirName)
|
||||
|
||||
def test262PathToConsoleFile(path):
|
||||
stuff = os.path.join(TEST262_CONSOLE_CASES_DIR,
|
||||
stuff = os.path.join(TEST262_CONSOLE_CASES_DIR,
|
||||
path.replace("/", os.path.sep))
|
||||
createDepDirs(os.path.dirname(stuff))
|
||||
return stuff
|
||||
|
||||
|
||||
def getJSCount(dirName):
|
||||
'''
|
||||
Returns the total number of *.js files (recursively) under a given
|
||||
Returns the total number of *.js files (recursively) under a given
|
||||
directory, dirName.
|
||||
'''
|
||||
retVal = 0
|
||||
|
@ -143,7 +143,7 @@ def dirWalker(dirName):
|
|||
def isTestStarted(line):
|
||||
'''
|
||||
Used to detect if we've gone past extraneous test comments in a test case.
|
||||
|
||||
|
||||
Note this is a naive approach on the sense that "/*abc*/" could be on one
|
||||
line. However, we know for a fact this is not the case in IE Test Center
|
||||
or Sputnik tests.
|
||||
|
@ -170,7 +170,7 @@ for temp in os.listdir(TEST262_CASES_DIR):
|
|||
if not os.path.exists(temp):
|
||||
print "The expected ES5 test directory,", temp, "did not exist!"
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
if temp.find("/.") != -1:
|
||||
# skip hidden files on Unix, such as ".DS_Store" on Mac
|
||||
continue
|
||||
|
@ -187,11 +187,11 @@ for chapter in TEST_SUITE_SECTIONS:
|
|||
testsList = {}
|
||||
sect = {}
|
||||
sect["name"] = "Chapter - " + chapterName
|
||||
|
||||
|
||||
#create an array for tests in a chapter
|
||||
tests = []
|
||||
sourceFiles = getAllJSFiles(chapter)
|
||||
|
||||
|
||||
if len(sourceFiles)!=0:
|
||||
excluded = 0
|
||||
testCount = 0
|
||||
|
@ -199,13 +199,13 @@ for chapter in TEST_SUITE_SECTIONS:
|
|||
#TODO - use something other than the hard-coded 'TestCases' below
|
||||
testPath = "TestCases" + \
|
||||
test.split(TEST262_CASES_DIR, 1)[1].replace("\\", "/")
|
||||
testName=test.rsplit(".", 1)[0]
|
||||
testName=test.rsplit(".", 1)[0]
|
||||
testName=testName.rsplit(os.path.sep, 1)[1]
|
||||
if EXCLUDE_LIST.count(testName)==0:
|
||||
# dictionary for each test
|
||||
testDict = {}
|
||||
testDict["path"] = testPath
|
||||
|
||||
|
||||
tempFile = open(test, "rb")
|
||||
scriptCode = tempFile.readlines()
|
||||
tempFile.close()
|
||||
|
@ -232,7 +232,7 @@ for chapter in TEST_SUITE_SECTIONS:
|
|||
scriptCodeContentB64 = base64.b64encode(scriptCodeContent)
|
||||
|
||||
#add the test encoded code node to our test dictionary
|
||||
testDict["code"] = scriptCodeContentB64
|
||||
testDict["code"] = scriptCodeContentB64
|
||||
#now close the dictionary for the test
|
||||
|
||||
#now get the metadata added.
|
||||
|
@ -245,7 +245,7 @@ for chapter in TEST_SUITE_SECTIONS:
|
|||
|
||||
#this adds the test to our tests array
|
||||
tests.append(testDict)
|
||||
|
||||
|
||||
if ARGS.console:
|
||||
with open(test262PathToConsoleFile(testDict["path"]),
|
||||
"w") as fConsole:
|
||||
|
@ -268,7 +268,7 @@ for chapter in TEST_SUITE_SECTIONS:
|
|||
|
||||
#create a node for the tests and add it to our testsLists
|
||||
testsList["testsCollection"] = sect
|
||||
with open(os.path.join(TEST262_WEB_CASES_DIR, chapterName + ".json"),
|
||||
with open(os.path.join(TEST262_WEB_CASES_DIR, chapterName + ".json"),
|
||||
"w") as f:
|
||||
json.dump(testsList, f, separators=(',',':'), sort_keys=True,
|
||||
indent=0)
|
||||
|
@ -279,12 +279,12 @@ for chapter in TEST_SUITE_SECTIONS:
|
|||
CHAPTER_TEST_CASES_JSON["numTests"] = int(sect["numTests"])
|
||||
CHAPTER_TEST_CASES_JSON["testSuite"] = \
|
||||
[WEBSITE_CASES_PATH + chapterName + ".json"]
|
||||
with open(os.path.join(TEST262_WEB_CASES_DIR,
|
||||
"testcases_%s.json" % chapterName),
|
||||
with open(os.path.join(TEST262_WEB_CASES_DIR,
|
||||
"testcases_%s.json" % chapterName),
|
||||
"w") as f:
|
||||
json.dump(CHAPTER_TEST_CASES_JSON, f, separators=(',',':'),
|
||||
sort_keys=True, indent=0)
|
||||
generateHarness(ARGS.type, "testcases_%s.json" % chapterName,
|
||||
generateHarness(ARGS.type, "testcases_%s.json" % chapterName,
|
||||
chapterName.replace("ch", "Chapter "))
|
||||
|
||||
#add the name of the chapter test to our complete list
|
||||
|
@ -321,9 +321,9 @@ if TEST262_HARNESS_DIR!=TEST262_WEB_HARNESS_DIR:
|
|||
if x.endswith(".js")]:
|
||||
toFilenameList = [ os.path.join(TEST262_WEB_HARNESS_DIR, filename)]
|
||||
if ARGS.console:
|
||||
toFilenameList.append(os.path.join(TEST262_CONSOLE_HARNESS_DIR,
|
||||
toFilenameList.append(os.path.join(TEST262_CONSOLE_HARNESS_DIR,
|
||||
filename))
|
||||
|
||||
|
||||
for toFilename in toFilenameList:
|
||||
if not os.path.exists(os.path.dirname(toFilename)):
|
||||
os.mkdir(os.path.dirname(toFilename))
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# Copyright (c) 2012 Ecma International. All rights reserved.
|
||||
# Copyright (c) 2012 Ecma International. All rights reserved.
|
||||
# Ecma International makes this code available under the terms and conditions set
|
||||
# forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
|
||||
# "Use Terms"). Any redistribution of this code must retain the above
|
||||
# forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
|
||||
# "Use Terms"). Any redistribution of this code must retain the above
|
||||
# copyright and this notice and otherwise comply with the Use Terms.
|
||||
|
||||
#--Imports---------------------------------------------------------------------
|
||||
|
@ -22,7 +22,7 @@ ONE_JSON_PER_CHAPTER = False
|
|||
TESTCASELIST_PER_JSON = True
|
||||
|
||||
#Path to the root of the Hg repository (relative to this file's location)
|
||||
TEST262_ROOT = os.path.join(os.path.dirname(os.path.realpath(__file__)),
|
||||
TEST262_ROOT = os.path.join(os.path.dirname(os.path.realpath(__file__)),
|
||||
"..", "..")
|
||||
TEST262_ROOT = os.path.abspath(TEST262_ROOT)
|
||||
|
||||
|
@ -40,9 +40,9 @@ TEST262_CONSOLE_CASES_DIR = os.path.join(TEST262_ROOT, CONSOLE_SHORT_NAME)
|
|||
|
||||
#Directory containing the website's test harness (ported over from
|
||||
#TEST262_HARNESS_DIR)
|
||||
TEST262_WEB_HARNESS_DIR = os.path.join(TEST262_ROOT, WEBSITE_SHORT_NAME,
|
||||
TEST262_WEB_HARNESS_DIR = os.path.join(TEST262_ROOT, WEBSITE_SHORT_NAME,
|
||||
"harness")
|
||||
TEST262_CONSOLE_HARNESS_DIR = os.path.join(TEST262_ROOT, CONSOLE_SHORT_NAME,
|
||||
TEST262_CONSOLE_HARNESS_DIR = os.path.join(TEST262_ROOT, CONSOLE_SHORT_NAME,
|
||||
"harness")
|
||||
|
||||
#Path to the ported test case files on the actual website as opposed
|
||||
|
@ -66,20 +66,20 @@ __lastHarnessType = None
|
|||
def generateHarness(harnessType, jsonName, title):
|
||||
global TEMPLATE_LINES
|
||||
global __lastHarnessType
|
||||
|
||||
|
||||
#TODO: temp hack to make experimental internationalization tests work
|
||||
if jsonName=="testcases_intl402.json":
|
||||
harnessType = "intl402"
|
||||
elif jsonName=="testcases_bestPractice.json":
|
||||
harnessType = "bestPractice"
|
||||
|
||||
|
||||
if TEMPLATE_LINES==None or harnessType!=__lastHarnessType:
|
||||
__lastHarnessType = harnessType
|
||||
TEMPLATE_LINES = []
|
||||
with open(os.path.join(os.getcwd(), "templates",
|
||||
"runner." + harnessType + ".html"), "r") as f:
|
||||
TEMPLATE_LINES = f.readlines()
|
||||
fileName = os.path.join(TEST262_ROOT, WEBSITE_SHORT_NAME,
|
||||
fileName = os.path.join(TEST262_ROOT, WEBSITE_SHORT_NAME,
|
||||
jsonName.replace(".json", ".html"))
|
||||
fileNameExists = False
|
||||
if os.path.exists(fileName):
|
||||
|
@ -91,7 +91,7 @@ def generateHarness(harnessType, jsonName, title):
|
|||
f.write(" var TEST_LIST_PATH = \"json/" + jsonName + \
|
||||
"\";" + os.linesep)
|
||||
#elif "ECMAScript 5" in line:
|
||||
# f.write(line.replace("ECMAScript 5",
|
||||
# f.write(line.replace("ECMAScript 5",
|
||||
# "ECMAScript 5: %s" % title))
|
||||
else:
|
||||
f.write(line)
|
||||
|
@ -101,7 +101,7 @@ def generateHarness(harnessType, jsonName, title):
|
|||
#------------------------------------------------------------------------------
|
||||
class SCAbstraction(object):
|
||||
'''
|
||||
A class which abstracts working with source control systems in relation to
|
||||
A class which abstracts working with source control systems in relation to
|
||||
generated test262 files. Useful when test262 is also used internally by
|
||||
browser implementors.
|
||||
'''
|
||||
|
@ -112,11 +112,11 @@ class SCAbstraction(object):
|
|||
'''
|
||||
if not(os.stat(filename).st_mode & stat.S_IWRITE):
|
||||
os.chmod(filename, stat.S_IWRITE)
|
||||
|
||||
|
||||
def add(self, filename):
|
||||
'''
|
||||
Source control add of a file.
|
||||
'''
|
||||
subprocess.call(["git", "add", filename])
|
||||
|
||||
|
||||
SC_HELPER = SCAbstraction()
|
||||
|
|
|
@ -69,7 +69,7 @@ def oldAttrParser(testRecord, body, name):
|
|||
raise Exception('Malformed "@" attribute: ' + name)
|
||||
propName = propMatch.group(0)
|
||||
propVal = stripStars(propText[len(propName):])
|
||||
|
||||
|
||||
if propName in testRecord:
|
||||
raise Exception('duplicate: ' + propName)
|
||||
testRecord[propName] = propVal;
|
||||
|
@ -89,7 +89,7 @@ def yamlAttrParser(testRecord, attrs, name):
|
|||
if key == "info":
|
||||
key = "commentary"
|
||||
testRecord[key] = value
|
||||
|
||||
|
||||
if 'flags' in testRecord:
|
||||
for flag in testRecord['flags']:
|
||||
testRecord[flag] = ""
|
||||
|
|
|
@ -47,7 +47,7 @@ class TestYAMLParsing(unittest.TestCase):
|
|||
name = 'fixtures/test262-yaml-headers.js'
|
||||
contents = slurpFile(name)
|
||||
record = convertDocString(contents)
|
||||
|
||||
|
||||
self.assertEqual("The production Block { } in strict code can't contain function declaration;\n", record['commentary'])
|
||||
|
||||
self.assertEqual("Trying to declare function at the Block statement",
|
||||
|
|
|
@ -29,7 +29,7 @@ class TestOldParsing(unittest.TestCase):
|
|||
name = 'fixtures/test262-old-headers.js'
|
||||
contents = slurpFile(name)
|
||||
record = parseTestRecord(contents, name)
|
||||
|
||||
|
||||
self.assertEqual("""// Copyright 2009 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.""",
|
||||
record['header'])
|
||||
|
@ -69,7 +69,7 @@ declaration;""", record['commentary'])
|
|||
1;
|
||||
"""
|
||||
, "name")
|
||||
|
||||
|
||||
def test_malformed(self):
|
||||
with self.assertRaisesRegexp(Exception, 'Malformed "@" attribute: name'):
|
||||
parseTestRecord("""
|
||||
|
@ -90,7 +90,7 @@ declaration;""", record['commentary'])
|
|||
self.assertEqual("@foo bar", stripStars("\n* @foo bar"))
|
||||
self.assertEqual("@foo bar", stripStars("\n *@foo bar"))
|
||||
|
||||
|
||||
|
||||
class TestYAMLParsing(unittest.TestCase):
|
||||
def test_test(self):
|
||||
self.assertTrue(True)
|
||||
|
@ -112,7 +112,7 @@ flags: [onlyStrict]
|
|||
|
||||
def test_yamlParse(self):
|
||||
text = """
|
||||
info: >
|
||||
info: >
|
||||
The production Block { } in strict code can't contain function
|
||||
declaration;
|
||||
description: Trying to declare function at the Block statement
|
||||
|
@ -150,7 +150,7 @@ flags: [onlyStrict]"""
|
|||
name = 'fixtures/test262-yaml-headers.js'
|
||||
contents = slurpFile(name)
|
||||
record = parseTestRecord(contents, name)
|
||||
|
||||
|
||||
self.assertEqual("""// Copyright 2009 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.""",
|
||||
record['header'])
|
||||
|
|
|
@ -43,7 +43,7 @@ class MockResult(object):
|
|||
def __init__(self, case):
|
||||
self.case = case
|
||||
|
||||
|
||||
|
||||
|
||||
class TestTestSuite(unittest.TestCase):
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ EXCLUDE_LIST = [x.getAttribute("id") for x in EXCLUDE_LIST]
|
|||
def BuildOptions():
|
||||
result = optparse.OptionParser()
|
||||
result.add_option("--command", default=None, help="The command-line to run")
|
||||
result.add_option("--tests", default=path.abspath('.'),
|
||||
result.add_option("--tests", default=path.abspath('.'),
|
||||
help="Path to the tests")
|
||||
result.add_option("--cat", default=False, action="store_true",
|
||||
help="Print packaged test code that would be run")
|
||||
|
@ -62,18 +62,18 @@ def BuildOptions():
|
|||
help="Print summary after running tests")
|
||||
result.add_option("--full-summary", default=False, action="store_true",
|
||||
help="Print summary and test output after running tests")
|
||||
result.add_option("--strict_only", default=False, action="store_true",
|
||||
result.add_option("--strict_only", default=False, action="store_true",
|
||||
help="Test only strict mode")
|
||||
result.add_option("--non_strict_only", default=False, action="store_true",
|
||||
result.add_option("--non_strict_only", default=False, action="store_true",
|
||||
help="Test only non-strict mode")
|
||||
# TODO: Once enough tests are made strict compat, change the default
|
||||
# to "both"
|
||||
result.add_option("--unmarked_default", default="non_strict",
|
||||
result.add_option("--unmarked_default", default="non_strict",
|
||||
help="default mode for tests of unspecified strictness")
|
||||
result.add_option("--logname", help="Filename to save stdout to")
|
||||
result.add_option("--junitname", help="Filename to save test results in JUnit XML format")
|
||||
result.add_option("--loglevel", default="warning",
|
||||
help="sets log level to debug, info, warning, error, or critical")
|
||||
help="sets log level to debug, info, warning, error, or critical")
|
||||
result.add_option("--print-handle", default="print", help="Command to print from console")
|
||||
result.add_option("--list-includes", default=False, action="store_true",
|
||||
help="List includes required by tests")
|
||||
|
@ -169,13 +169,13 @@ class TestResult(object):
|
|||
err = self.stderr.strip()
|
||||
if len(err) > 0:
|
||||
target.write("--- errors --- \n %s" % err)
|
||||
|
||||
|
||||
def XmlAssemble(self, result):
|
||||
test_name = self.case.GetName()
|
||||
test_mode = self.case.GetMode()
|
||||
testCaseElement = xmlj.Element("testcase")
|
||||
testpath = self.TestPathManipulation(test_name)
|
||||
testCaseElement.attrib["classname"] = "%s.%s" % (testpath[0] , testpath[1])
|
||||
testCaseElement.attrib["classname"] = "%s.%s" % (testpath[0] , testpath[1])
|
||||
testCaseElement.attrib["name"] = "%s %s" % (testpath[2].replace('.','_') , test_mode)
|
||||
if self.HasUnexpectedOutcome():
|
||||
failureElement = xmlj.Element("failure")
|
||||
|
@ -198,19 +198,19 @@ class TestResult(object):
|
|||
else:
|
||||
testpackage = testclass
|
||||
return(testpackage,testclass,testcase)
|
||||
|
||||
def HasFailed(self):
|
||||
|
||||
def HasFailed(self):
|
||||
return self.exit_code != 0
|
||||
|
||||
def AsyncHasFailed(self):
|
||||
def AsyncHasFailed(self):
|
||||
return 'Test262:AsyncTestComplete' not in self.stdout
|
||||
|
||||
def HasUnexpectedOutcome(self):
|
||||
if self.case.IsAsyncTest():
|
||||
if self.case.IsAsyncTest():
|
||||
return self.AsyncHasFailed() or self.HasFailed()
|
||||
elif self.case.IsNegative():
|
||||
elif self.case.IsNegative():
|
||||
return not (self.HasFailed() and self.case.NegativeMatch(self.GetErrorOutput()))
|
||||
else:
|
||||
else:
|
||||
return self.HasFailed()
|
||||
|
||||
def GetErrorOutput(self):
|
||||
|
@ -235,7 +235,7 @@ class TestCase(object):
|
|||
del testRecord["header"]
|
||||
testRecord.pop("commentary", None) # do not throw if missing
|
||||
self.testRecord = testRecord;
|
||||
|
||||
|
||||
def NegativeMatch(self, stderr):
|
||||
neg = re.compile(self.GetNegative())
|
||||
return re.search(neg, stderr)
|
||||
|
@ -264,7 +264,7 @@ class TestCase(object):
|
|||
def IsNoStrict(self):
|
||||
return 'noStrict' in self.testRecord
|
||||
|
||||
def IsAsyncTest(self):
|
||||
def IsAsyncTest(self):
|
||||
return '$DONE' in self.test
|
||||
|
||||
def GetIncludeList(self):
|
||||
|
@ -398,7 +398,7 @@ class TestSuite(object):
|
|||
self.unmarked_default = unmarked_default
|
||||
self.print_handle = print_handle
|
||||
self.include_cache = { }
|
||||
|
||||
|
||||
|
||||
def Validate(self):
|
||||
if not path.exists(self.test_root):
|
||||
|
@ -530,7 +530,7 @@ class TestSuite(object):
|
|||
SkipElement.attrib["message"] = unicode(EXCLUDE_REASON[x].firstChild.nodeValue)
|
||||
SkipCaseElement.append(SkipElement)
|
||||
TestSuiteElement.append(SkipCaseElement)
|
||||
|
||||
|
||||
for case in cases:
|
||||
result = case.Run(command_template)
|
||||
if junitfile:
|
||||
|
@ -541,7 +541,7 @@ class TestSuite(object):
|
|||
if logname:
|
||||
self.WriteLog(result)
|
||||
progress.HasRun(result)
|
||||
|
||||
|
||||
if print_summary:
|
||||
self.PrintSummary(progress, logname)
|
||||
if full_summary:
|
||||
|
@ -582,15 +582,15 @@ class TestSuite(object):
|
|||
includes_dict.update(includes)
|
||||
|
||||
print includes_dict
|
||||
|
||||
|
||||
|
||||
def Main():
|
||||
code = 0
|
||||
parser = BuildOptions()
|
||||
(options, args) = parser.parse_args()
|
||||
ValidateOptions(options)
|
||||
test_suite = TestSuite(options.tests,
|
||||
options.strict_only,
|
||||
test_suite = TestSuite(options.tests,
|
||||
options.strict_only,
|
||||
options.non_strict_only,
|
||||
options.unmarked_default,
|
||||
options.print_handle)
|
||||
|
@ -616,7 +616,7 @@ def Main():
|
|||
options.logname,
|
||||
options.junitname)
|
||||
return code
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
try:
|
||||
code = Main()
|
||||
|
|
Loading…
Reference in New Issue