test_deprecated.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. from __future__ import absolute_import, unicode_literals
  2. from celery.tests.case import Case, Mock, patch
  3. from celery.utils import deprecated
  4. class test_deprecated_property(Case):
  5. @patch('celery.utils.deprecated.warn')
  6. def test_deprecated(self, warn):
  7. class X(object):
  8. _foo = None
  9. @deprecated.Property(deprecation='1.2')
  10. def foo(self):
  11. return self._foo
  12. @foo.setter
  13. def foo(self, value):
  14. self._foo = value
  15. @foo.deleter
  16. def foo(self):
  17. self._foo = None
  18. self.assertTrue(X.foo)
  19. self.assertTrue(X.foo.__set__(None, 1))
  20. self.assertTrue(X.foo.__delete__(None))
  21. x = X()
  22. x.foo = 10
  23. warn.assert_called_with(
  24. stacklevel=3, deprecation='1.2', alternative=None,
  25. description='foo', removal=None,
  26. )
  27. warn.reset_mock()
  28. self.assertEqual(x.foo, 10)
  29. warn.assert_called_with(
  30. stacklevel=3, deprecation='1.2', alternative=None,
  31. description='foo', removal=None,
  32. )
  33. warn.reset_mock()
  34. del(x.foo)
  35. warn.assert_called_with(
  36. stacklevel=3, deprecation='1.2', alternative=None,
  37. description='foo', removal=None,
  38. )
  39. self.assertIsNone(x._foo)
  40. def test_deprecated_no_setter_or_deleter(self):
  41. class X(object):
  42. @deprecated.Property(deprecation='1.2')
  43. def foo(self):
  44. pass
  45. self.assertTrue(X.foo)
  46. x = X()
  47. with self.assertRaises(AttributeError):
  48. x.foo = 10
  49. with self.assertRaises(AttributeError):
  50. del(x.foo)
  51. class test_warn(Case):
  52. @patch('warnings.warn')
  53. def test_warn_deprecated(self, warn):
  54. deprecated.warn('Foo')
  55. warn.assert_called()