summaryrefslogtreecommitdiff
path: root/tests/fixtures_regress
diff options
context:
space:
mode:
authorKonrad Świat <konrad.swiat@gmail.com>2014-10-30 18:38:47 +0100
committerTim Graham <timograham@gmail.com>2014-10-31 18:21:54 -0400
commit934a16dc93a5f46f965ba299dbd543703d32d493 (patch)
tree3d1b84d25f68fc0a26d187fd85d2b099beb15ff1 /tests/fixtures_regress
parente548d08f243335b4f11190417830a5f3027efd2a (diff)
downloaddjango-934a16dc93a5f46f965ba299dbd543703d32d493.tar.gz
Fixed #23468 -- Added checks for duplicate fixtures directories in loaddata.
If settings.FIXTURE_DIRS contains duplicates or a default fixture directory (app_name/fixtures), ImproperlyConfigured is raised. Thanks to Berker Peksag and Tim Graham for review.
Diffstat (limited to 'tests/fixtures_regress')
-rw-r--r--tests/fixtures_regress/tests.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/fixtures_regress/tests.py b/tests/fixtures_regress/tests.py
index 0ec48bc5e9..171ef30fec 100644
--- a/tests/fixtures_regress/tests.py
+++ b/tests/fixtures_regress/tests.py
@@ -8,6 +8,7 @@ import re
import warnings
from django.core import serializers
+from django.core.exceptions import ImproperlyConfigured
from django.core.serializers.base import DeserializationError
from django.core import management
from django.core.management.base import CommandError
@@ -486,6 +487,48 @@ class TestFixtures(TestCase):
verbosity=0,
)
+ @override_settings(FIXTURE_DIRS=[os.path.join(_cur_dir, 'fixtures_1'),
+ os.path.join(_cur_dir, 'fixtures_1')])
+ def test_fixture_dirs_with_duplicates(self):
+ """
+ settings.FIXTURE_DIRS cannot contain duplicates in order to avoid
+ repeated fixture loading.
+ """
+ self.assertRaisesMessage(
+ ImproperlyConfigured,
+ "settings.FIXTURE_DIRS contains duplicates.",
+ management.call_command,
+ 'loaddata',
+ 'absolute.json',
+ verbosity=0,
+ )
+
+ @override_settings(FIXTURE_DIRS=[os.path.join(_cur_dir, 'fixtures')])
+ def test_fixture_dirs_with_default_fixture_path(self):
+ """
+ settings.FIXTURE_DIRS cannot contain a default fixtures directory
+ for application (app/fixtures) in order to avoid repeated fixture loading.
+ """
+ self.assertRaisesMessage(
+ ImproperlyConfigured,
+ "'%s' is a default fixture directory for the '%s' app "
+ "and cannot be listed in settings.FIXTURE_DIRS."
+ % (os.path.join(_cur_dir, 'fixtures'), 'fixtures_regress'),
+ management.call_command,
+ 'loaddata',
+ 'absolute.json',
+ verbosity=0,
+ )
+
+ @override_settings(FIXTURE_DIRS=[os.path.join(_cur_dir, 'fixtures_1'),
+ os.path.join(_cur_dir, 'fixtures_2')])
+ def test_loaddata_with_valid_fixture_dirs(self):
+ management.call_command(
+ 'loaddata',
+ 'absolute.json',
+ verbosity=0,
+ )
+
class NaturalKeyFixtureTests(TestCase):