diff --git a/django/contrib/staticfiles/management/commands/findstatic.py b/django/contrib/staticfiles/management/commands/findstatic.py index 0f13277c37..4d8b0c05b4 100644 --- a/django/contrib/staticfiles/management/commands/findstatic.py +++ b/django/contrib/staticfiles/management/commands/findstatic.py @@ -17,6 +17,8 @@ class Command(LabelCommand): verbosity = int(options.get('verbosity', 1)) result = finders.find(path, all=options['all']) if result: + if not isinstance(result, (list, tuple)): + result = [result] output = '\n '.join((os.path.realpath(path) for path in result)) self.stdout.write("Found %r here:\n %s\n" % (path, output)) else: diff --git a/tests/regressiontests/staticfiles_tests/tests.py b/tests/regressiontests/staticfiles_tests/tests.py index 83e41b7e14..316b9c4cae 100644 --- a/tests/regressiontests/staticfiles_tests/tests.py +++ b/tests/regressiontests/staticfiles_tests/tests.py @@ -3,6 +3,7 @@ import shutil import os import sys import posixpath +from StringIO import StringIO from django.test import TestCase from django.conf import settings @@ -134,6 +135,39 @@ class TestDefaults(object): self.assertFileContains('test/file1.txt', 'file1 in the app dir') +class TestFindStatic(BuildStaticTestCase, TestDefaults): + """ + Test ``findstatic`` management command. + """ + def _get_file(self, filepath): + _stdout = sys.stdout + sys.stdout = StringIO() + try: + call_command('findstatic', filepath, all=False, verbosity='0') + sys.stdout.seek(0) + lines = [l.strip() for l in sys.stdout.readlines()] + contents = open(lines[1].strip()).read() + finally: + sys.stdout = _stdout + return contents + + def test_all_files(self): + """ + Test that findstatic returns all candidate files if run without --first. + """ + _stdout = sys.stdout + sys.stdout = StringIO() + try: + call_command('findstatic', 'test/file.txt', verbosity='0') + sys.stdout.seek(0) + lines = [l.strip() for l in sys.stdout.readlines()] + finally: + sys.stdout = _stdout + self.assertEquals(len(lines), 3) # three because there is also the "Found here" line + self.failUnless('project' in lines[1]) + self.failUnless('apps' in lines[2]) + + class TestBuildStatic(BuildStaticTestCase, TestDefaults): """ Test ``collectstatic`` management command.