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
This commit is contained in:
parent
468ca16319
commit
7875421a03
|
@ -299,7 +299,7 @@ class ManagementUtility(object):
|
||||||
|
|
||||||
# subcommand
|
# subcommand
|
||||||
if cword == 1:
|
if cword == 1:
|
||||||
print ' '.join(filter(lambda x: x.startswith(curr), subcommands))
|
print ' '.join(sorted(filter(lambda x: x.startswith(curr), subcommands)))
|
||||||
# subcommand options
|
# subcommand options
|
||||||
# special case: the 'help' subcommand has no options
|
# special case: the 'help' subcommand has no options
|
||||||
elif cwords[0] in subcommands and cwords[0] != 'help':
|
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)
|
options = filter(lambda (x, v): x not in prev_opts, options)
|
||||||
|
|
||||||
# filter options by current input
|
# 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:
|
for option in options:
|
||||||
opt_label = option[0]
|
opt_label = option[0]
|
||||||
# append '=' to options which require args
|
# append '=' to options which require args
|
||||||
|
|
|
@ -65,7 +65,7 @@ class BashCompletionTests(unittest.TestCase):
|
||||||
"Subcommands can be autocompleted"
|
"Subcommands can be autocompleted"
|
||||||
self._user_input('django-admin.py sql')
|
self._user_input('django-admin.py sql')
|
||||||
output = self._run_autocomplete()
|
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):
|
def test_help(self):
|
||||||
"No errors, just an empty list if there are no autocomplete options"
|
"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')
|
self._user_input('django-admin.py sqlall a')
|
||||||
output = self._run_autocomplete()
|
output = self._run_autocomplete()
|
||||||
app_labels = [name.split('.')[-1] for name in settings.INSTALLED_APPS]
|
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')))
|
||||||
|
|
Loading…
Reference in New Issue