diff options
Diffstat (limited to 'deps/v8/test/inspector/testcfg.py')
-rw-r--r-- | deps/v8/test/inspector/testcfg.py | 102 |
1 files changed, 29 insertions, 73 deletions
diff --git a/deps/v8/test/inspector/testcfg.py b/deps/v8/test/inspector/testcfg.py index f33384e1cf..64fa163a5e 100644 --- a/deps/v8/test/inspector/testcfg.py +++ b/deps/v8/test/inspector/testcfg.py @@ -2,27 +2,22 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -import itertools import os -import re -import shlex from testrunner.local import testsuite from testrunner.local import utils from testrunner.objects import testcase +from testrunner.outproc import base as outproc -FLAGS_PATTERN = re.compile(r"//\s+Flags:(.*)") PROTOCOL_TEST_JS = "protocol-test.js" EXPECTED_SUFFIX = "-expected.txt" RESOURCES_FOLDER = "resources" -class InspectorProtocolTestSuite(testsuite.TestSuite): - def __init__(self, name, root): - super(InspectorProtocolTestSuite, self).__init__(name, root) - +class TestSuite(testsuite.TestSuite): def ListTests(self, context): tests = [] - for dirname, dirs, files in os.walk(os.path.join(self.root), followlinks=True): + for dirname, dirs, files in os.walk( + os.path.join(self.root), followlinks=True): for dotted in [x for x in dirs if x.startswith('.')]: dirs.remove(dotted) if dirname.endswith(os.path.sep + RESOURCES_FOLDER): @@ -34,80 +29,41 @@ class InspectorProtocolTestSuite(testsuite.TestSuite): fullpath = os.path.join(dirname, filename) relpath = fullpath[len(self.root) + 1 : -3] testname = relpath.replace(os.path.sep, "/") - test = testcase.TestCase(self, testname) + test = self._create_test(testname) tests.append(test) return tests - def GetShellForTestCase(self, testcase): - return 'inspector-test' + def _test_class(self): + return TestCase - def GetParametersForTestCase(self, testcase, context): - source = self.GetSourceForTest(testcase) - flags = testcase.flags + context.mode_flags - flags_match = re.findall(FLAGS_PATTERN, source) - for match in flags_match: - flags += shlex.split(match.strip()) - files = [ - os.path.join(self.root, PROTOCOL_TEST_JS), - os.path.join(self.root, testcase.path + self.suffix()), - ] - return files, flags, {} - def GetSourceForTest(self, testcase): - filename = os.path.join(self.root, testcase.path + self.suffix()) - with open(filename) as f: - return f.read() +class TestCase(testcase.TestCase): + def __init__(self, *args, **kwargs): + super(TestCase, self).__init__(*args, **kwargs) - def _IgnoreLine(self, string): - """Ignore empty lines, valgrind output and Android output.""" - if not string: return True - return (string.startswith("==") or string.startswith("**") or - string.startswith("ANDROID") or - # FIXME(machenbach): The test driver shouldn't try to use slow - # asserts if they weren't compiled. This fails in optdebug=2. - string == "Warning: unknown flag --enable-slow-asserts." or - string == "Try --help for options") + self._source_flags = self._parse_source_flags() - def IsFailureOutput(self, testcase): - file_name = os.path.join(self.root, testcase.path) + EXPECTED_SUFFIX - with file(file_name, "r") as expected: - expected_lines = expected.readlines() + def _get_files_params(self, ctx): + return [ + os.path.join(self.suite.root, PROTOCOL_TEST_JS), + os.path.join(self.suite.root, self.path + self._get_suffix()), + ] + + def _get_source_flags(self): + return self._source_flags - def ExpIterator(): - for line in expected_lines: - if not line.strip(): continue - yield line.strip() + def _get_source_path(self): + return os.path.join(self.suite.root, self.path + self._get_suffix()) - def ActIterator(lines): - for line in lines: - if self._IgnoreLine(line.strip()): continue - yield line.strip() + def get_shell(self): + return 'inspector-test' - def ActBlockIterator(): - """Iterates over blocks of actual output lines.""" - lines = testcase.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 output 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) + @property + def output_proc(self): + return outproc.ExpectedOutProc( + self.expected_outcomes, + os.path.join(self.suite.root, self.path) + EXPECTED_SUFFIX) - for act_iterator in ActBlockIterator(): - for (expected, actual) in itertools.izip_longest( - ExpIterator(), act_iterator, fillvalue=''): - if expected != actual: - return True - return False def GetSuite(name, root): - return InspectorProtocolTestSuite(name, root) + return TestSuite(name, root) |