summaryrefslogtreecommitdiffhomepage
path: root/testsuite/parse.tests
blob: 2cbed6f3117081e191e7a061fc7f652f0a7ff5b9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#!/bin/sh

# Copyright 2008 by Denys Vlasenko <vda.linux@googlemail.com>
# Licensed under GPLv2, see file LICENSE in this source tree.

. ./testing.sh

COLLAPSE=$((    0x00010000))
TRIM=$((        0x00020000))
GREEDY=$((      0x00040000))
MIN_DIE=$((     0x00100000))
KEEP_COPY=$((   0x00200000))
EOL_COMMENTS=$((0x00400000))
NORMAL=$((   COLLAPSE | TRIM | GREEDY | EOL_COMMENTS))

# testing "description" "command" "result" "infile" "stdin"

testing "parse mdev.conf" \
	"parse -n 4 -m 3 -f $((NORMAL)) -" \
	"[sda][0:0][644][@echo @echo TEST]\n" \
	"-" \
	" sda 0:0 644 @echo @echo TEST # echo trap\n"

testing "parse notrim" \
	"parse -n 4 -m 3 -f $((NORMAL - TRIM - COLLAPSE)) -" \
	"[][sda][0:0][644 @echo @echo TEST ]\n" \
	"-" \
	" sda 0:0 644 @echo @echo TEST \n"

testing "parse comments" \
	"parse -n 4 -m 3 -f $((NORMAL - EOL_COMMENTS)) -" \
	"[sda][0:0][644][@echo @echo TEST #this is not eaten]\n" \
	"-" \
	"\
# sda 0:0 644 @echo @echo TEST - this gets eaten
 sda 0:0 644 @echo @echo TEST #this is not eaten
"

testing "parse bad comment" \
	"parse -n 2 -m 2 -d '#=' -f $((GREEDY)) - 2>&1" \
	"\
[var][val]
parse: bad line 3: 1 tokens found, 2 needed
[  #this][ok]
[  #this][=ok]
[  #this][=ok=ok=ok=]
" \
	"-" \
	"\
# this gets eaten
var=val
  #this causes error msg
  #this=ok
  #this==ok
  #this==ok=ok=ok=
"

FILE=__parse
cat >$FILE <<EOF
#
# Device         Point               System                       Options
#_______________________________________________________________
/dev/hdb3       /                       ext2                 defaults      1          0
   /dev/hdb1       /dosc               hpfs                 ro      1          0
 /dev/fd0          /dosa              vfat                  rw,user,noauto,nohide	 0		0
	/dev/fd1          /dosb              vfat                  rw,user,noauto,nohide	 0		0
#
 /dev/cdrom     /cdrom            iso9660          ro,user,noauto,nohide	 0		0
/dev/hdb5       /redhat            ext2                 rw,root,noauto,nohide	 0		0 #sssd
	/dev/hdb6       /win2home     ntfs                  rw,root,noauto,nohide	 0		0# ssdsd
/dev/hdb7       /win2skul        ntfs                  rw,root,noauto,nohide none	 0		0
none     /dev/pts           devpts             gid=5,mode=620                 0    0 
     none                /proc               proc                defaults     0          0
EOF

cat >$FILE.res <<EOF
[/dev/hdb3][/][ext2][defaults][1][0]
[/dev/hdb1][/dosc][hpfs][ro][1][0]
[/dev/fd0][/dosa][vfat][rw,user,noauto,nohide][0][0]
[/dev/fd1][/dosb][vfat][rw,user,noauto,nohide][0][0]
[/dev/cdrom][/cdrom][iso9660][ro,user,noauto,nohide][0][0]
[/dev/hdb5][/redhat][ext2][rw,root,noauto,nohide][0][0]
[/dev/hdb6][/win2home][ntfs][rw,root,noauto,nohide][0][0]
[/dev/hdb7][/win2skul][ntfs][rw,root,noauto,nohide][none][0		0]
[none][/dev/pts][devpts][gid=5,mode=620][0][0]
[none][/proc][proc][defaults][0][0]
EOF

testing "parse polluted fstab" \
	"parse -n 6 -m 6 $FILE" \
	"`cat $FILE.res`\n" \
	"" \
	""
cp ../examples/inittab $FILE
cat >$FILE.res <<EOF
[][][sysinit][/etc/init.d/rcS]
[][][askfirst][-/bin/sh]
[tty2][][askfirst][-/bin/sh]
[tty3][][askfirst][-/bin/sh]
[tty4][][askfirst][-/bin/sh]
[tty4][][respawn][/sbin/getty 38400 tty5]
[tty5][][respawn][/sbin/getty 38400 tty6]
[][][restart][/sbin/init]
[][][ctrlaltdel][/sbin/reboot]
[][][shutdown][/bin/umount -a -r]
[][][shutdown][/sbin/swapoff -a]
EOF

testing "parse inittab from examples" \
	"parse -n 4 -m 4 -f $((NORMAL - TRIM - COLLAPSE)) -d'#:' $FILE" \
	"`cat $FILE.res`\n" \
	"" \
	""

cp ../examples/udhcp/udhcpd.conf $FILE
cat >$FILE.res <<EOF
[start][192.168.0.20]
[end][192.168.0.254]
[interface][eth0]
[opt][dns][192.168.10.2][192.168.10.10]
[option][subnet][255.255.255.0]
[opt][router][192.168.10.2]
[opt][wins][192.168.10.10]
[option][dns][129.219.13.81]
[option][domain][local]
[option][lease][864000]
[option][msstaticroutes][10.0.0.0/8][10.127.0.1]
[option][staticroutes][10.0.0.0/8][10.127.0.1,][10.11.12.0/24][10.11.12.1]
[option][0x08][01020304]
EOF

testing "parse udhcpd.conf from examples" \
	"parse -n 127 $FILE" \
	"`cat $FILE.res`\n" \
	"" \
	""

rm -f $FILE $FILE.res

exit $FAILCOUNT