| # Copyright 2017 the V8 project authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import os |
| import difflib |
| |
| from testrunner.local import testsuite |
| from testrunner.objects import testcase |
| |
| |
| class MkGrokdump(testsuite.TestSuite): |
| |
| def __init__(self, name, root): |
| super(MkGrokdump, self).__init__(name, root) |
| |
| def ListTests(self, context): |
| test = testcase.TestCase(self, self.shell()) |
| return [test] |
| |
| def GetFlagsForTestCase(self, testcase, context): |
| return [] |
| |
| def IsFailureOutput(self, testcase): |
| output = testcase.output |
| v8_path = os.path.dirname(os.path.dirname(os.path.abspath(self.root))) |
| expected_path = os.path.join(v8_path, "tools", "v8heapconst.py") |
| with open(expected_path) as f: |
| expected = f.read() |
| expected_lines = expected.splitlines() |
| actual_lines = output.stdout.splitlines() |
| diff = difflib.unified_diff(expected_lines, actual_lines, lineterm="", |
| fromfile="expected_path") |
| diffstring = '\n'.join(diff) |
| if diffstring is not "": |
| if "generated from a non-shipping build" in output.stdout: |
| return False |
| if not "generated from a shipping build" in output.stdout: |
| output.stdout = "Unexpected output:\n\n" + output.stdout |
| return True |
| output.stdout = diffstring |
| return True |
| return False |
| |
| def shell(self): |
| return "mkgrokdump" |
| |
| def GetSuite(name, root): |
| return MkGrokdump(name, root) |