validate:launcher: First rely on the presence of criticals to set tests result
authorThibault Saunier <tsaunier@gnome.org>
Wed, 4 Mar 2015 16:30:41 +0000 (17:30 +0100)
committerThibault Saunier <tsaunier@gnome.org>
Wed, 4 Mar 2015 16:30:41 +0000 (17:30 +0100)
In the case of external applications they might not set their exist
code bases on the result of validate so we should rely on what
validates as to say first.

validate/launcher/baseclasses.py

index 56a016c97cb02d6f22f2a9d9f01cb2af2c073f8b..68d08b2fd31f8a804f3b27406b3b9072dfe5f3a0 100644 (file)
@@ -415,7 +415,7 @@ class GstValidateTest(Test):
                     errors.append(error)
 
         if ret == "[":
-            return "No critical"
+            return None
         else:
             return ret + "]"
 
@@ -426,21 +426,22 @@ class GstValidateTest(Test):
         self.debug("%s returncode: %s", self, self.process.returncode)
         if self.result == Result.TIMEOUT:
             self.set_result(Result.TIMEOUT, "Application timed out", "timeout")
-        elif self.process.returncode == 0:
-            self.set_result(Result.PASSED)
+
+        criticals = self.get_validate_criticals_errors()
+        if self.process.returncode == 139:
+            # FIXME Reimplement something like that if needed
+            # self.get_backtrace("SEGFAULT")
+            self.set_result(Result.FAILED,
+                            "Application segfaulted",
+                            "segfault")
+        elif criticals or self.process.returncode != 0:
+            if criticals is None:
+                criticals = "No criticals"
+            self.set_result(Result.FAILED,
+                            "Application returned %s (issues: %s)"
+                            % (self.process.returncode, criticals))
         else:
-            if self.process.returncode == 139:
-                # FIXME Reimplement something like that if needed
-                # self.get_backtrace("SEGFAULT")
-                self.set_result(Result.FAILED,
-                                "Application segfaulted",
-                                "segfault")
-            else:
-                self.set_result(Result.FAILED,
-                                "Application returned %s (issues: %s)" % (
-                                    self.process.returncode,
-                                    self.get_validate_criticals_errors()
-                                ))
+            self.set_result(Result.PASSED)
 
     def _parse_position(self, p):
         self.log("Parsing %s" % p)