Make webkit test output comparison compatible to stress testing.

In stress testing, the output is repeated several times. In this case, it is now compared several times to the actual output.

R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/18062002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15369 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
machenbach@chromium.org 2013-06-27 19:45:45 +00:00
parent ee67afee93
commit a643f86719

View File

@ -116,16 +116,40 @@ class WebkitTestSuite(testsuite.TestSuite):
return True
file_name = os.path.join(self.root, testpath) + "-expected.txt"
with file(file_name, "r") as expected:
expected_lines = expected.readlines()
def ExpIterator():
for line in expected.readlines():
for line in expected_lines:
if line.startswith("#") or not line.strip(): continue
yield line.strip()
def ActIterator():
for line in output.stdout.splitlines():
def ActIterator(lines):
for line in lines:
if self._IgnoreLine(line.strip()): continue
yield line.strip()
def ActBlockIterator():
"""Iterates over blocks of actual output lines."""
lines = output.stdout.splitlines()
start_index = 0
found_eqeq = False
for index, line in enumerate(lines):
# If a stress test separator is found:
if line.startswith("=="):
# Iterate over all lines before a separator except the first.
if not found_eqeq:
found_eqeq = True
else:
yield ActIterator(lines[start_index:index])
# The next block of ouput lines starts after the separator.
start_index = index + 1
# Iterate over complete output if no separator was found.
if not found_eqeq:
yield ActIterator(lines)
for act_iterator in ActBlockIterator():
for (expected, actual) in itertools.izip_longest(
ExpIterator(), ActIterator(), fillvalue=''):
ExpIterator(), act_iterator, fillvalue=''):
if expected != actual:
return True
return False