6f2174a6ac810ea584d3a3bd1b297e781449be6b
[platform/upstream/gt.git] / source / test.bash
1 #!/bin/bash
2
3
4 CHECK_MEM=0;
5 MEMCHECK_ERROR=2;
6 VALGRIND="valgrind -q --leak-check=full --error-exitcode=$MEMCHECK_ERROR";
7
8 function usage {
9         echo "Usage: $0 [-hv] [executable]";
10         echo "Options:";
11         echo "-h Print this help";
12         echo "-v Look for memory leaks using valgrind memcheck";
13 }
14
15 while getopts vh opt; do
16         case $opt in
17         v)
18                 CHECK_MEM=1;
19                 ;;
20         h)
21                 usage;
22                 exit 0;
23                 ;;
24         ?)
25                 usage;
26                 exit 1;
27                 ;;
28         esac
29 done
30
31 shift $(( OPTIND - 1));
32
33
34 if [ "$1" ]
35 then
36         if  which "$1" &> /dev/null;
37         then
38                 GT="$1";
39         else
40                 echo "$1: Executable file not found. Aborted.";
41                 exit 1;
42         fi
43 elif [ -f "gt" ]
44 then
45         GT="./gt";
46 else
47         echo "Executable file not specified. Aborted."
48         exit 1;
49 fi
50
51 if [ $CHECK_MEM -ne 0 ]
52 then
53         EXECUTABLE="$VALGRIND $GT";
54 else
55         EXECUTABLE=$GT;
56 fi
57
58 ERROR_COUNT=0;
59 SUCCESS_COUNT=0;
60
61 function print_failure {
62         echo "$(tput setaf 1)[FAILED]$(tput sgr0) $1";
63 }
64
65 function print_success {
66         echo "$(tput setaf 2)[OK]$(tput sgr0) $1";
67 }
68
69 function expect_success {
70         $EXECUTABLE $1 > test.out;
71         ret=$?;
72         if [[ $res -eq $MEMCHECK_ERROR ]]
73         then
74                 ERROR_COUNT=$((ERROR_COUNT + 1));
75                 print_failure "gt $1 -- memcheck error";
76         elif [[ $res -ne 0 ]] ; then
77                 ERROR_COUNT=$((ERROR_COUNT + 1));
78                 print_failure " gt $1 -- gt failed";
79         elif ! diff -w <(tail -n+2 test.out) <(echo "$2") &> /dev/null; then
80                 ERROR_COUNT=$((ERROR_COUNT + 1));
81                 print_failure "gt $1 -- unexpected output";
82                 echo "Expected:";
83                 echo "$2";
84                 echo "Got: ";
85                 tail -n+2 test.out;
86         else
87                 SUCCESS_COUNT=$((SUCCESS_COUNT + 1));
88                 print_success "gt $1 -- succeed";
89         fi
90 }
91
92 function expect_failure {
93         $EXECUTABLE $1 &> /dev/null;
94         ret=$?;
95         if [[ $ret -eq $MEMCHECK_ERROR ]]
96         then
97                 ERROR_COUNT=$((ERROR_COUNT + 1));
98                 print_failure "gt $1 -- memcheck error";
99         elif [[ $ret -eq 0 ]]
100         then
101                 ERROR_COUNT=$((ERROR_COUNT + 1));
102                 print_failure "gt $1 -- expected failure";
103         else
104                 SUCCESS_COUNT=$((SUCCESS_COUNT + 1));
105                 print_success "gt $1 -- failed as expected";
106         fi
107 }
108
109 expect_success "settings set default-udc=udc1" "default-udc=udc1, ";
110 expect_success "settings set default-udc=udc1 default-template-path=path1"\
111         "default-udc=udc1, default-template-path=path1, ";
112 expect_success "settings get config-fs-path" "config-fs-path, ";
113 expect_success "settings get config-fs-path default-udc"\
114         "config-fs-path, default-udc,";
115 expect_success "settings get" "";
116 expect_success "settings append lookup-path value" "var=lookup-path, val=value";
117 expect_success "settings detach lookup-path value" "var=lookup-path, val=value";
118
119 expect_failure "settings set badopt=val";
120 expect_failure "settings get badopt";
121 expect_failure "settings append badopt badval";
122 expect_failure "settings append lookup-path too many";
123 expect_failure "settings append lookup-path";
124 expect_failure "settings detach badopt badval";
125 expect_failure "settings detach lookup-path and more";
126 expect_failure "settings detach lookup-path";
127
128 expect_success "create gadget1" "name=gadget1, force=0";
129 expect_success "create -f gadget2" "name=gadget2, force=1";
130 expect_success "create -f gadget2 attr=val" "name=gadget2, force=1, attr=val";
131 expect_success "create --force gadget3 attr1=val1 attr2=val2"\
132         "name=gadget3, force=1, attr1=val1, attr2=val2";
133 expect_success "rm gadget1" "name=gadget1, force=0, recursive=0";
134 expect_success "rm -r gadget2" "name=gadget2, force=0, recursive=1";
135 expect_success "rm -f gadget3" "name=gadget3, force=1, recursive=0";
136 expect_success "rm -rf gadget4" "name=gadget4, force=1, recursive=1";
137
138 expect_failure "create gadget1 --verbose";
139 expect_failure "create gadget1 and more";
140 expect_failure "create";
141 expect_failure "rm -rf gadget gadget";
142 expect_failure "rm";
143
144 expect_success "get gadget1" "name=gadget1, attrs=";
145 expect_success "get gadget1 attr" "name=gadget1, attrs=attr,";
146 expect_success "get gadget2 attr1 attr2 attr3 attr4" \
147         "name=gadget2, attrs=attr1, attr2, attr3, attr4,";
148 expect_success "set gadget attr=val" "name=gadget, attr=val";
149 expect_success "set gadget attr1=val1 attr2=val2"\
150         "name=gadget, attr1=val1, attr2=val2";
151
152 expect_failure "get";
153 expect_failure "set gadget";
154 expect_failure "set gadget attr equals val";
155 expect_failure "set";
156
157 expect_success "enable" "";
158 expect_success "enable --gadget=gadget --udc=udc" "gadget=gadget, udc=udc";
159 expect_success "enable --gadget=gadget1" "gadget=gadget1,";
160 expect_success "enable --udc=udc1" "udc=udc1";
161 expect_success "disable" "";
162 expect_success "disable gadget1" "gadget=gadget1,";
163 expect_success "disable --udc=udc1" "udc=udc1";
164
165 expect_failure "disable gadget1 --udc=udc";
166 expect_failure "enable -f";
167 expect_failure "enable -v";
168 expect_failure "enable -r";
169 expect_failure "enable -o";
170 expect_failure "disable gadget1 sth";
171 expect_failure "disable gadget1 --gadget=gadget2";
172 expect_failure "disable gadget1 -f";
173 expect_failure "disable gadget1 -v";
174 expect_failure "disable gadget1 -r";
175 expect_failure "disable gadget1 -o";
176
177 expect_success "gadget gadget2" "name=gadget2, recursive=0, verbose=0";
178 expect_success "gadget gadget1 -v" "name=gadget1, recursive=0, verbose=1";
179 expect_success "gadget gadget3 -r" "name=gadget3, recursive=1, verbose=0";
180 expect_success "gadget gadget4 -vr" "name=gadget4, recursive=1, verbose=1";
181
182 expect_failure "gadget gadget -f";
183 expect_failure "gadget gadget gadget";
184
185 expect_success "load name gadget1" "name=name, gadget=gadget1, off=0, stdin=0";
186 expect_success "load name gadget1 --off" "name=name, gadget=gadget1, off=1, stdin=0";
187 expect_success "load name --stdin" "gadget=name, off=0, stdin=1";
188 expect_success "load name gadget1 --path=path"\
189         "name=name, gadget=gadget1, path=path, off=0, stdin=0";
190 expect_success "save gadget1 name" "gadget=gadget1, name=name, force=0, stdout=0";
191 expect_success "save gadget1 --file=file"\
192         "gadget=gadget1, file=file, force=0, stdout=0";
193 expect_success "save gadget1 --stdout attr=val"\
194         "gadget=gadget1, force=0, stdout=1, attr=val";
195 expect_success "save gadget1 name --path=path"\
196         "gadget=gadget1, name=name, path=path, force=0, stdout=0";
197 expect_success "save gadget1 name -f"\
198         "gadget=gadget1, name=name, force=1, stdout=0";
199
200 expect_failure "load name --file=file1 --stdin";
201 expect_failure "load name --stdin --path=path1";
202 expect_failure "load name --path=path1 --file=file1";
203 expect_failure "load name --path";
204 expect_failure "load name --file";
205 expect_failure "load";
206 expect_failure "save gadget --file=file1 --stdin";
207 expect_failure "save gadget --stdin --path=path1";
208 expect_failure "save gadget --path=path1 --file=file1";
209 expect_failure "save gadget --path";
210 expect_failure "save gadget --file";
211 expect_failure "save";
212
213 expect_success "template name" "name=name, verbose=0, recursive=0";
214 expect_success "template" "verbose=0, recursive=0";
215 expect_success "template --verbose --recursive" "verbose=1, recursive=1";
216 expect_success "template --verbose name" "name=name, verbose=1, recursive=0";
217 expect_success "template --recursive name" "name=name, verbose=0, recursive=1";
218
219 expect_failure "template -f";
220 expect_failure "template -o";
221 expect_failure "template name1 name2";
222
223 expect_success "template get name" "name=name, attr=";
224 expect_success "template get name attr" "name=name, attr=attr,";
225 expect_success "template set name attr=val" "name=name, attr=val";
226 expect_success "template rm name" "name=name";
227
228 expect_failure "template get"
229 expect_failure "template set name"
230 expect_failure "template set name attr"
231 expect_failure "template set name attr1=val1 attr2"
232 expect_failure "template rm"
233 expect_failure "template rm name1 name2"
234
235 expect_success "config create gadget1 config1"\
236         "gadget=gadget1, config=config1, force=0";
237 expect_success "config create gadget1 config1 attr=val"\
238         "gadget=gadget1, config=config1, force=0, attr=val";
239 expect_success "config create -f gadget1 config1"\
240         "gadget=gadget1, config=config1, force=1";
241 expect_success "config rm gadget config"\
242         "gadget=gadget, config=config, force=0, recursive=0";
243 expect_success "config rm -rf gadget config"\
244         "gadget=gadget, config=config, force=1, recursive=1";
245
246 expect_failure "config create -r gadget1 config1";
247 expect_failure "config create -f gadget1";
248 expect_failure "config rm gadget";
249 expect_failure "config rm -rfv gadget config";
250 expect_failure "config rm gadget config function";
251
252 expect_success "config get gadget config"\
253         "gadget=gadget, config=config, attrs=";
254 expect_success "config get gadget config attr1 attr2"\
255         "gadget=gadget, config=config, attrs=attr1,attr2,";
256 expect_success "config set gadget config attr=val"\
257         "gadget=gadget, config=config, attr=val";
258 expect_success "config set gadget config attr1=val1 attr2=val2"\
259         "gadget=gadget, config=config, attr1=val1, attr2=val2";
260
261 expect_failure "config get gadget";
262 expect_failure "config set gadget1";
263 expect_failure "config set gadget1 config1 func1";
264
265 expect_success "config gadget1 config1"\
266         "gadget=gadget1, config=config1, verbose=0, recursive=0";
267 expect_success "config gadget1" \
268         "gadget=gadget1, verbose=0, recursive=0";
269 expect_success "config gadget1 -v"\
270         "gadget=gadget1, verbose=1, recursive=0";
271 expect_success "config -r gadget1 config1"\
272         "gadget=gadget1, config=config1, verbose=0, recursive=1";
273
274 expect_failure "config gadget1 config1 func1";
275 expect_failure "config gadget1 -f";
276
277 expect_success "config add gadget1 conf1 type name"\
278         "gadget=gadget1, conf=conf1, type=type, instance=name";
279 expect_success "config add gadget1 conf1 type.name"\
280         "gadget=gadget1, conf=conf1, type=type, instance=name";
281 expect_success "config del gadget1 conf1 type name"\
282         "gadget=gadget1, conf=conf1, type=type, instance=name";
283 expect_success "config del gadget1 conf1 type.name"\
284         "gadget=gadget1, conf=conf1, type=type, instance=name";
285
286 expect_failure "config add gadget1 conf1";
287 expect_failure "config add gadget1";
288 expect_failure "config add gadget1 conf1 func";
289 expect_failure "config add";
290 expect_failure "config add gadget1 conf type name more";
291 expect_failure "config del gadget1 conf1";
292 expect_failure "config del gadget1";
293 expect_failure "config del gadget1 conf1 func";
294 expect_failure "config del";
295 expect_failure "config del gadget1 conf type name more";
296
297 expect_success "config template"\
298         "verbose=0, recursive=0";
299 expect_success "config template name"\
300         "name=name, verbose=0, recursive=0";
301 expect_success "config template get name"\
302         "name=name, attr=";
303 expect_success "config template set name attr=val"\
304         "name=name, attr=val";
305 expect_success "config template rm name"\
306         "name=name";
307
308 expect_failure "config template name1 name2";
309 expect_failure "config template get";
310 expect_failure "config template --force";
311 expect_failure "config template -f name";
312 expect_failure "config template set name";
313 expect_failure "config tempalte set name attr";
314 expect_failure "config template rm name1 name2";
315 expect_failure "config template set";
316
317 expect_success "config load name1 gadget1 config1"\
318         "name=name1, gadget=gadget1, config=config1, recursive=0, force=0, stdin=0";
319 expect_success "config load name gadget"\
320         "name=name, gadget=gadget, recursive=0, force=0, stdin=0";
321 expect_success "config load name gadget -f"\
322         "name=name, gadget=gadget, recursive=0, force=1, stdin=0";
323 expect_success "config load name1 gadget1 --stdin"\
324         "gadget=gadget1, config=name1, recursive=0, force=0, stdin=1";
325 expect_success "config load name1 gadget1 --file=file1"\
326         "gadget=gadget1, config=name1, file=file1, recursive=0, force=0, stdin=0";
327 expect_success "config load -r name1 gadget1 config1"\
328         "name=name1, gadget=gadget1, config=config1, recursive=1, force=0, stdin=0";
329
330 expect_failure "config load";
331 expect_failure "config load name1";
332 expect_failure "config load name1 gadget1 config1 -v";
333 expect_failure "config load name1 gadget1 config1 --stdin --path=path1";
334 expect_failure "config load name gadget config1 --stdin";
335 expect_failure "config load name gadget conf --file=file1";
336 expect_failure "config load name gadget --path=p --file=f";
337 expect_failure "config load name gadget conf --stdin";
338
339 expect_success "config save gadget1 conf name"\
340         "gadget=gadget1, config=conf, name=name, force=0, stdout=0";
341 expect_success "config save gadget1 conf name attr=val"\
342         "gadget=gadget1, config=conf, name=name, force=0, stdout=0, attr=val";
343 expect_success "config save gadget1 conf name attr1=val1 attr2=val2"\
344         "gadget=gadget1, config=conf, name=name, force=0, stdout=0, attr1=val1, attr2=val2";
345 expect_success "config save gadget1 conf name -f"\
346         "gadget=gadget1, config=conf, name=name, force=1, stdout=0";
347 expect_success "config save gadget1 conf --stdout"\
348         "gadget=gadget1, config=conf, force=0, stdout=1";
349 expect_success "config save gadget1 conf"\
350         "gadget=gadget1, config=conf, force=0, stdout=0";
351 expect_success "config save gadget1 conf --file=file1"\
352         "gadget=gadget1, config=conf, file=file1, force=0, stdout=0";
353 expect_success "config save gadget1 conf name --path=path1"\
354         "gadget=gadget1, config=conf, name=name, path=path1, force=0, stdout=0";
355
356 expect_failure "config save gadget1 conf name --stdout";
357 expect_failure "config save";
358 expect_failure "config save gadget1 conf --stdout --file=file";
359 expect_failure "config save gadget1 conf --file=file --path=p";
360 expect_failure "config save gadget1 conf --path=p --stdout";
361 expect_failure "config save gadget1 conf --path";
362 expect_failure "config save gadget1 conf --file";
363
364 expect_success "func create gadget type name"\
365         "gadget=gadget, type=type, name=name, force=0";
366 expect_success "func create gadget type.name"\
367         "gadget=gadget, type=type, name=name, force=0";
368 expect_success "func create -f gadget type name"\
369         "gadget=gadget, type=type, name=name, force=1";
370 expect_success "func create -f gadget type.name"\
371         "gadget=gadget, type=type, name=name, force=1";
372 expect_success "func create gadget type1.name1 attr=val"\
373         "gadget=gadget, type=type1, name=name1, force=0, attr=val";
374 expect_success "func create gadget type1.name1 attr1=val1 attr2=val2"\
375         "gadget=gadget, type=type1, name=name1, force=0, attr1=val1, attr2=val2";
376
377 expect_failure "func create gadget type.name -v";
378 expect_failure "func create gadget type.name -r";
379 expect_failure "func create gadget";
380 expect_failure "func create gadget type name attrval";
381 expect_failure "func create gadget typename";
382
383 expect_success "func rm gadget t.n"\
384         "gadget=gadget, type=t, name=n, recursive=0, force=0";
385 expect_success "func rm gadget1 t n"\
386         "gadget=gadget1, type=t, name=n, recursive=0, force=0";
387 expect_success "func rm -r gadget1 type1.name1"\
388         "gadget=gadget1, type=type1, name=name1, recursive=1, force=0";
389 expect_success "func rm -f gadget2 type2.name2"\
390         "gadget=gadget2, type=type2, name=name2, recursive=0, force=1";
391 expect_success "func rm -rf gadget3 type3 name3"\
392         "gadget=gadget3, type=type3, name=name3, recursive=1, force=1";
393
394 expect_failure "func rm";
395 expect_failure "func rm gadget1";
396 expect_failure "func rm gadget1 function";
397 expect_failure "func rm gadget1 type name attr=val";
398 expect_failure "func rm gadget1 -v type.name";
399 expect_failure "func rm gadget1 -o type.name";
400
401 expect_success "func get gadget1 type1.name1"\
402         "gadget=gadget1, type=type1, name=name1, attrs=";
403 expect_success "func get gadget1 type1.name1 attr1 attr2"\
404         "gadget=gadget1, type=type1, name=name1, attrs=attr1,attr2,";
405 expect_success "func get gadget1 type1 name1 attr"\
406         "gadget=gadget1, type=type1, name=name1, attrs=attr,";
407
408 expect_failure "func get gadget1";
409 expect_failure "func get";
410 expect_failure "func get gadget function";
411
412 expect_success "func set gadget1 type1 name1"\
413         "gadget=gadget1, type=type1, name=name1";
414 expect_success "func set gadget1 type1.name1"\
415         "gadget=gadget1, type=type1, name=name1";
416 expect_success "func set gadget1 type1.name1 attr1=val1 attr2=val2"\
417         "gadget=gadget1, type=type1, name=name1, attr1=val1, attr2=val2";
418 expect_success "func set gadget1 type1 name1 attr=val"\
419         "gadget=gadget1, type=type1, name=name1, attr=val";
420
421 expect_failure "func set";
422 expect_failure "func set gadget1";
423 expect_failure "func set gadget1 function":
424 expect_failure "func set gadget1 type name attr";
425
426 expect_success "func gadget1" "gadget=gadget1, verbose=0";
427 expect_success "func gadget1 type name"\
428         "gadget=gadget1, type=type, name=name, verbose=0";
429 expect_success "func gadget1 type.name"\
430         "gadget=gadget1, type=type, name=name, verbose=0";
431 expect_success "func -v gadget1" "gadget=gadget1, verbose=1";
432 expect_success "func --verbose gadget1 type name"\
433         "gadget=gadget1, type=type, name=name, verbose=1";
434 expect_success "func gadget1 -v type.name"\
435         "gadget=gadget1, type=type, name=name, verbose=1";
436
437 expect_failure "func gadget1 function";
438 expect_failure "func gadget2 -f";
439 expect_failure "func gadget3 -r";
440 expect_failure "func gadget4 -o";
441 expect_failure "func gadget5 func func func";
442
443 expect_success "func load name1 gadget1 func1"\
444         "name=name1, gadget=gadget1, func=func1, force=0, stdin=0";
445 expect_success "func load name1 gadget1 func1 -f"\
446         "name=name1, gadget=gadget1, func=func1, force=1, stdin=0";
447 expect_success "func load name1 gadget1 --stdin"\
448         "gadget=gadget1, func=name1, force=0, stdin=1";
449 expect_success "func load name1 gadget1 --file=file1"\
450         "gadget=gadget1, func=name1, file=file1, force=0, stdin=0";
451
452 expect_failure "func load name gadget --file";
453 expect_failure "func load name gadget --path";
454 expect_failure "func load name1 gadget1 --stdin --file=f";
455 expect_failure "func load name1 gadget1 --file=f --path=p";
456 expect_failure "func load name2 gadget2 --path=p --stdin";
457 expect_failure "func load name1 gadget1 --stdin --file=f --path=p";
458 expect_failure "func load name1 gadget1 func1 --stdin";
459
460 expect_success "func save gadget1 function1 name1"\
461         "gadget=gadget1, func=function1, name=name1, force=0, stdout=0";
462 expect_success "func save gadget1 func1 name1 attr1=val1 attr2=val2"\
463         "gadget=gadget1, func=func1, name=name1, force=0, stdout=0, attr1=val1, attr2=val2";
464 expect_success "func save gadget1 func1 attr1=val1"\
465         "gadget=gadget1, func=func1, force=0, stdout=0, attr1=val1";
466 expect_success "func save gadget1 func1 --stdout"\
467         "gadget=gadget1, func=func1, force=0, stdout=1";
468 expect_success "func save gadget1 func1 -f"\
469         "gadget=gadget1, func=func1, force=1, stdout=0";
470 expect_success "func save gadget1 func1 name1 -f attr1=val1 attr2=val2"\
471         "gadget=gadget1, func=func1, name=name1, force=1, stdout=0, attr1=val1, attr2=val2";
472 expect_success "func save gadget1 func1 --file=f attr1=val1 attr2=val2"\
473         "gadget=gadget1, func=func1, file=f, force=0, stdout=0, attr1=val1, attr2=val2";
474 expect_success "func save gad1 fun1 nam1 --path=p --force"\
475         "gadget=gad1, func=fun1, name=nam1, path=p, force=1, stdout=0";
476
477 expect_failure "func save";
478 expect_failure "func save gadget1";
479 expect_failure "func save gadget1 func1 name1 --file=f";
480 expect_failure "func save gadget1 func1 name1 --stdout";
481 expect_failure "func save gadget1 fucn1 --path=p --file=f";
482
483 expect_success "func template" "verbose=0";
484 expect_success "func template name1" "name=name1, verbose=0";
485 expect_success "func template -v" "verbose=1";
486 expect_success "func template -v name1" "name=name1, verbose=1";
487
488 expect_failure "func template name1 name2";
489 expect_failure "func template -r";
490 expect_failure "func template -f";
491
492 expect_success "func template get name1" "name=name1, attrs=";
493 expect_success "func template get name2 attr" "name=name2, attrs=attr,";
494 expect_success "func template get name3 attr1 attr2 attr3"\
495         "name=name3, attrs=attr1, attr2, attr3,";
496
497 expect_failure "func template get";
498
499 expect_success "func template set name1 attr1=val1"\
500         "name=name1, attr1=val1";
501 expect_success "func template set name2 attr1=val1 attr2=val2 attr3=val3"\
502         "name=name2, attr1=val1, attr2=val2, attr3=val3";
503
504 expect_failure "func template set";
505 expect_failure "func template set name1";
506 expect_failure "func template set name1 attr";
507 expect_failure "func template set name1 attr1=val1 attr2val2";
508
509 expect_success "func template rm name1" "name=name1";
510
511 expect_failure "func template rm";
512 expect_failure "func template rm name1 name2";
513
514 echo "Testing finished, $SUCCESS_COUNT tests passed, $ERROR_COUNT failed.";