diff --git a/docs/changelog/2665.bugfix.rst b/docs/changelog/2665.bugfix.rst new file mode 100644 index 000000000..a4be5e9df --- /dev/null +++ b/docs/changelog/2665.bugfix.rst @@ -0,0 +1 @@ +Use ``!r`` and ``repr()`` to better display erroneous values in exception from ``StrConverter.to_bool()`` - by :user:`ptmcg`. diff --git a/src/tox/config/loader/str_convert.py b/src/tox/config/loader/str_convert.py index dd518e5e3..e31c034f0 100644 --- a/src/tox/config/loader/str_convert.py +++ b/src/tox/config/loader/str_convert.py @@ -81,13 +81,15 @@ def to_env_list(value: str) -> EnvList: @staticmethod def to_bool(value: str) -> bool: - norm = value.strip().lower() + norm = str(value).strip().lower() if norm in StrConvert.TRUTHFUL_VALUES: return True elif norm in StrConvert.FALSE_VALUES: return False else: - raise TypeError(f"value {value} cannot be transformed to bool, valid: {', '.join(StrConvert.VALID_BOOL)}") + raise TypeError( + f"value {value!r} cannot be transformed to bool, valid: {', '.join(StrConvert.VALID_BOOL)}", + ) __all__ = ("StrConvert",) diff --git a/tests/config/test_sets.py b/tests/config/test_sets.py index ca5778754..0faa68acd 100644 --- a/tests/config/test_sets.py +++ b/tests/config/test_sets.py @@ -89,7 +89,7 @@ def test_config_bad_bool(conf_builder: ConfBuilder) -> None: config_set.add_config(keys="bad_bool", of_type=bool, default=False, desc="bad_bool") with pytest.raises(TypeError) as context: assert config_set["bad_bool"] - error = "value whatever cannot be transformed to bool, valid: , 0, 1, false, no, off, on, true, yes" + error = "value 'whatever' cannot be transformed to bool, valid: , 0, 1, false, no, off, on, true, yes" assert str(context.value) == error