From 81ca92121d6084a65c0b149a403c62a275ed1970 Mon Sep 17 00:00:00 2001 From: Ryan Reed Date: Tue, 19 Sep 2023 22:20:11 -0400 Subject: [PATCH] Fix: Check field is allowed before updating --- src/transpose/transpose.py | 7 +++++-- tests/test_transpose.py | 3 +++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/transpose/transpose.py b/src/transpose/transpose.py index 98c7c19..ca82e12 100644 --- a/src/transpose/transpose.py +++ b/src/transpose/transpose.py @@ -111,7 +111,7 @@ class TransposeConfig: def update(self, name: str, field_key: str, field_value: Any) -> None: """ - Update an entry by name + Update an entry's field (attribute) value Args: name: The name of the entry (must exist) @@ -122,10 +122,13 @@ class TransposeConfig: None """ try: - setattr(self.entries[name], field_key, field_value) + if not hasattr(self.entries[name], field_key): + raise TransposeError(f"Unknown TransposeEntry field: {field_key}") except KeyError: raise TransposeError(f"'{name}' does not exist in Transpose config entries") + setattr(self.entries[name], field_key, field_value) + @staticmethod def load(config_path: str): # -> Self: try: diff --git a/tests/test_transpose.py b/tests/test_transpose.py index 8e1a090..758f181 100644 --- a/tests/test_transpose.py +++ b/tests/test_transpose.py @@ -196,6 +196,9 @@ def test_config_update(): ): config.update("UnknownEntry", "path", "/some/new/path") + with pytest.raises(TransposeError, match="Unknown TransposeEntry field"): + config.update(ENTRY_NAME, "UnknownField", "Some Value") + config.update(ENTRY_NAME, "path", "/some/new/path") assert config.entries[ENTRY_NAME].path == "/some/new/path"