| Index: tools/telemetry/third_party/typ/typ/tests/runner_test.py
|
| diff --git a/tools/telemetry/third_party/typ/typ/tests/runner_test.py b/tools/telemetry/third_party/typ/typ/tests/runner_test.py
|
| deleted file mode 100644
|
| index 95831495647ddfe14be7f2211fa7245d4367b7a7..0000000000000000000000000000000000000000
|
| --- a/tools/telemetry/third_party/typ/typ/tests/runner_test.py
|
| +++ /dev/null
|
| @@ -1,221 +0,0 @@
|
| -# Copyright 2014 Dirk Pranke. All rights reserved.
|
| -#
|
| -# Licensed under the Apache License, Version 2.0 (the "License");
|
| -# you may not use this file except in compliance with the License.
|
| -# You may obtain a copy of the License at
|
| -#
|
| -# http://www.apache.org/licenses/LICENSE-2.0
|
| -#
|
| -# Unless required by applicable law or agreed to in writing, software
|
| -# distributed under the License is distributed on an "AS IS" BASIS,
|
| -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| -# See the License for the specific language governing permissions and
|
| -# limitations under the License.
|
| -
|
| -import sys
|
| -import tempfile
|
| -import unittest
|
| -
|
| -from textwrap import dedent as d
|
| -
|
| -
|
| -from typ import Host, Runner, TestCase, TestSet, TestInput
|
| -from typ import WinMultiprocessing
|
| -
|
| -
|
| -def _setup_process(child, context): # pylint: disable=W0613
|
| - return context
|
| -
|
| -
|
| -def _teardown_process(child, context): # pylint: disable=W0613
|
| - return context
|
| -
|
| -def _teardown_throws(child, context): # pylint: disable=W0613
|
| - raise Exception("exception in teardown")
|
| -
|
| -
|
| -class RunnerTests(TestCase):
|
| - def test_context(self):
|
| - r = Runner()
|
| - r.args.tests = ['typ.tests.runner_test.ContextTests']
|
| - r.context = {'foo': 'bar'}
|
| - r.setup_fn = _setup_process
|
| - r.teardown_fn = _teardown_process
|
| - r.win_multiprocessing = WinMultiprocessing.importable
|
| - ret, _, _ = r.run()
|
| - self.assertEqual(ret, 0)
|
| -
|
| - @unittest.skipIf(sys.version_info.major == 3, 'fails under python3')
|
| - def test_exception_in_teardown(self):
|
| - r = Runner()
|
| - r.args.tests = ['typ.tests.runner_test.ContextTests']
|
| - r.context = {'foo': 'bar'}
|
| - r.setup_fn = _setup_process
|
| - r.teardown_fn = _teardown_throws
|
| - r.win_multiprocessing = WinMultiprocessing.importable
|
| - ret, _, _ = r.run()
|
| - self.assertEqual(ret, 0)
|
| - self.assertEqual(r.final_responses[0][2].message,
|
| - 'exception in teardown')
|
| -
|
| - def test_bad_default(self):
|
| - r = Runner()
|
| - ret = r.main([], foo='bar')
|
| - self.assertEqual(ret, 2)
|
| -
|
| - def test_good_default(self):
|
| - r = Runner()
|
| - ret = r.main([], tests=['typ.tests.runner_test.ContextTests'])
|
| - self.assertEqual(ret, 0)
|
| -
|
| -
|
| -class TestSetTests(TestCase):
|
| - # This class exists to test the failures that can come up if you
|
| - # create your own test sets and bypass find_tests(); failures that
|
| - # would normally be caught there can occur later during test execution.
|
| -
|
| - def test_missing_name(self):
|
| - test_set = TestSet()
|
| - test_set.parallel_tests = [TestInput('nonexistent test')]
|
| - r = Runner()
|
| - r.args.jobs = 1
|
| - ret, _, _ = r.run(test_set)
|
| - self.assertEqual(ret, 1)
|
| -
|
| - def test_failing_load_test(self):
|
| - h = Host()
|
| - orig_wd = h.getcwd()
|
| - tmpdir = None
|
| - try:
|
| - tmpdir = h.mkdtemp()
|
| - h.chdir(tmpdir)
|
| - h.write_text_file('load_test.py', d("""\
|
| - import unittest
|
| - def load_tests(_, _2, _3):
|
| - assert False
|
| - """))
|
| - test_set = TestSet()
|
| - test_set.parallel_tests = [TestInput('load_test.BaseTest.test_x')]
|
| - r = Runner()
|
| - r.args.jobs = 1
|
| - ret, _, _ = r.run(test_set)
|
| - self.assertEqual(ret, 1)
|
| - finally:
|
| - h.chdir(orig_wd)
|
| - if tmpdir:
|
| - h.rmtree(tmpdir)
|
| -
|
| -
|
| -class TestWinMultiprocessing(TestCase):
|
| - def make_host(self):
|
| - return Host()
|
| -
|
| - def call(self, argv, platform=None, win_multiprocessing=None, **kwargs):
|
| - h = self.make_host()
|
| - orig_wd = h.getcwd()
|
| - tmpdir = None
|
| - try:
|
| - tmpdir = h.mkdtemp()
|
| - h.chdir(tmpdir)
|
| - h.capture_output()
|
| - if platform is not None:
|
| - h.platform = platform
|
| - r = Runner(h)
|
| - if win_multiprocessing is not None:
|
| - r.win_multiprocessing = win_multiprocessing
|
| - ret = r.main(argv, **kwargs)
|
| - finally:
|
| - out, err = h.restore_output()
|
| - h.chdir(orig_wd)
|
| - if tmpdir:
|
| - h.rmtree(tmpdir)
|
| -
|
| - return ret, out, err
|
| -
|
| - def test_bad_value(self):
|
| - self.assertRaises(ValueError, self.call, [], win_multiprocessing='foo')
|
| -
|
| - def test_ignore(self):
|
| - h = self.make_host()
|
| - if h.platform == 'win32': # pragma: win32
|
| - self.assertRaises(ValueError, self.call, [],
|
| - win_multiprocessing=WinMultiprocessing.ignore)
|
| - else:
|
| - result = self.call([],
|
| - win_multiprocessing=WinMultiprocessing.ignore)
|
| - ret, out, err = result
|
| - self.assertEqual(ret, 1)
|
| - self.assertEqual(out, 'No tests to run.\n')
|
| - self.assertEqual(err, '')
|
| -
|
| - def test_real_unimportable_main(self):
|
| - h = self.make_host()
|
| - tmpdir = None
|
| - orig_wd = h.getcwd()
|
| - out = err = None
|
| - out_str = err_str = ''
|
| - try:
|
| - tmpdir = h.mkdtemp()
|
| - h.chdir(tmpdir)
|
| - out = tempfile.NamedTemporaryFile(delete=False)
|
| - err = tempfile.NamedTemporaryFile(delete=False)
|
| - path_above_typ = h.realpath(h.dirname(__file__), '..', '..')
|
| - env = h.env.copy()
|
| - if 'PYTHONPATH' in env: # pragma: untested
|
| - env['PYTHONPATH'] = '%s%s%s' % (env['PYTHONPATH'],
|
| - h.pathsep,
|
| - path_above_typ)
|
| - else: # pragma: untested.
|
| - env['PYTHONPATH'] = path_above_typ
|
| -
|
| - h.write_text_file('test', d("""
|
| - import sys
|
| - import typ
|
| - importable = typ.WinMultiprocessing.importable
|
| - sys.exit(typ.main(win_multiprocessing=importable))
|
| - """))
|
| - h.stdout = out
|
| - h.stderr = err
|
| - ret = h.call_inline([h.python_interpreter, h.join(tmpdir, 'test')],
|
| - env=env)
|
| - finally:
|
| - h.chdir(orig_wd)
|
| - if tmpdir:
|
| - h.rmtree(tmpdir)
|
| - if out:
|
| - out.close()
|
| - out = open(out.name)
|
| - out_str = out.read()
|
| - out.close()
|
| - h.remove(out.name)
|
| - if err:
|
| - err.close()
|
| - err = open(err.name)
|
| - err_str = err.read()
|
| - err.close()
|
| - h.remove(err.name)
|
| -
|
| - self.assertEqual(ret, 1)
|
| - self.assertEqual(out_str, '')
|
| - self.assertIn('ValueError: The __main__ module ',
|
| - err_str)
|
| -
|
| - def test_single_job(self):
|
| - ret, out, err = self.call(['-j', '1'], platform='win32')
|
| - self.assertEqual(ret, 1)
|
| - self.assertIn('No tests to run.', out)
|
| - self.assertEqual(err, '')
|
| -
|
| - def test_spawn(self):
|
| - ret, out, err = self.call([])
|
| - self.assertEqual(ret, 1)
|
| - self.assertIn('No tests to run.', out)
|
| - self.assertEqual(err, '')
|
| -
|
| -
|
| -class ContextTests(TestCase):
|
| - def test_context(self):
|
| - # This test is mostly intended to be called by
|
| - # RunnerTests.test_context, above. It is not interesting on its own.
|
| - if self.context:
|
| - self.assertEquals(self.context['foo'], 'bar')
|
|
|