binman: Don't show errors for failed tests
authorSimon Glass <sjg@chromium.org>
Tue, 14 May 2019 21:53:38 +0000 (15:53 -0600)
committerSimon Glass <sjg@chromium.org>
Wed, 10 Jul 2019 22:52:45 +0000 (16:52 -0600)
An unfortunate new feature in Python 3.5 causes binman to print errors for
non-existent tests, when the test filter is used. Work around this by
detecting the unwanted tests and removing them from the result.

Signed-off-by: Simon Glass <sjg@chromium.org>
tools/binman/binman.py

index 4206d2b0e3d4597a0fcf6ca4bc6fac04e5a7672a..aad2e9c8bc4224ab303e49e674697689105faf34 100755 (executable)
@@ -87,6 +87,18 @@ def RunTests(debug, processes, args):
     else:
         suite.run(result)
 
+    # Remove errors which just indicate a missing test. Since Python v3.5 If an
+    # ImportError or AttributeError occurs while traversing name then a
+    # synthetic test that raises that error when run will be returned. These
+    # errors are included in the errors accumulated by result.errors.
+    if test_name:
+        errors = []
+        for test, err in result.errors:
+            if ("has no attribute '%s'" % test_name) not in err:
+                errors.append((test, err))
+            result.testsRun -= 1
+        result.errors = errors
+
     print(result)
     for test, err in result.errors:
         print(test.id(), err)