Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1631)

Unified Diff: webkit/tools/layout_tests/layout_package/test_failures.py

Issue 545145: Move the layout test scripts into a 'webkitpy' subdirectory in preparation... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: try to de-confuse svn and the try bots Created 10 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webkit/tools/layout_tests/layout_package/test_failures.py
===================================================================
--- webkit/tools/layout_tests/layout_package/test_failures.py (revision 36724)
+++ webkit/tools/layout_tests/layout_package/test_failures.py (working copy)
@@ -1,241 +0,0 @@
-# Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-"""Classes for failures that occur during tests."""
-
-import os
-import test_expectations
-
-
-def DetermineResultType(failure_list):
- """Takes a set of test_failures and returns which result type best fits
- the list of failures. "Best fits" means we use the worst type of failure.
-
- Returns:
- one of the test_expectations result types - PASS, TEXT, CRASH, etc."""
-
- if not failure_list or len(failure_list) == 0:
- return test_expectations.PASS
-
- failure_types = [type(f) for f in failure_list]
- if FailureCrash in failure_types:
- return test_expectations.CRASH
- elif FailureTimeout in failure_types:
- return test_expectations.TIMEOUT
- elif (FailureMissingResult in failure_types or
- FailureMissingImage in failure_types or
- FailureMissingImageHash in failure_types):
- return test_expectations.MISSING
- else:
- is_text_failure = FailureTextMismatch in failure_types
- is_image_failure = (FailureImageHashIncorrect in failure_types or
- FailureImageHashMismatch in failure_types)
- if is_text_failure and is_image_failure:
- return test_expectations.IMAGE_PLUS_TEXT
- elif is_text_failure:
- return test_expectations.TEXT
- elif is_image_failure:
- return test_expectations.IMAGE
- else:
- raise ValueError("unclassifiable set of failures: "
- + str(failure_types))
-
-
-class TestFailure(object):
- """Abstract base class that defines the failure interface."""
-
- @staticmethod
- def Message():
- """Returns a string describing the failure in more detail."""
- raise NotImplemented
-
- def ResultHtmlOutput(self, filename):
- """Returns an HTML string to be included on the results.html page."""
- raise NotImplemented
-
- def ShouldKillTestShell(self):
- """Returns True if we should kill the test shell before the next
- test."""
- return False
-
- def RelativeOutputFilename(self, filename, modifier):
- """Returns a relative filename inside the output dir that contains
- modifier.
-
- For example, if filename is fast\dom\foo.html and modifier is
- "-expected.txt", the return value is fast\dom\foo-expected.txt
-
- Args:
- filename: relative filename to test file
- modifier: a string to replace the extension of filename with
-
- Return:
- The relative windows path to the output filename
- """
- return os.path.splitext(filename)[0] + modifier
-
-
-class FailureWithType(TestFailure):
- """Base class that produces standard HTML output based on the test type.
-
- Subclasses may commonly choose to override the ResultHtmlOutput, but still
- use the standard OutputLinks.
- """
-
- def __init__(self, test_type):
- TestFailure.__init__(self)
- # TODO(ojan): This class no longer needs to know the test_type.
- self._test_type = test_type
-
- # Filename suffixes used by ResultHtmlOutput.
- OUT_FILENAMES = []
-
- def OutputLinks(self, filename, out_names):
- """Returns a string holding all applicable output file links.
-
- Args:
- filename: the test filename, used to construct the result file names
- out_names: list of filename suffixes for the files. If three or more
- suffixes are in the list, they should be [actual, expected, diff,
- wdiff]. Two suffixes should be [actual, expected], and a
- single item is the [actual] filename suffix.
- If out_names is empty, returns the empty string.
- """
- links = ['']
- uris = [self.RelativeOutputFilename(filename, fn) for fn in out_names]
- if len(uris) > 1:
- links.append("<a href='%s'>expected</a>" % uris[1])
- if len(uris) > 0:
- links.append("<a href='%s'>actual</a>" % uris[0])
- if len(uris) > 2:
- links.append("<a href='%s'>diff</a>" % uris[2])
- if len(uris) > 3:
- links.append("<a href='%s'>wdiff</a>" % uris[3])
- return ' '.join(links)
-
- def ResultHtmlOutput(self, filename):
- return self.Message() + self.OutputLinks(filename, self.OUT_FILENAMES)
-
-
-class FailureTimeout(TestFailure):
- """Test timed out. We also want to restart the test shell if this
- happens."""
-
- @staticmethod
- def Message():
- return "Test timed out"
-
- def ResultHtmlOutput(self, filename):
- return "<strong>%s</strong>" % self.Message()
-
- def ShouldKillTestShell(self):
- return True
-
-
-class FailureCrash(TestFailure):
- """Test shell crashed."""
-
- @staticmethod
- def Message():
- return "Test shell crashed"
-
- def ResultHtmlOutput(self, filename):
- # TODO(tc): create a link to the minidump file
- stack = self.RelativeOutputFilename(filename, "-stack.txt")
- return "<strong>%s</strong> <a href=%s>stack</a>" % (self.Message(),
- stack)
-
- def ShouldKillTestShell(self):
- return True
-
-
-class FailureMissingResult(FailureWithType):
- """Expected result was missing."""
- OUT_FILENAMES = ["-actual.txt"]
-
- @staticmethod
- def Message():
- return "No expected results found"
-
- def ResultHtmlOutput(self, filename):
- return ("<strong>%s</strong>" % self.Message() +
- self.OutputLinks(filename, self.OUT_FILENAMES))
-
-
-class FailureTextMismatch(FailureWithType):
- """Text diff output failed."""
- # Filename suffixes used by ResultHtmlOutput.
- OUT_FILENAMES = ["-actual.txt", "-expected.txt", "-diff.txt"]
- OUT_FILENAMES_WDIFF = ["-actual.txt", "-expected.txt", "-diff.txt",
- "-wdiff.html"]
-
- def __init__(self, test_type, has_wdiff):
- FailureWithType.__init__(self, test_type)
- if has_wdiff:
- self.OUT_FILENAMES = self.OUT_FILENAMES_WDIFF
-
- @staticmethod
- def Message():
- return "Text diff mismatch"
-
-
-class FailureMissingImageHash(FailureWithType):
- """Actual result hash was missing."""
- # Chrome doesn't know to display a .checksum file as text, so don't bother
- # putting in a link to the actual result.
- OUT_FILENAMES = []
-
- @staticmethod
- def Message():
- return "No expected image hash found"
-
- def ResultHtmlOutput(self, filename):
- return "<strong>%s</strong>" % self.Message()
-
-
-class FailureMissingImage(FailureWithType):
- """Actual result image was missing."""
- OUT_FILENAMES = ["-actual.png"]
-
- @staticmethod
- def Message():
- return "No expected image found"
-
- def ResultHtmlOutput(self, filename):
- return ("<strong>%s</strong>" % self.Message() +
- self.OutputLinks(filename, self.OUT_FILENAMES))
-
-
-class FailureImageHashMismatch(FailureWithType):
- """Image hashes didn't match."""
- OUT_FILENAMES = ["-actual.png", "-expected.png", "-diff.png"]
-
- @staticmethod
- def Message():
- # We call this a simple image mismatch to avoid confusion, since
- # we link to the PNGs rather than the checksums.
- return "Image mismatch"
-
-
-class FailureFuzzyFailure(FailureWithType):
- """Image hashes didn't match."""
- OUT_FILENAMES = ["-actual.png", "-expected.png"]
-
- @staticmethod
- def Message():
- return "Fuzzy image match also failed"
-
-
-class FailureImageHashIncorrect(FailureWithType):
- """Actual result hash is incorrect."""
- # Chrome doesn't know to display a .checksum file as text, so don't bother
- # putting in a link to the actual result.
- OUT_FILENAMES = []
-
- @staticmethod
- def Message():
- return "Images match, expected image hash incorrect. "
-
- def ResultHtmlOutput(self, filename):
- return "<strong>%s</strong>" % self.Message()
« no previous file with comments | « webkit/tools/layout_tests/layout_package/test_expectations.py ('k') | webkit/tools/layout_tests/layout_package/test_files.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698