mirror of https://github.com/python/cpython
Revert os.py 1.75, and directly implement update.
Fixes #1110478 and #1100235.
This commit is contained in:
parent
3069dbb8ec
commit
1d11de6dbd
22
Lib/os.py
22
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:
|
||||
|
|
|
@ -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()."""
|
||||
|
||||
|
|
Loading…
Reference in New Issue