Browse Source

Fix: Check field is allowed before updating

master
Ryan Reed 1 year ago
parent
commit
81ca92121d
2 changed files with 8 additions and 2 deletions
  1. +5
    -2
      src/transpose/transpose.py
  2. +3
    -0
      tests/test_transpose.py

+ 5
- 2
src/transpose/transpose.py View File

@ -111,7 +111,7 @@ class TransposeConfig:
def update(self, name: str, field_key: str, field_value: Any) -> None: 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: Args:
name: The name of the entry (must exist) name: The name of the entry (must exist)
@ -122,10 +122,13 @@ class TransposeConfig:
None None
""" """
try: 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: except KeyError:
raise TransposeError(f"'{name}' does not exist in Transpose config entries") raise TransposeError(f"'{name}' does not exist in Transpose config entries")
setattr(self.entries[name], field_key, field_value)
@staticmethod @staticmethod
def load(config_path: str): # -> Self: def load(config_path: str): # -> Self:
try: try:


+ 3
- 0
tests/test_transpose.py View File

@ -196,6 +196,9 @@ def test_config_update():
): ):
config.update("UnknownEntry", "path", "/some/new/path") 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") config.update(ENTRY_NAME, "path", "/some/new/path")
assert config.entries[ENTRY_NAME].path == "/some/new/path" assert config.entries[ENTRY_NAME].path == "/some/new/path"


Loading…
Cancel
Save