summaryrefslogtreecommitdiff
path: root/tests/deprecation
diff options
context:
space:
mode:
authorMorgan Aubert <morgan.aubert@impakfinance.com>2018-04-27 17:18:15 -0400
committerTim Graham <timograham@gmail.com>2018-05-09 11:40:28 -0400
commit704443acacf0dfbcb1c52df4b260585055754ce7 (patch)
tree600147bf6114d7b490fcd253ff9797b7e7531c09 /tests/deprecation
parent7ba040de7703fd06b9b35ddd31da40103d911c30 (diff)
downloaddjango-704443acacf0dfbcb1c52df4b260585055754ce7.tar.gz
Fixed #29363 -- Added SimpleTestCase.assertWarnsMessage().
Diffstat (limited to 'tests/deprecation')
-rw-r--r--tests/deprecation/tests.py153
1 files changed, 66 insertions, 87 deletions
diff --git a/tests/deprecation/tests.py b/tests/deprecation/tests.py
index ef0284b378..b3ab78d1ca 100644
--- a/tests/deprecation/tests.py
+++ b/tests/deprecation/tests.py
@@ -23,107 +23,94 @@ class RenameMethodsTests(SimpleTestCase):
Ensure a warning is raised upon class definition to suggest renaming
the faulty method.
"""
- with warnings.catch_warnings(record=True) as recorded:
- warnings.simplefilter('always')
-
+ msg = '`Manager.old` method should be renamed `new`.'
+ with self.assertWarnsMessage(DeprecationWarning, msg):
class Manager(metaclass=RenameManagerMethods):
def old(self):
pass
- self.assertEqual(len(recorded), 1)
- msg = str(recorded[0].message)
- self.assertEqual(msg, '`Manager.old` method should be renamed `new`.')
def test_get_new_defined(self):
"""
Ensure `old` complains and not `new` when only `new` is defined.
"""
- with warnings.catch_warnings(record=True) as recorded:
- warnings.simplefilter('ignore')
+ class Manager(metaclass=RenameManagerMethods):
+ def new(self):
+ pass
+ manager = Manager()
- class Manager(metaclass=RenameManagerMethods):
- def new(self):
- pass
+ with warnings.catch_warnings(record=True) as recorded:
warnings.simplefilter('always')
- manager = Manager()
manager.new()
- self.assertEqual(len(recorded), 0)
+ self.assertEqual(len(recorded), 0)
+
+ msg = '`Manager.old` is deprecated, use `new` instead.'
+ with self.assertWarnsMessage(DeprecationWarning, msg):
manager.old()
- self.assertEqual(len(recorded), 1)
- msg = str(recorded.pop().message)
- self.assertEqual(msg, '`Manager.old` is deprecated, use `new` instead.')
def test_get_old_defined(self):
"""
Ensure `old` complains when only `old` is defined.
"""
- with warnings.catch_warnings(record=True) as recorded:
- warnings.simplefilter('ignore')
+ class Manager(metaclass=RenameManagerMethods):
+ def old(self):
+ pass
+ manager = Manager()
- class Manager(metaclass=RenameManagerMethods):
- def old(self):
- pass
+ with warnings.catch_warnings(record=True) as recorded:
warnings.simplefilter('always')
- manager = Manager()
manager.new()
- self.assertEqual(len(recorded), 0)
+ self.assertEqual(len(recorded), 0)
+
+ msg = '`Manager.old` is deprecated, use `new` instead.'
+ with self.assertWarnsMessage(DeprecationWarning, msg):
manager.old()
- self.assertEqual(len(recorded), 1)
- msg = str(recorded.pop().message)
- self.assertEqual(msg, '`Manager.old` is deprecated, use `new` instead.')
def test_deprecated_subclass_renamed(self):
"""
Ensure the correct warnings are raised when a class that didn't rename
`old` subclass one that did.
"""
- with warnings.catch_warnings(record=True) as recorded:
- warnings.simplefilter('ignore')
+ class Renamed(metaclass=RenameManagerMethods):
+ def new(self):
+ pass
- class Renamed(metaclass=RenameManagerMethods):
- def new(self):
- pass
+ class Deprecated(Renamed):
+ def old(self):
+ super().old()
- class Deprecated(Renamed):
- def old(self):
- super().old()
- warnings.simplefilter('always')
- deprecated = Deprecated()
+ deprecated = Deprecated()
+
+ msg = '`Renamed.old` is deprecated, use `new` instead.'
+ with self.assertWarnsMessage(DeprecationWarning, msg):
deprecated.new()
- self.assertEqual(len(recorded), 1)
- msg = str(recorded.pop().message)
- self.assertEqual(msg, '`Renamed.old` is deprecated, use `new` instead.')
- recorded[:] = []
+
+ msg = '`Deprecated.old` is deprecated, use `new` instead.'
+ with self.assertWarnsMessage(DeprecationWarning, msg):
deprecated.old()
- self.assertEqual(len(recorded), 2)
- msgs = [str(warning.message) for warning in recorded]
- self.assertEqual(msgs, [
- '`Deprecated.old` is deprecated, use `new` instead.',
- '`Renamed.old` is deprecated, use `new` instead.',
- ])
def test_renamed_subclass_deprecated(self):
"""
Ensure the correct warnings are raised when a class that renamed
`old` subclass one that didn't.
"""
- with warnings.catch_warnings(record=True) as recorded:
- warnings.simplefilter('ignore')
+ class Deprecated(metaclass=RenameManagerMethods):
+ def old(self):
+ pass
- class Deprecated(metaclass=RenameManagerMethods):
- def old(self):
- pass
+ class Renamed(Deprecated):
+ def new(self):
+ super().new()
- class Renamed(Deprecated):
- def new(self):
- super().new()
+ renamed = Renamed()
+
+ with warnings.catch_warnings(record=True) as recorded:
warnings.simplefilter('always')
- renamed = Renamed()
renamed.new()
- self.assertEqual(len(recorded), 0)
+ self.assertEqual(len(recorded), 0)
+
+ msg = '`Renamed.old` is deprecated, use `new` instead.'
+ with self.assertWarnsMessage(DeprecationWarning, msg):
renamed.old()
- self.assertEqual(len(recorded), 1)
- msg = str(recorded.pop().message)
- self.assertEqual(msg, '`Renamed.old` is deprecated, use `new` instead.')
def test_deprecated_subclass_renamed_and_mixins(self):
"""
@@ -131,36 +118,30 @@ class RenameMethodsTests(SimpleTestCase):
class that renamed `old` and mixins that may or may not have renamed
`new`.
"""
- with warnings.catch_warnings(record=True) as recorded:
- warnings.simplefilter('ignore')
+ class Renamed(metaclass=RenameManagerMethods):
+ def new(self):
+ pass
- class Renamed(metaclass=RenameManagerMethods):
- def new(self):
- pass
+ class RenamedMixin:
+ def new(self):
+ super().new()
- class RenamedMixin:
- def new(self):
- super().new()
+ class DeprecatedMixin:
+ def old(self):
+ super().old()
- class DeprecatedMixin:
- def old(self):
- super().old()
+ class Deprecated(DeprecatedMixin, RenamedMixin, Renamed):
+ pass
- class Deprecated(DeprecatedMixin, RenamedMixin, Renamed):
- pass
- warnings.simplefilter('always')
- deprecated = Deprecated()
+ deprecated = Deprecated()
+
+ msg = '`RenamedMixin.old` is deprecated, use `new` instead.'
+ with self.assertWarnsMessage(DeprecationWarning, msg):
deprecated.new()
- self.assertEqual(len(recorded), 1)
- msg = str(recorded.pop().message)
- self.assertEqual(msg, '`RenamedMixin.old` is deprecated, use `new` instead.')
+
+ msg = '`DeprecatedMixin.old` is deprecated, use `new` instead.'
+ with self.assertWarnsMessage(DeprecationWarning, msg):
deprecated.old()
- self.assertEqual(len(recorded), 2)
- msgs = [str(warning.message) for warning in recorded]
- self.assertEqual(msgs, [
- '`DeprecatedMixin.old` is deprecated, use `new` instead.',
- '`RenamedMixin.old` is deprecated, use `new` instead.',
- ])
class DeprecationInstanceCheckTest(SimpleTestCase):
@@ -170,7 +151,5 @@ class DeprecationInstanceCheckTest(SimpleTestCase):
deprecation_warning = RemovedInNextVersionWarning
msg = '`Manager` is deprecated, use `fake.path.Foo` instead.'
- with warnings.catch_warnings():
- warnings.simplefilter('error', category=RemovedInNextVersionWarning)
- with self.assertRaisesMessage(RemovedInNextVersionWarning, msg):
- isinstance(object, Manager)
+ with self.assertWarnsMessage(RemovedInNextVersionWarning, msg):
+ isinstance(object, Manager)