validator's function can have 1 arg, 2 args or 3 args
This commit is contained in:
@ -5,7 +5,7 @@ import warnings
|
||||
from py.test import raises
|
||||
|
||||
from tiramisu.config import Config
|
||||
from tiramisu.option import StrOption, OptionDescription
|
||||
from tiramisu.option import BoolOption, StrOption, OptionDescription
|
||||
from tiramisu.setting import groups
|
||||
from tiramisu.error import ValueWarning
|
||||
from tiramisu.i18n import _
|
||||
@ -43,7 +43,8 @@ def is_context(value, context):
|
||||
def value_values(value, values):
|
||||
if not (value == 'val' and values == ['val'] or
|
||||
value == 'val1' and values == ['val1'] or
|
||||
value == 'val2' and values == ['val1', 'val2']):
|
||||
value == 'val2' and values == ['val1', 'val2'] or
|
||||
value == 'val1' and values == ['val1', None]):
|
||||
raise ValueError('error')
|
||||
|
||||
|
||||
@ -53,6 +54,34 @@ def value_values_index(value, values, index):
|
||||
raise ValueError('error 2')
|
||||
|
||||
|
||||
def value_values_auto(value, values, auto=False):
|
||||
if auto != False:
|
||||
raise ValueError('auto should be False')
|
||||
if not (value == 'val' and values == ['val'] or
|
||||
value == 'val1' and values == ['val1'] or
|
||||
value == 'val2' and values == ['val1', 'val2'] or
|
||||
value == 'val1' and values == ['val1', None]):
|
||||
raise ValueError('error')
|
||||
|
||||
|
||||
def value_values_auto2(value, values, auto=False):
|
||||
if auto != False:
|
||||
raise ValueError('auto should be False')
|
||||
if not (value == 'val1' and values == 'val' or
|
||||
value == 'val2' and values == 'val'):
|
||||
raise ValueError('error')
|
||||
|
||||
|
||||
|
||||
def value_values_index2(value, values, index, auto=False):
|
||||
if auto != False:
|
||||
raise ValueError('auto should be False')
|
||||
if not (value == 'val1' and values == ['val1'] and index == 'val' or
|
||||
value == 'val1' and values == ['val1', None] and index == 'val' or
|
||||
value == 'val2' and values == ['val1', 'val2'] and index == 'val'):
|
||||
raise ValueError('error')
|
||||
|
||||
|
||||
def test_validator():
|
||||
opt1 = StrOption('opt1', '', validator=return_true, default='val')
|
||||
raises(ValueError, "StrOption('opt2', '', validator=return_false, default='val')")
|
||||
@ -91,6 +120,116 @@ def test_validator_params_value_values_index():
|
||||
cfg.opt1.append('val2')
|
||||
|
||||
|
||||
def test_validator_params_value_values_master():
|
||||
ip_admin_eth0 = StrOption('ip_admin_eth0', "ip reseau autorise", multi=True, validator=value_values)
|
||||
netmask_admin_eth0 = StrOption('netmask_admin_eth0', "masque du sous-reseau", multi=True)
|
||||
interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
|
||||
interface1.impl_set_group_type(groups.master)
|
||||
root = OptionDescription('root', '', [interface1])
|
||||
cfg = Config(root)
|
||||
assert cfg.ip_admin_eth0.ip_admin_eth0 == []
|
||||
cfg.ip_admin_eth0.ip_admin_eth0.append('val1')
|
||||
cfg.ip_admin_eth0.ip_admin_eth0.append('val2')
|
||||
|
||||
|
||||
def test_validator_params_value_values_index_master():
|
||||
ip_admin_eth0 = StrOption('ip_admin_eth0', "ip reseau autorise", multi=True, validator=value_values_index)
|
||||
netmask_admin_eth0 = StrOption('netmask_admin_eth0', "masque du sous-reseau", multi=True)
|
||||
interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
|
||||
interface1.impl_set_group_type(groups.master)
|
||||
root = OptionDescription('root', '', [interface1])
|
||||
cfg = Config(root)
|
||||
assert cfg.ip_admin_eth0.ip_admin_eth0 == []
|
||||
cfg.ip_admin_eth0.ip_admin_eth0.append('val1')
|
||||
cfg.ip_admin_eth0.ip_admin_eth0.append('val2')
|
||||
|
||||
|
||||
def test_validator_params_value_values_slave():
|
||||
ip_admin_eth0 = StrOption('ip_admin_eth0', "ip reseau autorise", multi=True)
|
||||
netmask_admin_eth0 = StrOption('netmask_admin_eth0', "masque du sous-reseau", multi=True, validator=value_values)
|
||||
interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
|
||||
interface1.impl_set_group_type(groups.master)
|
||||
root = OptionDescription('root', '', [interface1])
|
||||
cfg = Config(root)
|
||||
assert cfg.ip_admin_eth0.ip_admin_eth0 == []
|
||||
cfg.ip_admin_eth0.ip_admin_eth0.append('val')
|
||||
cfg.ip_admin_eth0.netmask_admin_eth0[0] = 'val1'
|
||||
cfg.ip_admin_eth0.ip_admin_eth0.append('val')
|
||||
cfg.ip_admin_eth0.netmask_admin_eth0[1] = 'val2'
|
||||
|
||||
|
||||
def test_validator_params_value_values_index_slave():
|
||||
ip_admin_eth0 = StrOption('ip_admin_eth0', "ip reseau autorise", multi=True)
|
||||
netmask_admin_eth0 = StrOption('netmask_admin_eth0', "masque du sous-reseau", multi=True, validator=value_values_index)
|
||||
interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
|
||||
interface1.impl_set_group_type(groups.master)
|
||||
root = OptionDescription('root', '', [interface1])
|
||||
cfg = Config(root)
|
||||
assert cfg.ip_admin_eth0.ip_admin_eth0 == []
|
||||
cfg.ip_admin_eth0.ip_admin_eth0.append('val')
|
||||
cfg.ip_admin_eth0.netmask_admin_eth0[0] = 'val1'
|
||||
cfg.ip_admin_eth0.ip_admin_eth0.append('val')
|
||||
cfg.ip_admin_eth0.netmask_admin_eth0[1] = 'val2'
|
||||
|
||||
|
||||
def test_validator_params_value_values_notmulti():
|
||||
raises(TypeError, "opt1 = StrOption('opt1', '', validator=value_values, default='val')")
|
||||
|
||||
|
||||
def test_validator_params_value_values_kwargs():
|
||||
v = BoolOption('v', '', default=False)
|
||||
ip_admin_eth0 = StrOption('ip_admin_eth0', "ip reseau autorise", multi=True, default=["ip"])
|
||||
netmask_admin_eth0 = StrOption('netmask_admin_eth0',
|
||||
"masque du sous-reseau",
|
||||
multi=True,
|
||||
validator=value_values_auto,
|
||||
validator_params={'auto': ((v, False),)})
|
||||
interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
|
||||
interface1.impl_set_group_type(groups.master)
|
||||
root = OptionDescription('root', '', [v, interface1])
|
||||
cfg = Config(root)
|
||||
assert cfg.ip_admin_eth0.ip_admin_eth0 == ['ip']
|
||||
cfg.ip_admin_eth0.netmask_admin_eth0[0] = 'val1'
|
||||
cfg.ip_admin_eth0.ip_admin_eth0.append('val')
|
||||
cfg.ip_admin_eth0.netmask_admin_eth0[1] = 'val2'
|
||||
|
||||
|
||||
def test_validator_params_value_values_kwargs_values():
|
||||
ip_admin_eth0 = StrOption('ip_admin_eth0', "ip reseau autorise", multi=True)
|
||||
netmask_admin_eth0 = StrOption('netmask_admin_eth0',
|
||||
"masque du sous-reseau",
|
||||
multi=True,
|
||||
validator=value_values_auto2,
|
||||
validator_params={'values': ((ip_admin_eth0, False),)})
|
||||
interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
|
||||
interface1.impl_set_group_type(groups.master)
|
||||
root = OptionDescription('root', '', [interface1])
|
||||
cfg = Config(root)
|
||||
assert cfg.ip_admin_eth0.ip_admin_eth0 == []
|
||||
cfg.ip_admin_eth0.ip_admin_eth0.append('val')
|
||||
cfg.ip_admin_eth0.netmask_admin_eth0[0] = 'val1'
|
||||
cfg.ip_admin_eth0.ip_admin_eth0.append('val')
|
||||
cfg.ip_admin_eth0.netmask_admin_eth0[1] = 'val2'
|
||||
|
||||
|
||||
def test_validator_params_value_values_kwargs_index():
|
||||
ip_admin_eth0 = StrOption('ip_admin_eth0', "ip reseau autorise", multi=True)
|
||||
netmask_admin_eth0 = StrOption('netmask_admin_eth0',
|
||||
"masque du sous-reseau",
|
||||
multi=True,
|
||||
validator=value_values_index2,
|
||||
validator_params={'index': ((ip_admin_eth0, False),)})
|
||||
interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
|
||||
interface1.impl_set_group_type(groups.master)
|
||||
root = OptionDescription('root', '', [interface1])
|
||||
cfg = Config(root)
|
||||
assert cfg.ip_admin_eth0.ip_admin_eth0 == []
|
||||
cfg.ip_admin_eth0.ip_admin_eth0.append('val')
|
||||
cfg.ip_admin_eth0.netmask_admin_eth0[0] = 'val1'
|
||||
cfg.ip_admin_eth0.ip_admin_eth0.append('val')
|
||||
cfg.ip_admin_eth0.netmask_admin_eth0[1] = 'val2'
|
||||
|
||||
|
||||
def test_validator_params_context():
|
||||
opt1 = StrOption('opt1', '', validator=is_context, validator_params={'': ((None,),)}, default='val')
|
||||
root = OptionDescription('root', '', [opt1])
|
||||
@ -245,3 +384,21 @@ def test_validator_warning_master_slave():
|
||||
assert len(w) == 1
|
||||
assert w[0].message.opt == ip_admin_eth0
|
||||
assert str(w[0].message) == msg_err.format('val', ip_admin_eth0._display_name, display_name_ip, 'test error')
|
||||
|
||||
|
||||
def test_validator_slave_param():
|
||||
ip_admin_eth0 = StrOption('ip_admin_eth0', "ip reseau autorise", multi=True)
|
||||
netmask_admin_eth0 = StrOption('netmask_admin_eth0',
|
||||
"masque du sous-reseau",
|
||||
multi=True,
|
||||
validator=return_true,
|
||||
validator_params={'param': ((ip_admin_eth0, False),)})
|
||||
interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
|
||||
interface1.impl_set_group_type(groups.master)
|
||||
root = OptionDescription('root', '', [interface1])
|
||||
cfg = Config(root)
|
||||
assert cfg.ip_admin_eth0.ip_admin_eth0 == []
|
||||
cfg.ip_admin_eth0.ip_admin_eth0.append('yes')
|
||||
cfg.ip_admin_eth0.netmask_admin_eth0 = ['val']
|
||||
cfg.ip_admin_eth0.ip_admin_eth0 = ['yes', 'yes']
|
||||
cfg.ip_admin_eth0.netmask_admin_eth0[1] = 'val'
|
||||
|
Reference in New Issue
Block a user