Skip to content

Commit a6dfa50

Browse files
committed
In _Dbg_alias_find_aliased use _Dbg_ variable names and don't assume sorted keys of Bash associative arrays
The manual sorting lets this test run on all versions of Bash 5.x
1 parent d1d256f commit a6dfa50

File tree

3 files changed

+19
-16
lines changed

3 files changed

+19
-16
lines changed

command/help.sh

+4-3
Original file line numberDiff line numberDiff line change
@@ -116,11 +116,12 @@ function _Dbg_do_help {
116116
esac
117117
fi
118118
fi
119-
aliases_found=''
119+
120+
declare _Dbg_aliases_found=''
120121
_Dbg_alias_find_aliased "$dbg_cmd"
121-
if [[ -n $aliases_found ]] ; then
122+
if [[ -n $_Dbg_aliases_found ]] ; then
122123
_Dbg_msg ''
123-
_Dbg_msg "Aliases for $dbg_cmd: $aliases_found"
124+
_Dbg_msg "Aliases for $dbg_cmd: $_Dbg_aliases_found"
124125
fi
125126
return 2
126127
fi

lib/alias.sh

+10-9
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,16 @@ _Dbg_alias_find_index() {
5858
# Return in help_aliases an array of strings that are aliases
5959
# of $1
6060
_Dbg_alias_find_aliased() {
61-
(($# != 1)) && return 255
62-
typeset find_name=$1
63-
aliases_found=''
64-
typeset -i i
65-
for alias in "${!_Dbg_aliases[@]}" ; do
66-
if [[ ${_Dbg_aliases[$alias]} == "$find_name" ]] ; then
67-
[[ -n $aliases_found ]] && aliases_found+=', '
68-
aliases_found+="$alias"
69-
fi
61+
(($# != 1)) && return 255
62+
typeset _Dbg_find_name=$1
63+
_Dbg_aliases_found=''
64+
typeset list=("${!_Dbg_aliases[@]}")
65+
sort_list 0 ${#list[@]}-1
66+
for _Dbg_alias in "${list[@]}"; do
67+
if [[ ${_Dbg_aliases[$_Dbg_alias]} == "$_Dbg_find_name" ]]; then
68+
[[ -n $_Dbg_aliases_found ]] && _Dbg_aliases_found+=', '
69+
_Dbg_aliases_found+="$_Dbg_alias"
70+
fi
7071
done
7172
return 0
7273
}

test/unit/test-alias.sh.in

+5-4
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,20 @@ test_alias()
1010
_Dbg_expanded_alias=''; _Dbg_alias_expand q
1111
assertEquals 'quit' $_Dbg_expanded_alias
1212

13-
typeset aliases_found=''
13+
typeset _Dbg_aliases_found=''
1414
_Dbg_alias_find_aliased quit
15-
assertEquals 'q' "$aliases_found"
15+
assertEquals 'q' "$_Dbg_aliases_found"
1616

1717
_Dbg_alias_add exit quit
1818
_Dbg_alias_find_aliased quit
19-
assertEquals 'q, exit' "$aliases_found"
19+
assertEquals 'exit, q' "$_Dbg_aliases_found"
2020

2121
_Dbg_alias_remove q
2222
_Dbg_expanded_alias=''; _Dbg_alias_expand q
2323
assertEquals 'q' $_Dbg_expanded_alias
2424

2525
_Dbg_alias_find_aliased quit
26-
assertEquals 'exit' "$aliases_found"
26+
assertEquals 'exit' "$_Dbg_aliases_found"
2727

2828
_Dbg_expanded_alias=''; _Dbg_alias_expand u
2929
assertEquals 'up' $_Dbg_expanded_alias
@@ -39,5 +39,6 @@ abs_top_srcdir=${abs_top_srcdir%%/}/
3939
. ${abs_top_srcdir}test/unit/helper.sh
4040
. $abs_top_srcdir/lib/help.sh
4141
. $abs_top_srcdir/lib/alias.sh
42+
. $abs_top_srcdir/lib/sort.sh
4243
set -- # reset $# so shunit2 doesn't get confused.
4344
[[ @CMDLINE_INVOKED@ ]] && . ${shunit_file}

0 commit comments

Comments
 (0)