diff options
Diffstat (limited to 'deps/v8/tools/testrunner/objects/predictable.py')
-rw-r--r-- | deps/v8/tools/testrunner/objects/predictable.py | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/deps/v8/tools/testrunner/objects/predictable.py b/deps/v8/tools/testrunner/objects/predictable.py new file mode 100644 index 0000000000..ad93077be9 --- /dev/null +++ b/deps/v8/tools/testrunner/objects/predictable.py @@ -0,0 +1,57 @@ +# 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. + +from ..local import statusfile +from ..outproc import base as outproc_base +from ..testproc.result import Result + + +# Only check the exit code of the predictable_wrapper in +# verify-predictable mode. Negative tests are not supported as they +# usually also don't print allocation hashes. There are two versions of +# negative tests: one specified by the test, the other specified through +# the status file (e.g. known bugs). + + +def get_outproc(test): + output_proc = test.output_proc + if output_proc.negative or statusfile.FAIL in test.expected_outcomes: + # TODO(majeski): Skip these tests instead of having special outproc. + return NeverUnexpectedOutputOutProc(output_proc) + return OutProc(output_proc) + + +class OutProc(outproc_base.BaseOutProc): + """Output processor wrapper for predictable mode. It has custom process and + has_unexpected_output implementation, but for all other methods it simply + calls wrapped output processor. + """ + def __init__(self, _outproc): + super(OutProc, self).__init__() + self._outproc = _outproc + + def process(self, output): + return Result(self.has_unexpected_output(output), output) + + def has_unexpected_output(self, output): + return output.exit_code != 0 + + def get_outcome(self, output): + return self._outproc.get_outcome(output) + + @property + def negative(self): + return self._outproc.negative + + @property + def expected_outcomes(self): + return self._outproc.expected_outcomes + + +class NeverUnexpectedOutputOutProc(OutProc): + """Output processor wrapper for tests that we will return False for + has_unexpected_output in the predictable mode. + """ + def has_unexpected_output(self, output): + return False |