From: Vincent Maillol Date: Sun, 29 May 2016 08:43:47 +0000 (+0200) Subject: test_options refactoring X-Git-Tag: v5.1.0b1~4^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2a62361d21810e65d8f3cf3b36244a1d5d583aae;p=thirdparty%2Ftornado.git test_options refactoring --- diff --git a/tornado/test/options_test.py b/tornado/test/options_test.py index 8fb27a366..317990461 100644 --- a/tornado/test/options_test.py +++ b/tornado/test/options_test.py @@ -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() diff --git a/tornado/test/options_test_types.cfg b/tornado/test/options_test_types.cfg index 04c1860ba..e1d53cb9c 100644 --- a/tornado/test/options_test_types.cfg +++ b/tornado/test/options_test_types.cfg @@ -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]