Skip to content

Commit

Permalink
Fix uninformative error message (#830)
Browse files Browse the repository at this point in the history
* Test against non-specific message

* Make error on invalid dynamic metadata more informative
  • Loading branch information
abravalheri authored Sep 5, 2024
1 parent 2b06f90 commit a716c52
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 3 deletions.
6 changes: 4 additions & 2 deletions src/packaging/metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -589,10 +589,12 @@ def _process_dynamic(self, value: list[str]) -> list[str]:
for dynamic_field in map(str.lower, value):
if dynamic_field in {"name", "version", "metadata-version"}:
raise self._invalid_metadata(
f"{value!r} is not allowed as a dynamic field"
f"{dynamic_field!r} is not allowed as a dynamic field"
)
elif dynamic_field not in _EMAIL_TO_RAW_MAPPING:
raise self._invalid_metadata(f"{value!r} is not a valid dynamic field")
raise self._invalid_metadata(
f"{dynamic_field!r} is not a valid dynamic field"
)
return list(map(str.lower, value))

def _process_provides_extra(
Expand Down
6 changes: 5 additions & 1 deletion tests/test_metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -608,8 +608,12 @@ def test_invalid_dynamic_value(self):
def test_disallowed_dynamic(self, field_name):
meta = metadata.Metadata.from_raw({"dynamic": [field_name]}, validate=False)

with pytest.raises(metadata.InvalidMetadata):
message = f"{field_name!r} is not allowed"
with pytest.raises(metadata.InvalidMetadata, match=message) as execinfo:
meta.dynamic # noqa: B018
# The name of the specific offending field should be used,
# not a list with all fields:
assert "[" not in str(execinfo.value)

@pytest.mark.parametrize(
"field_name",
Expand Down

0 comments on commit a716c52

Please sign in to comment.