Skip to content

Commit dac0311

Browse files
authored
Merge pull request #542 from python-cmd2/alias_fix
Fixed issue where only first alias was working
2 parents 38f070a + ec175f8 commit dac0311

File tree

2 files changed

+20
-7
lines changed

2 files changed

+20
-7
lines changed

cmd2/cmd2.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2160,7 +2160,7 @@ def _cmdloop(self) -> bool:
21602160
def do_alias(self, statement: Statement) -> None:
21612161
"""Define or display aliases
21622162
2163-
Usage: Usage: alias [name] | [<name> <value>]
2163+
Usage: alias [name] | [<name> <value>]
21642164
Where:
21652165
name - name of the alias being looked up, added, or replaced
21662166
value - what the alias will be resolved to (if adding or replacing)
@@ -2188,7 +2188,8 @@ def do_alias(self, statement: Statement) -> None:
21882188

21892189
# If no args were given, then print a list of current aliases
21902190
if not alias_arg_list:
2191-
for cur_alias in self.aliases:
2191+
sorted_aliases = utils.alphabetical_sort(list(self.aliases))
2192+
for cur_alias in sorted_aliases:
21922193
self.poutput("alias {} {}".format(cur_alias, self.aliases[cur_alias]))
21932194
return
21942195

@@ -2222,9 +2223,6 @@ def do_alias(self, statement: Statement) -> None:
22222223
# Set the alias
22232224
self.aliases[name] = value
22242225
self.poutput("Alias {!r} created".format(name))
2225-
2226-
# Keep aliases in alphabetically sorted order
2227-
self.aliases = collections.OrderedDict(sorted(self.aliases.items()))
22282226
else:
22292227
errmsg = "Aliases can not contain: {}".format(invalidchars)
22302228
self.perror(errmsg, traceback_war=False)
@@ -2245,7 +2243,7 @@ def complete_alias(self, text: str, line: str, begidx: int, endidx: int) -> List
22452243
def do_unalias(self, arglist: List[str]) -> None:
22462244
"""Unsets aliases
22472245
2248-
Usage: Usage: unalias [-a] name [name ...]
2246+
Usage: unalias [-a] name [name ...]
22492247
Where:
22502248
name - name of the alias being unset
22512249

tests/test_cmd2.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1828,7 +1828,22 @@ def test_complete_unalias(base_app):
18281828

18291829
# Validate that there are now completions
18301830
expected = ['fake', 'fall']
1831-
assert base_app.complete_unalias(text, line, begidx, endidx) == expected
1831+
result = base_app.complete_unalias(text, line, begidx, endidx)
1832+
assert sorted(expected) == sorted(result)
1833+
1834+
def test_multiple_aliases(base_app):
1835+
alias1 = 'h1'
1836+
alias2 = 'h2'
1837+
run_cmd(base_app, 'alias {} help'.format(alias1))
1838+
run_cmd(base_app, 'alias {} help -v'.format(alias2))
1839+
out = run_cmd(base_app, alias1)
1840+
expected = normalize(BASE_HELP)
1841+
assert out == expected
1842+
1843+
out = run_cmd(base_app, alias2)
1844+
expected = normalize(BASE_HELP_VERBOSE)
1845+
assert out == expected
1846+
18321847

18331848
def test_ppaged(base_app):
18341849
msg = 'testing...'

0 commit comments

Comments
 (0)