mirror of
https://github.com/xonsh/xonsh.git
synced 2025-03-04 08:24:40 +01:00
Merge pull request #3096 from jb-leger/environ_do_not_delete_default_value
Environ do not delete default value
This commit is contained in:
commit
c1092ec349
3 changed files with 48 additions and 4 deletions
24
news/environ_do_not_delete_default_value.rst
Normal file
24
news/environ_do_not_delete_default_value.rst
Normal file
|
@ -0,0 +1,24 @@
|
|||
**Added:**
|
||||
|
||||
* <news item>
|
||||
|
||||
**Changed:**
|
||||
|
||||
* <news item>
|
||||
|
||||
**Deprecated:**
|
||||
|
||||
* <news item>
|
||||
|
||||
**Removed:**
|
||||
|
||||
* <news item>
|
||||
|
||||
**Fixed:**
|
||||
|
||||
* deleting a non existing environement variable with default value do nothing
|
||||
instead of raising a exception trying to deleting it in existing values dict.
|
||||
|
||||
**Security:**
|
||||
|
||||
* <news item>
|
|
@ -273,3 +273,19 @@ def test_make_args_env():
|
|||
"ARG3": "3",
|
||||
}
|
||||
assert exp == obs
|
||||
|
||||
def test_delitem():
|
||||
env = Env(VAR="a value")
|
||||
assert env['VAR'] == 'a value'
|
||||
del env['VAR']
|
||||
with pytest.raises(Exception):
|
||||
a = env['VAR']
|
||||
|
||||
def test_delitem_default():
|
||||
env = Env()
|
||||
a_key,a_value = next(env._defaults.items().__iter__())
|
||||
del env[a_key]
|
||||
assert env[a_key] == a_value
|
||||
del env[a_key]
|
||||
assert env[a_key] == a_value
|
||||
|
||||
|
|
|
@ -1521,10 +1521,14 @@ class Env(cabc.MutableMapping):
|
|||
events.on_envvar_change.fire(name=key, oldvalue=old_value, newvalue=val)
|
||||
|
||||
def __delitem__(self, key):
|
||||
del self._d[key]
|
||||
self._detyped = None
|
||||
if self.get("UPDATE_OS_ENVIRON") and key in os_environ:
|
||||
del os_environ[key]
|
||||
if key in self._d:
|
||||
del self._d[key]
|
||||
self._detyped = None
|
||||
if self.get("UPDATE_OS_ENVIRON") and key in os_environ:
|
||||
del os_environ[key]
|
||||
elif key not in self._defaults:
|
||||
e = "Unknown environment variable: ${}"
|
||||
raise KeyError(e.format(key))
|
||||
|
||||
def get(self, key, default=None):
|
||||
"""The environment will look up default values from its own defaults if a
|
||||
|
|
Loading…
Add table
Reference in a new issue