diff --git a/deadcode/actions/parse_arguments.py b/deadcode/actions/parse_arguments.py index 9524048..0a8a91b 100644 --- a/deadcode/actions/parse_arguments.py +++ b/deadcode/actions/parse_arguments.py @@ -225,6 +225,9 @@ def parse_arguments(args: list[str] | None) -> Args: for key, item in parse_pyproject_toml().items(): if key not in parsed_args: continue + if isinstance(parsed_args[key], bool): + parsed_args[key] = bool(item) + continue if isinstance(item, str) and isinstance(parsed_args[key], list): item = [item] parsed_args[key].extend(item) diff --git a/tests/cli_args/test_parsing.py b/tests/cli_args/test_parsing.py index 930f272..8f5b72f 100644 --- a/tests/cli_args/test_parsing.py +++ b/tests/cli_args/test_parsing.py @@ -238,6 +238,19 @@ def test_sys_argv_used_when_no_arguments_provided(monkeypatch: pytest.MonkeyPatc assert args.count is True +def test_boolean_pyproject_setting_enables_flag(tmp_path, monkeypatch: pytest.MonkeyPatch): + # Having + (tmp_path / 'pyproject.toml').write_text('[tool.deadcode]\nfix = true\ncount = true\n') + monkeypatch.chdir(tmp_path) + + # When + args = parse_arguments(['foo.py']) + + # Then + assert args.fix is True + assert args.count is True + + def test_unknown_pyproject_setting_is_ignored(tmp_path, monkeypatch: pytest.MonkeyPatch): # Having (tmp_path / 'pyproject.toml').write_text('[tool.deadcode]\nunknown_setting = true\n')