From 37d4acb5c6d27a142ff7f82703a4aa03c12141f7 Mon Sep 17 00:00:00 2001 From: Jonathan Green Date: Thu, 4 May 2023 09:38:24 -0300 Subject: [PATCH 1/2] Make sure that tomlkit types are not making it into configuration. --- toml_sort/cli.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/toml_sort/cli.py b/toml_sort/cli.py index 4347844..8459da7 100644 --- a/toml_sort/cli.py +++ b/toml_sort/cli.py @@ -141,9 +141,10 @@ def parse_config_overrides( """Parse the tool.tomlsort.overrides section of the config.""" fields = dataclasses.fields(SortOverrideConfiguration) settings_definition = {field.name: field.type for field in fields} - override_settings = dict( - tomlsort_section.get("overrides", tomlkit.document()) - ) + override_settings = tomlsort_section.get( + "overrides", tomlkit.document() + ).unwrap() + overrides = {} for path, settings in override_settings.items(): if not settings.keys() <= settings_definition.keys(): From d8b3b8d8990f6f4856a1b7995e67d959bb245228 Mon Sep 17 00:00:00 2001 From: Jonathan Green Date: Thu, 4 May 2023 11:54:36 -0300 Subject: [PATCH 2/2] Add a test. --- tests/test_cli.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/tests/test_cli.py b/tests/test_cli.py index 1928ff0..5965d4c 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -360,7 +360,21 @@ def test_load_config_overrides(toml, expected): open_mock = mock.mock_open(read_data=toml) with mock.patch("toml_sort.cli.open", open_mock): section = cli.load_pyproject() - assert expected == cli.parse_config_overrides(section) + assert isinstance(section, dict) + parsed = cli.parse_config_overrides(section) + assert expected == parsed + # Make sure we are returning normal python types rather + # than TOMLKit types. + for key, value in parsed.items(): + assert type(key) == str # pylint: disable=unidiomatic-typecheck + assert ( + type(value) # pylint: disable=unidiomatic-typecheck + == SortOverrideConfiguration + ) + assert ( + type(value.first) # pylint: disable=unidiomatic-typecheck + == list + ) @pytest.mark.parametrize(