%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
#!/usr/bin/env python # 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 subprocess import sys import tempfile import unittest TOOLS_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) PREDICTABLE_WRAPPER = os.path.join( TOOLS_DIR, 'predictable_wrapper.py') PREDICTABLE_MOCKED = os.path.join( TOOLS_DIR, 'unittests', 'testdata', 'predictable_mocked.py') def call_wrapper(mode): """Call the predictable wrapper under test with a mocked file to test. Instead of d8, we use python and a python mock script. This mock script is expecting two arguments, mode (one of 'equal', 'differ' or 'missing') and a path to a temporary file for simulating non-determinism. """ fd, state_file = tempfile.mkstemp() os.close(fd) try: args = [ sys.executable, PREDICTABLE_WRAPPER, sys.executable, PREDICTABLE_MOCKED, mode, state_file, ] proc = subprocess.Popen(args, stdout=subprocess.PIPE) proc.communicate() return proc.returncode finally: os.unlink(state_file) class PredictableTest(unittest.TestCase): def testEqualAllocationOutput(self): self.assertEqual(0, call_wrapper('equal')) def testNoAllocationOutput(self): self.assertEqual(2, call_wrapper('missing')) def testDifferentAllocationOutput(self): self.assertEqual(3, call_wrapper('differ')) if __name__ == '__main__': unittest.main()