blob: 48d3dcc2c31880332ed660d77d5d0596e66c459d
1 | #!/bin/sh |
2 | # Copyright 2008 by Denys Vlasenko |
3 | # Licensed under GPLv2, see file LICENSE in this source tree. |
4 | |
5 | . ./testing.sh |
6 | |
7 | # ls -ln is showing date. Need to remove that, it's variable |
8 | # sed: (1) "maj, min" -> "maj,min" (2) coalesce spaces |
9 | # cut: remove date |
10 | FILTER_LS="grep -v '^total ' | sed -e 's/, */,/g' -e 's/ */ /g' | cut -d' ' -f 1-5,9-" |
11 | # cut: remove size+date |
12 | FILTER_LS2="grep -v '^total ' | sed -e 's/, */,/g' -e 's/ */ /g' | cut -d' ' -f 1-4,9-" |
13 | |
14 | # testing "test name" "commands" "expected result" "file input" "stdin" |
15 | |
16 | rm -rf mdev.testdir |
17 | mkdir mdev.testdir |
18 | # We need mdev executable to be in chroot jail! |
19 | # (will still fail with dynamically linked one, though...) |
20 | cp ../busybox mdev.testdir/mdev |
21 | mkdir mdev.testdir/bin |
22 | cp ../busybox mdev.testdir/bin/sh 2>/dev/null # for testing cmd feature |
23 | mkdir mdev.testdir/etc |
24 | mkdir mdev.testdir/dev |
25 | mkdir -p mdev.testdir/sys/block/sda |
26 | echo "8:0" >mdev.testdir/sys/block/sda/dev |
27 | |
28 | # env - PATH=$PATH: on some systems chroot binary won't otherwise be found |
29 | |
30 | optional STATIC FEATURE_LS_TIMESTAMPS FEATURE_LS_USERNAME |
31 | testing "mdev add /block/sda" \ |
32 | "env - PATH=$PATH ACTION=add DEVPATH=/block/sda chroot mdev.testdir /mdev 2>&1; |
33 | ls -ln mdev.testdir/dev | $FILTER_LS" \ |
34 | "\ |
35 | brw-rw---- 1 0 0 8,0 sda |
36 | " \ |
37 | "" "" |
38 | SKIP= |
39 | |
40 | # continuing to use directory structure from prev test |
41 | optional STATIC FEATURE_MDEV_CONF FEATURE_LS_TIMESTAMPS FEATURE_LS_USERNAME |
42 | testing "mdev deletes /block/sda" \ |
43 | "env - PATH=$PATH ACTION=remove DEVPATH=/block/sda chroot mdev.testdir /mdev 2>&1; |
44 | ls -ln mdev.testdir/dev | $FILTER_LS" \ |
45 | "\ |
46 | " \ |
47 | "" "" |
48 | SKIP= |
49 | |
50 | # continuing to use directory structure from prev test |
51 | rm -rf mdev.testdir/dev/* |
52 | echo ".* 1:1 666" >mdev.testdir/etc/mdev.conf |
53 | echo "sda 2:2 444" >>mdev.testdir/etc/mdev.conf |
54 | optional STATIC FEATURE_MDEV_CONF FEATURE_LS_TIMESTAMPS FEATURE_LS_USERNAME |
55 | testing "mdev stops on first rule" \ |
56 | "env - PATH=$PATH ACTION=add DEVPATH=/block/sda chroot mdev.testdir /mdev 2>&1; |
57 | ls -ln mdev.testdir/dev | $FILTER_LS" \ |
58 | "\ |
59 | brw-rw-rw- 1 1 1 8,0 sda |
60 | " \ |
61 | "" "" |
62 | SKIP= |
63 | |
64 | # continuing to use directory structure from prev test |
65 | rm -rf mdev.testdir/dev/* |
66 | echo "-.* 1:1 666" >mdev.testdir/etc/mdev.conf |
67 | echo "sda 2:2 444" >>mdev.testdir/etc/mdev.conf |
68 | optional STATIC FEATURE_MDEV_CONF FEATURE_LS_TIMESTAMPS FEATURE_LS_USERNAME |
69 | testing "mdev does not stop on dash-rule" \ |
70 | "env - PATH=$PATH ACTION=add DEVPATH=/block/sda chroot mdev.testdir /mdev 2>&1; |
71 | ls -ln mdev.testdir/dev | $FILTER_LS" \ |
72 | "\ |
73 | br--r--r-- 1 2 2 8,0 sda |
74 | " \ |
75 | "" "" |
76 | SKIP= |
77 | |
78 | # continuing to use directory structure from prev test |
79 | rm -rf mdev.testdir/dev/* |
80 | echo "\$MODALIAS=qw 1:1 666" >mdev.testdir/etc/mdev.conf |
81 | echo "\$MODALIAS=qw. 2:2 444" >>mdev.testdir/etc/mdev.conf |
82 | echo "\$MODALIAS=qw. 3:3 400" >>mdev.testdir/etc/mdev.conf |
83 | optional STATIC FEATURE_MDEV_CONF FEATURE_LS_TIMESTAMPS FEATURE_LS_USERNAME |
84 | testing "mdev \$ENVVAR=regex match" \ |
85 | "env - PATH=$PATH ACTION=add DEVPATH=/block/sda MODALIAS=qwe chroot mdev.testdir /mdev 2>&1; |
86 | ls -ln mdev.testdir/dev | $FILTER_LS" \ |
87 | "\ |
88 | br--r--r-- 1 2 2 8,0 sda |
89 | " \ |
90 | "" "" |
91 | SKIP= |
92 | |
93 | # continuing to use directory structure from prev test |
94 | rm -rf mdev.testdir/dev/* |
95 | echo "sda 0:0 444 >disk/scsiA" >mdev.testdir/etc/mdev.conf |
96 | optional STATIC FEATURE_MDEV_CONF FEATURE_MDEV_RENAME FEATURE_LS_RECURSIVE FEATURE_LS_TIMESTAMPS FEATURE_LS_USERNAME |
97 | testing "mdev move/symlink rule '>bar/baz'" \ |
98 | "env - PATH=$PATH ACTION=add DEVPATH=/block/sda chroot mdev.testdir /mdev 2>&1; |
99 | ls -lnR mdev.testdir/dev | $FILTER_LS2" \ |
100 | "\ |
101 | mdev.testdir/dev: |
102 | drwxr-xr-x 2 0 0 disk |
103 | lrwxrwxrwx 1 0 0 sda -> disk/scsiA |
104 | |
105 | mdev.testdir/dev/disk: |
106 | br--r--r-- 1 0 0 scsiA |
107 | " \ |
108 | "" "" |
109 | SKIP= |
110 | |
111 | # continuing to use directory structure from prev test |
112 | rm -rf mdev.testdir/dev/* |
113 | echo "sda 0:0 444 >disk/" >mdev.testdir/etc/mdev.conf |
114 | optional STATIC FEATURE_MDEV_CONF FEATURE_MDEV_RENAME FEATURE_LS_RECURSIVE FEATURE_LS_TIMESTAMPS FEATURE_LS_USERNAME |
115 | testing "mdev move/symlink rule '>bar/'" \ |
116 | "env - PATH=$PATH ACTION=add DEVPATH=/block/sda chroot mdev.testdir /mdev 2>&1; |
117 | ls -lnR mdev.testdir/dev | $FILTER_LS2" \ |
118 | "\ |
119 | mdev.testdir/dev: |
120 | drwxr-xr-x 2 0 0 disk |
121 | lrwxrwxrwx 1 0 0 sda -> disk/sda |
122 | |
123 | mdev.testdir/dev/disk: |
124 | br--r--r-- 1 0 0 sda |
125 | " \ |
126 | "" "" |
127 | SKIP= |
128 | |
129 | # continuing to use directory structure from prev test |
130 | rm -rf mdev.testdir/dev/* |
131 | echo "sda 0:0 444 =disk/sd/a" >mdev.testdir/etc/mdev.conf |
132 | optional STATIC FEATURE_MDEV_CONF FEATURE_MDEV_RENAME FEATURE_LS_RECURSIVE FEATURE_LS_TIMESTAMPS FEATURE_LS_USERNAME |
133 | testing "mdev move rule '=bar/baz/fname'" \ |
134 | "env - PATH=$PATH ACTION=add DEVPATH=/block/sda chroot mdev.testdir /mdev 2>&1; |
135 | ls -lnR mdev.testdir/dev | $FILTER_LS2" \ |
136 | "\ |
137 | mdev.testdir/dev: |
138 | drwxr-xr-x 3 0 0 disk |
139 | |
140 | mdev.testdir/dev/disk: |
141 | drwxr-xr-x 2 0 0 sd |
142 | |
143 | mdev.testdir/dev/disk/sd: |
144 | br--r--r-- 1 0 0 a |
145 | " \ |
146 | "" "" |
147 | SKIP= |
148 | |
149 | # continuing to use directory structure from prev test |
150 | rm -rf mdev.testdir/dev/* |
151 | # here we complicate things by having non-matching group 1 and using %0 |
152 | echo "s([0-9])*d([a-z]+) 0:0 644 >sd/%2_%0" >mdev.testdir/etc/mdev.conf |
153 | optional STATIC FEATURE_MDEV_CONF FEATURE_MDEV_RENAME FEATURE_MDEV_RENAME_REGEXP FEATURE_LS_RECURSIVE FEATURE_LS_TIMESTAMPS FEATURE_LS_USERNAME FEATURE_LS_SORTFILES |
154 | testing "mdev regexp substring match + replace" \ |
155 | "env - PATH=$PATH ACTION=add DEVPATH=/block/sda chroot mdev.testdir /mdev 2>&1; |
156 | ls -lnR mdev.testdir/dev | $FILTER_LS2" \ |
157 | "\ |
158 | mdev.testdir/dev: |
159 | drwxr-xr-x 2 0 0 sd |
160 | lrwxrwxrwx 1 0 0 sda -> sd/a_sda |
161 | |
162 | mdev.testdir/dev/sd: |
163 | brw-r--r-- 1 0 0 a_sda |
164 | " \ |
165 | "" "" |
166 | SKIP= |
167 | |
168 | # continuing to use directory structure from prev test |
169 | rm -rf mdev.testdir/dev/* |
170 | echo "sda 0:0 644 @echo @echo TEST" >mdev.testdir/etc/mdev.conf |
171 | optional STATIC FEATURE_MDEV_CONF FEATURE_MDEV_EXEC FEATURE_LS_RECURSIVE FEATURE_LS_TIMESTAMPS FEATURE_LS_USERNAME FEATURE_SH_IS_ASH |
172 | testing "mdev command" \ |
173 | "env - PATH=$PATH ACTION=add DEVPATH=/block/sda chroot mdev.testdir /mdev 2>&1; |
174 | ls -lnR mdev.testdir/dev | $FILTER_LS" \ |
175 | "\ |
176 | @echo TEST |
177 | mdev.testdir/dev: |
178 | brw-r--r-- 1 0 0 8,0 sda |
179 | " \ |
180 | "" "" |
181 | SKIP= |
182 | |
183 | # continuing to use directory structure from prev test |
184 | rm -rf mdev.testdir/dev/* |
185 | echo "sda 0:0 644 =block/ @echo @echo TEST:\$MDEV" >mdev.testdir/etc/mdev.conf |
186 | optional STATIC FEATURE_MDEV_CONF FEATURE_MDEV_RENAME FEATURE_MDEV_EXEC FEATURE_LS_RECURSIVE FEATURE_LS_TIMESTAMPS FEATURE_LS_USERNAME FEATURE_SH_IS_ASH |
187 | testing "mdev move and command" \ |
188 | "env - PATH=$PATH ACTION=add DEVPATH=/block/sda chroot mdev.testdir /mdev 2>&1; |
189 | ls -lnR mdev.testdir/dev | $FILTER_LS2" \ |
190 | "\ |
191 | @echo TEST:block/sda |
192 | mdev.testdir/dev: |
193 | drwxr-xr-x 2 0 0 block |
194 | |
195 | mdev.testdir/dev/block: |
196 | brw-r--r-- 1 0 0 sda |
197 | " \ |
198 | "" "" |
199 | SKIP= |
200 | |
201 | # continuing to use directory structure from prev test |
202 | rm -rf mdev.testdir/dev/* |
203 | echo "@8,0 0:1 644" >mdev.testdir/etc/mdev.conf |
204 | optional STATIC FEATURE_MDEV_CONF FEATURE_MDEV_RENAME FEATURE_MDEV_RENAME_REGEXP FEATURE_LS_RECURSIVE FEATURE_LS_TIMESTAMPS FEATURE_LS_USERNAME |
205 | testing "mdev #maj,min and no explicit uid" \ |
206 | "env - PATH=$PATH ACTION=add DEVPATH=/block/sda chroot mdev.testdir /mdev 2>&1; |
207 | ls -lnR mdev.testdir/dev | $FILTER_LS" \ |
208 | "\ |
209 | mdev.testdir/dev: |
210 | brw-r--r-- 1 0 1 8,0 sda |
211 | " \ |
212 | "" "" |
213 | SKIP= |
214 | |
215 | # continuing to use directory structure from prev test |
216 | rm -rf mdev.testdir/dev/* |
217 | mkdir -p mdev.testdir/sys/class/tty/capi |
218 | echo "191:0" >mdev.testdir/sys/class/tty/capi/dev |
219 | mkdir -p mdev.testdir/sys/class/tty/capi1 |
220 | echo "191:1" >mdev.testdir/sys/class/tty/capi1/dev |
221 | mkdir -p mdev.testdir/sys/class/tty/capi20 |
222 | echo "191:20" >mdev.testdir/sys/class/tty/capi20/dev |
223 | echo "capi 0:0 0660 =capi20" >mdev.testdir/etc/mdev.conf |
224 | echo "capi([0-9]) 0:0 0660 =capi20.0%1" >>mdev.testdir/etc/mdev.conf |
225 | echo "capi([0-9]*) 0:0 0660 =capi20.%1" >>mdev.testdir/etc/mdev.conf |
226 | # mdev invocation with DEVPATH=/class/tty/capi20 was deleting /dev/capi20 |
227 | optional STATIC FEATURE_MDEV_CONF FEATURE_MDEV_RENAME FEATURE_MDEV_RENAME_REGEXP FEATURE_LS_RECURSIVE FEATURE_LS_TIMESTAMPS FEATURE_LS_USERNAME FEATURE_LS_SORTFILES |
228 | testing "move rule does not delete node with name == device_name" \ |
229 | "\ |
230 | env - PATH=$PATH ACTION=add DEVPATH=/class/tty/capi chroot mdev.testdir /mdev 2>&1; |
231 | env - PATH=$PATH ACTION=add DEVPATH=/class/tty/capi1 chroot mdev.testdir /mdev 2>&1; |
232 | env - PATH=$PATH ACTION=add DEVPATH=/class/tty/capi20 chroot mdev.testdir /mdev 2>&1; |
233 | ls -lnR mdev.testdir/dev | $FILTER_LS" \ |
234 | "\ |
235 | mdev.testdir/dev: |
236 | crw-rw---- 1 0 0 191,0 capi20 |
237 | crw-rw---- 1 0 0 191,1 capi20.01 |
238 | crw-rw---- 1 0 0 191,20 capi20.20 |
239 | " \ |
240 | "" "" |
241 | SKIP= |
242 | |
243 | # clean up |
244 | rm -rf mdev.testdir |
245 | |
246 | exit $FAILCOUNT |
247 |