[Lldb-commits] [lldb] r218871 - gtest runner: now always does a clean step after running.

Todd Fiala todd.fiala at gmail.com
Thu Oct 2 07:07:46 PDT 2014


Author: tfiala
Date: Thu Oct  2 09:07:46 2014
New Revision: 218871

URL: http://llvm.org/viewvc/llvm-project?rev=218871&view=rev
Log:
gtest runner: now always does a clean step after running.

* Checks for any 'clean' arg, setting clean-only mode.
* If clean-only mode, skip the make.
* Adds the equivalent of os.devnull in a way that supports the file-like 'write' operation.
* Uses a null sysout/syserr for the clean step so we don't see noise from cleaning.
* Now always runs the clean step after a real test run so we don't have cruft left over after a test run.

Modified:
    lldb/trunk/gtest/do-gtest.py

Modified: lldb/trunk/gtest/do-gtest.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/gtest/do-gtest.py?rev=218871&r1=218870&r2=218871&view=diff
==============================================================================
--- lldb/trunk/gtest/do-gtest.py (original)
+++ lldb/trunk/gtest/do-gtest.py Thu Oct  2 09:07:46 2014
@@ -8,6 +8,15 @@ import select
 import subprocess
 import sys
 
+# Wrapping this rather than os.devnull since os.devnull does not seeem to implement 'write'.
+class NullWriter(object):
+    def write (self, *args):
+        pass
+    def writelines (self, *args):
+        pass
+    def close (self, *args):
+        pass
+
 def find_makefile_dirs():
     makefile_dirs = []
     for root, dirs, files in os.walk("."):
@@ -58,7 +67,7 @@ def line_combine_printer(file, previous_
                 print(new_line, file=file)
             return ("", 0)
 
-def call_make(makefile_dir, extra_args=None):
+def call_make(makefile_dir, extra_args=None, stdout=sys.stdout, stderr=sys.stderr):
     command = ["make", "-C", makefile_dir]
     if extra_args:
         command.extend(extra_args)
@@ -78,10 +87,10 @@ def call_make(makefile_dir, extra_args=N
         for fd in select_result[0]:
             if fd == proc.stdout.fileno():
                 line = proc.stdout.readline()
-                stdout_data = line_combine_printer(sys.stdout, stdout_data, filter_run_line(sub_expr, line.rstrip()))
+                stdout_data = line_combine_printer(stdout, stdout_data, filter_run_line(sub_expr, line.rstrip()))
             elif fd == proc.stderr.fileno():
                 line = proc.stderr.readline()
-                stderr_data = line_combine_printer(sys.stderr, stderr_data, filter_run_line(sub_expr, line.rstrip()))
+                stderr_data = line_combine_printer(stderr, stderr_data, filter_run_line(sub_expr, line.rstrip()))
 
         proc_retval = proc.poll()
         if proc_retval != None:
@@ -91,7 +100,7 @@ def call_make(makefile_dir, extra_args=N
             while True:
                 line = proc.stdout.readline().rstrip()
                 if line and len(line) > 0:
-                    stdout_data = line_combine_printer(sys.stdout, stdout_data, filter_run_line(sub_expr, line))
+                    stdout_data = line_combine_printer(stdout, stdout_data, filter_run_line(sub_expr, line))
                 else:
                     break
 
@@ -99,7 +108,7 @@ def call_make(makefile_dir, extra_args=N
             while True:
                 line = proc.stderr.readline().rstrip()
                 if line and len(line) > 0:
-                    stderr_data = line_combine_printer(sys.stderr, stderr_data, filter_run_line(sub_expr, line))
+                    stderr_data = line_combine_printer(stderr, stderr_data, filter_run_line(sub_expr, line))
                 else:
                     break
 
@@ -107,16 +116,19 @@ def call_make(makefile_dir, extra_args=N
 
 
 global_retval = 0
-extra_args = None
 
-if len(sys.argv) > 1:
-    if sys.argv[1] == 'clean':
-        extra_args = ['clean']
+do_clean_only = ('clean' in sys.argv)
 
 for makefile_dir in find_makefile_dirs():
-    print("found makefile dir: {}".format(makefile_dir))
-    retval = call_make(makefile_dir, extra_args)
-    if retval != 0:
-        global_retval = retval
+    # If we're not only cleaning, we do the normal build.
+    if not do_clean_only:
+        print("making: {}".format(makefile_dir))
+        retval = call_make(makefile_dir)
+        # Remember any errors that happen here.
+        if retval != 0:
+            global_retval = retval
+
+    # Now clean
+    call_make(makefile_dir, ['clean'], stdout=NullWriter(), stderr=NullWriter())
         
 sys.exit(global_retval)





More information about the lldb-commits mailing list