| Index: tools/isolate/run_test_cases_smoke_test.py
|
| diff --git a/tools/isolate/run_test_cases_smoke_test.py b/tools/isolate/run_test_cases_smoke_test.py
|
| index 62ba92efaa6902213d6ae896d81ee7e88e41814e..21744686cc87406a787edaf26d5025f3594f402e 100755
|
| --- a/tools/isolate/run_test_cases_smoke_test.py
|
| +++ b/tools/isolate/run_test_cases_smoke_test.py
|
| @@ -3,6 +3,7 @@
|
| # Use of this source code is governed by a BSD-style license that can be
|
| # found in the LICENSE file.
|
|
|
| +import json
|
| import logging
|
| import os
|
| import re
|
| @@ -16,14 +17,19 @@ sys.path.append(os.path.join(ROOT_DIR, 'data', 'gtest_fake'))
|
| import gtest_fake_base
|
|
|
|
|
| -def RunTest(test_file):
|
| +def RunTest(test_file, dump_file=None):
|
| target = os.path.join(ROOT_DIR, 'data', 'gtest_fake', test_file)
|
| cmd = [
|
| sys.executable,
|
| os.path.join(ROOT_DIR, 'run_test_cases.py'),
|
| - '--no-dump',
|
| - target,
|
| ]
|
| +
|
| + if dump_file:
|
| + cmd.extend(['--result', dump_file])
|
| + else:
|
| + cmd.append('--no-dump')
|
| +
|
| + cmd.append(target)
|
| logging.debug(' '.join(cmd))
|
| proc = subprocess.Popen(
|
| cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
| @@ -39,6 +45,12 @@ class TraceTestCases(unittest.TestCase):
|
| os.environ.pop('GTEST_SHARD_INDEX', '')
|
| os.environ.pop('GTEST_TOTAL_SHARDS', '')
|
|
|
| + self.filename = 'test.results'
|
| +
|
| + def tearDown(self):
|
| + if os.path.exists(self.filename):
|
| + os.remove(self.filename)
|
| +
|
| def _check_results(self, expected_out_re, out, err):
|
| if sys.platform == 'win32':
|
| out = out.replace('\r\n', '\n')
|
| @@ -52,8 +64,20 @@ class TraceTestCases(unittest.TestCase):
|
| self.assertEquals([], lines)
|
| self.assertEquals('', err)
|
|
|
| + def _check_results_file(self, expected_file_contents_entries):
|
| + self.assertTrue(os.path.exists(self.filename))
|
| +
|
| + with open(self.filename) as f:
|
| + file_contents = json.load(f)
|
| +
|
| + self.assertEqual(len(expected_file_contents_entries), len(file_contents))
|
| + for (entry_name, entry_count) in expected_file_contents_entries:
|
| + self.assertTrue(entry_name in file_contents)
|
| + self.assertEqual(entry_count, len(file_contents[entry_name]))
|
| +
|
| def test_simple_pass(self):
|
| - out, err, return_code = RunTest('gtest_fake_pass.py')
|
| + out, err, return_code = RunTest('gtest_fake_pass.py',
|
| + dump_file=self.filename)
|
|
|
| self.assertEquals(0, return_code)
|
|
|
| @@ -61,37 +85,53 @@ class TraceTestCases(unittest.TestCase):
|
| r'\[\d/\d\] \d\.\d\ds .+',
|
| r'\[\d/\d\] \d\.\d\ds .+',
|
| r'\[\d/\d\] \d\.\d\ds .+',
|
| + re.escape('Summary:'),
|
| re.escape('Success: 3 100.00%'),
|
| re.escape('Flaky: 0 0.00%'),
|
| re.escape('Fail: 0 0.00%'),
|
| r'\d+\.\ds Done running 3 tests with 3 executions. \d+\.\d test/s',
|
| ]
|
| -
|
| self._check_results(expected_out_re, out, err)
|
|
|
| + expected_result_file_entries = [
|
| + ('Foo.Bar1', 1),
|
| + ('Foo.Bar2', 1),
|
| + ('Foo.Bar3', 1)
|
| + ]
|
| + self._check_results_file(expected_result_file_entries)
|
| +
|
| def test_simple_fail(self):
|
| - out, err, return_code = RunTest('gtest_fake_fail.py')
|
| + out, err, return_code = RunTest('gtest_fake_fail.py', self.filename)
|
|
|
| self.assertEquals(1, return_code)
|
|
|
| - expected_out_re = [
|
| - r'\[\d/\d\] \d\.\d\ds .+',
|
| - r'\[\d/\d\] \d\.\d\ds .+',
|
| - r'\[\d/\d\] \d\.\d\ds .+',
|
| - r'\[\d/\d\] \d\.\d\ds .+',
|
| - r'\[\d/\d\] \d\.\d\ds .+',
|
| - r'\[\d/\d\] \d\.\d\ds .+',
|
| + test_fail_output = [
|
| re.escape('Note: Google Test filter = Baz.Fail'),
|
| r'',
|
| ] + [
|
| - re.escape(l) for l in
|
| - gtest_fake_base.get_test_output('Baz.Fail').splitlines()
|
| + re.escape(l) for l in
|
| + gtest_fake_base.get_test_output('Baz.Fail').splitlines()
|
| ] + [
|
| '',
|
| ] + [
|
| re.escape(l) for l in gtest_fake_base.get_footer(1, 1).splitlines()
|
| ] + [
|
| - '',
|
| + ''
|
| + ]
|
| +
|
| + expected_out_re = [
|
| + r'\[\d/\d\] \d\.\d\ds .+',
|
| + r'\[\d/\d\] \d\.\d\ds .+',
|
| + r'\[\d/\d\] \d\.\d\ds .+',
|
| + r'\[\d/\d\] \d\.\d\ds .+',
|
| + r'\[\d/\d\] \d\.\d\ds .+',
|
| + r'\[\d/\d\] \d\.\d\ds .+',
|
| + ] + test_fail_output + [
|
| + re.escape('Retrying failed tests serially.'),
|
| + r'\[\d/\d\] \d\.\d\ds .+',
|
| + ] + test_fail_output + [
|
| + re.escape('Summary:'),
|
| + re.escape('Baz.Fail failed'),
|
| re.escape('Success: 3 75.00%'),
|
| re.escape('Flaky: 0 0.00%'),
|
| re.escape('Fail: 1 25.00%'),
|
| @@ -99,6 +139,14 @@ class TraceTestCases(unittest.TestCase):
|
| ]
|
| self._check_results(expected_out_re, out, err)
|
|
|
| + expected_result_file_entries = [
|
| + ('Foo.Bar1', 1),
|
| + ('Foo.Bar2', 1),
|
| + ('Foo.Bar3', 1),
|
| + ('Baz.Fail', 4)
|
| + ]
|
| + self._check_results_file(expected_result_file_entries)
|
| +
|
| def test_simple_gtest_list_error(self):
|
| out, err, return_code = RunTest('gtest_fake_error.py')
|
|
|
|
|