]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Revert os.py 1.75, and directly implement update.
authorMartin v. Löwis <martin@v.loewis.de>
Sat, 29 Jan 2005 13:29:23 +0000 (13:29 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Sat, 29 Jan 2005 13:29:23 +0000 (13:29 +0000)
Fixes #1110478 and #1100235.

Lib/os.py
Lib/test/test_os.py
Misc/NEWS

index d3b9a8d5107cf01af4fd4e821c102da1b7ee6e3f..b967978600df28155dd760f79939576e306420e8 100644 (file)
--- a/Lib/os.py
+++ b/Lib/os.py
@@ -442,6 +442,17 @@ else:
                 return key.upper() in self.data
             def get(self, key, failobj=None):
                 return self.data.get(key.upper(), failobj)
+            def update(self, dict=None, **kwargs):
+                if dict:
+                    try:
+                        items = dict.items()
+                    except AttributeError:
+                        # List of (key, value)
+                        items = dict
+                    for k, v in items:
+                        self[k] = v
+                if kwargs:
+                    self.update(kwargs)
             def copy(self):
                 return dict(self)
 
@@ -453,6 +464,17 @@ else:
             def __setitem__(self, key, item):
                 putenv(key, item)
                 self.data[key] = item
+            def update(self,  dict=None, **kwargs):
+                if dict:
+                    try:
+                        items = dict.items()
+                    except AttributeError:
+                        # List of (key, value)
+                        items = dict
+                    for k, v in items:
+                        self[k] = v
+                if kwargs:
+                    self.update(kwargs)
             try:
                 unsetenv
             except NameError:
index 472d13fd092a1ce285d2bdd0fb72a7fbcbb28ee3..cce692636f27073b5ed0641d7479c62889291e27 100644 (file)
@@ -226,6 +226,13 @@ class EnvironTests(mapping_tests.BasicTestMappingProtocol):
         os.environ.clear()
         os.environ.update(self.__save)
 
+    # Bug 1110478
+    def test_update(self):
+        if os.path.exists("/bin/sh"):
+            os.environ.update(HELLO="World")
+            value = os.popen("/bin/sh -c 'echo $HELLO'").read().strip()
+            self.assertEquals(value, "World")
+
 class WalkTests(unittest.TestCase):
     """Tests for os.walk()."""
 
index 1d919aa50ba2318a1c015a83fae2d6d1ab3152f8..92d94224fc4c2e8a44d74314411ddd661470889b 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -45,6 +45,8 @@ Extension Modules
 Library
 -------
 
+- Bug #1110478: Revert os.environ.update to do putenv again.
+
 - Bug #1103844: fix distutils.install.dump_dirs() with negated options.
 
 - os.{SEEK_SET, SEEK_CUR, SEEK_END} have been added for convenience.