From f507e4d9c09a18f12ffd0475bc47476d757f24a8 Mon Sep 17 00:00:00 2001 From: David de la Iglesia Castro Date: Thu, 12 Jan 2023 12:41:09 +0100 Subject: [PATCH] config: Reraise `ConfigError` from `ConfigObjError`. Closes #8801 --- dvc/config.py | 4 +++- tests/unit/test_config.py | 13 +++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/dvc/config.py b/dvc/config.py index 0e468ced7..9c3bb6bea 100644 --- a/dvc/config.py +++ b/dvc/config.py @@ -169,7 +169,7 @@ class Config(dict): return self.fs if level == "repo" else self.wfs def _load_config(self, level): - from configobj import ConfigObj + from configobj import ConfigObj, ConfigObjError filename = self.files[level] fs = self._get_fs(level) @@ -180,6 +180,8 @@ class Config(dict): conf_obj = ConfigObj(fobj) except UnicodeDecodeError as exc: raise ConfigError(str(exc)) from exc + except ConfigObjError as exc: + raise ConfigError(str(exc)) from exc else: conf_obj = ConfigObj() return _parse_named(_lower_keys(conf_obj.dict())) diff --git a/tests/unit/test_config.py b/tests/unit/test_config.py index bcae90e75..d0badc22f 100644 --- a/tests/unit/test_config.py +++ b/tests/unit/test_config.py @@ -81,3 +81,16 @@ def test_load_unicode_error(tmp_dir, dvc, mocker): with pytest.raises(ConfigError): with config.edit(): pass + + +def test_load_configob_error(tmp_dir, dvc, mocker): + from configobj import ConfigObjError + + config = Config(validate=False) + mocker.patch( + "configobj.ConfigObj", + side_effect=ConfigObjError(), + ) + with pytest.raises(ConfigError): + with config.edit(): + pass