diff options
author | Angelos Evripiotis <jevripiotis@bloomberg.net> | 2019-03-15 16:27:05 +0000 |
---|---|---|
committer | Angelos Evripiotis <jevripiotis@bloomberg.net> | 2019-03-15 16:27:05 +0000 |
commit | b2fa43d65ca551ab8f13e56e010489fb26faed61 (patch) | |
tree | 6a795224800b1f70fdbec134fff5816c79a45591 | |
parent | 259a9f7f1020f6c149986a9b5258481ba6713d3a (diff) | |
download | buildstream-b2fa43d65ca551ab8f13e56e010489fb26faed61.tar.gz |
WIP: _options: use context_for_bsterror
-rw-r--r-- | buildstream/_options/optionenum.py | 18 | ||||
-rw-r--r-- | buildstream/_options/optionflags.py | 17 |
2 files changed, 17 insertions, 18 deletions
diff --git a/buildstream/_options/optionenum.py b/buildstream/_options/optionenum.py index 095b9c356..d7c6ccc95 100644 --- a/buildstream/_options/optionenum.py +++ b/buildstream/_options/optionenum.py @@ -18,7 +18,7 @@ # Tristan Van Berkom <tristan.vanberkom@codethink.co.uk> from .. import _yaml -from .._exceptions import LoadError, LoadErrorReason +from .._exceptions import LoadError, LoadErrorReason, context_for_bsterror from .option import Option, OPTION_SYMBOLS @@ -52,7 +52,9 @@ class OptionEnum(Option): self.value = _yaml.node_get(node, str, self.name) if transform: self.value = transform(self.value) - self.validate(self.value, _yaml.node_get_provenance(node, self.name)) + + with context_for_bsterror(_yaml.node_get_provenance(node, self.name)): + self.validate(self.value) def set_value(self, value): self.validate(value) @@ -61,17 +63,15 @@ class OptionEnum(Option): def get_value(self): return self.value - def validate(self, value, provenance=None): + def validate(self, value): if value not in self.values: - prefix = "" - if provenance: - prefix = "{}: ".format(provenance) raise LoadError(LoadErrorReason.INVALID_DATA, - "{}Invalid value for {} option '{}': {}\n" - .format(prefix, self.OPTION_TYPE, self.name, value) + + "Invalid value for {} option '{}': {}\n" + .format(self.OPTION_TYPE, self.name, value) + "Valid values: {}".format(", ".join(self.values))) def load_default_value(self, node): value = _yaml.node_get(node, str, 'default') - self.validate(value, _yaml.node_get_provenance(node, 'default')) + with context_for_bsterror(_yaml.node_get_provenance(node, 'default')): + self.validate(value) return value diff --git a/buildstream/_options/optionflags.py b/buildstream/_options/optionflags.py index 0271208d9..598111af9 100644 --- a/buildstream/_options/optionflags.py +++ b/buildstream/_options/optionflags.py @@ -18,7 +18,7 @@ # Tristan Van Berkom <tristan.vanberkom@codethink.co.uk> from .. import _yaml -from .._exceptions import LoadError, LoadErrorReason +from .._exceptions import LoadError, LoadErrorReason, context_for_bsterror from .option import Option, OPTION_SYMBOLS @@ -47,14 +47,16 @@ class OptionFlags(Option): .format(_yaml.node_get_provenance(node), self.OPTION_TYPE, self.name)) self.value = _yaml.node_get(node, list, 'default', default_value=[]) - self.validate(self.value, _yaml.node_get_provenance(node, 'default')) + with context_for_bsterror(_yaml.node_get_provenance(node, 'default')): + self.validate(self.value) def load_value(self, node, *, transform=None): self.value = _yaml.node_get(node, list, self.name) if transform: self.value = [transform(x) for x in self.value] self.value = sorted(self.value) - self.validate(self.value, _yaml.node_get_provenance(node, self.name)) + with context_for_bsterror(_yaml.node_get_provenance(node, self.name)): + self.validate(self.value) def set_value(self, value): # Strip out all whitespace, allowing: "value1, value2 , value3" @@ -69,15 +71,12 @@ class OptionFlags(Option): def get_value(self): return ",".join(self.value) - def validate(self, value, provenance=None): + def validate(self, value): for flag in value: if flag not in self.values: - prefix = "" - if provenance: - prefix = "{}: ".format(provenance) raise LoadError(LoadErrorReason.INVALID_DATA, - "{}Invalid value for flags option '{}': {}\n" - .format(prefix, self.name, value) + + "Invalid value for flags option '{}': {}\n" + .format(self.name, value) + "Valid values: {}".format(", ".join(self.values))) def load_valid_values(self, node): |