Blame


1 c84d8c75 2019-01-02 stsp #!/bin/sh
2 c84d8c75 2019-01-02 stsp #
3 c84d8c75 2019-01-02 stsp # Copyright (c) 2019 Stefan Sperling <stsp@openbsd.org>
4 c84d8c75 2019-01-02 stsp #
5 c84d8c75 2019-01-02 stsp # Permission to use, copy, modify, and distribute this software for any
6 c84d8c75 2019-01-02 stsp # purpose with or without fee is hereby granted, provided that the above
7 c84d8c75 2019-01-02 stsp # copyright notice and this permission notice appear in all copies.
8 c84d8c75 2019-01-02 stsp #
9 c84d8c75 2019-01-02 stsp # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 c84d8c75 2019-01-02 stsp # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 c84d8c75 2019-01-02 stsp # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 c84d8c75 2019-01-02 stsp # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 c84d8c75 2019-01-02 stsp # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 c84d8c75 2019-01-02 stsp # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 c84d8c75 2019-01-02 stsp # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 c84d8c75 2019-01-02 stsp
17 c84d8c75 2019-01-02 stsp . ./common.sh
18 c84d8c75 2019-01-02 stsp
19 c84d8c75 2019-01-02 stsp function test_update_basic {
20 0fbd721f 2019-01-02 stsp local testroot=`test_init update_basic`
21 c84d8c75 2019-01-02 stsp
22 3c90ba67 2019-01-02 stsp got checkout $testroot/repo $testroot/wt > /dev/null
23 c84d8c75 2019-01-02 stsp if [ "$?" != "0" ]; then
24 c84d8c75 2019-01-02 stsp test_done "$testroot" "$?"
25 c84d8c75 2019-01-02 stsp return 1
26 c84d8c75 2019-01-02 stsp fi
27 c84d8c75 2019-01-02 stsp
28 c84d8c75 2019-01-02 stsp echo "modified alpha" > $testroot/repo/alpha
29 c84d8c75 2019-01-02 stsp git_commit $testroot/repo -m "modified alpha"
30 c84d8c75 2019-01-02 stsp
31 c84d8c75 2019-01-02 stsp echo "U alpha" > $testroot/stdout.expected
32 9c4b8182 2019-01-02 stsp echo -n "Updated to commit " >> $testroot/stdout.expected
33 9c4b8182 2019-01-02 stsp git_show_head $testroot/repo >> $testroot/stdout.expected
34 9c4b8182 2019-01-02 stsp echo >> $testroot/stdout.expected
35 c84d8c75 2019-01-02 stsp
36 c84d8c75 2019-01-02 stsp (cd $testroot/wt && got update > $testroot/stdout)
37 c84d8c75 2019-01-02 stsp
38 c84d8c75 2019-01-02 stsp cmp $testroot/stdout.expected $testroot/stdout
39 c84d8c75 2019-01-02 stsp if [ "$?" != "0" ]; then
40 c84d8c75 2019-01-02 stsp diff -u $testroot/stdout.expected $testroot/stdout
41 c84d8c75 2019-01-02 stsp test_done "$testroot" "$?"
42 c84d8c75 2019-01-02 stsp return 1
43 c84d8c75 2019-01-02 stsp fi
44 c84d8c75 2019-01-02 stsp
45 c84d8c75 2019-01-02 stsp echo "modified alpha" > $testroot/content.expected
46 52a3df9b 2019-01-06 stsp cat $testroot/wt/alpha > $testroot/content
47 c84d8c75 2019-01-02 stsp
48 c84d8c75 2019-01-02 stsp cmp $testroot/content.expected $testroot/content
49 693719bc 2019-01-03 stsp ret="$?"
50 693719bc 2019-01-03 stsp if [ "$ret" != "0" ]; then
51 c84d8c75 2019-01-02 stsp diff -u $testroot/content.expected $testroot/content
52 c84d8c75 2019-01-02 stsp fi
53 693719bc 2019-01-03 stsp test_done "$testroot" "$ret"
54 c84d8c75 2019-01-02 stsp }
55 c84d8c75 2019-01-02 stsp
56 3b4d3732 2019-01-02 stsp function test_update_adds_file {
57 3b4d3732 2019-01-02 stsp local testroot=`test_init update_adds_file`
58 3b4d3732 2019-01-02 stsp
59 3b4d3732 2019-01-02 stsp got checkout $testroot/repo $testroot/wt > /dev/null
60 3b4d3732 2019-01-02 stsp if [ "$?" != "0" ]; then
61 3b4d3732 2019-01-02 stsp test_done "$testroot" "$?"
62 3b4d3732 2019-01-02 stsp return 1
63 3b4d3732 2019-01-02 stsp fi
64 3b4d3732 2019-01-02 stsp
65 3b4d3732 2019-01-02 stsp echo "new" > $testroot/repo/gamma/new
66 3b4d3732 2019-01-02 stsp (cd $testroot/repo && git add .)
67 3b4d3732 2019-01-02 stsp git_commit $testroot/repo -m "adding a new file"
68 3b4d3732 2019-01-02 stsp
69 3b4d3732 2019-01-02 stsp echo "A gamma/new" > $testroot/stdout.expected
70 3b4d3732 2019-01-02 stsp echo -n "Updated to commit " >> $testroot/stdout.expected
71 3b4d3732 2019-01-02 stsp git_show_head $testroot/repo >> $testroot/stdout.expected
72 3b4d3732 2019-01-02 stsp echo >> $testroot/stdout.expected
73 3b4d3732 2019-01-02 stsp
74 3b4d3732 2019-01-02 stsp (cd $testroot/wt && got update > $testroot/stdout)
75 3b4d3732 2019-01-02 stsp
76 3b4d3732 2019-01-02 stsp cmp $testroot/stdout.expected $testroot/stdout
77 3b4d3732 2019-01-02 stsp if [ "$?" != "0" ]; then
78 3b4d3732 2019-01-02 stsp diff -u $testroot/stdout.expected $testroot/stdout
79 3b4d3732 2019-01-02 stsp test_done "$testroot" "$?"
80 3b4d3732 2019-01-02 stsp return 1
81 3b4d3732 2019-01-02 stsp fi
82 3b4d3732 2019-01-02 stsp
83 3b4d3732 2019-01-02 stsp echo "new" >> $testroot/content.expected
84 52a3df9b 2019-01-06 stsp cat $testroot/wt/gamma/new > $testroot/content
85 3b4d3732 2019-01-02 stsp
86 3b4d3732 2019-01-02 stsp cmp $testroot/content.expected $testroot/content
87 693719bc 2019-01-03 stsp ret="$?"
88 693719bc 2019-01-03 stsp if [ "$ret" != "0" ]; then
89 3b4d3732 2019-01-02 stsp diff -u $testroot/content.expected $testroot/content
90 3b4d3732 2019-01-02 stsp fi
91 693719bc 2019-01-03 stsp test_done "$testroot" "$ret"
92 3b4d3732 2019-01-02 stsp }
93 3b4d3732 2019-01-02 stsp
94 512f0d0e 2019-01-02 stsp function test_update_deletes_file {
95 512f0d0e 2019-01-02 stsp local testroot=`test_init update_deletes_file`
96 512f0d0e 2019-01-02 stsp
97 512f0d0e 2019-01-02 stsp got checkout $testroot/repo $testroot/wt > /dev/null
98 512f0d0e 2019-01-02 stsp if [ "$?" != "0" ]; then
99 512f0d0e 2019-01-02 stsp test_done "$testroot" "$?"
100 512f0d0e 2019-01-02 stsp return 1
101 512f0d0e 2019-01-02 stsp fi
102 512f0d0e 2019-01-02 stsp
103 512f0d0e 2019-01-02 stsp (cd $testroot/repo && git_rm $testroot/repo beta)
104 512f0d0e 2019-01-02 stsp git_commit $testroot/repo -m "deleting a file"
105 512f0d0e 2019-01-02 stsp
106 512f0d0e 2019-01-02 stsp echo "D beta" > $testroot/stdout.expected
107 512f0d0e 2019-01-02 stsp echo -n "Updated to commit " >> $testroot/stdout.expected
108 512f0d0e 2019-01-02 stsp git_show_head $testroot/repo >> $testroot/stdout.expected
109 512f0d0e 2019-01-02 stsp echo >> $testroot/stdout.expected
110 512f0d0e 2019-01-02 stsp
111 512f0d0e 2019-01-02 stsp (cd $testroot/wt && got update > $testroot/stdout)
112 512f0d0e 2019-01-02 stsp
113 512f0d0e 2019-01-02 stsp cmp $testroot/stdout.expected $testroot/stdout
114 512f0d0e 2019-01-02 stsp if [ "$?" != "0" ]; then
115 512f0d0e 2019-01-02 stsp diff -u $testroot/stdout.expected $testroot/stdout
116 512f0d0e 2019-01-02 stsp test_done "$testroot" "$?"
117 512f0d0e 2019-01-02 stsp return 1
118 512f0d0e 2019-01-02 stsp fi
119 512f0d0e 2019-01-02 stsp
120 512f0d0e 2019-01-02 stsp if [ -e $testroot/wt/beta ]; then
121 512f0d0e 2019-01-02 stsp echo "removed file beta still exists on disk" >&2
122 52a3df9b 2019-01-06 stsp test_done "$testroot" "1"
123 512f0d0e 2019-01-02 stsp return 1
124 512f0d0e 2019-01-02 stsp fi
125 512f0d0e 2019-01-02 stsp
126 52a3df9b 2019-01-06 stsp test_done "$testroot" "0"
127 512f0d0e 2019-01-02 stsp }
128 512f0d0e 2019-01-02 stsp
129 f5c49f82 2019-01-06 stsp function test_update_deletes_dir {
130 f5c49f82 2019-01-06 stsp local testroot=`test_init update_deletes_dir`
131 f5c49f82 2019-01-06 stsp
132 f5c49f82 2019-01-06 stsp got checkout $testroot/repo $testroot/wt > /dev/null
133 f5c49f82 2019-01-06 stsp if [ "$?" != "0" ]; then
134 f5c49f82 2019-01-06 stsp test_done "$testroot" "$?"
135 f5c49f82 2019-01-06 stsp return 1
136 f5c49f82 2019-01-06 stsp fi
137 f5c49f82 2019-01-06 stsp
138 f5c49f82 2019-01-06 stsp (cd $testroot/repo && git_rm $testroot/repo -r epsilon)
139 f5c49f82 2019-01-06 stsp git_commit $testroot/repo -m "deleting a directory"
140 f5c49f82 2019-01-06 stsp
141 f5c49f82 2019-01-06 stsp echo "D epsilon/zeta" > $testroot/stdout.expected
142 f5c49f82 2019-01-06 stsp echo -n "Updated to commit " >> $testroot/stdout.expected
143 f5c49f82 2019-01-06 stsp git_show_head $testroot/repo >> $testroot/stdout.expected
144 f5c49f82 2019-01-06 stsp echo >> $testroot/stdout.expected
145 f5c49f82 2019-01-06 stsp
146 f5c49f82 2019-01-06 stsp (cd $testroot/wt && got update > $testroot/stdout)
147 f5c49f82 2019-01-06 stsp
148 f5c49f82 2019-01-06 stsp cmp $testroot/stdout.expected $testroot/stdout
149 f5c49f82 2019-01-06 stsp if [ "$?" != "0" ]; then
150 f5c49f82 2019-01-06 stsp diff -u $testroot/stdout.expected $testroot/stdout
151 f5c49f82 2019-01-06 stsp test_done "$testroot" "$?"
152 f5c49f82 2019-01-06 stsp return 1
153 f5c49f82 2019-01-06 stsp fi
154 f5c49f82 2019-01-06 stsp
155 f5c49f82 2019-01-06 stsp if [ -e $testroot/wt/epsilon ]; then
156 f5c49f82 2019-01-06 stsp echo "removed dir epsilon still exists on disk" >&2
157 52a3df9b 2019-01-06 stsp test_done "$testroot" "1"
158 f5c49f82 2019-01-06 stsp return 1
159 f5c49f82 2019-01-06 stsp fi
160 f5c49f82 2019-01-06 stsp
161 52a3df9b 2019-01-06 stsp test_done "$testroot" "0"
162 f5c49f82 2019-01-06 stsp }
163 f5c49f82 2019-01-06 stsp
164 5cc266ba 2019-01-06 stsp function test_update_deletes_dir_with_path_prefix {
165 5cc266ba 2019-01-06 stsp local testroot=`test_init update_deletes_dir_with_path_prefix`
166 5cc266ba 2019-01-06 stsp local first_rev=`git_show_head $testroot/repo`
167 5cc266ba 2019-01-06 stsp
168 5cc266ba 2019-01-06 stsp mkdir $testroot/repo/epsilon/psi
169 5cc266ba 2019-01-06 stsp echo mu > $testroot/repo/epsilon/psi/mu
170 5cc266ba 2019-01-06 stsp (cd $testroot/repo && git add .)
171 5cc266ba 2019-01-06 stsp git_commit $testroot/repo -m "adding a sub-directory beneath epsilon"
172 5cc266ba 2019-01-06 stsp
173 5cc266ba 2019-01-06 stsp # check out the epsilon/ sub-tree
174 5cc266ba 2019-01-06 stsp got checkout -p epsilon $testroot/repo $testroot/wt > /dev/null
175 5cc266ba 2019-01-06 stsp if [ "$?" != "0" ]; then
176 5cc266ba 2019-01-06 stsp test_done "$testroot" "$?"
177 5cc266ba 2019-01-06 stsp return 1
178 5cc266ba 2019-01-06 stsp fi
179 5cc266ba 2019-01-06 stsp
180 5cc266ba 2019-01-06 stsp # update back to first commit and expect psi/mu to be deleted
181 5cc266ba 2019-01-06 stsp echo "D psi/mu" > $testroot/stdout.expected
182 5cc266ba 2019-01-06 stsp echo "Updated to commit $first_rev" >> $testroot/stdout.expected
183 5cc266ba 2019-01-06 stsp
184 5cc266ba 2019-01-06 stsp (cd $testroot/wt && got update -c $first_rev > $testroot/stdout)
185 5cc266ba 2019-01-06 stsp
186 5cc266ba 2019-01-06 stsp cmp $testroot/stdout.expected $testroot/stdout
187 5cc266ba 2019-01-06 stsp if [ "$?" != "0" ]; then
188 5cc266ba 2019-01-06 stsp diff -u $testroot/stdout.expected $testroot/stdout
189 5cc266ba 2019-01-06 stsp test_done "$testroot" "$?"
190 5cc266ba 2019-01-06 stsp return 1
191 5cc266ba 2019-01-06 stsp fi
192 5cc266ba 2019-01-06 stsp
193 5cc266ba 2019-01-06 stsp if [ -e $testroot/wt/psi ]; then
194 5cc266ba 2019-01-06 stsp echo "removed dir psi still exists on disk" >&2
195 5cc266ba 2019-01-06 stsp test_done "$testroot" "1"
196 5cc266ba 2019-01-06 stsp return 1
197 5cc266ba 2019-01-06 stsp fi
198 5cc266ba 2019-01-06 stsp
199 52a3df9b 2019-01-06 stsp test_done "$testroot" "0"
200 5cc266ba 2019-01-06 stsp }
201 5cc266ba 2019-01-06 stsp
202 c84d8c75 2019-01-02 stsp run_test test_update_basic
203 3b4d3732 2019-01-02 stsp run_test test_update_adds_file
204 512f0d0e 2019-01-02 stsp run_test test_update_deletes_file
205 f5c49f82 2019-01-06 stsp run_test test_update_deletes_dir
206 5cc266ba 2019-01-06 stsp run_test test_update_deletes_dir_with_path_prefix