Commit a08fda21 authored by Simon Charette's avatar Simon Charette
Browse files

Fixed #25746 -- Isolated inlined test models registration.

Thanks to Tim for the review.
parent 3096f4b0
Loading
Loading
Loading
Loading
+15 −3
Original line number Diff line number Diff line
@@ -6,10 +6,22 @@ from django.conf import settings
from django.core import checks


def check_user_model(**kwargs):
    errors = []

def check_user_model(app_configs=None, **kwargs):
    if app_configs is None:
        cls = apps.get_model(settings.AUTH_USER_MODEL)
    else:
        app_label, model_name = settings.AUTH_USER_MODEL.split('.')
        for app_config in app_configs:
            if app_config.label == app_label:
                cls = app_config.get_model(model_name)
                break
        else:
            # Checks might be run against a set of app configs that don't
            # include the specified user model. In this case we simply don't
            # perform the checks defined below.
            return []

    errors = []

    # Check that REQUIRED_FIELDS is a list
    if not isinstance(cls.REQUIRED_FIELDS, (list, tuple)):
+9 −3
Original line number Diff line number Diff line
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from itertools import chain

from django.apps import apps
from django.utils import six


def check_generic_foreign_keys(**kwargs):
def check_generic_foreign_keys(app_configs=None, **kwargs):
    from .fields import GenericForeignKey

    if app_configs is None:
        models = apps.get_models()
    else:
        models = chain.from_iterable(app_config.get_models() for app_config in app_configs)
    errors = []
    fields = (obj
        for cls in apps.get_models()
        for obj in six.itervalues(vars(cls))
        for model in models
        for obj in six.itervalues(vars(model))
        if isinstance(obj, GenericForeignKey))
    for field in fields:
        errors.extend(field.check())
+18 −14
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@ from __future__ import unicode_literals

import inspect
import types
from itertools import chain

from django.apps import apps
from django.core.checks import Error, Tags, register
@@ -11,8 +12,11 @@ from django.core.checks import Error, Tags, register
@register(Tags.models)
def check_all_models(app_configs=None, **kwargs):
    errors = []
    for model in apps.get_models():
        if app_configs is None or model._meta.app_config in app_configs:
    if app_configs is None:
        models = apps.get_models()
    else:
        models = chain.from_iterable(app_config.get_models() for app_config in app_configs)
    for model in models:
        if not inspect.ismethod(model.check):
            errors.append(
                Error(
+2 −0
Original line number Diff line number Diff line
from django.db import models
from django.test import SimpleTestCase
from django.test.utils import isolate_apps


@isolate_apps('absolute_url_overrides')
class AbsoluteUrlOverrideTests(SimpleTestCase):

    def test_get_absolute_url(self):
+3 −2
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@ from django.contrib.admin.models import LogEntry
from django.core.exceptions import AppRegistryNotReady, ImproperlyConfigured
from django.db import models
from django.test import SimpleTestCase, override_settings
from django.test.utils import extend_sys_path
from django.test.utils import extend_sys_path, isolate_apps
from django.utils import six
from django.utils._os import upath

@@ -260,7 +260,8 @@ class AppsTests(SimpleTestCase):
        finally:
            apps.apps_ready = True

    def test_lazy_model_operation(self):
    @isolate_apps('apps', kwarg_name='apps')
    def test_lazy_model_operation(self, apps):
        """
        Tests apps.lazy_model_operation().
        """
Loading