From e0cf97e344cf17a4c55554a8a286273ee91b680b Mon Sep 17 00:00:00 2001 From: David Fugate Date: Tue, 7 Feb 2012 09:34:36 -0800 Subject: A conversion tool ripped Microsoft license headers out of globally scoped tests. Fixed --- tools/misc/AddLicenseHeader.py | 117 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 tools/misc/AddLicenseHeader.py (limited to 'tools') diff --git a/tools/misc/AddLicenseHeader.py b/tools/misc/AddLicenseHeader.py new file mode 100644 index 000000000..83d40a83a --- /dev/null +++ b/tools/misc/AddLicenseHeader.py @@ -0,0 +1,117 @@ +# Copyright (c) 2011 Microsoft Corporation +# +# Redistribution and use in source and binary forms, with or without modification, are permitted provided +# that the following conditions are met: +# * Redistributions of source code must retain the above copyright notice, this list of conditions and +# the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and +# the following disclaimer in the documentation and/or other materials provided with the distribution. +# * Neither the name of Microsoft nor the names of its contributors may be used to +# endorse or promote products derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#--Imports--------------------------------------------------------------------- +import argparse +import os +import sys +import re + +#--Globals--------------------------------------------------------------------- +MSFT_LICENSE = '''/// Copyright (c) 2012 Microsoft Corporation +/// +/// Redistribution and use in source and binary forms, with or without modification, are permitted provided +/// that the following conditions are met: +/// * Redistributions of source code must retain the above copyright notice, this list of conditions and +/// the following disclaimer. +/// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and +/// the following disclaimer in the documentation and/or other materials provided with the distribution. +/// * Neither the name of Microsoft nor the names of its contributors may be used to +/// endorse or promote products derived from this software without specific prior written permission. +/// +/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR +/// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +/// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +/// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +/// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +/// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +''' + +GOOGLE_LICENSE = '''// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +''' + +SPUTNIK_RE = re.compile(r"[\\/]S(bp)?[0-9]+\.[^\\/]+\.js$") +SPUTNIK_LINE_ONE = "the Sputnik authors" + +IETC_RE = re.compile(r"[\\/][0-9]+\.[^\\/]+\.js$") +IETC_LINE_ONE = "Microsoft Corporation" + +#------------------------------------------------------------------------------ +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, "rb") as f: + origLines = f.readlines() + + #Figure out which license header we'll be using + #if SPUTNIK_RE.search(filePath)!=None: + # licenseHeader = GOOGLE_LICENSE + # lineOne = SPUTNIK_LINE_ONE + if IETC_RE.search(filePath)!=None: + licenseHeader = MSFT_LICENSE + lineOne = IETC_LINE_ONE + else: + print "*!!!*:\t", filePath + return + + #See if it's already there + if lineOne in origLines[0]: + return + + with open(filePath, "wb") as f: + print "MODIFIED:\t", filePath + f.write(licenseHeader) + + for line in origLines: + f.write(line) + +#--Main------------------------------------------------------------------------ +if __name__=="__main__": + __parser = argparse.ArgumentParser(description='Tool used to fix test file license headers') + __parser.add_argument('tpath', action='store', + help='Full path to test cases. E.g., C:\repos\test262-msft\test\suite') + 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) + print "Done!" \ No newline at end of file -- cgit v1.2.3