summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2015-07-29 11:12:07 -0400
committerTim Graham <timograham@gmail.com>2015-07-30 10:12:41 -0400
commitd27e0f04a68cf62088b5b1b3a2c0d6f7e8f89c5d (patch)
tree810ad24f4f223ca953c4c61d2d6ad1c512b92d40
parent635ffc3c37d58eb96ae17d5389dd50bf635413c6 (diff)
Fixed #25190 -- Deprecated callable_obj parameter to assertRaisesMessage().
Thanks Aymeric Augustin for review.
-rw-r--r--django/test/testcases.py4
-rw-r--r--docs/internals/deprecation.txt3
-rw-r--r--docs/releases/1.9.txt4
-rw-r--r--docs/topics/testing/tools.txt5
-rw-r--r--tests/test_utils/tests.py18
5 files changed, 32 insertions, 2 deletions
diff --git a/django/test/testcases.py b/django/test/testcases.py
index de0517f375..95ea4ae900 100644
--- a/django/test/testcases.py
+++ b/django/test/testcases.py
@@ -618,6 +618,10 @@ class SimpleTestCase(unittest.TestCase):
# callable_obj was a documented kwarg in Django 1.8 and older.
callable_obj = kwargs.pop('callable_obj', None)
if callable_obj:
+ warnings.warn(
+ 'The callable_obj kwarg is deprecated. Pass the callable '
+ 'as a positional argument instead.', RemovedInDjango20Warning
+ )
args = (callable_obj,) + args
return six.assertRaisesRegex(self, expected_exception,
re.escape(expected_message), *args, **kwargs)
diff --git a/docs/internals/deprecation.txt b/docs/internals/deprecation.txt
index a9e60b379f..4a14acd734 100644
--- a/docs/internals/deprecation.txt
+++ b/docs/internals/deprecation.txt
@@ -89,6 +89,9 @@ details on these changes.
* The ``current_app`` parameter to the ``contrib.auth`` views will be removed.
+* The ``callable_obj`` keyword argument to
+ ``SimpleTestCase.assertRaisesMessage()`` will be removed.
+
.. _deprecation-removed-in-1.10:
1.10
diff --git a/docs/releases/1.9.txt b/docs/releases/1.9.txt
index b14a4040d8..2e8b44adf0 100644
--- a/docs/releases/1.9.txt
+++ b/docs/releases/1.9.txt
@@ -1077,6 +1077,10 @@ Miscellaneous
* ``django.template.loaders.eggs.Loader`` is deprecated as distributing
applications as eggs is not recommended.
+* The ``callable_obj`` keyword argument to
+ ``SimpleTestCase.assertRaisesMessage()`` is deprecated. Pass the callable as
+ a positional argument instead.
+
.. removed-features-1.9:
Features removed in 1.9
diff --git a/docs/topics/testing/tools.txt b/docs/topics/testing/tools.txt
index fef718c7c6..27db72daa1 100644
--- a/docs/topics/testing/tools.txt
+++ b/docs/topics/testing/tools.txt
@@ -1364,6 +1364,11 @@ your test suite.
with self.assertRaisesMessage(ValueError, 'invalid literal for int()'):
int('a')
+ .. deprecated:: 1.9
+
+ Passing ``callable`` as a keyword argument called ``callable_obj`` is
+ deprecated. Pass the callable as a positional argument instead.
+
.. method:: SimpleTestCase.assertFieldOutput(fieldclass, valid, invalid, field_args=None, field_kwargs=None, empty_value='')
Asserts that a form field behaves correctly with various inputs.
diff --git a/tests/test_utils/tests.py b/tests/test_utils/tests.py
index 7056ea33de..682e0e08e6 100644
--- a/tests/test_utils/tests.py
+++ b/tests/test_utils/tests.py
@@ -2,6 +2,7 @@
from __future__ import unicode_literals
import unittest
+import warnings
from django.conf.urls import url
from django.contrib.staticfiles.finders import get_finder, get_finders
@@ -13,12 +14,14 @@ from django.forms import EmailField, IntegerField
from django.http import HttpResponse
from django.template.loader import render_to_string
from django.test import (
- SimpleTestCase, TestCase, skipIfDBFeature, skipUnlessDBFeature,
+ SimpleTestCase, TestCase, ignore_warnings, skipIfDBFeature,
+ skipUnlessDBFeature,
)
from django.test.html import HTMLParseError, parse_html
from django.test.utils import CaptureQueriesContext, override_settings
from django.utils import six
from django.utils._os import abspathu
+from django.utils.deprecation import RemovedInDjango20Warning
from .models import Car, Person, PossessedCar
from .views import empty_response
@@ -752,11 +755,22 @@ class AssertRaisesMsgTest(SimpleTestCase):
raise ValueError("[.*x+]y?")
self.assertRaisesMessage(ValueError, "[.*x+]y?", func1)
+ @ignore_warnings(category=RemovedInDjango20Warning)
def test_callable_obj_param(self):
# callable_obj was a documented kwarg in Django 1.8 and older.
def func1():
raise ValueError("[.*x+]y?")
- self.assertRaisesMessage(ValueError, "[.*x+]y?", callable_obj=func1)
+
+ with warnings.catch_warnings(record=True) as warns:
+ warnings.simplefilter('always')
+ self.assertRaisesMessage(ValueError, "[.*x+]y?", callable_obj=func1)
+
+ self.assertEqual(len(warns), 1)
+ self.assertEqual(
+ str(warns[0].message),
+ 'The callable_obj kwarg is deprecated. Pass the callable '
+ 'as a positional argument instead.'
+ )
class AssertFieldOutputTests(SimpleTestCase):