fix valid_number_of_base
function execution halts entirely on a invalid base, so we never actually get to our 'return 1'. I'm not sure how our expected failures ever actually worked, but it's quite plain to see that: $ a=$(( 2#3 )); echo hi Never echos "hi". Use a subshell in valid_number_of_base so that we can properly "trap" execution, and return a meaningful result.
This commit is contained in:
parent
25c058a2a2
commit
e0eaca918e
6
common
6
common
@ -95,11 +95,15 @@ chroot_umount() {
|
||||
umount "${CHROOT_ACTIVE_MOUNTS[@]}"
|
||||
}
|
||||
|
||||
try_cast() (
|
||||
_=$(( $1#$2 ))
|
||||
) 2>/dev/null
|
||||
|
||||
valid_number_of_base() {
|
||||
local base=$1 len=${#2} i=
|
||||
|
||||
for (( i = 0; i < len; i++ )); do
|
||||
{ _=$(( $base#${2:i:1} )) || return 1; } 2>/dev/null
|
||||
try_cast "$base" "${2:i:1}" || return 1
|
||||
done
|
||||
|
||||
return 0
|
||||
|
@ -11,4 +11,5 @@ EXPECT_success valid_number_of_base 10 1234567890
|
||||
EXPECT_failure valid_number_of_base 10 1234.567890
|
||||
EXPECT_failure valid_number_of_base 10 1234567890abcdef
|
||||
|
||||
EXPECT_success valid_number_of_base 18 1234567890abcdefghi
|
||||
EXPECT_success valid_number_of_base 18 1234567890abcdefgh
|
||||
EXPECT_failure valid_number_of_base 18 1234567890abcdefghi
|
||||
|
Loading…
Reference in New Issue
Block a user