diff --git a/django/core/management/commands/loaddata.py b/django/core/management/commands/loaddata.py index fbafed3f92..ab9f7468c4 100644 --- a/django/core/management/commands/loaddata.py +++ b/django/core/management/commands/loaddata.py @@ -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 @@ -169,7 +170,7 @@ class Command(BaseCommand): label_found = label_found or found if fixture_name != 'initial_data' and not label_found: - raise CommandError("No fixture named '%s' found." % fixture_name) + warnings.warn("No fixture named '%s' found." % fixture_name) def process_dir(self, fixture_dir, fixture_name, compression_formats, serialization_formats): diff --git a/tests/fixtures/tests.py b/tests/fixtures/tests.py index 93f2438ce9..f954933046 100644 --- a/tests/fixtures/tests.py +++ b/tests/fixtures/tests.py @@ -1,5 +1,7 @@ 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 @@ -137,14 +139,18 @@ class FixtureLoadingTests(DumpDataAssertMixin, TestCase): '' ]) - # Loading a fixture that doesn't exist results in an error - with self.assertRaises(management.CommandError): + # 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 - management.call_command('loaddata', 'initial_data.json', verbosity=0, - commit=False) + 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(), [ @@ -279,10 +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 self.assertRaises(management.CommandError): + with warnings.catch_warnings(record=True): management.call_command('loaddata', 'db_fixture_3', verbosity=0, commit=False) - with self.assertRaises(management.CommandError): + with warnings.catch_warnings(record=True): management.call_command('loaddata', 'db_fixture_3', verbosity=0, using='default', commit=False) self.assertQuerysetEqual(Article.objects.all(), []) diff --git a/tests/fixtures_model_package/tests.py b/tests/fixtures_model_package/tests.py index c250f647ce..af6b059c66 100644 --- a/tests/fixtures_model_package/tests.py +++ b/tests/fixtures_model_package/tests.py @@ -100,7 +100,10 @@ class FixtureTestCase(TestCase): ) # Load a fixture that doesn't exist - management.call_command("loaddata", "unknown.json", verbosity=0, commit=False) + import warnings + with warnings.catch_warnings(record=True): + management.call_command("loaddata", "unknown.json", verbosity=0, commit=False) + self.assertQuerysetEqual( Article.objects.all(), [ "Django conquers world!", diff --git a/tests/fixtures_regress/tests.py b/tests/fixtures_regress/tests.py index df84d77a3f..97ad6c326a 100644 --- a/tests/fixtures_regress/tests.py +++ b/tests/fixtures_regress/tests.py @@ -441,7 +441,8 @@ class TestFixtures(TestCase): def test_loaddata_not_existant_fixture_file(self): stdout_output = StringIO() - with self.assertRaises(management.CommandError): + import warnings + with warnings.catch_warnings(record=True): management.call_command( 'loaddata', 'this_fixture_doesnt_exist',