1 | diff --git a/django/core/management/commands/loaddata.py b/django/core/management/commands/loaddata.py
|
---|
2 | index 32ae8ab..4fe99f3 100644
|
---|
3 | --- a/django/core/management/commands/loaddata.py
|
---|
4 | +++ b/django/core/management/commands/loaddata.py
|
---|
5 | @@ -97,6 +97,8 @@ class Command(BaseCommand):
|
---|
6 | if has_bz2:
|
---|
7 | compression_types['bz2'] = bz2.BZ2File
|
---|
8 |
|
---|
9 | + fixture_file_found = False
|
---|
10 | +
|
---|
11 | app_module_paths = []
|
---|
12 | for app in get_apps():
|
---|
13 | if hasattr(app, '__path__'):
|
---|
14 | @@ -164,6 +166,7 @@ class Command(BaseCommand):
|
---|
15 | open_method = compression_types[compression_format]
|
---|
16 | try:
|
---|
17 | fixture = open_method(full_path, 'r')
|
---|
18 | + fixture_file_found = True
|
---|
19 | except IOError:
|
---|
20 | if verbosity >= 2:
|
---|
21 | self.stdout.write("No %s fixture '%s' in %s." % \
|
---|
22 | @@ -215,6 +218,9 @@ class Command(BaseCommand):
|
---|
23 | raise CommandError(
|
---|
24 | "No fixture data found for '%s'. (File format may be invalid.)" %
|
---|
25 | (fixture_name))
|
---|
26 | + if not fixture_file_found:
|
---|
27 | + self.stderr.write("Any fixture file couldn't be found for '%s'" %
|
---|
28 | + fixture_label)
|
---|
29 |
|
---|
30 | # Since we disabled constraint checks, we must manually check for
|
---|
31 | # any invalid keys that might have been added
|
---|
32 | diff --git a/tests/modeltests/fixtures/tests.py b/tests/modeltests/fixtures/tests.py
|
---|
33 | index f9b0ac8..a80ca72 100644
|
---|
34 | --- a/tests/modeltests/fixtures/tests.py
|
---|
35 | +++ b/tests/modeltests/fixtures/tests.py
|
---|
36 | @@ -130,7 +130,7 @@ class FixtureLoadingTests(TestCase):
|
---|
37 | ])
|
---|
38 |
|
---|
39 | # Load a fixture that doesn't exist
|
---|
40 | - management.call_command('loaddata', 'unknown.json', verbosity=0, commit=False)
|
---|
41 | + management.call_command('loaddata', 'unknown.json', verbosity=0, stderr=six.StringIO(), commit=False)
|
---|
42 |
|
---|
43 | # object list is unaffected
|
---|
44 | self.assertQuerysetEqual(Article.objects.all(), [
|
---|
45 | @@ -265,10 +265,11 @@ class FixtureLoadingTests(TestCase):
|
---|
46 |
|
---|
47 | def test_unmatched_identifier_loading(self):
|
---|
48 | # Try to load db fixture 3. This won't load because the database identifier doesn't match
|
---|
49 | - management.call_command('loaddata', 'db_fixture_3', verbosity=0, commit=False)
|
---|
50 | + management.call_command('loaddata', 'db_fixture_3', verbosity=0, stderr=six.StringIO(), commit=False)
|
---|
51 | self.assertQuerysetEqual(Article.objects.all(), [])
|
---|
52 |
|
---|
53 | - management.call_command('loaddata', 'db_fixture_3', verbosity=0, using='default', commit=False)
|
---|
54 | + management.call_command('loaddata', 'db_fixture_3', verbosity=0, stderr=six.StringIO(),
|
---|
55 | + using='default', commit=False)
|
---|
56 | self.assertQuerysetEqual(Article.objects.all(), [])
|
---|
57 |
|
---|
58 | def test_output_formats(self):
|
---|
59 | diff --git a/tests/modeltests/fixtures_model_package/tests.py b/tests/modeltests/fixtures_model_package/tests.py
|
---|
60 | index d147fe6..68edd91 100644
|
---|
61 | --- a/tests/modeltests/fixtures_model_package/tests.py
|
---|
62 | +++ b/tests/modeltests/fixtures_model_package/tests.py
|
---|
63 | @@ -3,6 +3,7 @@ from __future__ import unicode_literals
|
---|
64 | from django.core import management
|
---|
65 | from django.db import transaction
|
---|
66 | from django.test import TestCase, TransactionTestCase
|
---|
67 | +from django.utils import six
|
---|
68 |
|
---|
69 | from .models import Article, Book
|
---|
70 |
|
---|
71 | @@ -93,7 +94,7 @@ class FixtureTestCase(TestCase):
|
---|
72 | )
|
---|
73 |
|
---|
74 | # Load a fixture that doesn't exist
|
---|
75 | - management.call_command("loaddata", "unknown.json", verbosity=0, commit=False)
|
---|
76 | + management.call_command("loaddata", "unknown.json", verbosity=0, stderr=six.StringIO(), commit=False)
|
---|
77 | self.assertQuerysetEqual(
|
---|
78 | Article.objects.all(), [
|
---|
79 | "Django conquers world!",
|
---|
80 | diff --git a/tests/regressiontests/fixtures_regress/tests.py b/tests/regressiontests/fixtures_regress/tests.py
|
---|
81 | index 678db4a..ce287dc 100644
|
---|
82 | --- a/tests/regressiontests/fixtures_regress/tests.py
|
---|
83 | +++ b/tests/regressiontests/fixtures_regress/tests.py
|
---|
84 | @@ -428,10 +428,24 @@ class TestFixtures(TestCase):
|
---|
85 | verbosity=2,
|
---|
86 | commit=False,
|
---|
87 | stdout=stdout_output,
|
---|
88 | + stderr=six.StringIO()
|
---|
89 | )
|
---|
90 | self.assertTrue("No xml fixture 'this_fixture_doesnt_exist' in" in
|
---|
91 | stdout_output.getvalue())
|
---|
92 |
|
---|
93 | + def test_loaddata_not_fixture_file(self):
|
---|
94 | + stderr_output = six.StringIO()
|
---|
95 | + management.call_command(
|
---|
96 | + 'loaddata',
|
---|
97 | + 'this_fixture_doesnt_exist',
|
---|
98 | + commit=False,
|
---|
99 | + stderr=stderr_output,
|
---|
100 | + stdout=six.StringIO()
|
---|
101 | + )
|
---|
102 | +
|
---|
103 | + self.assertTrue("Any fixture file couldn't be found for 'this_fixture_doesnt_exist'" in
|
---|
104 | + stderr_output.getvalue())
|
---|
105 | +
|
---|
106 |
|
---|
107 | class NaturalKeyFixtureTests(TestCase):
|
---|
108 |
|
---|