Fix function and test for 'trueorfalse'.
The function's comment is written as follow, however the function accepts other values (ex. "e", "t", "T", "f", "F", etc...). --- Accepts as False: 0 no No NO false False FALSE Accepts as True: 1 yes Yes YES true True TRUE --- Moreover if testval mach True or False, the function exits without resetting xtrace. This patch fixes the issue and add test patterns. Change-Id: Ie48a859476faff22a4dfef466516e2d7d62ef0c0 Closes-bug: #1453687
This commit is contained in:
parent
e3fcc54b9b
commit
98f59aafaf
@ -51,14 +51,16 @@ TRACK_DEPENDS=${TRACK_DEPENDS:-False}
|
|||||||
function trueorfalse {
|
function trueorfalse {
|
||||||
local xtrace=$(set +o | grep xtrace)
|
local xtrace=$(set +o | grep xtrace)
|
||||||
set +o xtrace
|
set +o xtrace
|
||||||
local default=$1
|
|
||||||
local literal=$2
|
|
||||||
local testval=${!literal:-}
|
|
||||||
|
|
||||||
[[ -z "$testval" ]] && { echo "$default"; return; }
|
local default=$1
|
||||||
[[ "0 no No NO false False FALSE" =~ "$testval" ]] && { echo "False"; return; }
|
local testval=${!2:-}
|
||||||
[[ "1 yes Yes YES true True TRUE" =~ "$testval" ]] && { echo "True"; return; }
|
|
||||||
echo "$default"
|
case "$testval" in
|
||||||
|
"1" | [yY]es | "YES" | [tT]rue | "TRUE" ) echo "True" ;;
|
||||||
|
"0" | [nN]o | "NO" | [fF]alse | "FALSE" ) echo "False" ;;
|
||||||
|
* ) echo "$default" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
$xtrace
|
$xtrace
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,27 +8,36 @@ TOP=$(cd $(dirname "$0")/.. && pwd)
|
|||||||
source $TOP/functions
|
source $TOP/functions
|
||||||
source $TOP/tests/unittest.sh
|
source $TOP/tests/unittest.sh
|
||||||
|
|
||||||
function test_truefalse {
|
function test_trueorfalse {
|
||||||
local one=1
|
local one=1
|
||||||
local captrue=True
|
local captrue=True
|
||||||
local lowtrue=true
|
local lowtrue=true
|
||||||
local abrevtrue=t
|
local uppertrue=TRUE
|
||||||
|
local capyes=Yes
|
||||||
|
local lowyes=yes
|
||||||
|
local upperyes=YES
|
||||||
|
|
||||||
|
for default in True False; do
|
||||||
|
for name in one captrue lowtrue uppertrue capyes lowyes upperyes; do
|
||||||
|
assert_equal "True" $(trueorfalse $default $name) "\$(trueorfalse $default $name)"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
local zero=0
|
local zero=0
|
||||||
local capfalse=False
|
local capfalse=False
|
||||||
local lowfalse=false
|
local lowfalse=false
|
||||||
local abrevfalse=f
|
local upperfalse=FALSE
|
||||||
for against in True False; do
|
local capno=No
|
||||||
for name in one captrue lowtrue abrevtrue; do
|
local lowno=no
|
||||||
assert_equal "True" $(trueorfalse $against $name) "\$(trueorfalse $against $name)"
|
local upperno=NO
|
||||||
done
|
|
||||||
done
|
for default in True False; do
|
||||||
for against in True False; do
|
for name in zero capfalse lowfalse upperfalse capno lowno upperno; do
|
||||||
for name in zero capfalse lowfalse abrevfalse; do
|
assert_equal "False" $(trueorfalse $default $name) "\$(trueorfalse $default $name)"
|
||||||
assert_equal "False" $(trueorfalse $against $name) "\$(trueorfalse $against $name)"
|
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
test_truefalse
|
test_trueorfalse
|
||||||
|
|
||||||
report_results
|
report_results
|
||||||
|
Loading…
Reference in New Issue
Block a user