1
0
mirror of https://github.com/github/octodns.git synced 2024-05-11 05:55:00 +00:00

validate values for empty string or None value

dump does not write invalid value(s) to yaml
This commit is contained in:
Adam Smith
2017-10-22 22:39:18 -07:00
parent 3ec15346b0
commit bf1896329b
3 changed files with 165 additions and 10 deletions

View File

@@ -211,9 +211,30 @@ class _ValuesMixin(object):
values = []
try:
values = data['values']
if not values:
values = []
reasons.append('missing value(s)')
else:
# loop through copy of values
# remove invalid value from values
for value in list(values):
if value is None:
reasons.append('missing value(s)')
values.remove(value)
elif len(value) == 0:
reasons.append('empty value')
values.remove(value)
except KeyError:
try:
values = [data['value']]
value = data['value']
if value is None:
reasons.append('missing value(s)')
values = []
elif len(value) == 0:
reasons.append('empty value')
values = []
else:
values = [value]
except KeyError:
reasons.append('missing value(s)')
@@ -238,10 +259,16 @@ class _ValuesMixin(object):
def _data(self):
ret = super(_ValuesMixin, self)._data()
if len(self.values) > 1:
ret['values'] = [getattr(v, 'data', v) for v in self.values]
else:
values = [getattr(v, 'data', v) for v in self.values if v]
if len(values) > 1:
ret['values'] = values
elif len(values) == 1:
ret['value'] = values[0]
elif len(self.values) == 1:
v = self.values[0]
ret['value'] = getattr(v, 'data', v)
if v:
ret['value'] = getattr(v, 'data', v)
return ret
def __repr__(self):
@@ -349,6 +376,10 @@ class _ValueMixin(object):
value = None
try:
value = data['value']
if value is None:
reasons.append('missing value')
elif value == '':
reasons.append('empty value')
except KeyError:
reasons.append('missing value')
if value:
@@ -366,7 +397,8 @@ class _ValueMixin(object):
def _data(self):
ret = super(_ValueMixin, self)._data()
ret['value'] = getattr(self.value, 'data', self.value)
if self.value:
ret['value'] = getattr(self.value, 'data', self.value)
return ret
def __repr__(self):