Index: tools/concatenate-files.py |
diff --git a/tools/push-to-trunk/script_test.py b/tools/concatenate-files.py |
old mode 100755 |
new mode 100644 |
similarity index 55% |
copy from tools/push-to-trunk/script_test.py |
copy to tools/concatenate-files.py |
index cbb2134f6d92f9d7a8c8e7dda3a3a2e9e1c0a45c..86bdf5638366ad5ee681ae2e4ab89499e4ebe18e |
--- a/tools/push-to-trunk/script_test.py |
+++ b/tools/concatenate-files.py |
@@ -1,4 +1,5 @@ |
#!/usr/bin/env python |
+# |
# Copyright 2014 the V8 project authors. All rights reserved. |
# Redistribution and use in source and binary forms, with or without |
# modification, are permitted provided that the following conditions are |
@@ -26,29 +27,49 @@ |
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
-# Wraps test execution with a coverage analysis. To get the best speed, the |
-# native python coverage version >= 3.7.1 should be installed. |
+# This utility concatenates several files into one. On Unix-like systems |
+# it is equivalent to: |
+# cat file1 file2 file3 ...files... > target |
+# |
+# The reason for writing a seperate utility is that 'cat' is not available |
+# on all supported build platforms, but Python is, and hence this provides |
+# us with an easy and uniform way of doing this on all platforms. |
+ |
+import optparse |
+ |
+ |
+def Concatenate(filenames): |
+ """Concatenate files. |
+ |
+ Args: |
+ files: Array of file names. |
+ The last name is the target; all earlier ones are sources. |
+ |
+ Returns: |
+ True, if the operation was successful. |
+ """ |
+ if len(filenames) < 2: |
+ print "An error occured generating %s:\nNothing to do." % filenames[-1] |
+ return False |
-import coverage |
-import os |
-import unittest |
-import sys |
+ try: |
+ with open(filenames[-1], "wb") as target: |
+ for filename in filenames[:-1]: |
+ with open(filename, "rb") as current: |
+ target.write(current.read()) |
+ return True |
+ except IOError as e: |
+ print "An error occured when writing %s:\n%s" % (filenames[-1], e) |
+ return False |
-def Main(argv): |
- script_path = os.path.dirname(os.path.abspath(__file__)) |
- cov = coverage.coverage(include=([os.path.join(script_path, '*.py')])) |
- cov.start() |
- import test_scripts |
- alltests = map(unittest.TestLoader().loadTestsFromTestCase, [ |
- test_scripts.ToplevelTest, |
- test_scripts.ScriptTest, |
- test_scripts.SystemTest, |
- ]) |
- unittest.TextTestRunner(verbosity=2).run(unittest.TestSuite(alltests)) |
- cov.stop() |
- print cov.report() |
+def main(): |
+ parser = optparse.OptionParser() |
+ parser.set_usage("""Concatenate several files into one. |
+ Equivalent to: cat file1 ... > target.""") |
+ (options, args) = parser.parse_args() |
+ exit(0 if Concatenate(args) else 1) |
-if __name__ == '__main__': |
- sys.exit(Main(sys.argv)) |
+if __name__ == "__main__": |
+ main() |