tools/bootconfig: Add testcase for tailing space
[linux-2.6-microblaze.git] / tools / bootconfig / test-bootconfig.sh
1 #!/bin/sh
2 # SPDX-License-Identifier: GPL-2.0-only
3
4 echo "Boot config test script"
5
6 if [ -d "$1" ]; then
7   TESTDIR=$1
8 else
9   TESTDIR=.
10 fi
11 BOOTCONF=${TESTDIR}/bootconfig
12
13 INITRD=`mktemp ${TESTDIR}/initrd-XXXX`
14 TEMPCONF=`mktemp ${TESTDIR}/temp-XXXX.bconf`
15 OUTFILE=`mktemp ${TESTDIR}/tempout-XXXX`
16 NG=0
17
18 cleanup() {
19   rm -f $INITRD $TEMPCONF $OUTFILE
20   exit $NG
21 }
22
23 trap cleanup EXIT TERM
24
25 NO=1
26
27 xpass() { # pass test command
28   echo "test case $NO ($3)... "
29   if ! ($@ && echo "\t\t[OK]"); then
30      echo "\t\t[NG]"; NG=$((NG + 1))
31   fi
32   NO=$((NO + 1))
33 }
34
35 xfail() { # fail test command
36   echo "test case $NO ($3)... "
37   if ! (! $@ && echo "\t\t[OK]"); then
38      echo "\t\t[NG]"; NG=$((NG + 1))
39   fi
40   NO=$((NO + 1))
41 }
42
43 echo "Basic command test"
44 xpass $BOOTCONF $INITRD
45
46 echo "Delete command should success without bootconfig"
47 xpass $BOOTCONF -d $INITRD
48
49 dd if=/dev/zero of=$INITRD bs=4096 count=1
50 echo "key = value;" > $TEMPCONF
51 bconf_size=$(stat -c %s $TEMPCONF)
52 initrd_size=$(stat -c %s $INITRD)
53
54 echo "Apply command test"
55 xpass $BOOTCONF -a $TEMPCONF $INITRD
56 new_size=$(stat -c %s $INITRD)
57
58 echo "Show command test"
59 xpass $BOOTCONF $INITRD
60
61 echo "File size check"
62 xpass test $new_size -eq $(expr $bconf_size + $initrd_size + 9 + 12)
63
64 echo "Apply command repeat test"
65 xpass $BOOTCONF -a $TEMPCONF $INITRD
66
67 echo "File size check"
68 xpass test $new_size -eq $(stat -c %s $INITRD)
69
70 echo "Delete command check"
71 xpass $BOOTCONF -d $INITRD
72
73 echo "File size check"
74 new_size=$(stat -c %s $INITRD)
75 xpass test $new_size -eq $initrd_size
76
77 echo "No error messge while applying"
78 dd if=/dev/zero of=$INITRD bs=4096 count=1
79 printf " \0\0\0 \0\0\0" >> $INITRD
80 $BOOTCONF -a $TEMPCONF $INITRD > $OUTFILE 2>&1
81 xfail grep -i "failed" $OUTFILE
82 xfail grep -i "error" $OUTFILE
83
84 echo "Max node number check"
85
86 echo -n > $TEMPCONF
87 for i in `seq 1 1024` ; do
88    echo "node$i" >> $TEMPCONF
89 done
90 xpass $BOOTCONF -a $TEMPCONF $INITRD
91
92 echo "badnode" >> $TEMPCONF
93 xfail $BOOTCONF -a $TEMPCONF $INITRD
94
95 echo "Max filesize check"
96
97 # Max size is 32767 (including terminal byte)
98 echo -n "data = \"" > $TEMPCONF
99 dd if=/dev/urandom bs=768 count=32 | base64 -w0 >> $TEMPCONF
100 echo "\"" >> $TEMPCONF
101 xfail $BOOTCONF -a $TEMPCONF $INITRD
102
103 truncate -s 32764 $TEMPCONF
104 echo "\"" >> $TEMPCONF  # add 2 bytes + terminal ('\"\n\0')
105 xpass $BOOTCONF -a $TEMPCONF $INITRD
106
107 echo "Adding same-key values"
108 cat > $TEMPCONF << EOF
109 key = bar, baz
110 key += qux
111 EOF
112 echo > $INITRD
113
114 xpass $BOOTCONF -a $TEMPCONF $INITRD
115 $BOOTCONF $INITRD > $OUTFILE
116 xpass grep -q "bar" $OUTFILE
117 xpass grep -q "baz" $OUTFILE
118 xpass grep -q "qux" $OUTFILE
119
120 echo "Override same-key values"
121 cat > $TEMPCONF << EOF
122 key = bar, baz
123 key := qux
124 EOF
125 echo > $INITRD
126
127 xpass $BOOTCONF -a $TEMPCONF $INITRD
128 $BOOTCONF $INITRD > $OUTFILE
129 xfail grep -q "bar" $OUTFILE
130 xfail grep -q "baz" $OUTFILE
131 xpass grep -q "qux" $OUTFILE
132
133 echo "Double/single quotes test"
134 echo "key = '\"string\"';" > $TEMPCONF
135 $BOOTCONF -a $TEMPCONF $INITRD
136 $BOOTCONF $INITRD > $TEMPCONF
137 cat $TEMPCONF
138 xpass grep \'\"string\"\' $TEMPCONF
139
140 echo "Repeat same-key tree"
141 cat > $TEMPCONF << EOF
142 foo
143 bar
144 foo { buz }
145 EOF
146 echo > $INITRD
147
148 xpass $BOOTCONF -a $TEMPCONF $INITRD
149 $BOOTCONF $INITRD > $OUTFILE
150 xpass grep -q "bar" $OUTFILE
151
152
153 echo "Remove/keep tailing spaces"
154 cat > $TEMPCONF << EOF
155 foo = val     # comment
156 bar = "val2 " # comment
157 EOF
158 echo > $INITRD
159
160 xpass $BOOTCONF -a $TEMPCONF $INITRD
161 $BOOTCONF $INITRD > $OUTFILE
162 xfail grep -q val[[:space:]] $OUTFILE
163 xpass grep -q val2[[:space:]] $OUTFILE
164
165 echo "=== expected failure cases ==="
166 for i in samples/bad-* ; do
167   xfail $BOOTCONF -a $i $INITRD
168 done
169
170 echo "=== expected success cases ==="
171 for i in samples/good-* ; do
172   xpass $BOOTCONF -a $i $INITRD
173 done
174
175
176 echo
177 echo "=== Summary ==="
178 echo "# of Passed: $(expr $NO - $NG - 1)"
179 echo "# of Failed: $NG"
180
181 echo
182 if [ $NG -eq 0 ]; then
183         echo "All tests passed"
184 else
185         echo "$NG tests failed"
186         exit 1
187 fi