diff --git a/tests/test_types.py b/tests/test_types.py index 9c587ea1..41d0f10a 100644 --- a/tests/test_types.py +++ b/tests/test_types.py @@ -11,6 +11,7 @@ def test_rules_names_list(): def test_update_settings(): settings = Settings({'key': 'val'}) - new_settings = settings.update(key='new-val') - assert new_settings.key == 'new-val' + new_settings = settings.update(key='new-val', unset='unset-value') + assert new_settings.key == 'val' + assert new_settings.unset == 'unset-value' assert settings.key == 'val' diff --git a/tests/test_utils.py b/tests/test_utils.py index 31b013ec..c31d91ad 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -9,7 +9,8 @@ from tests.utils import Command @pytest.mark.parametrize('override, old, new', [ ({'key': 'val'}, {}, {'key': 'val'}), - ({'key': 'new-val'}, {'key': 'val'}, {'key': 'new-val'})]) + ({'key': 'new-val'}, {'key': 'val'}, {'key': 'val'}), + ({'key': 'new-val', 'unset': 'unset'}, {'key': 'val'}, {'key': 'val', 'unset': 'unset'})]) def test_wrap_settings(override, old, new): fn = lambda _, settings: settings assert wrap_settings(override)(fn)(None, Settings(old)) == new diff --git a/thefuck/types.py b/thefuck/types.py index cc481381..2e5b41af 100644 --- a/thefuck/types.py +++ b/thefuck/types.py @@ -23,7 +23,9 @@ class Settings(dict): return self.get(item) def update(self, **kwargs): - """Returns new settings with new values from `kwargs`.""" - conf = dict(self) - conf.update(kwargs) + """ + Returns new settings with values from `kwargs` for unset settings. + """ + conf = dict(kwargs) + conf.update(self) return Settings(conf)