[Lldb-commits] [lldb] r244783 - Refactor dosep to use list comprehension. NFC.

Chaoren Lin via lldb-commits lldb-commits at lists.llvm.org
Wed Aug 12 11:02:53 PDT 2015


Author: chaoren
Date: Wed Aug 12 13:02:53 2015
New Revision: 244783

URL: http://llvm.org/viewvc/llvm-project?rev=244783&view=rev
Log:
Refactor dosep to use list comprehension. NFC.

Reviewers: zturner

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D11910

Modified:
    lldb/trunk/test/dosep.py

Modified: lldb/trunk/test/dosep.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/dosep.py?rev=244783&r1=244782&r2=244783&view=diff
==============================================================================
--- lldb/trunk/test/dosep.py (original)
+++ lldb/trunk/test/dosep.py Wed Aug 12 13:02:53 2015
@@ -153,15 +153,11 @@ def call_with_timeout(command, timeout,
         report_test_pass(name, output[1])
     else:
         report_test_failure(name, command, output[1])
-    return exit_status, passes, failures
+    return name, exit_status, passes, failures
 
 def process_dir(root, files, test_root, dotest_argv):
     """Examine a directory for tests, and invoke any found within it."""
-    timed_out = []
-    failed = []
-    passed = []
-    pass_sub_count = 0
-    fail_sub_count = 0
+    results = []
     for name in files:
         script_file = os.path.join(test_root, "dotest.py")
         command = ([sys.executable, script_file] +
@@ -172,18 +168,19 @@ def process_dir(root, files, test_root,
 
         timeout = os.getenv("LLDB_%s_TIMEOUT" % timeout_name) or getDefaultTimeout(dotest_options.lldb_platform_name)
 
-        exit_status, pass_count, fail_count = call_with_timeout(command, timeout, name)
+        results.append(call_with_timeout(command, timeout, name))
 
-        pass_sub_count = pass_sub_count + pass_count
-        fail_sub_count = fail_sub_count + fail_count
+    # result = (name, status, passes, failures)
+    timed_out = [name for name, status, _, _ in results
+                 if status == eTimedOut]
+    passed = [name for name, status, _, _ in results
+              if status == ePassed]
+    failed = [name for name, status, _, _ in results
+              if status != ePassed]
+    pass_count = sum([result[2] for result in results])
+    fail_count = sum([result[3] for result in results])
 
-        if exit_status == ePassed:
-            passed.append(name)
-        else:
-            if eTimedOut == exit_status:
-                timed_out.append(name)
-            failed.append(name)
-    return (timed_out, failed, passed, fail_sub_count, pass_sub_count)
+    return (timed_out, passed, failed, pass_count, fail_count)
 
 in_q = None
 out_q = None
@@ -191,8 +188,7 @@ out_q = None
 def process_dir_worker(arg_tuple):
     """Worker thread main loop when in multithreaded mode.
     Takes one directory specification at a time and works on it."""
-    (root, files, test_root, dotest_argv) = arg_tuple
-    return process_dir(root, files, test_root, dotest_argv)
+    return process_dir(*arg_tuple)
 
 def walk_and_invoke(test_directory, test_subdir, dotest_argv, num_threads):
     """Look for matched files and invoke test driver on each one.
@@ -237,25 +233,16 @@ def walk_and_invoke(test_directory, test
                       dotest_options))
         test_results = pool.map(process_dir_worker, test_work_items)
     else:
-        test_results = []
-        for work_item in test_work_items:
-            test_results.append(process_dir_worker(work_item))
-
-    timed_out = []
-    failed = []
-    passed = []
-    fail_sub_count = 0
-    pass_sub_count = 0
-
-    for test_result in test_results:
-        (dir_timed_out, dir_failed, dir_passed, dir_fail_sub_count, dir_pass_sub_count) = test_result
-        timed_out += dir_timed_out
-        failed += dir_failed
-        passed += dir_passed
-        fail_sub_count = fail_sub_count + dir_fail_sub_count
-        pass_sub_count = pass_sub_count + dir_pass_sub_count
+        test_results = map(process_dir_worker, test_work_items)
+
+    # result = (timed_out, failed, passed, fail_count, pass_count)
+    timed_out = sum([result[0] for result in test_results], [])
+    passed = sum([result[1] for result in test_results], [])
+    failed = sum([result[2] for result in test_results], [])
+    pass_count = sum([result[3] for result in test_results])
+    fail_count = sum([result[4] for result in test_results])
 
-    return (timed_out, failed, passed, fail_sub_count, pass_sub_count)
+    return (timed_out, passed, failed, pass_count, fail_count)
 
 def getExpectedTimeouts(platform_name):
     # returns a set of test filenames that might timeout
@@ -413,11 +400,12 @@ Run lldb test suite using a separate pro
         num_threads = 1
 
     system_info = " ".join(platform.uname())
-    (timed_out, failed, passed, all_fails, all_passes) = walk_and_invoke(test_directory, test_subdir, dotest_argv, num_threads)
+    (timed_out, passed, failed, pass_count, fail_count) = walk_and_invoke(
+        test_directory, test_subdir, dotest_argv, num_threads)
 
     timed_out = set(timed_out)
-    num_test_files = len(failed) + len(passed)
-    num_tests = all_fails + all_passes
+    num_test_files = len(passed) + len(failed)
+    num_test_cases = pass_count + fail_count
 
     # move core files into session dir
     cores = find('core.*', test_subdir)
@@ -448,10 +436,10 @@ Run lldb test suite using a separate pro
         sys.stdout.write(" (%d failed) (%f%%)" % (
             len(failed), 100.0 * len(failed) / num_test_files))
     print
-    sys.stdout.write("Ran %d test cases" % num_tests)
-    if num_tests > 0:
+    sys.stdout.write("Ran %d test cases" % num_test_cases)
+    if num_test_cases > 0:
         sys.stdout.write(" (%d failed) (%f%%)" % (
-            all_fails, 100.0 * all_fails / num_tests))
+            fail_count, 100.0 * fail_count / num_test_cases))
     print
     if len(failed) > 0:
         failed.sort()




More information about the lldb-commits mailing list