mirror of
https://github.com/python/cpython.git
synced 2025-11-01 18:51:43 +00:00
Make parameterized tests in email less hackish.
Or perhaps more hackish, depending on your perspective. But at least this way it is now possible to run the individual tests using the unittest CLI.
This commit is contained in:
parent
01d7058d6a
commit
56517e5cb9
4 changed files with 122 additions and 93 deletions
|
|
@ -4,7 +4,7 @@ import unittest
|
|||
from email import errors
|
||||
from email import policy
|
||||
from email.message import Message
|
||||
from test.test_email import TestEmailBase
|
||||
from test.test_email import TestEmailBase, Parameterized
|
||||
from email import headerregistry
|
||||
from email.headerregistry import Address, Group
|
||||
|
||||
|
|
@ -175,9 +175,9 @@ class TestDateHeader(TestHeaderBase):
|
|||
self.assertEqual(m['Date'].datetime, self.dt)
|
||||
|
||||
|
||||
class TestAddressHeader(TestHeaderBase):
|
||||
class TestAddressHeader(TestHeaderBase, metaclass=Parameterized):
|
||||
|
||||
examples = {
|
||||
example_params = {
|
||||
|
||||
'empty':
|
||||
('<>',
|
||||
|
|
@ -305,8 +305,8 @@ class TestAddressHeader(TestHeaderBase):
|
|||
# trailing comments, which aren't currently handled. comments in
|
||||
# general are not handled yet.
|
||||
|
||||
def _test_single_addr(self, source, defects, decoded, display_name,
|
||||
addr_spec, username, domain, comment):
|
||||
def example_as_address(self, source, defects, decoded, display_name,
|
||||
addr_spec, username, domain, comment):
|
||||
h = self.make_header('sender', source)
|
||||
self.assertEqual(h, decoded)
|
||||
self.assertDefectsEqual(h.defects, defects)
|
||||
|
|
@ -322,13 +322,8 @@ class TestAddressHeader(TestHeaderBase):
|
|||
# XXX: we have no comment support yet.
|
||||
#self.assertEqual(a.comment, comment)
|
||||
|
||||
for name in examples:
|
||||
locals()['test_'+name] = (
|
||||
lambda self, name=name:
|
||||
self._test_single_addr(*self.examples[name]))
|
||||
|
||||
def _test_group_single_addr(self, source, defects, decoded, display_name,
|
||||
addr_spec, username, domain, comment):
|
||||
def example_as_group(self, source, defects, decoded, display_name,
|
||||
addr_spec, username, domain, comment):
|
||||
source = 'foo: {};'.format(source)
|
||||
gdecoded = 'foo: {};'.format(decoded) if decoded else 'foo:;'
|
||||
h = self.make_header('to', source)
|
||||
|
|
@ -344,11 +339,6 @@ class TestAddressHeader(TestHeaderBase):
|
|||
self.assertEqual(a.username, username)
|
||||
self.assertEqual(a.domain, domain)
|
||||
|
||||
for name in examples:
|
||||
locals()['test_group_'+name] = (
|
||||
lambda self, name=name:
|
||||
self._test_group_single_addr(*self.examples[name]))
|
||||
|
||||
def test_simple_address_list(self):
|
||||
value = ('Fred <dinsdale@python.org>, foo@example.com, '
|
||||
'"Harry W. Hastings" <hasty@example.com>')
|
||||
|
|
@ -366,7 +356,7 @@ class TestAddressHeader(TestHeaderBase):
|
|||
'Harry W. Hastings')
|
||||
|
||||
def test_complex_address_list(self):
|
||||
examples = list(self.examples.values())
|
||||
examples = list(self.example_params.values())
|
||||
source = ('dummy list:;, another: (empty);,' +
|
||||
', '.join([x[0] for x in examples[:4]]) + ', ' +
|
||||
r'"A \"list\"": ' +
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue