]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - tools/regression/bin/mv/regress.sh
Regression tests for upcoming makeup of mv.
[FreeBSD/FreeBSD.git] / tools / regression / bin / mv / regress.sh
1 #!/bin/sh
2 # $FreeBSD$
3
4 # A directory in a device different from that where the tests are run
5 TMPDIR=/tmp/regress.$$
6 COUNT=0
7
8 # Begin an individual test
9 begin()
10 {
11         COUNT=`expr $COUNT + 1`
12         OK=1
13         if [ -z "$FS" ]
14         then
15                 NAME="$1"
16         else
17                 NAME="$1 (cross device)"
18         fi
19         rm -rf testdir $TMPDIR/testdir
20         mkdir -p testdir $TMPDIR/testdir
21         cd testdir
22 }
23
24 # End an individual test
25 end()
26 {
27         if [ $OK = 1 ]
28         then
29                 echo -n 'ok '
30         else
31                 echo -n 'not ok '
32         fi
33         echo "$COUNT - $NAME"
34         cd ..
35         rm -rf testdir $TMPDIR/testdir
36 }
37
38 # Make a file that can later be verified
39 mkf()
40 {
41         CN=`basename $1`
42         echo "$CN-$CN" >$1
43 }
44
45 # Verify that the file specified is correct
46 ckf()
47 {
48         if [ -f $2 ] && echo "$1-$1" | diff -q - $2
49         then
50                 ok
51         else
52                 notok
53         fi
54 }
55
56 # Make a fifo that can later be verified
57 mkp()
58 {
59         mkfifo $1
60 }
61
62 # Verify that the file specified is correct
63 ckp()
64 {
65         if [ -p $2 ]
66         then
67                 ok
68         else
69                 notok
70         fi
71 }
72
73 # Make a directory that can later be verified
74 mkd()
75 {
76         CN=`basename $1`
77         mkdir -p $1/"$CN-$CN"
78 }
79
80 # Verify that the directory specified is correct
81 ckd()
82 {
83         if [ -d $2/$1-$1 ]
84         then
85                 ok
86         else
87                 notok
88         fi
89 }
90
91 # A part of a test succeeds
92 ok()
93 {
94         :
95 }
96
97 # A part of a test fails
98 notok()
99 {
100         OK=0
101 }
102
103 # Run all tests locally and across devices
104 echo 1..24
105 for FS in '' $TMPDIR/testdir/
106 do
107         begin 'Rename file'
108         mkf fa
109         mv fa ${FS}fb
110         ckf fa ${FS}fb
111         end
112
113         begin 'Move files into directory'
114         mkf fa
115         mkf fb
116         mkdir -p ${FS}1/2/3
117         mv fa fb ${FS}1/2/3
118         ckf fa ${FS}1/2/3/fa
119         ckf fb ${FS}1/2/3/fb
120         end
121
122         begin 'Move file from directory to file'
123         mkdir -p 1/2/3
124         mkf 1/2/3/fa
125         mv 1/2/3/fa ${FS}fb
126         ckf fa ${FS}fb
127         end
128
129         begin 'Move file from directory to directory'
130         mkdir -p da1/da2/da3
131         mkdir -p ${FS}db1/db2/db3
132         mkf da1/da2/da3/fa
133         mv da1/da2/da3/fa ${FS}db1/db2/db3/fb
134         ckf fa ${FS}db1/db2/db3/fb
135         end
136
137         begin 'Rename directory'
138         mkd da
139         mv da ${FS}db
140         ckd da ${FS}db
141         end
142
143         begin 'Move directory to directory name'
144         mkd da1/da2/da3/da
145         mkdir -p ${FS}db1/db2/db3
146         mv da1/da2/da3/da ${FS}db1/db2/db3/db
147         ckd da ${FS}db1/db2/db3/db
148         end
149
150         begin 'Move directory to directory'
151         mkd da1/da2/da3/da
152         mkdir -p ${FS}db1/db2/db3
153         mv da1/da2/da3/da ${FS}db1/db2/db3
154         ckd da ${FS}db1/db2/db3/da
155         end
156
157         begin 'Move directory to existing directory'
158         mkd da1/da2/da3/da
159         mkdir -p ${FS}db1/db2/db3/da
160         mv da1/da2/da3/da ${FS}db1/db2/db3
161         ckd da ${FS}db1/db2/db3/da
162         end
163
164         begin 'Rename fifo'
165         mkp fa
166         mv fa ${FS}fb
167         ckp fa ${FS}fb
168         end
169
170         begin 'Move fifos into directory'
171         mkp fa
172         mkp fb
173         mkdir -p ${FS}1/2/3
174         mv fa fb ${FS}1/2/3
175         ckp fa ${FS}1/2/3/fa
176         ckp fb ${FS}1/2/3/fb
177         end
178
179         begin 'Move fifo from directory to fifo'
180         mkdir -p 1/2/3
181         mkp 1/2/3/fa
182         mv 1/2/3/fa ${FS}fb
183         ckp fa ${FS}fb
184         end
185
186         begin 'Move fifo from directory to directory'
187         mkdir -p da1/da2/da3
188         mkdir -p ${FS}db1/db2/db3
189         mkp da1/da2/da3/fa
190         mv da1/da2/da3/fa ${FS}db1/db2/db3/fb
191         ckp fa ${FS}db1/db2/db3/fb
192         end
193 done