Loading django/core/management/commands/loaddata.py +10 −2 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ import os import gzip import zipfile from optparse import make_option import warnings from django.conf import settings from django.core import serializers Loading Loading @@ -162,9 +163,14 @@ class Command(BaseCommand): else: fixture_dirs = app_fixtures + list(settings.FIXTURE_DIRS) + [''] label_found = False for fixture_dir in fixture_dirs: self.process_dir(fixture_dir, fixture_name, compression_formats, formats) found = self.process_dir(fixture_dir, fixture_name, compression_formats, formats) label_found = label_found or found if fixture_name != 'initial_data' and not label_found: warnings.warn("No fixture named '%s' found." % fixture_name) def process_dir(self, fixture_dir, fixture_name, compression_formats, serialization_formats): Loading Loading @@ -242,3 +248,5 @@ class Command(BaseCommand): raise CommandError( "No fixture data found for '%s'. (File format may be invalid.)" % (fixture_name)) return label_found tests/fixtures/tests.py +18 −5 Original line number Diff line number Diff line from __future__ import absolute_import import warnings from django.contrib.sites.models import Site from django.core import management from django.db import connection, IntegrityError Loading Loading @@ -137,8 +139,18 @@ class FixtureLoadingTests(DumpDataAssertMixin, TestCase): '<Book: Music for all ages by Artist formerly known as "Prince" and Django Reinhardt>' ]) # Load a fixture that doesn't exist management.call_command('loaddata', 'unknown.json', verbosity=0, commit=False) # Loading a fixture that doesn't exist emits a warning with warnings.catch_warnings(record=True) as w: management.call_command('loaddata', 'unknown.json', verbosity=0, commit=False) self.assertEqual(len(w), 1) self.assertTrue(w[0].message, "No fixture named 'unknown' found.") # An attempt to load a nonexistent 'initial_data' fixture isn't an error with warnings.catch_warnings(record=True) as w: management.call_command('loaddata', 'initial_data.json', verbosity=0, commit=False) self.assertEqual(len(w), 0) # object list is unaffected self.assertQuerysetEqual(Article.objects.all(), [ Loading Loading @@ -273,9 +285,10 @@ class FixtureLoadingTests(DumpDataAssertMixin, TestCase): def test_unmatched_identifier_loading(self): # Try to load db fixture 3. This won't load because the database identifier doesn't match with warnings.catch_warnings(record=True): management.call_command('loaddata', 'db_fixture_3', verbosity=0, commit=False) self.assertQuerysetEqual(Article.objects.all(), []) with warnings.catch_warnings(record=True): management.call_command('loaddata', 'db_fixture_3', verbosity=0, using='default', commit=False) self.assertQuerysetEqual(Article.objects.all(), []) Loading tests/fixtures_model_package/tests.py +5 −1 Original line number Diff line number Diff line from __future__ import unicode_literals import warnings from django.core import management from django.db import transaction from django.test import TestCase, TransactionTestCase Loading Loading @@ -100,7 +102,9 @@ class FixtureTestCase(TestCase): ) # Load a fixture that doesn't exist with warnings.catch_warnings(record=True): management.call_command("loaddata", "unknown.json", verbosity=0, commit=False) self.assertQuerysetEqual( Article.objects.all(), [ "Django conquers world!", Loading tests/fixtures_regress/tests.py +9 −7 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ from __future__ import absolute_import, unicode_literals import os import re import warnings from django.core.serializers.base import DeserializationError from django.core import management Loading Loading @@ -441,6 +442,7 @@ class TestFixtures(TestCase): def test_loaddata_not_existant_fixture_file(self): stdout_output = StringIO() with warnings.catch_warnings(record=True): management.call_command( 'loaddata', 'this_fixture_doesnt_exist', Loading Loading
django/core/management/commands/loaddata.py +10 −2 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ import os import gzip import zipfile from optparse import make_option import warnings from django.conf import settings from django.core import serializers Loading Loading @@ -162,9 +163,14 @@ class Command(BaseCommand): else: fixture_dirs = app_fixtures + list(settings.FIXTURE_DIRS) + [''] label_found = False for fixture_dir in fixture_dirs: self.process_dir(fixture_dir, fixture_name, compression_formats, formats) found = self.process_dir(fixture_dir, fixture_name, compression_formats, formats) label_found = label_found or found if fixture_name != 'initial_data' and not label_found: warnings.warn("No fixture named '%s' found." % fixture_name) def process_dir(self, fixture_dir, fixture_name, compression_formats, serialization_formats): Loading Loading @@ -242,3 +248,5 @@ class Command(BaseCommand): raise CommandError( "No fixture data found for '%s'. (File format may be invalid.)" % (fixture_name)) return label_found
tests/fixtures/tests.py +18 −5 Original line number Diff line number Diff line from __future__ import absolute_import import warnings from django.contrib.sites.models import Site from django.core import management from django.db import connection, IntegrityError Loading Loading @@ -137,8 +139,18 @@ class FixtureLoadingTests(DumpDataAssertMixin, TestCase): '<Book: Music for all ages by Artist formerly known as "Prince" and Django Reinhardt>' ]) # Load a fixture that doesn't exist management.call_command('loaddata', 'unknown.json', verbosity=0, commit=False) # Loading a fixture that doesn't exist emits a warning with warnings.catch_warnings(record=True) as w: management.call_command('loaddata', 'unknown.json', verbosity=0, commit=False) self.assertEqual(len(w), 1) self.assertTrue(w[0].message, "No fixture named 'unknown' found.") # An attempt to load a nonexistent 'initial_data' fixture isn't an error with warnings.catch_warnings(record=True) as w: management.call_command('loaddata', 'initial_data.json', verbosity=0, commit=False) self.assertEqual(len(w), 0) # object list is unaffected self.assertQuerysetEqual(Article.objects.all(), [ Loading Loading @@ -273,9 +285,10 @@ class FixtureLoadingTests(DumpDataAssertMixin, TestCase): def test_unmatched_identifier_loading(self): # Try to load db fixture 3. This won't load because the database identifier doesn't match with warnings.catch_warnings(record=True): management.call_command('loaddata', 'db_fixture_3', verbosity=0, commit=False) self.assertQuerysetEqual(Article.objects.all(), []) with warnings.catch_warnings(record=True): management.call_command('loaddata', 'db_fixture_3', verbosity=0, using='default', commit=False) self.assertQuerysetEqual(Article.objects.all(), []) Loading
tests/fixtures_model_package/tests.py +5 −1 Original line number Diff line number Diff line from __future__ import unicode_literals import warnings from django.core import management from django.db import transaction from django.test import TestCase, TransactionTestCase Loading Loading @@ -100,7 +102,9 @@ class FixtureTestCase(TestCase): ) # Load a fixture that doesn't exist with warnings.catch_warnings(record=True): management.call_command("loaddata", "unknown.json", verbosity=0, commit=False) self.assertQuerysetEqual( Article.objects.all(), [ "Django conquers world!", Loading
tests/fixtures_regress/tests.py +9 −7 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ from __future__ import absolute_import, unicode_literals import os import re import warnings from django.core.serializers.base import DeserializationError from django.core import management Loading Loading @@ -441,6 +442,7 @@ class TestFixtures(TestCase): def test_loaddata_not_existant_fixture_file(self): stdout_output = StringIO() with warnings.catch_warnings(record=True): management.call_command( 'loaddata', 'this_fixture_doesnt_exist', Loading