# 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 # copyright and this notice and otherwise comply with the Use Terms. #--IMPORTS--------------------------------------------------------------------- import os import sys #--GLOBALS--------------------------------------------------------------------- CVG_DICT = {} #--HELPERS--------------------------------------------------------------------- def getCoverageData(directory): tempList = os.listdir(directory) #Build up a list of directories under 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 #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 #it as well for x in dirList: getCoverageData(os.path.join(directory, x)) def emitCoverageData(cvgDict): totalTests = 0 totalSections = 0 keyList = cvgDict.keys() keyList.sort(chapterCompare) for cvgKey in keyList: print cvgKey, ",", cvgDict[cvgKey] totalSections+=1 totalTests+=cvgDict[cvgKey] print print "Total number of tests is:", totalTests, "." print "These tests cover", totalSections, "ECMAScript 5 sections." def chapterCompare(x, y): if ("." in x) and ("." in y): try: x1 = int(x[0:x.index(".")]) y1 = int(y[0:y.index(".")]) if x1==y1: return chapterCompare(x[x.index(".")+1:], y[y.index(".")+1:]) return cmp(x1, y1) except ValueError: pass return cmp(x, y) #--MAIN------------------------------------------------------------------------ startDir = sys.argv[1] getCoverageData(startDir) print "Emitting ECMAScript 5 coverage data for", startDir, "..." emitCoverageData(CVG_DICT)