aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorDavid Fugate <dfugate@microsoft.com>2012-02-07 09:34:36 -0800
committerDavid Fugate <dfugate@microsoft.com>2012-02-07 09:34:36 -0800
commite0cf97e344cf17a4c55554a8a286273ee91b680b (patch)
tree854e7d18dcc26a11cf2f08b63545ae4be5cd16fe /tools
parent37ebff11ed7de2f260bdb8985f78978f06832ddb (diff)
A conversion tool ripped Microsoft license headers out of globally scoped tests. Fixed
Diffstat (limited to 'tools')
-rw-r--r--tools/misc/AddLicenseHeader.py117
1 files changed, 117 insertions, 0 deletions
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