check uniq value for a slave

This commit is contained in:
Emmanuel Garette 2017-03-06 22:35:32 +01:00
parent 58a90a3707
commit 7977efe246
2 changed files with 17 additions and 4 deletions

View File

@ -241,6 +241,13 @@ def test_consistency_not_equal_masterslave():
c.a = [1] c.a = [1]
raises(ValueError, "c.b = [1]") raises(ValueError, "c.b = [1]")
c.b = [2] c.b = [2]
del(c.a)
c.a.append(1)
c.make_dict()
c.b[0] = 3
c.a.append(2)
c.b[0] = 3
raises(ValueError, "c.b[1] = 3")
def test_consistency_not_equal_masterslaves_default(): def test_consistency_not_equal_masterslaves_default():

View File

@ -661,10 +661,16 @@ class Option(OnlyOption):
if err: if err:
return err return err
else: else:
if self.impl_is_unique() and value in multi: if multi is not None and self.impl_is_unique() and value in multi:
return ValueError(_('invalid value "{}", this value is already' if not self.impl_is_submulti() and len(multi) - 1 >= force_index:
' in "{}"').format(value, lst = list(multi)
self.impl_get_display_name())) lst.pop(force_index)
else:
lst = multi
if value in lst:
return ValueError(_('invalid value "{}", this value is already'
' in "{}"').format(value,
self.impl_get_display_name()))
return do_validation(value, force_index, force_submulti_index) return do_validation(value, force_index, force_submulti_index)
elif not isinstance(value, list): elif not isinstance(value, list):
return ValueError(_('invalid value "{0}" for "{1}" which ' return ValueError(_('invalid value "{0}" for "{1}" which '