diff options
author | Morgan Aubert <morgan.aubert@impakfinance.com> | 2018-04-27 17:18:15 -0400 |
---|---|---|
committer | Tim Graham <timograham@gmail.com> | 2018-05-09 11:40:28 -0400 |
commit | 704443acacf0dfbcb1c52df4b260585055754ce7 (patch) | |
tree | 600147bf6114d7b490fcd253ff9797b7e7531c09 /tests/deprecation | |
parent | 7ba040de7703fd06b9b35ddd31da40103d911c30 (diff) | |
download | django-704443acacf0dfbcb1c52df4b260585055754ce7.tar.gz |
Fixed #29363 -- Added SimpleTestCase.assertWarnsMessage().
Diffstat (limited to 'tests/deprecation')
-rw-r--r-- | tests/deprecation/tests.py | 153 |
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) |