| # Copyright 2018 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 difflib | |
| from . import base | |
| class OutProc(base.OutProc): | |
| def __init__(self, expected_outcomes, expected_path): | |
| super(OutProc, self).__init__(expected_outcomes) | |
| self._expected_path = expected_path | |
| def _is_failure_output(self, output): | |
| with open(self._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 |