| #!/usr/bin/env python |
| # Copyright 2020 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 re |
| import subprocess |
| import sys |
| import tempfile |
| import unittest |
| |
| TOOLS_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) |
| COMPARE_SCRIPT = os.path.join(TOOLS_DIR, 'compare_torque_output.py') |
| TEST_DATA = os.path.join(TOOLS_DIR, 'unittests', 'testdata', 'compare_torque') |
| |
| |
| class PredictableTest(unittest.TestCase): |
| def setUp(self): |
| fd, self.tmp_file = tempfile.mkstemp() |
| os.close(fd) |
| |
| def _compare_from(self, test_folder): |
| file1 = os.path.join(TEST_DATA, test_folder, 'f1') |
| file2 = os.path.join(TEST_DATA, test_folder, 'f2') |
| proc = subprocess.Popen([ |
| 'python', '-u', |
| COMPARE_SCRIPT, file1, file2, self.tmp_file |
| ], stdout=subprocess.PIPE, stderr=subprocess.PIPE) |
| _, err = proc.communicate() |
| return proc.returncode, err |
| |
| def test_content_diff(self): |
| exitcode, output = self._compare_from('test1') |
| self.assertEqual(1, exitcode) |
| full_match = r'^Found.*-line 2\+line 2 with diff.*\+line 3\n\n$' |
| self.assertRegexpMatches(output, re.compile(full_match, re.M | re.S)) |
| |
| def test_no_diff(self): |
| exitcode, output = self._compare_from('test2') |
| self.assertEqual(0, exitcode) |
| self.assertFalse(output) |
| |
| def test_right_only(self): |
| exitcode, output = self._compare_from('test3') |
| self.assertEqual(1, exitcode) |
| self.assertRegexpMatches(output, r'Some files exist only in.*f2\nfile3') |
| |
| def test_left_only(self): |
| exitcode, output = self._compare_from('test4') |
| self.assertEqual(1, exitcode) |
| self.assertRegexpMatches(output, r'Some files exist only in.*f1\nfile4') |
| |
| def tearDown(self): |
| os.unlink(self.tmp_file) |