From 7875421a03a5af3006152216215fc3a9a9b8b274 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Thu, 19 Nov 2009 04:35:31 +0000 Subject: [PATCH] Fixed #11243 -- Ensured that bash_completion output is emitted in sorted order. Thanks to Alex Gaynor for the report. git-svn-id: http://code.djangoproject.com/svn/django/trunk@11747 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/core/management/__init__.py | 4 ++-- tests/regressiontests/bash_completion/tests.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/django/core/management/__init__.py b/django/core/management/__init__.py index 60dcf727e4..7af1a81d0a 100644 --- a/django/core/management/__init__.py +++ b/django/core/management/__init__.py @@ -299,7 +299,7 @@ class ManagementUtility(object): # subcommand if cword == 1: - print ' '.join(filter(lambda x: x.startswith(curr), subcommands)) + print ' '.join(sorted(filter(lambda x: x.startswith(curr), subcommands))) # subcommand options # special case: the 'help' subcommand has no options elif cwords[0] in subcommands and cwords[0] != 'help': @@ -328,7 +328,7 @@ class ManagementUtility(object): options = filter(lambda (x, v): x not in prev_opts, options) # filter options by current input - options = [(k, v) for k, v in options if k.startswith(curr)] + options = sorted([(k, v) for k, v in options if k.startswith(curr)]) for option in options: opt_label = option[0] # append '=' to options which require args diff --git a/tests/regressiontests/bash_completion/tests.py b/tests/regressiontests/bash_completion/tests.py index 3e938143fe..24c8b1d3f3 100644 --- a/tests/regressiontests/bash_completion/tests.py +++ b/tests/regressiontests/bash_completion/tests.py @@ -65,7 +65,7 @@ class BashCompletionTests(unittest.TestCase): "Subcommands can be autocompleted" self._user_input('django-admin.py sql') output = self._run_autocomplete() - self.assertEqual(output, ['sqlinitialdata sqlclear sqlreset sqlsequencereset sql sqlall sqlflush sqlcustom sqlindexes']) + self.assertEqual(output, ['sql sqlall sqlclear sqlcustom sqlflush sqlindexes sqlinitialdata sqlreset sqlsequencereset']) def test_help(self): "No errors, just an empty list if there are no autocomplete options" @@ -84,4 +84,4 @@ class BashCompletionTests(unittest.TestCase): self._user_input('django-admin.py sqlall a') output = self._run_autocomplete() app_labels = [name.split('.')[-1] for name in settings.INSTALLED_APPS] - self.assertEqual(set(output), set(label for label in app_labels if label.startswith('a'))) + self.assertEqual(output, sorted(label for label in app_labels if label.startswith('a')))