diff options
author | Gregory P. Smith <greg@krypto.org> | 2015-02-04 08:59:40 (GMT) |
---|---|---|
committer | Gregory P. Smith <greg@krypto.org> | 2015-02-04 08:59:40 (GMT) |
commit | b9a3dd9dfb780b9691f8a1859fd67cf9eadbd2d0 (patch) | |
tree | c186f9c50fd386da260b0c345550df9f0a65ac81 /Lib/test/test_script_helper.py | |
parent | 17d87f8ae42122025b5ce41230df6ba9e042ec40 (diff) | |
download | cpython-b9a3dd9dfb780b9691f8a1859fd67cf9eadbd2d0.zip cpython-b9a3dd9dfb780b9691f8a1859fd67cf9eadbd2d0.tar.gz cpython-b9a3dd9dfb780b9691f8a1859fd67cf9eadbd2d0.tar.bz2 |
Skip some tests that require a subinterpreter launched with -E or -I when the
interpreter under test is being run in an environment that requires the use of
environment variables such as PYTHONHOME in order to function at all.
Adds a private test.script_helper._interpreter_requires_environment() function
to be used with @unittest.skipIf on stdlib test methods requiring this.
Diffstat (limited to 'Lib/test/test_script_helper.py')
-rwxr-xr-x | Lib/test/test_script_helper.py | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/Lib/test/test_script_helper.py b/Lib/test/test_script_helper.py index ea73fd8..da61265 100755 --- a/Lib/test/test_script_helper.py +++ b/Lib/test/test_script_helper.py @@ -1,7 +1,10 @@ """Unittests for test.script_helper. Who tests the test helper?""" +import subprocess +import sys from test import script_helper import unittest +from unittest import mock class TestScriptHelper(unittest.TestCase): @@ -31,5 +34,43 @@ class TestScriptHelper(unittest.TestCase): msg='unexpected command line.') +class TestScriptHelperEnvironment(unittest.TestCase): + """Code coverage for _interpreter_requires_environment().""" + + def setUp(self): + self.assertTrue( + hasattr(script_helper, '__cached_interp_requires_environment')) + # Reset the private cached state. + script_helper.__dict__['__cached_interp_requires_environment'] = None + + def tearDown(self): + # Reset the private cached state. + script_helper.__dict__['__cached_interp_requires_environment'] = None + + @mock.patch('subprocess.check_call') + def test_interpreter_requires_environment_true(self, mock_check_call): + mock_check_call.side_effect = subprocess.CalledProcessError('', '') + self.assertTrue(script_helper._interpreter_requires_environment()) + self.assertTrue(script_helper._interpreter_requires_environment()) + self.assertEqual(1, mock_check_call.call_count) + + @mock.patch('subprocess.check_call') + def test_interpreter_requires_environment_false(self, mock_check_call): + # The mocked subprocess.check_call fakes a no-error process. + script_helper._interpreter_requires_environment() + self.assertFalse(script_helper._interpreter_requires_environment()) + self.assertEqual(1, mock_check_call.call_count) + + @mock.patch('subprocess.check_call') + def test_interpreter_requires_environment_details(self, mock_check_call): + script_helper._interpreter_requires_environment() + self.assertFalse(script_helper._interpreter_requires_environment()) + self.assertFalse(script_helper._interpreter_requires_environment()) + self.assertEqual(1, mock_check_call.call_count) + check_call_command = mock_check_call.call_args[0][0] + self.assertEqual(sys.executable, check_call_command[0]) + self.assertIn('-E', check_call_command) + + if __name__ == '__main__': unittest.main() |