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
... | ... |
@@ -51,14 +51,16 @@ TRACK_DEPENDS=${TRACK_DEPENDS:-False} |
51 | 51 |
function trueorfalse { |
52 | 52 |
local xtrace=$(set +o | grep xtrace) |
53 | 53 |
set +o xtrace |
54 |
+ |
|
54 | 55 |
local default=$1 |
55 |
- local literal=$2 |
|
56 |
- local testval=${!literal:-} |
|
56 |
+ local testval=${!2:-} |
|
57 |
+ |
|
58 |
+ case "$testval" in |
|
59 |
+ "1" | [yY]es | "YES" | [tT]rue | "TRUE" ) echo "True" ;; |
|
60 |
+ "0" | [nN]o | "NO" | [fF]alse | "FALSE" ) echo "False" ;; |
|
61 |
+ * ) echo "$default" ;; |
|
62 |
+ esac |
|
57 | 63 |
|
58 |
- [[ -z "$testval" ]] && { echo "$default"; return; } |
|
59 |
- [[ "0 no No NO false False FALSE" =~ "$testval" ]] && { echo "False"; return; } |
|
60 |
- [[ "1 yes Yes YES true True TRUE" =~ "$testval" ]] && { echo "True"; return; } |
|
61 |
- echo "$default" |
|
62 | 64 |
$xtrace |
63 | 65 |
} |
64 | 66 |
|
... | ... |
@@ -8,27 +8,36 @@ TOP=$(cd $(dirname "$0")/.. && pwd) |
8 | 8 |
source $TOP/functions |
9 | 9 |
source $TOP/tests/unittest.sh |
10 | 10 |
|
11 |
-function test_truefalse { |
|
11 |
+function test_trueorfalse { |
|
12 | 12 |
local one=1 |
13 | 13 |
local captrue=True |
14 | 14 |
local lowtrue=true |
15 |
- local abrevtrue=t |
|
15 |
+ local uppertrue=TRUE |
|
16 |
+ local capyes=Yes |
|
17 |
+ local lowyes=yes |
|
18 |
+ local upperyes=YES |
|
19 |
+ |
|
20 |
+ for default in True False; do |
|
21 |
+ for name in one captrue lowtrue uppertrue capyes lowyes upperyes; do |
|
22 |
+ assert_equal "True" $(trueorfalse $default $name) "\$(trueorfalse $default $name)" |
|
23 |
+ done |
|
24 |
+ done |
|
25 |
+ |
|
16 | 26 |
local zero=0 |
17 | 27 |
local capfalse=False |
18 | 28 |
local lowfalse=false |
19 |
- local abrevfalse=f |
|
20 |
- for against in True False; do |
|
21 |
- for name in one captrue lowtrue abrevtrue; do |
|
22 |
- assert_equal "True" $(trueorfalse $against $name) "\$(trueorfalse $against $name)" |
|
23 |
- done |
|
24 |
- done |
|
25 |
- for against in True False; do |
|
26 |
- for name in zero capfalse lowfalse abrevfalse; do |
|
27 |
- assert_equal "False" $(trueorfalse $against $name) "\$(trueorfalse $against $name)" |
|
29 |
+ local upperfalse=FALSE |
|
30 |
+ local capno=No |
|
31 |
+ local lowno=no |
|
32 |
+ local upperno=NO |
|
33 |
+ |
|
34 |
+ for default in True False; do |
|
35 |
+ for name in zero capfalse lowfalse upperfalse capno lowno upperno; do |
|
36 |
+ assert_equal "False" $(trueorfalse $default $name) "\$(trueorfalse $default $name)" |
|
28 | 37 |
done |
29 | 38 |
done |
30 | 39 |
} |
31 | 40 |
|
32 |
-test_truefalse |
|
41 |
+test_trueorfalse |
|
33 | 42 |
|
34 | 43 |
report_results |