correction in allow_without_dot + test
authorEmmanuel Garette <egarette@cadoles.com>
Tue, 1 Oct 2013 08:13:17 +0000 (10:13 +0200)
committerEmmanuel Garette <egarette@cadoles.com>
Tue, 1 Oct 2013 08:13:17 +0000 (10:13 +0200)
test/test_config_domain.py
tiramisu/option.py

index 018e4c0..f4579a6 100644 (file)
@@ -8,7 +8,8 @@ from tiramisu.option import DomainnameOption, EmailOption, URLOption, OptionDesc
 def test_domainname():
     d = DomainnameOption('d', '')
     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.read_write()
     c.d = 'toto.com'
@@ -20,6 +21,9 @@ def test_domainname():
     raises(ValueError, "c.d = 'toto_super.com'")
     c.d = 'toto-.com'
     raises(ValueError, "c.d = 'toto..com'")
+    #
+    c.f = 'toto.com'
+    c.f = 'toto'
 
 
 def test_domainname_netbios():
index b894a74..0d0c69a 100644 (file)
@@ -991,16 +991,20 @@ class DomainnameOption(Option):
         self._allow_without_dot = allow_without_dot
         end = ''
         extrachar = ''
+        extrachar_mandatory = ''
         if self._type == 'netbios':
             length = 14
         elif self._type == 'hostname':
             length = 62
         elif self._type == 'domainname':
             length = 62
-            extrachar = '\.'
+            if allow_without_dot is False:
+                extrachar_mandatory = '\.'
+            else:
+                extrachar = '\.'
             end = '+[a-z]*'
-        self._domain_re = re.compile(r'^(?:[a-z][a-z\d\-]{{,{0}}}{1}){2}$'
-                                     ''.format(length, extrachar, end))
+        self._domain_re = re.compile(r'^(?:[a-z][a-z\d\-{0}]{{,{1}}}{2}){3}$'
+                                     ''.format(extrachar, length, extrachar_mandatory, end))
         super(DomainnameOption, self).__init__(name, doc, default=default,
                                                default_multi=default_multi,
                                                callback=callback,