mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
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.
This commit is contained in:
parent
17d87f8ae4
commit
b9a3dd9dfb
4 changed files with 82 additions and 2 deletions
|
@ -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()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue