| Index: webkit/tools/layout_tests/test_types/text_diff.py
|
| ===================================================================
|
| --- webkit/tools/layout_tests/test_types/text_diff.py (revision 36724)
|
| +++ webkit/tools/layout_tests/test_types/text_diff.py (working copy)
|
| @@ -1,96 +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.
|
| -
|
| -"""Compares the text output of a test to the expected text output.
|
| -
|
| -If the output doesn't match, returns FailureTextMismatch and outputs the diff
|
| -files into the layout test results directory.
|
| -"""
|
| -
|
| -import errno
|
| -import logging
|
| -import os.path
|
| -
|
| -from layout_package import path_utils
|
| -from layout_package import test_failures
|
| -from test_types import test_type_base
|
| -
|
| -
|
| -def isRenderTreeDump(data):
|
| - """Returns true if data appears to be a render tree dump as opposed to a
|
| - plain text dump."""
|
| - return data.find("RenderView at (0,0)") != -1
|
| -
|
| -
|
| -class TestTextDiff(test_type_base.TestTypeBase):
|
| -
|
| - def GetNormalizedOutputText(self, output):
|
| - # Some tests produce "\r\n" explicitly. Our system (Python/Cygwin)
|
| - # helpfully changes the "\n" to "\r\n", resulting in "\r\r\n".
|
| - norm = output.replace("\r\r\n", "\r\n").strip("\r\n").replace(
|
| - "\r\n", "\n")
|
| - return norm + "\n"
|
| -
|
| - def GetNormalizedExpectedText(self, filename, show_sources):
|
| - """Given the filename of the test, read the expected output from a file
|
| - and normalize the text. Returns a string with the expected text, or ''
|
| - if the expected output file was not found."""
|
| - # Read the platform-specific expected text.
|
| - expected_filename = path_utils.ExpectedFilename(filename, '.txt')
|
| - if show_sources:
|
| - logging.debug('Using %s' % expected_filename)
|
| -
|
| - return self.GetNormalizedText(expected_filename)
|
| -
|
| - def GetNormalizedText(self, filename):
|
| - try:
|
| - text = open(filename).read()
|
| - except IOError, e:
|
| - if errno.ENOENT != e.errno:
|
| - raise
|
| - return ''
|
| -
|
| - # Normalize line endings
|
| - return text.strip("\r\n").replace("\r\n", "\n") + "\n"
|
| -
|
| - def CompareOutput(self, filename, proc, output, test_args, target):
|
| - """Implementation of CompareOutput that checks the output text against
|
| - the expected text from the LayoutTest directory."""
|
| - failures = []
|
| -
|
| - # If we're generating a new baseline, we pass.
|
| - if test_args.new_baseline:
|
| - self._SaveBaselineData(filename, output, ".txt")
|
| - return failures
|
| -
|
| - # Normalize text to diff
|
| - output = self.GetNormalizedOutputText(output)
|
| - expected = self.GetNormalizedExpectedText(filename,
|
| - test_args.show_sources)
|
| -
|
| - # Write output files for new tests, too.
|
| - if output != expected:
|
| - # Text doesn't match, write output files.
|
| - self.WriteOutputFiles(filename, "", ".txt", output, expected,
|
| - diff=True, wdiff=True)
|
| -
|
| - if expected == '':
|
| - failures.append(test_failures.FailureMissingResult(self))
|
| - else:
|
| - failures.append(test_failures.FailureTextMismatch(self, True))
|
| -
|
| - return failures
|
| -
|
| - def DiffFiles(self, file1, file2):
|
| - """Diff two text files.
|
| -
|
| - Args:
|
| - file1, file2: full paths of the files to compare.
|
| -
|
| - Returns:
|
| - True if two files are different.
|
| - False otherwise.
|
| - """
|
| -
|
| - return self.GetNormalizedText(file1) != self.GetNormalizedText(file2)
|
|
|