summaryrefslogtreecommitdiff
path: root/Lib/test
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_os.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py
index d06927073e..49e5a37cd2 100644
--- a/Lib/test/test_os.py
+++ b/Lib/test/test_os.py
@@ -835,6 +835,30 @@ class EnvironTests(mapping_tests.BasicTestMappingProtocol):
self.assertIs(cm.exception.args[0], missing)
self.assertTrue(cm.exception.__suppress_context__)
+ def _test_environ_iteration(self, collection):
+ iterator = iter(collection)
+ new_key = "__new_key__"
+
+ next(iterator) # start iteration over os.environ.items
+
+ # add a new key in os.environ mapping
+ os.environ[new_key] = "test_environ_iteration"
+
+ try:
+ next(iterator) # force iteration over modified mapping
+ self.assertEqual(os.environ[new_key], "test_environ_iteration")
+ finally:
+ del os.environ[new_key]
+
+ def test_iter_error_when_changing_os_environ(self):
+ self._test_environ_iteration(os.environ)
+
+ def test_iter_error_when_changing_os_environ_items(self):
+ self._test_environ_iteration(os.environ.items())
+
+ def test_iter_error_when_changing_os_environ_values(self):
+ self._test_environ_iteration(os.environ.values())
+
class WalkTests(unittest.TestCase):
"""Tests for os.walk()."""