Loading django/core/management/commands/loaddata.py +7 −5 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ from __future__ import unicode_literals import glob import gzip import os import warnings import zipfile from optparse import make_option import warnings Loading Loading @@ -156,12 +157,13 @@ class Command(BaseCommand): finally: fixture.close() # If the fixture we loaded contains 0 objects, assume that an # error was encountered during fixture loading. # Warn if the fixture we loaded contains 0 objects. if objects_in_fixture == 0: raise CommandError( "No fixture data found for '%s'. " "(File format may be invalid.)" % fixture_name) warnings.warn( "No fixture data found for '%s'. (File format may be " "invalid.)" % fixture_name, RuntimeWarning ) def _find_fixtures(self, fixture_label): """ Loading docs/releases/1.7.txt +3 −0 Original line number Diff line number Diff line Loading @@ -113,6 +113,9 @@ Miscellaneous :attr:`~django.forms.formsets.BaseFormSet.can_delete` for instructions on how to manually delete objects from deleted forms. * Loading empty fixtures emits a ``RuntimeWarning`` rather than raising :class:`~django.core.management.CommandError`. Features deprecated in 1.7 ========================== Loading tests/fixtures_regress/tests.py +26 −13 Original line number Diff line number Diff line Loading @@ -181,55 +181,68 @@ class TestFixtures(TestCase): """ Test for ticket #4371 -- Loading a fixture file with invalid data using explicit filename. Validate that error conditions are caught correctly Test for ticket #18213 -- warning conditions are caught correctly """ with six.assertRaisesRegex(self, management.CommandError, "No fixture data found for 'bad_fixture2'. \(File format may be invalid.\)"): with warnings.catch_warnings(record=True) as warning_list: warnings.simplefilter("always") management.call_command( 'loaddata', 'bad_fixture2.xml', verbosity=0, ) warning = warning_list.pop() self.assertEqual(warning.category, RuntimeWarning) self.assertEqual(str(warning.message), "No fixture data found for 'bad_fixture2'. (File format may be invalid.)") def test_invalid_data_no_ext(self): """ Test for ticket #4371 -- Loading a fixture file with invalid data without file extension. Validate that error conditions are caught correctly Test for ticket #18213 -- warning conditions are caught correctly """ with six.assertRaisesRegex(self, management.CommandError, "No fixture data found for 'bad_fixture2'. \(File format may be invalid.\)"): with warnings.catch_warnings(record=True) as warning_list: warnings.simplefilter("always") management.call_command( 'loaddata', 'bad_fixture2', verbosity=0, ) warning = warning_list.pop() self.assertEqual(warning.category, RuntimeWarning) self.assertEqual(str(warning.message), "No fixture data found for 'bad_fixture2'. (File format may be invalid.)") def test_empty(self): """ Test for ticket #4371 -- Loading a fixture file with no data returns an error. Validate that error conditions are caught correctly Test for ticket #18213 -- Loading a fixture file with no data output a warning. Previously empty fixture raises an error exception, see ticket #4371. """ with six.assertRaisesRegex(self, management.CommandError, "No fixture data found for 'empty'. \(File format may be invalid.\)"): with warnings.catch_warnings(record=True) as warning_list: warnings.simplefilter("always") management.call_command( 'loaddata', 'empty', verbosity=0, ) warning = warning_list.pop() self.assertEqual(warning.category, RuntimeWarning) self.assertEqual(str(warning.message), "No fixture data found for 'empty'. (File format may be invalid.)") def test_error_message(self): """ (Regression for #9011 - error message is correct) Regression for #9011 - error message is correct. Change from error to warning for ticket #18213. """ with six.assertRaisesRegex(self, management.CommandError, "^No fixture data found for 'bad_fixture2'. \(File format may be invalid.\)$"): with warnings.catch_warnings(record=True) as warning_list: warnings.simplefilter("always") management.call_command( 'loaddata', 'bad_fixture2', 'animal', verbosity=0, ) warning = warning_list.pop() self.assertEqual(warning.category, RuntimeWarning) self.assertEqual(str(warning.message), "No fixture data found for 'bad_fixture2'. (File format may be invalid.)") def test_pg_sequence_resetting_checks(self): """ Loading Loading
django/core/management/commands/loaddata.py +7 −5 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ from __future__ import unicode_literals import glob import gzip import os import warnings import zipfile from optparse import make_option import warnings Loading Loading @@ -156,12 +157,13 @@ class Command(BaseCommand): finally: fixture.close() # If the fixture we loaded contains 0 objects, assume that an # error was encountered during fixture loading. # Warn if the fixture we loaded contains 0 objects. if objects_in_fixture == 0: raise CommandError( "No fixture data found for '%s'. " "(File format may be invalid.)" % fixture_name) warnings.warn( "No fixture data found for '%s'. (File format may be " "invalid.)" % fixture_name, RuntimeWarning ) def _find_fixtures(self, fixture_label): """ Loading
docs/releases/1.7.txt +3 −0 Original line number Diff line number Diff line Loading @@ -113,6 +113,9 @@ Miscellaneous :attr:`~django.forms.formsets.BaseFormSet.can_delete` for instructions on how to manually delete objects from deleted forms. * Loading empty fixtures emits a ``RuntimeWarning`` rather than raising :class:`~django.core.management.CommandError`. Features deprecated in 1.7 ========================== Loading
tests/fixtures_regress/tests.py +26 −13 Original line number Diff line number Diff line Loading @@ -181,55 +181,68 @@ class TestFixtures(TestCase): """ Test for ticket #4371 -- Loading a fixture file with invalid data using explicit filename. Validate that error conditions are caught correctly Test for ticket #18213 -- warning conditions are caught correctly """ with six.assertRaisesRegex(self, management.CommandError, "No fixture data found for 'bad_fixture2'. \(File format may be invalid.\)"): with warnings.catch_warnings(record=True) as warning_list: warnings.simplefilter("always") management.call_command( 'loaddata', 'bad_fixture2.xml', verbosity=0, ) warning = warning_list.pop() self.assertEqual(warning.category, RuntimeWarning) self.assertEqual(str(warning.message), "No fixture data found for 'bad_fixture2'. (File format may be invalid.)") def test_invalid_data_no_ext(self): """ Test for ticket #4371 -- Loading a fixture file with invalid data without file extension. Validate that error conditions are caught correctly Test for ticket #18213 -- warning conditions are caught correctly """ with six.assertRaisesRegex(self, management.CommandError, "No fixture data found for 'bad_fixture2'. \(File format may be invalid.\)"): with warnings.catch_warnings(record=True) as warning_list: warnings.simplefilter("always") management.call_command( 'loaddata', 'bad_fixture2', verbosity=0, ) warning = warning_list.pop() self.assertEqual(warning.category, RuntimeWarning) self.assertEqual(str(warning.message), "No fixture data found for 'bad_fixture2'. (File format may be invalid.)") def test_empty(self): """ Test for ticket #4371 -- Loading a fixture file with no data returns an error. Validate that error conditions are caught correctly Test for ticket #18213 -- Loading a fixture file with no data output a warning. Previously empty fixture raises an error exception, see ticket #4371. """ with six.assertRaisesRegex(self, management.CommandError, "No fixture data found for 'empty'. \(File format may be invalid.\)"): with warnings.catch_warnings(record=True) as warning_list: warnings.simplefilter("always") management.call_command( 'loaddata', 'empty', verbosity=0, ) warning = warning_list.pop() self.assertEqual(warning.category, RuntimeWarning) self.assertEqual(str(warning.message), "No fixture data found for 'empty'. (File format may be invalid.)") def test_error_message(self): """ (Regression for #9011 - error message is correct) Regression for #9011 - error message is correct. Change from error to warning for ticket #18213. """ with six.assertRaisesRegex(self, management.CommandError, "^No fixture data found for 'bad_fixture2'. \(File format may be invalid.\)$"): with warnings.catch_warnings(record=True) as warning_list: warnings.simplefilter("always") management.call_command( 'loaddata', 'bad_fixture2', 'animal', verbosity=0, ) warning = warning_list.pop() self.assertEqual(warning.category, RuntimeWarning) self.assertEqual(str(warning.message), "No fixture data found for 'bad_fixture2'. (File format may be invalid.)") def test_pg_sequence_resetting_checks(self): """ Loading