65 lines
2.8 KiB
Python
65 lines
2.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from nose import tools
|
|
|
|
import sys
|
|
import warnings
|
|
|
|
import importlib
|
|
from kitchen.pycompat25.collections import defaultdict
|
|
|
|
class TestPendingDeprecationModules(object):
|
|
def __init__(self):
|
|
kitchen_path = 'kitchen'
|
|
collections_path = 'kitchen/collections'
|
|
pycompat24_path = 'kitchen/pycompat24'
|
|
pycompat25_path = 'kitchen/pycompat25'
|
|
pycompat27_path = 'kitchen/pycompat27'
|
|
|
|
self.module_data = (
|
|
('strictdict', 'kitchen.collections.strictdict', collections_path),
|
|
('pycompat24', 'kitchen.pycompat24', kitchen_path),
|
|
('base64', 'kitchen.pycompat24.base64', pycompat24_path),
|
|
('sets', 'kitchen.pycompat24.sets', pycompat24_path),
|
|
('subprocess', 'kitchen.pycompat24.subprocess', pycompat24_path),
|
|
('pycompat25', 'kitchen.pycompat25', kitchen_path),
|
|
('collections', 'kitchen.pycompat25.collections', pycompat25_path),
|
|
('pycompat27', 'kitchen.pycompat27', kitchen_path),
|
|
('subprocess', 'kitchen.pycompat27.subprocess', pycompat27_path),
|
|
)
|
|
|
|
def setUp(self):
|
|
for module in sys.modules.values():
|
|
if hasattr(module, '__warningregistry__'):
|
|
del module.__warningregistry__
|
|
|
|
def check_modules(self, module_name, module_fqn, module_path):
|
|
with warnings.catch_warnings(record=True) as w:
|
|
warnings.simplefilter('always')
|
|
# imp.load_module will load even if it has already been loaded.
|
|
# We need to ensure that happens in order to trigger the
|
|
# deprecation warnings
|
|
importlib.find_loader(module_fqn, module_path).load_module()
|
|
warning_raised = False
|
|
for warning in (e.message for e in w):
|
|
if isinstance(warning, PendingDeprecationWarning) and \
|
|
('%s is deprecated' % module_name) in warning.args[0]:
|
|
warning_raised = True
|
|
break
|
|
tools.assert_true(warning_raised, msg='%s did not raise a PendingDeprecationWarning' % module_fqn)
|
|
|
|
def test_modules(self):
|
|
for mod in self.module_data:
|
|
yield self.check_modules, mod[0], mod[1], mod[2]
|
|
|
|
def test_defaultdict(self):
|
|
with warnings.catch_warnings(record=True) as w:
|
|
warnings.simplefilter('always')
|
|
defaultdict()
|
|
warning_raised = False
|
|
for warning in (e.message for e in w):
|
|
if isinstance(warning, PendingDeprecationWarning) and \
|
|
('defaultdict is deprecated') in warning.args[0]:
|
|
warning_raised = True
|
|
break
|
|
tools.assert_true(warning_raised, msg='kitchen.pycompat25.collections.defaultdict did not raise a PendingDeprecationWarning')
|