summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2014-10-17 10:31:49 -0400
committerTim Graham <timograham@gmail.com>2014-10-17 10:31:49 -0400
commit7ae03204ac207bee78d668952744da853a3a732b (patch)
tree7c102ad771b72a4fbb7958f515e2c51c9be87b9f
parent6ce6c77e03fea68ef1bdadd45f15e403f5b71057 (diff)
Fixed #23469 -- Removed test runner compatibility check which often yielded false positives.
-rw-r--r--django/core/checks/compatibility/django_1_6_0.py75
-rw-r--r--docs/ref/checks.txt3
-rw-r--r--tests/check_framework/tests.py41
3 files changed, 2 insertions, 117 deletions
diff --git a/django/core/checks/compatibility/django_1_6_0.py b/django/core/checks/compatibility/django_1_6_0.py
index dad9e415cd..513169babe 100644
--- a/django/core/checks/compatibility/django_1_6_0.py
+++ b/django/core/checks/compatibility/django_1_6_0.py
@@ -9,85 +9,10 @@ from .. import Warning, register, Tags
@register(Tags.compatibility)
def check_1_6_compatibility(**kwargs):
errors = []
- errors.extend(_check_test_runner(**kwargs))
errors.extend(_check_boolean_field_default_value(**kwargs))
return errors
-def _check_test_runner(app_configs=None, **kwargs):
- """
- Checks if the user has *not* overridden the ``TEST_RUNNER`` setting &
- warns them about the default behavior changes.
-
- If the user has overridden that setting, we presume they know what they're
- doing & avoid generating a message.
- """
- from django.conf import settings
-
- # We need to establish if this is a project defined on the 1.5 project template,
- # because if the project was generated on the 1.6 template, it will have be been
- # developed with the new TEST_RUNNER behavior in mind.
-
- # There's no canonical way to do this; so we leverage off the fact that 1.6
- # also introduced a new project template, removing a bunch of settings from the
- # default that won't be in common usage.
-
- # We make this determination on a balance of probabilities. Each of these factors
- # contributes a weight; if enough of them trigger, we've got a likely 1.6 project.
- weight = 0
-
- # If TEST_RUNNER is explicitly set, it's all a moot point - if it's been explicitly set,
- # the user has opted into a specific set of behaviors, which won't change as the
- # default changes.
- if not settings.is_overridden('TEST_RUNNER'):
- # Strong markers:
- # SITE_ID = 1 is in 1.5 template, not defined in 1.6 template
- try:
- settings.SITE_ID
- weight += 2
- except AttributeError:
- pass
-
- # BASE_DIR is not defined in 1.5 template, set in 1.6 template
- try:
- settings.BASE_DIR
- except AttributeError:
- weight += 2
-
- # TEMPLATE_LOADERS defined in 1.5 template, not defined in 1.6 template
- if settings.is_overridden('TEMPLATE_LOADERS'):
- weight += 2
-
- # MANAGERS defined in 1.5 template, not defined in 1.6 template
- if settings.is_overridden('MANAGERS'):
- weight += 2
-
- # Weaker markers - These are more likely to have been added in common usage
- # ADMINS defined in 1.5 template, not defined in 1.6 template
- if settings.is_overridden('ADMINS'):
- weight += 1
-
- # Clickjacking enabled by default in 1.6
- if 'django.middleware.clickjacking.XFrameOptionsMiddleware' not in set(settings.MIDDLEWARE_CLASSES):
- weight += 1
-
- if weight >= 6:
- return [
- Warning(
- "Some project unittests may not execute as expected.",
- hint=("Django 1.6 introduced a new default test runner. It looks like "
- "this project was generated using Django 1.5 or earlier. You should "
- "ensure your tests are all running & behaving as expected. See "
- "https://docs.djangoproject.com/en/dev/releases/1.6/#new-test-runner "
- "for more information."),
- obj=None,
- id='1_6.W001',
- )
- ]
- else:
- return []
-
-
def _check_boolean_field_default_value(app_configs=None, **kwargs):
"""
Checks if there are any BooleanFields without a default value, &
diff --git a/docs/ref/checks.txt b/docs/ref/checks.txt
index fde5dfa210..682d86a8c9 100644
--- a/docs/ref/checks.txt
+++ b/docs/ref/checks.txt
@@ -166,7 +166,8 @@ Backwards Compatibility
The following checks are performed to warn the user of any potential problems
that might occur as a result of a version upgrade.
-* **1_6.W001**: Some project unit tests may not execute as expected.
+* **1_6.W001**: Some project unit tests may not execute as expected. *This
+ check was removed in Django 1.8 due to false positives*.
* **1_6.W002**: ``BooleanField`` does not have a default value.
Admin
diff --git a/tests/check_framework/tests.py b/tests/check_framework/tests.py
index d603cf926e..4d29429313 100644
--- a/tests/check_framework/tests.py
+++ b/tests/check_framework/tests.py
@@ -86,47 +86,6 @@ class MessageTests(TestCase):
class Django_1_6_0_CompatibilityChecks(TestCase):
- @override_settings(TEST_RUNNER='django.test.runner.DiscoverRunner')
- def test_test_runner_new_default(self):
- errors = check_1_6_compatibility()
- self.assertEqual(errors, [])
-
- @override_settings(TEST_RUNNER='myapp.test.CustomRunner')
- def test_test_runner_overriden(self):
- errors = check_1_6_compatibility()
- self.assertEqual(errors, [])
-
- def test_test_runner_not_set_explicitly(self):
- # If TEST_RUNNER was set explicitly, temporarily pretend it wasn't
- test_runner_overridden = False
- if 'TEST_RUNNER' in settings._wrapped._explicit_settings:
- test_runner_overridden = True
- settings._wrapped._explicit_settings.remove('TEST_RUNNER')
- # We remove some settings to make this look like a project generated under Django 1.5.
- settings._wrapped._explicit_settings.add('MANAGERS')
- settings._wrapped._explicit_settings.add('ADMINS')
- try:
- errors = check_1_6_compatibility()
- expected = [
- checks.Warning(
- "Some project unittests may not execute as expected.",
- hint=("Django 1.6 introduced a new default test runner. It looks like "
- "this project was generated using Django 1.5 or earlier. You should "
- "ensure your tests are all running & behaving as expected. See "
- "https://docs.djangoproject.com/en/dev/releases/1.6/#new-test-runner "
- "for more information."),
- obj=None,
- id='1_6.W001',
- )
- ]
- self.assertEqual(errors, expected)
- finally:
- # Restore settings value
- if test_runner_overridden:
- settings._wrapped._explicit_settings.add('TEST_RUNNER')
- settings._wrapped._explicit_settings.remove('MANAGERS')
- settings._wrapped._explicit_settings.remove('ADMINS')
-
@override_settings(TEST_RUNNER='myapp.test.CustomRunner')
def test_boolean_field_default_value(self):
# We patch the field's default value to trigger the warning