Skip to content

Commit

Permalink
In _Dbg_alias_find_aliased use _Dbg_ variable names and don't assume …
Browse files Browse the repository at this point in the history
…sorted keys of Bash associative arrays

The manual sorting lets this test run on all versions of Bash 5.x
  • Loading branch information
jansorg committed Jul 4, 2024
1 parent d1d256f commit a6dfa50
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 16 deletions.
7 changes: 4 additions & 3 deletions command/help.sh
Original file line number Diff line number Diff line change
Expand Up @@ -116,11 +116,12 @@ function _Dbg_do_help {
esac
fi
fi
aliases_found=''

declare _Dbg_aliases_found=''
_Dbg_alias_find_aliased "$dbg_cmd"
if [[ -n $aliases_found ]] ; then
if [[ -n $_Dbg_aliases_found ]] ; then
_Dbg_msg ''
_Dbg_msg "Aliases for $dbg_cmd: $aliases_found"
_Dbg_msg "Aliases for $dbg_cmd: $_Dbg_aliases_found"
fi
return 2
fi
Expand Down
19 changes: 10 additions & 9 deletions lib/alias.sh
Original file line number Diff line number Diff line change
Expand Up @@ -58,15 +58,16 @@ _Dbg_alias_find_index() {
# Return in help_aliases an array of strings that are aliases
# of $1
_Dbg_alias_find_aliased() {
(($# != 1)) && return 255
typeset find_name=$1
aliases_found=''
typeset -i i
for alias in "${!_Dbg_aliases[@]}" ; do
if [[ ${_Dbg_aliases[$alias]} == "$find_name" ]] ; then
[[ -n $aliases_found ]] && aliases_found+=', '
aliases_found+="$alias"
fi
(($# != 1)) && return 255
typeset _Dbg_find_name=$1
_Dbg_aliases_found=''
typeset list=("${!_Dbg_aliases[@]}")
sort_list 0 ${#list[@]}-1
for _Dbg_alias in "${list[@]}"; do
if [[ ${_Dbg_aliases[$_Dbg_alias]} == "$_Dbg_find_name" ]]; then
[[ -n $_Dbg_aliases_found ]] && _Dbg_aliases_found+=', '
_Dbg_aliases_found+="$_Dbg_alias"
fi
done
return 0
}
9 changes: 5 additions & 4 deletions test/unit/test-alias.sh.in
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,20 @@ test_alias()
_Dbg_expanded_alias=''; _Dbg_alias_expand q
assertEquals 'quit' $_Dbg_expanded_alias

typeset aliases_found=''
typeset _Dbg_aliases_found=''
_Dbg_alias_find_aliased quit
assertEquals 'q' "$aliases_found"
assertEquals 'q' "$_Dbg_aliases_found"

_Dbg_alias_add exit quit
_Dbg_alias_find_aliased quit
assertEquals 'q, exit' "$aliases_found"
assertEquals 'exit, q' "$_Dbg_aliases_found"

_Dbg_alias_remove q
_Dbg_expanded_alias=''; _Dbg_alias_expand q
assertEquals 'q' $_Dbg_expanded_alias

_Dbg_alias_find_aliased quit
assertEquals 'exit' "$aliases_found"
assertEquals 'exit' "$_Dbg_aliases_found"

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

0 comments on commit a6dfa50

Please sign in to comment.