summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_script_helper.py
diff options
context:
space:
mode:
authorGregory P. Smith <greg@krypto.org>2015-02-04 08:59:40 (GMT)
committerGregory P. Smith <greg@krypto.org>2015-02-04 08:59:40 (GMT)
commitb9a3dd9dfb780b9691f8a1859fd67cf9eadbd2d0 (patch)
treec186f9c50fd386da260b0c345550df9f0a65ac81 /Lib/test/test_script_helper.py
parent17d87f8ae42122025b5ce41230df6ba9e042ec40 (diff)
downloadcpython-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-xLib/test/test_script_helper.py41
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()