summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_os.py
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2024-06-10 16:34:17 (GMT)
committerGitHub <noreply@github.com>2024-06-10 16:34:17 (GMT)
commit7aff2de62bc28eb23888270b698c6b6915f69b21 (patch)
tree359091e030b08d295aa64aa5d7e4cb5582735afb /Lib/test/test_os.py
parent56c3815ba14c790d2e9a227b4ac0ead5e6b1e570 (diff)
downloadcpython-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.py46
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()."""