]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
test_options refactoring 1714/head
authorVincent Maillol <vincent.maillol@gmail.com>
Sun, 29 May 2016 08:43:47 +0000 (10:43 +0200)
committerVincent Maillol <vincent.maillol@gmail.com>
Sun, 29 May 2016 08:43:47 +0000 (10:43 +0200)
tornado/test/options_test.py
tornado/test/options_test_types.cfg

index 8fb27a366cdb8ef2fb08ace0859974f91ab741dd..3179904610dc3884e82cb13fb90d16f8b5415836 100644 (file)
@@ -24,11 +24,16 @@ except ImportError:
         mock = None
 
 
-class email(str):
-   def __new__(cls, value):
-        if '@' not in value:
+class Email(object):
+   def __init__(self, value):
+        if isinstance(value, str) and '@' in value:
+            self._value = value
+        else:
             raise ValueError()
-        return str.__new__(cls, value)
+
+   @property
+   def value(self):
+        return self._value
 
 
 class OptionsTest(unittest.TestCase):
@@ -204,10 +209,22 @@ class OptionsTest(unittest.TestCase):
         options.define('float', type=float)
         options.define('datetime', type=datetime.datetime)
         options.define('timedelta', type=datetime.timedelta)
-        options.define('email', type=email)
+        options.define('email', type=Email)
         options.define('list-of-int', type=int, multiple=True)
         return options
 
+    def _check_options_values(self, options):
+        self.assertEqual(options.str, 'asdf')
+        self.assertEqual(options.basestring, 'qwer')
+        self.assertEqual(options.int, 42)
+        self.assertEqual(options.float, 1.5)
+        self.assertEqual(options.datetime,
+                         datetime.datetime(2013, 4, 28, 5, 16))
+        self.assertEqual(options.timedelta, datetime.timedelta(seconds=45))
+        self.assertEqual(options.email.value, 'tornado@web.com')
+        self.assertTrue(isinstance(options.email, Email))
+        self.assertEqual(options.list_of_int, [1, 2, 3])
+
     def test_types(self):
         options = self._define_options()
         options.parse_command_line(['main.py',
@@ -219,34 +236,15 @@ class OptionsTest(unittest.TestCase):
                                     '--timedelta=45s',
                                     '--email=tornado@web.com',
                                     '--list-of-int=1,2,3'])
-
-        self.assertEqual(options.str, 'asdf')
-        self.assertEqual(options.basestring, 'qwer')
-        self.assertEqual(options.int, 42)
-        self.assertEqual(options.float, 1.5)
-        self.assertEqual(options.datetime,
-                         datetime.datetime(2013, 4, 28, 5, 16))
-        self.assertEqual(options.timedelta, datetime.timedelta(seconds=45))
-        self.assertEqual(options.email, 'tornado@web.com')
-        self.assertTrue(isinstance(options.email, email))
-        self.assertEqual(options.list_of_int, [1, 2, 3])
+        self._check_options_values(options)
 
     def test_types_with_conf_file(self):
-        options = self._define_options()
         for config_file_name in ("options_test_types.cfg",
                                  "options_test_types_str.cfg"):
+            options = self._define_options()
             options.parse_config_file(os.path.join(os.path.dirname(__file__),
                                       config_file_name))
-            self.assertEqual(options.str, 'asdf')
-            self.assertEqual(options.basestring, 'qwer')
-            self.assertEqual(options.int, 42)
-            self.assertEqual(options.float, 1.5)
-            self.assertEqual(options.datetime,
-                             datetime.datetime(2013, 4, 28, 5, 16))
-            self.assertEqual(options.timedelta, datetime.timedelta(seconds=45))
-            self.assertEqual(options.email, 'tornado@web.com')
-            self.assertTrue(isinstance(options.email, email))
-            self.assertEqual(options.list_of_int, [1, 2, 3])
+            self._check_options_values(options)
 
     def test_multiple_string(self):
         options = OptionParser()
index 04c1860ba193f2cb03d6fce0f0f8924c1538b1ec..e1d53cb9cc4d03365d9e2a816da4c3313baf4f21 100644 (file)
@@ -1,10 +1,5 @@
 from datetime import datetime, timedelta
-import sys
-import os
-sys.path.insert(0,
-    os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))
-)
-from tornado.test.options_test import email
+from tornado.test.options_test import Email
 
 str = 'asdf'
 basestring = 'qwer'
@@ -12,5 +7,5 @@ int = 42
 float = 1.5
 datetime = datetime(2013, 4, 28, 5, 16)
 timedelta = timedelta(0, 45)
-email = email('tornado@web.com')
+email = Email('tornado@web.com')
 list_of_int = [1, 2, 3]