juergbi commented on code in PR #2099:
URL: https://github.com/apache/buildstream/pull/2099#discussion_r2720549368
##########
src/buildstream/element.py:
##########
@@ -2635,19 +2635,29 @@ def __load_sources(self, load_element):
del source[Symbol.DIRECTORY]
# Provenance is optional
- provenance_node = source.get_mapping(Symbol.PROVENANCE,
default=None)
- provenance = None
+ provenance_node: MappingNode =
source.get_mapping(Symbol.PROVENANCE, default=None)
if provenance_node:
del source[Symbol.PROVENANCE]
- provenance =
_SourceProvenance.new_from_node(provenance_node)
+ try:
+
provenance_node.validate_keys(project.source_provenance_fields.keys())
+ except LoadError as E:
+ raise LoadError(
+ "Specified source attribute not defined in project
config\n {}".format(E),
+
LoadErrorReason.UNDEFINED_SOURCE_PROVENANCE_ATTRIBUTE,
+ )
+
+ # make sure everything is a string
+ for value in provenance_node.values():
+ if not isinstance(value, ScalarNode):
+ raise LoadError(f"{value} is not parsable as a
string", LoadErrorReason.INVALID_DATA)
Review Comment:
I'd suggest adding context to make the error easier to understand. Maybe
something like the following?
```suggestion
for key, value in provenance_node.items():
if not isinstance(value, ScalarNode):
raise LoadError(f"{value}: Expected string for
the value of provenance attribute '{key}'", LoadErrorReason.INVALID_DATA)
```
The same applies to the similar check in `source.py`.
##########
src/buildstream/element.py:
##########
@@ -2635,19 +2635,29 @@ def __load_sources(self, load_element):
del source[Symbol.DIRECTORY]
# Provenance is optional
- provenance_node = source.get_mapping(Symbol.PROVENANCE,
default=None)
- provenance = None
+ provenance_node: MappingNode =
source.get_mapping(Symbol.PROVENANCE, default=None)
if provenance_node:
del source[Symbol.PROVENANCE]
- provenance =
_SourceProvenance.new_from_node(provenance_node)
+ try:
+
provenance_node.validate_keys(project.source_provenance_fields.keys())
+ except LoadError as E:
+ raise LoadError(
+ "Specified source attribute not defined in project
config\n {}".format(E),
Review Comment:
```suggestion
"Specified source provenance attribute not
defined in project config\n {}".format(E),
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]