Browse code

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

Mahito OGURA authored on 2015/05/11 18:02:34
Showing 2 changed files
... ...
@@ -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