Title: [111287] trunk/Tools
Revision
111287
Author
[email protected]
Date
2012-03-19 18:21:16 -0700 (Mon, 19 Mar 2012)

Log Message

webkitpy: allow instance data in TestFailure objects
https://bugs.webkit.org/show_bug.cgi?id=81580

Reviewed by Tony Chang.

Current TestFailures are basically enums, but it would be nice,
especially for crashes, if they contained the name and pid of
the process that crashed.

* Scripts/webkitpy/layout_tests/models/test_failures.py:
(TestFailure.message):
(FailureTimeout.message):
(FailureCrash):
(FailureCrash.__init__):
(FailureCrash.message):
(FailureMissingResult.message):
(FailureTextMismatch.message):
(FailureMissingImageHash.message):
(FailureMissingImage.message):
(FailureImageHashMismatch.message):
(FailureImageHashIncorrect.message):
(FailureReftestMismatch.message):
(FailureReftestMismatchDidNotOccur.message):
(FailureReftestNoImagesGenerated.message):
(FailureMissingAudio.message):
(FailureAudioMismatch.message):
* Scripts/webkitpy/layout_tests/models/test_failures_unittest.py:
(TestFailuresTest.test_equals):
(TestFailuresTest):
(TestFailuresTest.test_crashes):

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (111286 => 111287)


--- trunk/Tools/ChangeLog	2012-03-20 01:16:20 UTC (rev 111286)
+++ trunk/Tools/ChangeLog	2012-03-20 01:21:16 UTC (rev 111287)
@@ -1,3 +1,36 @@
+2012-03-19  Dirk Pranke  <[email protected]>
+
+        webkitpy: allow instance data in TestFailure objects
+        https://bugs.webkit.org/show_bug.cgi?id=81580
+
+        Reviewed by Tony Chang.
+
+        Current TestFailures are basically enums, but it would be nice,
+        especially for crashes, if they contained the name and pid of
+        the process that crashed.
+
+        * Scripts/webkitpy/layout_tests/models/test_failures.py:
+        (TestFailure.message):
+        (FailureTimeout.message):
+        (FailureCrash):
+        (FailureCrash.__init__):
+        (FailureCrash.message):
+        (FailureMissingResult.message):
+        (FailureTextMismatch.message):
+        (FailureMissingImageHash.message):
+        (FailureMissingImage.message):
+        (FailureImageHashMismatch.message):
+        (FailureImageHashIncorrect.message):
+        (FailureReftestMismatch.message):
+        (FailureReftestMismatchDidNotOccur.message):
+        (FailureReftestNoImagesGenerated.message):
+        (FailureMissingAudio.message):
+        (FailureAudioMismatch.message):
+        * Scripts/webkitpy/layout_tests/models/test_failures_unittest.py:
+        (TestFailuresTest.test_equals):
+        (TestFailuresTest):
+        (TestFailuresTest.test_crashes):
+
 2012-03-19  Brady Eidson  <[email protected]>
 
         <rdar://problem/10917120> and https://bugs.webkit.org/show_bug.cgi?id=81066

Modified: trunk/Tools/Scripts/webkitpy/layout_tests/models/test_failures.py (111286 => 111287)


--- trunk/Tools/Scripts/webkitpy/layout_tests/models/test_failures.py	2012-03-20 01:16:20 UTC (rev 111286)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/models/test_failures.py	2012-03-20 01:21:16 UTC (rev 111287)
@@ -85,8 +85,7 @@
         """Creates a TestFailure object from the specified string."""
         return cPickle.loads(s)
 
-    @staticmethod
-    def message():
+    def message(self):
         """Returns a string describing the failure in more detail."""
         raise NotImplementedError
 
@@ -113,8 +112,7 @@
     def __init__(self, is_reftest=False):
         self.is_reftest = is_reftest
 
-    @staticmethod
-    def message():
+    def message(self):
         return "Test timed out"
 
     def driver_needs_restart(self):
@@ -122,14 +120,16 @@
 
 
 class FailureCrash(TestFailure):
-    """DumpRenderTree crashed."""
-    def __init__(self, is_reftest=False):
+    """DumpRenderTree/WebKitTestRunner crashed."""
+    def __init__(self, is_reftest=False, process_name='DumpRenderTree', pid=None):
+        self.process_name = process_name
+        self.pid = pid
         self.is_reftest = is_reftest
 
-    @staticmethod
-    def message():
-        # FIXME: This is wrong for WebKit2 (which uses WebKitTestRunner).
-        return "DumpRenderTree crashed"
+    def message(self):
+        if self.pid:
+            return "%s (pid %d) crashed" % (self.process_name, self.pid)
+        return self.process_name + " crashed"
 
     def driver_needs_restart(self):
         return True
@@ -138,32 +138,28 @@
 class FailureMissingResult(TestFailure):
     """Expected result was missing."""
 
-    @staticmethod
-    def message():
+    def message(self):
         return "No expected results found"
 
 
 class FailureTextMismatch(TestFailure):
     """Text diff output failed."""
 
-    @staticmethod
-    def message():
+    def message(self):
         return "Text diff mismatch"
 
 
 class FailureMissingImageHash(TestFailure):
     """Actual result hash was missing."""
 
-    @staticmethod
-    def message():
+    def message(self):
         return "No expected image hash found"
 
 
 class FailureMissingImage(TestFailure):
     """Actual result image was missing."""
 
-    @staticmethod
-    def message():
+    def message(self):
         return "No expected image found"
 
 
@@ -172,16 +168,14 @@
     def __init__(self, diff_percent=0):
         self.diff_percent = diff_percent
 
-    @staticmethod
-    def message():
+    def message(self):
         return "Image mismatch"
 
 
 class FailureImageHashIncorrect(TestFailure):
     """Actual result hash is incorrect."""
 
-    @staticmethod
-    def message():
+    def message(self):
         return "Images match, expected image hash incorrect. "
 
 
@@ -191,8 +185,7 @@
     def __init__(self, reference_filename=None):
         self.reference_filename = reference_filename
 
-    @staticmethod
-    def message():
+    def message(self):
         return "Mismatch with reference"
 
 
@@ -202,8 +195,7 @@
     def __init__(self, reference_filename=None):
         self.reference_filename = reference_filename
 
-    @staticmethod
-    def message():
+    def message(self):
         return "Mismatch with the reference did not occur"
 
 
@@ -213,24 +205,21 @@
     def __init__(self, reference_filename=None):
         self.reference_filename = reference_filename
 
-    @staticmethod
-    def message():
+    def message(self):
         return "Reftest didn't generate pixel results."
 
 
 class FailureMissingAudio(TestFailure):
     """Actual result image was missing."""
 
-    @staticmethod
-    def message():
+    def message(self):
         return "No expected audio found"
 
 
 class FailureAudioMismatch(TestFailure):
     """Audio files didn't match."""
 
-    @staticmethod
-    def message():
+    def message(self):
         return "Audio mismatch"
 
 

Modified: trunk/Tools/Scripts/webkitpy/layout_tests/models/test_failures_unittest.py (111286 => 111287)


--- trunk/Tools/Scripts/webkitpy/layout_tests/models/test_failures_unittest.py	2012-03-20 01:16:20 UTC (rev 111286)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/models/test_failures_unittest.py	2012-03-20 01:21:16 UTC (rev 111287)
@@ -63,3 +63,7 @@
         # The hash happens to be the name of the class, but sets still work:
         crash_set = set([FailureCrash(), "FailureCrash"])
         self.assertEqual(len(crash_set), 2)
+
+    def test_crashes(self):
+        self.assertEquals(FailureCrash().message(), 'DumpRenderTree crashed')
+        self.assertEquals(FailureCrash(process_name='foo', pid=1234).message(), 'foo (pid 1234) crashed')
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to