diff options
author | Victor Stinner <vstinner@python.org> | 2024-06-10 16:34:17 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-10 16:34:17 (GMT) |
commit | 7aff2de62bc28eb23888270b698c6b6915f69b21 (patch) | |
tree | 359091e030b08d295aa64aa5d7e4cb5582735afb /Lib/test/test_os.py | |
parent | 56c3815ba14c790d2e9a227b4ac0ead5e6b1e570 (diff) | |
download | cpython-7aff2de62bc28eb23888270b698c6b6915f69b21.zip cpython-7aff2de62bc28eb23888270b698c6b6915f69b21.tar.gz cpython-7aff2de62bc28eb23888270b698c6b6915f69b21.tar.bz2 |
gh-120057: Add os.environ.refresh() method (#120059)
Diffstat (limited to 'Lib/test/test_os.py')
-rw-r--r-- | Lib/test/test_os.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py index 2beb9ca..f93937f 100644 --- a/Lib/test/test_os.py +++ b/Lib/test/test_os.py @@ -1298,6 +1298,52 @@ class EnvironTests(mapping_tests.BasicTestMappingProtocol): self._test_underlying_process_env('_A_', '') self._test_underlying_process_env(overridden_key, original_value) + def test_refresh(self): + # Test os.environ.refresh() + has_environb = hasattr(os, 'environb') + + # Test with putenv() which doesn't update os.environ + os.environ['test_env'] = 'python_value' + os.putenv("test_env", "new_value") + self.assertEqual(os.environ['test_env'], 'python_value') + if has_environb: + self.assertEqual(os.environb[b'test_env'], b'python_value') + + os.environ.refresh() + self.assertEqual(os.environ['test_env'], 'new_value') + if has_environb: + self.assertEqual(os.environb[b'test_env'], b'new_value') + + # Test with unsetenv() which doesn't update os.environ + os.unsetenv('test_env') + self.assertEqual(os.environ['test_env'], 'new_value') + if has_environb: + self.assertEqual(os.environb[b'test_env'], b'new_value') + + os.environ.refresh() + self.assertNotIn('test_env', os.environ) + if has_environb: + self.assertNotIn(b'test_env', os.environb) + + if has_environb: + # test os.environb.refresh() with putenv() + os.environb[b'test_env'] = b'python_value2' + os.putenv("test_env", "new_value2") + self.assertEqual(os.environb[b'test_env'], b'python_value2') + self.assertEqual(os.environ['test_env'], 'python_value2') + + os.environb.refresh() + self.assertEqual(os.environb[b'test_env'], b'new_value2') + self.assertEqual(os.environ['test_env'], 'new_value2') + + # test os.environb.refresh() with unsetenv() + os.unsetenv('test_env') + self.assertEqual(os.environb[b'test_env'], b'new_value2') + self.assertEqual(os.environ['test_env'], 'new_value2') + + os.environb.refresh() + self.assertNotIn(b'test_env', os.environb) + self.assertNotIn('test_env', os.environ) class WalkTests(unittest.TestCase): """Tests for os.walk().""" |