summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAngelos Evripiotis <jevripiotis@bloomberg.net>2019-03-15 16:27:05 +0000
committerAngelos Evripiotis <jevripiotis@bloomberg.net>2019-03-15 16:27:05 +0000
commitb2fa43d65ca551ab8f13e56e010489fb26faed61 (patch)
tree6a795224800b1f70fdbec134fff5816c79a45591
parent259a9f7f1020f6c149986a9b5258481ba6713d3a (diff)
downloadbuildstream-b2fa43d65ca551ab8f13e56e010489fb26faed61.tar.gz
WIP: _options: use context_for_bsterror
-rw-r--r--buildstream/_options/optionenum.py18
-rw-r--r--buildstream/_options/optionflags.py17
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):