awk: fix 'delete array[var--]' decrementing var twice
[oweals/busybox.git] / testsuite / parse.tests
1 #!/bin/sh
2
3 # Copyright 2008 by Denys Vlasenko <vda.linux@googlemail.com>
4 # Licensed under GPLv2, see file LICENSE in this source tree.
5
6 . ./testing.sh
7
8 COLLAPSE=$((    0x00010000))
9 TRIM=$((        0x00020000))
10 GREEDY=$((      0x00040000))
11 MIN_DIE=$((     0x00100000))
12 KEEP_COPY=$((   0x00200000))
13 EOL_COMMENTS=$((0x00400000))
14 NORMAL=$((   COLLAPSE | TRIM | GREEDY | EOL_COMMENTS))
15
16 # testing "description" "command" "result" "infile" "stdin"
17
18 testing "parse mdev.conf" \
19         "parse -n 4 -m 3 -f $((NORMAL)) -" \
20         "[sda][0:0][644][@echo @echo TEST]\n" \
21         "-" \
22         " sda 0:0 644 @echo @echo TEST # echo trap\n"
23
24 testing "parse notrim" \
25         "parse -n 4 -m 3 -f $((NORMAL - TRIM - COLLAPSE)) -" \
26         "[][sda][0:0][644 @echo @echo TEST ]\n" \
27         "-" \
28         " sda 0:0 644 @echo @echo TEST \n"
29
30 testing "parse comments" \
31         "parse -n 4 -m 3 -f $((NORMAL - EOL_COMMENTS)) -" \
32         "[sda][0:0][644][@echo @echo TEST #this is not eaten]\n" \
33         "-" \
34         "\
35 # sda 0:0 644 @echo @echo TEST - this gets eaten
36  sda 0:0 644 @echo @echo TEST #this is not eaten
37 "
38
39 testing "parse bad comment" \
40         "parse -n 2 -m 2 -d '#=' -f $((GREEDY)) - 2>&1" \
41         "\
42 [var][val]
43 parse: bad line 3: 1 tokens found, 2 needed
44 [  #this][ok]
45 [  #this][=ok]
46 [  #this][=ok=ok=ok=]
47 " \
48         "-" \
49         "\
50 # this gets eaten
51 var=val
52   #this causes error msg
53   #this=ok
54   #this==ok
55   #this==ok=ok=ok=
56 "
57
58 FILE=__parse
59 cat >$FILE <<EOF
60 #
61 # Device         Point               System                       Options
62 #_______________________________________________________________
63 /dev/hdb3       /                       ext2                 defaults      1          0
64    /dev/hdb1       /dosc               hpfs                 ro      1          0
65  /dev/fd0          /dosa              vfat                  rw,user,noauto,nohide        0              0
66         /dev/fd1          /dosb              vfat                  rw,user,noauto,nohide         0              0
67 #
68  /dev/cdrom     /cdrom            iso9660          ro,user,noauto,nohide         0              0
69 /dev/hdb5       /redhat            ext2                 rw,root,noauto,nohide    0              0 #sssd
70         /dev/hdb6       /win2home     ntfs                  rw,root,noauto,nohide        0              0# ssdsd
71 /dev/hdb7       /win2skul        ntfs                  rw,root,noauto,nohide none        0              0
72 none     /dev/pts           devpts             gid=5,mode=620                 0    0 
73      none                /proc               proc                defaults     0          0
74 EOF
75
76 cat >$FILE.res <<EOF
77 [/dev/hdb3][/][ext2][defaults][1][0]
78 [/dev/hdb1][/dosc][hpfs][ro][1][0]
79 [/dev/fd0][/dosa][vfat][rw,user,noauto,nohide][0][0]
80 [/dev/fd1][/dosb][vfat][rw,user,noauto,nohide][0][0]
81 [/dev/cdrom][/cdrom][iso9660][ro,user,noauto,nohide][0][0]
82 [/dev/hdb5][/redhat][ext2][rw,root,noauto,nohide][0][0]
83 [/dev/hdb6][/win2home][ntfs][rw,root,noauto,nohide][0][0]
84 [/dev/hdb7][/win2skul][ntfs][rw,root,noauto,nohide][none][0             0]
85 [none][/dev/pts][devpts][gid=5,mode=620][0][0]
86 [none][/proc][proc][defaults][0][0]
87 EOF
88
89 testing "parse polluted fstab" \
90         "parse -n 6 -m 6 $FILE" \
91         "`cat $FILE.res`\n" \
92         "" \
93         ""
94 cp ../examples/inittab $FILE
95 cat >$FILE.res <<EOF
96 [][][sysinit][/etc/init.d/rcS]
97 [][][askfirst][-/bin/sh]
98 [tty2][][askfirst][-/bin/sh]
99 [tty3][][askfirst][-/bin/sh]
100 [tty4][][askfirst][-/bin/sh]
101 [tty4][][respawn][/sbin/getty 38400 tty5]
102 [tty5][][respawn][/sbin/getty 38400 tty6]
103 [][][restart][/sbin/init]
104 [][][ctrlaltdel][/sbin/reboot]
105 [][][shutdown][/bin/umount -a -r]
106 [][][shutdown][/sbin/swapoff -a]
107 EOF
108
109 testing "parse inittab from examples" \
110         "parse -n 4 -m 4 -f $((NORMAL - TRIM - COLLAPSE)) -d'#:' $FILE" \
111         "`cat $FILE.res`\n" \
112         "" \
113         ""
114
115 cp ../examples/udhcp/udhcpd.conf $FILE
116 cat >$FILE.res <<EOF
117 [start][192.168.0.20]
118 [end][192.168.0.254]
119 [interface][eth0]
120 [opt][dns][192.168.10.2][192.168.10.10]
121 [option][subnet][255.255.255.0]
122 [opt][router][192.168.10.2]
123 [opt][wins][192.168.10.10]
124 [option][dns][129.219.13.81]
125 [option][domain][local]
126 [option][lease][864000]
127 [option][msstaticroutes][10.0.0.0/8][10.127.0.1]
128 [option][staticroutes][10.0.0.0/8][10.127.0.1,][10.11.12.0/24][10.11.12.1]
129 [option][0x08][01020304]
130 EOF
131
132 testing "parse udhcpd.conf from examples" \
133         "parse -n 127 $FILE" \
134         "`cat $FILE.res`\n" \
135         "" \
136         ""
137
138 rm -f $FILE $FILE.res
139
140 exit $FAILCOUNT