correction in allow_without_dot + test

This commit is contained in:
Emmanuel Garette 2013-10-01 10:13:17 +02:00
parent 6902ad4f18
commit eb3327cd75
2 changed files with 12 additions and 4 deletions

View File

@ -8,7 +8,8 @@ from tiramisu.option import DomainnameOption, EmailOption, URLOption, OptionDesc
def test_domainname(): def test_domainname():
d = DomainnameOption('d', '') d = DomainnameOption('d', '')
e = DomainnameOption('e', '', "toto.com") e = DomainnameOption('e', '', "toto.com")
od = OptionDescription('a', '', [d, e]) f = DomainnameOption('f', '', allow_without_dot=True)
od = OptionDescription('a', '', [d, f])
c = Config(od) c = Config(od)
c.read_write() c.read_write()
c.d = 'toto.com' c.d = 'toto.com'
@ -20,6 +21,9 @@ def test_domainname():
raises(ValueError, "c.d = 'toto_super.com'") raises(ValueError, "c.d = 'toto_super.com'")
c.d = 'toto-.com' c.d = 'toto-.com'
raises(ValueError, "c.d = 'toto..com'") raises(ValueError, "c.d = 'toto..com'")
#
c.f = 'toto.com'
c.f = 'toto'
def test_domainname_netbios(): def test_domainname_netbios():

View File

@ -991,16 +991,20 @@ class DomainnameOption(Option):
self._allow_without_dot = allow_without_dot self._allow_without_dot = allow_without_dot
end = '' end = ''
extrachar = '' extrachar = ''
extrachar_mandatory = ''
if self._type == 'netbios': if self._type == 'netbios':
length = 14 length = 14
elif self._type == 'hostname': elif self._type == 'hostname':
length = 62 length = 62
elif self._type == 'domainname': elif self._type == 'domainname':
length = 62 length = 62
extrachar = '\.' if allow_without_dot is False:
extrachar_mandatory = '\.'
else:
extrachar = '\.'
end = '+[a-z]*' end = '+[a-z]*'
self._domain_re = re.compile(r'^(?:[a-z][a-z\d\-]{{,{0}}}{1}){2}$' self._domain_re = re.compile(r'^(?:[a-z][a-z\d\-{0}]{{,{1}}}{2}){3}$'
''.format(length, extrachar, end)) ''.format(extrachar, length, extrachar_mandatory, end))
super(DomainnameOption, self).__init__(name, doc, default=default, super(DomainnameOption, self).__init__(name, doc, default=default,
default_multi=default_multi, default_multi=default_multi,
callback=callback, callback=callback,