3 0e673013 2019-01-02 stsp # Copyright (c) 2019 Stefan Sperling <stsp@openbsd.org>
5 0e673013 2019-01-02 stsp # Permission to use, copy, modify, and distribute this software for any
6 0e673013 2019-01-02 stsp # purpose with or without fee is hereby granted, provided that the above
7 0e673013 2019-01-02 stsp # copyright notice and this permission notice appear in all copies.
9 0e673013 2019-01-02 stsp # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 0e673013 2019-01-02 stsp # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 0e673013 2019-01-02 stsp # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 0e673013 2019-01-02 stsp # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 0e673013 2019-01-02 stsp # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 0e673013 2019-01-02 stsp # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 0e673013 2019-01-02 stsp # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 0e673013 2019-01-02 stsp . ./common.sh
19 f6cae3ed 2020-09-13 naddy test_checkout_basic() {
20 0e673013 2019-01-02 stsp local testroot=`test_init checkout_basic`
21 08e5873e 2021-09-14 stsp local commit_id=`git_show_head $testroot/repo`
23 0e673013 2019-01-02 stsp echo "A $testroot/wt/alpha" > $testroot/stdout.expected
24 0e673013 2019-01-02 stsp echo "A $testroot/wt/beta" >> $testroot/stdout.expected
25 0e673013 2019-01-02 stsp echo "A $testroot/wt/epsilon/zeta" >> $testroot/stdout.expected
26 0e673013 2019-01-02 stsp echo "A $testroot/wt/gamma/delta" >> $testroot/stdout.expected
27 08e5873e 2021-09-14 stsp echo "Checked out refs/heads/master: $commit_id" \
28 08e5873e 2021-09-14 stsp >> $testroot/stdout.expected
29 0e673013 2019-01-02 stsp echo "Now shut up and hack" >> $testroot/stdout.expected
31 0e673013 2019-01-02 stsp got checkout $testroot/repo $testroot/wt > $testroot/stdout
33 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
34 e60e7f5b 2019-02-10 stsp test_done "$testroot" "$ret"
38 8d301dd9 2019-05-14 stsp cmp -s $testroot/stdout.expected $testroot/stdout
40 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
41 0e673013 2019-01-02 stsp diff -u $testroot/stdout.expected $testroot/stdout
42 e60e7f5b 2019-02-10 stsp test_done "$testroot" "$ret"
46 0e673013 2019-01-02 stsp echo "alpha" > $testroot/content.expected
47 0e673013 2019-01-02 stsp echo "beta" >> $testroot/content.expected
48 0e673013 2019-01-02 stsp echo "zeta" >> $testroot/content.expected
49 0e673013 2019-01-02 stsp echo "delta" >> $testroot/content.expected
50 0e673013 2019-01-02 stsp cat $testroot/wt/alpha $testroot/wt/beta $testroot/wt/epsilon/zeta \
51 0e673013 2019-01-02 stsp $testroot/wt/gamma/delta > $testroot/content
53 8d301dd9 2019-05-14 stsp cmp -s $testroot/content.expected $testroot/content
55 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
56 0e673013 2019-01-02 stsp diff -u $testroot/content.expected $testroot/content
58 693719bc 2019-01-03 stsp test_done "$testroot" "$ret"
61 f6cae3ed 2020-09-13 naddy test_checkout_dir_exists() {
62 80c1b583 2019-08-07 stsp local testroot=`test_init checkout_dir_exists`
63 08e5873e 2021-09-14 stsp local commit_id=`git_show_head $testroot/repo`
65 80c1b583 2019-08-07 stsp echo "A $testroot/wt/alpha" > $testroot/stdout.expected
66 80c1b583 2019-08-07 stsp echo "A $testroot/wt/beta" >> $testroot/stdout.expected
67 80c1b583 2019-08-07 stsp echo "A $testroot/wt/epsilon/zeta" >> $testroot/stdout.expected
68 80c1b583 2019-08-07 stsp echo "A $testroot/wt/gamma/delta" >> $testroot/stdout.expected
69 08e5873e 2021-09-14 stsp echo "Checked out refs/heads/master: $commit_id" \
70 08e5873e 2021-09-14 stsp >> $testroot/stdout.expected
71 80c1b583 2019-08-07 stsp echo "Now shut up and hack" >> $testroot/stdout.expected
73 80c1b583 2019-08-07 stsp mkdir $testroot/wt
75 80c1b583 2019-08-07 stsp got checkout $testroot/repo $testroot/wt > $testroot/stdout
77 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
78 80c1b583 2019-08-07 stsp test_done "$testroot" "$ret"
82 80c1b583 2019-08-07 stsp cmp -s $testroot/stdout.expected $testroot/stdout
84 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
85 80c1b583 2019-08-07 stsp diff -u $testroot/stdout.expected $testroot/stdout
86 80c1b583 2019-08-07 stsp test_done "$testroot" "$ret"
90 80c1b583 2019-08-07 stsp echo "alpha" > $testroot/content.expected
91 80c1b583 2019-08-07 stsp echo "beta" >> $testroot/content.expected
92 80c1b583 2019-08-07 stsp echo "zeta" >> $testroot/content.expected
93 80c1b583 2019-08-07 stsp echo "delta" >> $testroot/content.expected
94 80c1b583 2019-08-07 stsp cat $testroot/wt/alpha $testroot/wt/beta $testroot/wt/epsilon/zeta \
95 80c1b583 2019-08-07 stsp $testroot/wt/gamma/delta > $testroot/content
97 80c1b583 2019-08-07 stsp cmp -s $testroot/content.expected $testroot/content
99 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
100 80c1b583 2019-08-07 stsp diff -u $testroot/content.expected $testroot/content
102 80c1b583 2019-08-07 stsp test_done "$testroot" "$ret"
105 f6cae3ed 2020-09-13 naddy test_checkout_dir_not_empty() {
106 80c1b583 2019-08-07 stsp local testroot=`test_init checkout_dir_not_empty`
107 08e5873e 2021-09-14 stsp local commit_id=`git_show_head $testroot/repo`
109 80c1b583 2019-08-07 stsp echo "A $testroot/wt/alpha" > $testroot/stdout.expected
110 80c1b583 2019-08-07 stsp echo "A $testroot/wt/beta" >> $testroot/stdout.expected
111 80c1b583 2019-08-07 stsp echo "A $testroot/wt/epsilon/zeta" >> $testroot/stdout.expected
112 80c1b583 2019-08-07 stsp echo "A $testroot/wt/gamma/delta" >> $testroot/stdout.expected
113 08e5873e 2021-09-14 stsp echo "Checked out refs/heads/master: $commit_id" \
114 08e5873e 2021-09-14 stsp >> $testroot/stdout.expected
115 80c1b583 2019-08-07 stsp echo "Now shut up and hack" >> $testroot/stdout.expected
117 80c1b583 2019-08-07 stsp mkdir $testroot/wt
118 80c1b583 2019-08-07 stsp touch $testroot/wt/foo
120 80c1b583 2019-08-07 stsp got checkout $testroot/repo $testroot/wt > $testroot/stdout \
121 80c1b583 2019-08-07 stsp 2> $testroot/stderr
123 fc414659 2022-04-16 thomas if [ $ret -eq 0 ]; then
124 80c1b583 2019-08-07 stsp echo "checkout succeeded unexpectedly" >&2
125 80c1b583 2019-08-07 stsp test_done "$testroot" "1"
129 80c1b583 2019-08-07 stsp echo "got: $testroot/wt: directory exists and is not empty" \
130 80c1b583 2019-08-07 stsp > $testroot/stderr.expected
131 80c1b583 2019-08-07 stsp cmp -s $testroot/stderr.expected $testroot/stderr
133 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
134 80c1b583 2019-08-07 stsp diff -u $testroot/stderr.expected $testroot/stderr
135 80c1b583 2019-08-07 stsp test_done "$testroot" "$ret"
139 80c1b583 2019-08-07 stsp echo -n > $testroot/stdout.expected
140 80c1b583 2019-08-07 stsp cmp -s $testroot/stdout.expected $testroot/stdout
142 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
143 80c1b583 2019-08-07 stsp diff -u $testroot/stdout.expected $testroot/stdout
145 484d974b 2023-08-29 thomas test_done "$testroot" "$ret"
149 484d974b 2023-08-29 thomas test_checkout_into_repo() {
150 484d974b 2023-08-29 thomas local testroot=`test_init checkout_into_repo`
151 484d974b 2023-08-29 thomas local commit_id=`git_show_head $testroot/repo`
153 484d974b 2023-08-29 thomas got checkout $testroot/repo $testroot/repo/wt \
154 484d974b 2023-08-29 thomas > $testroot/stdout 2> $testroot/stderr
156 484d974b 2023-08-29 thomas if [ $ret -eq 0 ]; then
157 484d974b 2023-08-29 thomas echo "checkout succeeded unexpectedly" >&2
158 484d974b 2023-08-29 thomas test_done "$testroot" "1"
162 484d974b 2023-08-29 thomas echo -n > $testroot/stdout.expected
164 484d974b 2023-08-29 thomas cmp -s $testroot/stdout.expected $testroot/stdout
166 484d974b 2023-08-29 thomas if [ $ret -ne 0 ]; then
167 484d974b 2023-08-29 thomas diff -u $testroot/stdout.expected $testroot/stdout
168 484d974b 2023-08-29 thomas test_done "$testroot" "$ret"
172 484d974b 2023-08-29 thomas echo -n "got: work tree and repository paths may not overlap: " \
173 484d974b 2023-08-29 thomas > $testroot/stderr.expected
174 484d974b 2023-08-29 thomas echo "$testroot/repo/wt: bad path" >> $testroot/stderr.expected
175 484d974b 2023-08-29 thomas cmp -s $testroot/stderr.expected $testroot/stderr
177 484d974b 2023-08-29 thomas if [ $ret -ne 0 ]; then
178 484d974b 2023-08-29 thomas diff -u $testroot/stderr.expected $testroot/stderr
180 80c1b583 2019-08-07 stsp test_done "$testroot" "$ret"
183 484d974b 2023-08-29 thomas test_checkout_overlap_repo() {
184 484d974b 2023-08-29 thomas local testroot=`test_init checkout_into_repo`
185 484d974b 2023-08-29 thomas local commit_id=`git_show_head $testroot/repo`
187 484d974b 2023-08-29 thomas got checkout $testroot/repo $testroot \
188 484d974b 2023-08-29 thomas > $testroot/stdout 2> $testroot/stderr
190 484d974b 2023-08-29 thomas if [ $ret -eq 0 ]; then
191 484d974b 2023-08-29 thomas echo "checkout succeeded unexpectedly" >&2
192 484d974b 2023-08-29 thomas test_done "$testroot" "1"
196 484d974b 2023-08-29 thomas echo -n > $testroot/stdout.expected
198 484d974b 2023-08-29 thomas cmp -s $testroot/stdout.expected $testroot/stdout
200 484d974b 2023-08-29 thomas if [ $ret -ne 0 ]; then
201 484d974b 2023-08-29 thomas diff -u $testroot/stdout.expected $testroot/stdout
202 484d974b 2023-08-29 thomas test_done "$testroot" "$ret"
206 484d974b 2023-08-29 thomas echo -n "got: work tree and repository paths may not overlap: " \
207 484d974b 2023-08-29 thomas > $testroot/stderr.expected
208 484d974b 2023-08-29 thomas echo "$testroot: bad path" >> $testroot/stderr.expected
209 484d974b 2023-08-29 thomas cmp -s $testroot/stderr.expected $testroot/stderr
211 484d974b 2023-08-29 thomas if [ $ret -ne 0 ]; then
212 484d974b 2023-08-29 thomas diff -u $testroot/stderr.expected $testroot/stderr
214 484d974b 2023-08-29 thomas test_done "$testroot" "$ret"
217 f6cae3ed 2020-09-13 naddy test_checkout_sets_xbit() {
218 68ed9ba5 2019-02-10 stsp local testroot=`test_init checkout_sets_xbit 1`
220 68ed9ba5 2019-02-10 stsp touch $testroot/repo/xfile
221 68ed9ba5 2019-02-10 stsp chmod +x $testroot/repo/xfile
222 d1e03b8c 2023-10-08 thomas git -C $testroot/repo add .
223 68ed9ba5 2019-02-10 stsp git_commit $testroot/repo -m "adding executable file"
224 08e5873e 2021-09-14 stsp local commit_id=`git_show_head $testroot/repo`
226 68ed9ba5 2019-02-10 stsp echo "A $testroot/wt/xfile" > $testroot/stdout.expected
227 08e5873e 2021-09-14 stsp echo "Checked out refs/heads/master: $commit_id" \
228 08e5873e 2021-09-14 stsp >> $testroot/stdout.expected
229 68ed9ba5 2019-02-10 stsp echo "Now shut up and hack" >> $testroot/stdout.expected
231 68ed9ba5 2019-02-10 stsp got checkout $testroot/repo $testroot/wt > $testroot/stdout
233 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
234 68ed9ba5 2019-02-10 stsp test_done "$testroot" "$ret"
238 8d301dd9 2019-05-14 stsp cmp -s $testroot/stdout.expected $testroot/stdout
240 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
241 68ed9ba5 2019-02-10 stsp diff -u $testroot/stdout.expected $testroot/stdout
242 68ed9ba5 2019-02-10 stsp test_done "$testroot" "$ret"
246 68ed9ba5 2019-02-10 stsp ls -l $testroot/wt/xfile | grep -q '^-rwx'
248 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
249 68ed9ba5 2019-02-10 stsp echo "file is not executable" >&2
250 68ed9ba5 2019-02-10 stsp ls -l $testroot/wt/xfile >&2
252 68ed9ba5 2019-02-10 stsp test_done "$testroot" "$ret"
255 f6cae3ed 2020-09-13 naddy test_checkout_commit_from_wrong_branch() {
256 45d344f6 2019-05-14 stsp local testroot=`test_init checkout_commit_from_wrong_branch`
258 d1e03b8c 2023-10-08 thomas git -C $testroot/repo checkout -q -b newbranch
259 45d344f6 2019-05-14 stsp echo "modified alpha on new branch" > $testroot/repo/alpha
260 45d344f6 2019-05-14 stsp git_commit $testroot/repo -m "modified alpha on new branch"
262 45d344f6 2019-05-14 stsp local head_rev=`git_show_head $testroot/repo`
263 45d344f6 2019-05-14 stsp got checkout -b master -c $head_rev $testroot/repo $testroot/wt \
264 45d344f6 2019-05-14 stsp > $testroot/stdout 2> $testroot/stderr
266 fc414659 2022-04-16 thomas if [ $ret -eq 0 ]; then
267 45d344f6 2019-05-14 stsp test_done "$testroot" "1"
271 45d344f6 2019-05-14 stsp echo -n "" > $testroot/stdout.expected
272 45d344f6 2019-05-14 stsp cmp -s $testroot/stdout.expected $testroot/stdout
274 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
275 45d344f6 2019-05-14 stsp diff -u $testroot/stdout.expected $testroot/stdout
276 45d344f6 2019-05-14 stsp test_done "$testroot" "$ret"
280 4b6c9460 2020-03-05 stsp echo -n "got: target commit is not contained in branch 'master'; " \
281 45d344f6 2019-05-14 stsp > $testroot/stderr.expected
282 4b6c9460 2020-03-05 stsp echo -n "the branch to use must be specified with -b; if necessary " \
283 4b6c9460 2020-03-05 stsp >> $testroot/stderr.expected
284 4b6c9460 2020-03-05 stsp echo -n "a new branch can be created for this commit with "\
285 4b6c9460 2020-03-05 stsp >> $testroot/stderr.expected
286 4b6c9460 2020-03-05 stsp echo "'got branch -c $head_rev BRANCH_NAME'" \
287 4b6c9460 2020-03-05 stsp >> $testroot/stderr.expected
288 45d344f6 2019-05-14 stsp cmp -s $testroot/stderr.expected $testroot/stderr
290 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
291 45d344f6 2019-05-14 stsp diff -u $testroot/stderr.expected $testroot/stderr
292 45d344f6 2019-05-14 stsp test_done "$testroot" "$ret"
296 45d344f6 2019-05-14 stsp test_done "$testroot" "$ret"
299 f6cae3ed 2020-09-13 naddy test_checkout_tag() {
300 303e2782 2019-08-09 stsp local testroot=`test_init checkout_tag`
301 08e5873e 2021-09-14 stsp local commit_id=`git_show_head $testroot/repo`
302 303e2782 2019-08-09 stsp local tag="1.0.0"
304 d1e03b8c 2023-10-08 thomas git -C $testroot/repo tag -a -m "test" $tag
306 303e2782 2019-08-09 stsp echo "A $testroot/wt/alpha" > $testroot/stdout.expected
307 303e2782 2019-08-09 stsp echo "A $testroot/wt/beta" >> $testroot/stdout.expected
308 303e2782 2019-08-09 stsp echo "A $testroot/wt/epsilon/zeta" >> $testroot/stdout.expected
309 303e2782 2019-08-09 stsp echo "A $testroot/wt/gamma/delta" >> $testroot/stdout.expected
310 08e5873e 2021-09-14 stsp echo "Checked out refs/heads/master: $commit_id" \
311 08e5873e 2021-09-14 stsp >> $testroot/stdout.expected
312 303e2782 2019-08-09 stsp echo "Now shut up and hack" >> $testroot/stdout.expected
314 303e2782 2019-08-09 stsp got checkout -c $tag $testroot/repo $testroot/wt > $testroot/stdout
316 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
317 303e2782 2019-08-09 stsp test_done "$testroot" "$ret"
321 303e2782 2019-08-09 stsp cmp -s $testroot/stdout.expected $testroot/stdout
323 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
324 303e2782 2019-08-09 stsp diff -u $testroot/stdout.expected $testroot/stdout
325 303e2782 2019-08-09 stsp test_done "$testroot" "$ret"
329 303e2782 2019-08-09 stsp echo "alpha" > $testroot/content.expected
330 303e2782 2019-08-09 stsp echo "beta" >> $testroot/content.expected
331 303e2782 2019-08-09 stsp echo "zeta" >> $testroot/content.expected
332 303e2782 2019-08-09 stsp echo "delta" >> $testroot/content.expected
333 303e2782 2019-08-09 stsp cat $testroot/wt/alpha $testroot/wt/beta $testroot/wt/epsilon/zeta \
334 303e2782 2019-08-09 stsp $testroot/wt/gamma/delta > $testroot/content
336 303e2782 2019-08-09 stsp cmp -s $testroot/content.expected $testroot/content
338 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
339 303e2782 2019-08-09 stsp diff -u $testroot/content.expected $testroot/content
341 303e2782 2019-08-09 stsp test_done "$testroot" "$ret"
344 f6cae3ed 2020-09-13 naddy test_checkout_ignores_submodules() {
345 63c5ca5d 2019-08-24 stsp local testroot=`test_init checkout_ignores_submodules`
347 e7303626 2020-05-14 stsp make_single_file_repo $testroot/repo2 foo
349 d1e03b8c 2023-10-08 thomas git -C $testroot/repo -c protocol.file.allow=always \
350 d1e03b8c 2023-10-08 thomas submodule -q add ../repo2
351 d1e03b8c 2023-10-08 thomas git -C $testroot/repo commit -q -m 'adding submodule'
352 08e5873e 2021-09-14 stsp local commit_id=`git_show_head $testroot/repo`
354 63c5ca5d 2019-08-24 stsp echo "A $testroot/wt/.gitmodules" > $testroot/stdout.expected
355 63c5ca5d 2019-08-24 stsp echo "A $testroot/wt/alpha" >> $testroot/stdout.expected
356 63c5ca5d 2019-08-24 stsp echo "A $testroot/wt/beta" >> $testroot/stdout.expected
357 63c5ca5d 2019-08-24 stsp echo "A $testroot/wt/epsilon/zeta" >> $testroot/stdout.expected
358 63c5ca5d 2019-08-24 stsp echo "A $testroot/wt/gamma/delta" >> $testroot/stdout.expected
359 08e5873e 2021-09-14 stsp echo "Checked out refs/heads/master: $commit_id" \
360 08e5873e 2021-09-14 stsp >> $testroot/stdout.expected
361 63c5ca5d 2019-08-24 stsp echo "Now shut up and hack" >> $testroot/stdout.expected
363 63c5ca5d 2019-08-24 stsp got checkout $testroot/repo $testroot/wt > $testroot/stdout
365 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
366 63c5ca5d 2019-08-24 stsp test_done "$testroot" "$ret"
370 63c5ca5d 2019-08-24 stsp cmp -s $testroot/stdout.expected $testroot/stdout
372 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
373 63c5ca5d 2019-08-24 stsp diff -u $testroot/stdout.expected $testroot/stdout
374 63c5ca5d 2019-08-24 stsp test_done "$testroot" "$ret"
378 63c5ca5d 2019-08-24 stsp echo "alpha" > $testroot/content.expected
379 63c5ca5d 2019-08-24 stsp echo "beta" >> $testroot/content.expected
380 63c5ca5d 2019-08-24 stsp echo "zeta" >> $testroot/content.expected
381 63c5ca5d 2019-08-24 stsp echo "delta" >> $testroot/content.expected
382 63c5ca5d 2019-08-24 stsp cat $testroot/wt/alpha $testroot/wt/beta $testroot/wt/epsilon/zeta \
383 63c5ca5d 2019-08-24 stsp $testroot/wt/gamma/delta > $testroot/content
385 63c5ca5d 2019-08-24 stsp cmp -s $testroot/content.expected $testroot/content
387 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
388 63c5ca5d 2019-08-24 stsp diff -u $testroot/content.expected $testroot/content
390 63c5ca5d 2019-08-24 stsp test_done "$testroot" "$ret"
393 f6cae3ed 2020-09-13 naddy test_checkout_read_only() {
394 7f47418f 2019-12-20 stsp local testroot=`test_init checkout_read_only`
395 08e5873e 2021-09-14 stsp local commit_id=`git_show_head $testroot/repo`
397 7f47418f 2019-12-20 stsp # Make the repostiory read-only
398 7f47418f 2019-12-20 stsp chmod -R a-w $testroot/repo
400 7f47418f 2019-12-20 stsp echo "A $testroot/wt/alpha" > $testroot/stdout.expected
401 7f47418f 2019-12-20 stsp echo "A $testroot/wt/beta" >> $testroot/stdout.expected
402 7f47418f 2019-12-20 stsp echo "A $testroot/wt/epsilon/zeta" >> $testroot/stdout.expected
403 7f47418f 2019-12-20 stsp echo "A $testroot/wt/gamma/delta" >> $testroot/stdout.expected
404 08e5873e 2021-09-14 stsp echo "Checked out refs/heads/master: $commit_id" \
405 08e5873e 2021-09-14 stsp >> $testroot/stdout.expected
406 7f47418f 2019-12-20 stsp echo "Now shut up and hack" >> $testroot/stdout.expected
408 7f47418f 2019-12-20 stsp got checkout $testroot/repo $testroot/wt \
409 7f47418f 2019-12-20 stsp > $testroot/stdout 2> $testroot/stderr
411 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
412 7f47418f 2019-12-20 stsp test_done "$testroot" "$ret"
416 7f47418f 2019-12-20 stsp cmp -s $testroot/stdout.expected $testroot/stdout
418 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
419 7f47418f 2019-12-20 stsp diff -u $testroot/stdout.expected $testroot/stdout
420 7f47418f 2019-12-20 stsp test_done "$testroot" "$ret"
424 7f47418f 2019-12-20 stsp echo -n "got: warning: could not create a reference " \
425 7f47418f 2019-12-20 stsp > $testroot/stderr.expected
426 7f47418f 2019-12-20 stsp echo -n "to the work tree's base commit; the commit could " \
427 7f47418f 2019-12-20 stsp >> $testroot/stderr.expected
428 e6786710 2021-07-03 stsp echo -n "be garbage-collected by Git or 'gotadmin cleanup'; " \
429 7f47418f 2019-12-20 stsp >> $testroot/stderr.expected
430 e6786710 2021-07-03 stsp echo -n "making the repository " >> $testroot/stderr.expected
431 7f47418f 2019-12-20 stsp echo "writable and running 'got update' will prevent this" \
432 7f47418f 2019-12-20 stsp >> $testroot/stderr.expected
433 7f47418f 2019-12-20 stsp cmp -s $testroot/stderr.expected $testroot/stderr
435 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
436 7f47418f 2019-12-20 stsp diff -u $testroot/stderr.expected $testroot/stderr
437 7f47418f 2019-12-20 stsp test_done "$testroot" "$ret"
441 7f47418f 2019-12-20 stsp echo "alpha" > $testroot/content.expected
442 7f47418f 2019-12-20 stsp echo "beta" >> $testroot/content.expected
443 7f47418f 2019-12-20 stsp echo "zeta" >> $testroot/content.expected
444 7f47418f 2019-12-20 stsp echo "delta" >> $testroot/content.expected
445 7f47418f 2019-12-20 stsp cat $testroot/wt/alpha $testroot/wt/beta $testroot/wt/epsilon/zeta \
446 7f47418f 2019-12-20 stsp $testroot/wt/gamma/delta > $testroot/content
448 7f47418f 2019-12-20 stsp cmp -s $testroot/content.expected $testroot/content
450 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
451 7f47418f 2019-12-20 stsp diff -u $testroot/content.expected $testroot/content
453 7f47418f 2019-12-20 stsp chmod -R u+w $testroot/repo # make repo cleanup work
454 7f47418f 2019-12-20 stsp test_done "$testroot" "$ret"
457 f6cae3ed 2020-09-13 naddy test_checkout_into_nonempty_dir() {
458 bb51a5b4 2020-01-13 stsp local testroot=`test_init checkout_into_nonempty_dir`
459 08e5873e 2021-09-14 stsp local commit_id=`git_show_head $testroot/repo`
461 bb51a5b4 2020-01-13 stsp mkdir -p $testroot/wt
462 bb51a5b4 2020-01-13 stsp make_test_tree $testroot/wt
464 bb51a5b4 2020-01-13 stsp got checkout $testroot/repo $testroot/wt > $testroot/stdout \
465 bb51a5b4 2020-01-13 stsp 2> $testroot/stderr
467 fc414659 2022-04-16 thomas if [ $ret -eq 0 ]; then
468 bb51a5b4 2020-01-13 stsp echo "checkout succeeded unexpectedly" >&2
469 bb51a5b4 2020-01-13 stsp test_done "$testroot" "1"
473 bb51a5b4 2020-01-13 stsp echo -n > $testroot/stdout.expected
474 bb51a5b4 2020-01-13 stsp cmp -s $testroot/stdout.expected $testroot/stdout
476 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
477 bb51a5b4 2020-01-13 stsp diff -u $testroot/stdout.expected $testroot/stdout
478 bb51a5b4 2020-01-13 stsp test_done "$testroot" "$ret"
482 bb51a5b4 2020-01-13 stsp echo "got: $testroot/wt: directory exists and is not empty" \
483 bb51a5b4 2020-01-13 stsp > $testroot/stderr.expected
484 bb51a5b4 2020-01-13 stsp cmp -s $testroot/stderr.expected $testroot/stderr
486 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
487 bb51a5b4 2020-01-13 stsp diff -u $testroot/stderr.expected $testroot/stderr
488 bb51a5b4 2020-01-13 stsp test_done "$testroot" "$ret"
492 aaf972e2 2023-09-18 thomas echo "E $testroot/wt/alpha" > $testroot/stdout.expected
493 aaf972e2 2023-09-18 thomas echo "E $testroot/wt/beta" >> $testroot/stdout.expected
494 aaf972e2 2023-09-18 thomas echo "E $testroot/wt/epsilon/zeta" >> $testroot/stdout.expected
495 aaf972e2 2023-09-18 thomas echo "E $testroot/wt/gamma/delta" >> $testroot/stdout.expected
496 08e5873e 2021-09-14 stsp echo "Checked out refs/heads/master: $commit_id" \
497 08e5873e 2021-09-14 stsp >> $testroot/stdout.expected
498 bb51a5b4 2020-01-13 stsp echo "Now shut up and hack" >> $testroot/stdout.expected
500 bb51a5b4 2020-01-13 stsp got checkout -E $testroot/repo $testroot/wt > $testroot/stdout
502 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
503 bb51a5b4 2020-01-13 stsp test_done "$testroot" "$ret"
507 bb51a5b4 2020-01-13 stsp cmp -s $testroot/stdout.expected $testroot/stdout
509 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
510 bb51a5b4 2020-01-13 stsp diff -u $testroot/stdout.expected $testroot/stdout
511 bb51a5b4 2020-01-13 stsp test_done "$testroot" "$ret"
515 bb51a5b4 2020-01-13 stsp echo "E $testroot/wt/alpha" > $testroot/stdout.expected
516 bb51a5b4 2020-01-13 stsp echo "E $testroot/wt/beta" >> $testroot/stdout.expected
517 bb51a5b4 2020-01-13 stsp echo "E $testroot/wt/epsilon/zeta" >> $testroot/stdout.expected
518 bb51a5b4 2020-01-13 stsp echo "E $testroot/wt/gamma/delta" >> $testroot/stdout.expected
519 08e5873e 2021-09-14 stsp echo "Checked out refs/heads/master: $commit_id" \
520 08e5873e 2021-09-14 stsp >> $testroot/stdout.expected
521 bb51a5b4 2020-01-13 stsp echo "Now shut up and hack" >> $testroot/stdout.expected
523 bb51a5b4 2020-01-13 stsp got checkout -E $testroot/repo $testroot/wt > $testroot/stdout
525 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
526 bb51a5b4 2020-01-13 stsp test_done "$testroot" "$ret"
530 bb51a5b4 2020-01-13 stsp cmp -s $testroot/stdout.expected $testroot/stdout
532 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
533 bb51a5b4 2020-01-13 stsp diff -u $testroot/stdout.expected $testroot/stdout
534 bb51a5b4 2020-01-13 stsp test_done "$testroot" "$ret"
538 bb51a5b4 2020-01-13 stsp echo "alpha" > $testroot/content.expected
539 bb51a5b4 2020-01-13 stsp echo "beta" >> $testroot/content.expected
540 bb51a5b4 2020-01-13 stsp echo "zeta" >> $testroot/content.expected
541 bb51a5b4 2020-01-13 stsp echo "delta" >> $testroot/content.expected
542 bb51a5b4 2020-01-13 stsp cat $testroot/wt/alpha $testroot/wt/beta $testroot/wt/epsilon/zeta \
543 bb51a5b4 2020-01-13 stsp $testroot/wt/gamma/delta > $testroot/content
545 bb51a5b4 2020-01-13 stsp cmp -s $testroot/content.expected $testroot/content
547 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
548 bb51a5b4 2020-01-13 stsp diff -u $testroot/content.expected $testroot/content
549 bb51a5b4 2020-01-13 stsp test_done "$testroot" "$ret"
553 aaf972e2 2023-09-18 thomas # retry, but with alpha modified
555 aaf972e2 2023-09-18 thomas rm -rf "$testroot/wt/.got"
556 aaf972e2 2023-09-18 thomas echo modified alpha >$testroot/wt/alpha
558 bb51a5b4 2020-01-13 stsp echo "E $testroot/wt/alpha" > $testroot/stdout.expected
559 bb51a5b4 2020-01-13 stsp echo "E $testroot/wt/beta" >> $testroot/stdout.expected
560 bb51a5b4 2020-01-13 stsp echo "E $testroot/wt/epsilon/zeta" >> $testroot/stdout.expected
561 bb51a5b4 2020-01-13 stsp echo "E $testroot/wt/gamma/delta" >> $testroot/stdout.expected
562 08e5873e 2021-09-14 stsp echo "Checked out refs/heads/master: $commit_id" \
563 08e5873e 2021-09-14 stsp >> $testroot/stdout.expected
564 bb51a5b4 2020-01-13 stsp echo "Now shut up and hack" >> $testroot/stdout.expected
566 bb51a5b4 2020-01-13 stsp got checkout -E $testroot/repo $testroot/wt > $testroot/stdout
568 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
569 bb51a5b4 2020-01-13 stsp test_done "$testroot" "$ret"
573 bb51a5b4 2020-01-13 stsp cmp -s $testroot/stdout.expected $testroot/stdout
575 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
576 bb51a5b4 2020-01-13 stsp diff -u $testroot/stdout.expected $testroot/stdout
577 bb51a5b4 2020-01-13 stsp test_done "$testroot" "$ret"
581 bb51a5b4 2020-01-13 stsp echo "modified alpha" > $testroot/content.expected
582 bb51a5b4 2020-01-13 stsp echo "beta" >> $testroot/content.expected
583 bb51a5b4 2020-01-13 stsp echo "zeta" >> $testroot/content.expected
584 bb51a5b4 2020-01-13 stsp echo "delta" >> $testroot/content.expected
585 bb51a5b4 2020-01-13 stsp cat $testroot/wt/alpha $testroot/wt/beta $testroot/wt/epsilon/zeta \
586 bb51a5b4 2020-01-13 stsp $testroot/wt/gamma/delta > $testroot/content
588 bb51a5b4 2020-01-13 stsp cmp -s $testroot/content.expected $testroot/content
590 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
591 bb51a5b4 2020-01-13 stsp diff -u $testroot/content.expected $testroot/content
592 bb51a5b4 2020-01-13 stsp test_done "$testroot" "$ret"
596 bb51a5b4 2020-01-13 stsp echo 'M alpha' > $testroot/stdout.expected
597 bb51a5b4 2020-01-13 stsp (cd $testroot/wt && got status > $testroot/stdout)
599 8ba819a3 2020-07-23 stsp cmp -s $testroot/stdout.expected $testroot/stdout
601 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
602 8ba819a3 2020-07-23 stsp diff -u $testroot/stdout.expected $testroot/stdout
604 8ba819a3 2020-07-23 stsp test_done "$testroot" "$ret"
607 f6cae3ed 2020-09-13 naddy test_checkout_symlink() {
608 8ba819a3 2020-07-23 stsp local testroot=`test_init checkout_symlink`
610 8ba819a3 2020-07-23 stsp (cd $testroot/repo && ln -s alpha alpha.link)
611 8ba819a3 2020-07-23 stsp (cd $testroot/repo && ln -s epsilon epsilon.link)
612 8ba819a3 2020-07-23 stsp (cd $testroot/repo && ln -s /etc/passwd passwd.link)
613 b7422a2f 2020-07-23 stsp (cd $testroot/repo && ln -s passwd.link passwd2.link)
614 0ab20ee9 2020-07-23 stsp (cd $testroot/repo && ln -s ../beta epsilon/beta.link)
615 0ab20ee9 2020-07-23 stsp (cd $testroot/repo && ln -s nonexistent nonexistent.link)
616 906c123b 2020-07-23 stsp (cd $testroot/repo && ln -s .got/foo dotgotfoo.link)
617 d1e03b8c 2023-10-08 thomas git -C $testroot/repo add .
618 0ab20ee9 2020-07-23 stsp git_commit $testroot/repo -m "add symlinks"
619 08e5873e 2021-09-14 stsp local commit_id=`git_show_head $testroot/repo`
621 b7422a2f 2020-07-23 stsp got checkout $testroot/repo $testroot/wt > $testroot/stdout
623 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
624 b7422a2f 2020-07-23 stsp echo "got checkout failed unexpectedly" >&2
625 8ba819a3 2020-07-23 stsp test_done "$testroot" "$ret"
629 b7422a2f 2020-07-23 stsp echo "A $testroot/wt/alpha" > $testroot/stdout.expected
630 b7422a2f 2020-07-23 stsp echo "A $testroot/wt/alpha.link" >> $testroot/stdout.expected
631 b7422a2f 2020-07-23 stsp echo "A $testroot/wt/beta" >> $testroot/stdout.expected
632 b7422a2f 2020-07-23 stsp echo "A $testroot/wt/dotgotfoo.link" >> $testroot/stdout.expected
633 b7422a2f 2020-07-23 stsp echo "A $testroot/wt/epsilon/beta.link" >> $testroot/stdout.expected
634 b7422a2f 2020-07-23 stsp echo "A $testroot/wt/epsilon/zeta" >> $testroot/stdout.expected
635 b7422a2f 2020-07-23 stsp echo "A $testroot/wt/epsilon.link" >> $testroot/stdout.expected
636 b7422a2f 2020-07-23 stsp echo "A $testroot/wt/gamma/delta" >> $testroot/stdout.expected
637 b7422a2f 2020-07-23 stsp echo "A $testroot/wt/nonexistent.link" >> $testroot/stdout.expected
638 b7422a2f 2020-07-23 stsp echo "A $testroot/wt/passwd.link" >> $testroot/stdout.expected
639 b7422a2f 2020-07-23 stsp echo "A $testroot/wt/passwd2.link" >> $testroot/stdout.expected
640 08e5873e 2021-09-14 stsp echo "Checked out refs/heads/master: $commit_id" \
641 08e5873e 2021-09-14 stsp >> $testroot/stdout.expected
642 b7422a2f 2020-07-23 stsp echo "Now shut up and hack" >> $testroot/stdout.expected
644 b7422a2f 2020-07-23 stsp cmp -s $testroot/stdout.expected $testroot/stdout
646 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
647 b7422a2f 2020-07-23 stsp diff -u $testroot/stdout.expected $testroot/stdout
648 b7422a2f 2020-07-23 stsp test_done "$testroot" "$ret"
652 8ba819a3 2020-07-23 stsp if ! [ -h $testroot/wt/alpha.link ]; then
653 8ba819a3 2020-07-23 stsp echo "alpha.link is not a symlink"
654 8ba819a3 2020-07-23 stsp test_done "$testroot" "1"
658 8ba819a3 2020-07-23 stsp readlink $testroot/wt/alpha.link > $testroot/stdout
659 8ba819a3 2020-07-23 stsp echo "alpha" > $testroot/stdout.expected
660 8ba819a3 2020-07-23 stsp cmp -s $testroot/stdout.expected $testroot/stdout
662 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
663 8ba819a3 2020-07-23 stsp diff -u $testroot/stdout.expected $testroot/stdout
664 8ba819a3 2020-07-23 stsp test_done "$testroot" "$ret"
668 8ba819a3 2020-07-23 stsp if ! [ -h $testroot/wt/epsilon.link ]; then
669 8ba819a3 2020-07-23 stsp echo "epsilon.link is not a symlink"
670 8ba819a3 2020-07-23 stsp test_done "$testroot" "1"
674 8ba819a3 2020-07-23 stsp readlink $testroot/wt/epsilon.link > $testroot/stdout
675 8ba819a3 2020-07-23 stsp echo "epsilon" > $testroot/stdout.expected
676 bb51a5b4 2020-01-13 stsp cmp -s $testroot/stdout.expected $testroot/stdout
678 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
679 bb51a5b4 2020-01-13 stsp diff -u $testroot/stdout.expected $testroot/stdout
680 8ba819a3 2020-07-23 stsp test_done "$testroot" "$ret"
684 8ba819a3 2020-07-23 stsp if [ -h $testroot/wt/passwd.link ]; then
685 8ba819a3 2020-07-23 stsp echo -n "passwd.link symlink points outside of work tree: " >&2
686 8ba819a3 2020-07-23 stsp readlink $testroot/wt/passwd.link >&2
687 8ba819a3 2020-07-23 stsp test_done "$testroot" "1"
691 8ba819a3 2020-07-23 stsp echo -n "/etc/passwd" > $testroot/content.expected
692 8ba819a3 2020-07-23 stsp cp $testroot/wt/passwd.link $testroot/content
694 8ba819a3 2020-07-23 stsp cmp -s $testroot/content.expected $testroot/content
696 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
697 8ba819a3 2020-07-23 stsp diff -u $testroot/content.expected $testroot/content
698 0ab20ee9 2020-07-23 stsp test_done "$testroot" "$ret"
702 b7422a2f 2020-07-23 stsp if ! [ -h $testroot/wt/passwd2.link ]; then
703 b7422a2f 2020-07-23 stsp echo "passwd2.link is not a symlink"
704 b7422a2f 2020-07-23 stsp test_done "$testroot" "1"
708 b7422a2f 2020-07-23 stsp readlink $testroot/wt/passwd2.link > $testroot/stdout
709 b7422a2f 2020-07-23 stsp echo "passwd.link" > $testroot/stdout.expected
710 b7422a2f 2020-07-23 stsp cmp -s $testroot/stdout.expected $testroot/stdout
712 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
713 b7422a2f 2020-07-23 stsp diff -u $testroot/stdout.expected $testroot/stdout
714 b7422a2f 2020-07-23 stsp test_done "$testroot" "$ret"
718 0ab20ee9 2020-07-23 stsp readlink $testroot/wt/epsilon/beta.link > $testroot/stdout
719 0ab20ee9 2020-07-23 stsp echo "../beta" > $testroot/stdout.expected
720 0ab20ee9 2020-07-23 stsp cmp -s $testroot/stdout.expected $testroot/stdout
722 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
723 0ab20ee9 2020-07-23 stsp diff -u $testroot/stdout.expected $testroot/stdout
724 0ab20ee9 2020-07-23 stsp test_done "$testroot" "$ret"
728 0ab20ee9 2020-07-23 stsp readlink $testroot/wt/nonexistent.link > $testroot/stdout
729 0ab20ee9 2020-07-23 stsp echo "nonexistent" > $testroot/stdout.expected
730 0ab20ee9 2020-07-23 stsp cmp -s $testroot/stdout.expected $testroot/stdout
732 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
733 0ab20ee9 2020-07-23 stsp diff -u $testroot/stdout.expected $testroot/stdout
734 906c123b 2020-07-23 stsp test_done "$testroot" "$ret"
738 906c123b 2020-07-23 stsp if [ -h $testroot/wt/dotgotfoo.link ]; then
739 906c123b 2020-07-23 stsp echo -n "dotgotfoo.link symlink points into .got dir: " >&2
740 906c123b 2020-07-23 stsp readlink $testroot/wt/dotgotfoo.link >&2
741 906c123b 2020-07-23 stsp test_done "$testroot" "1"
745 906c123b 2020-07-23 stsp echo -n ".got/foo" > $testroot/content.expected
746 906c123b 2020-07-23 stsp cp $testroot/wt/dotgotfoo.link $testroot/content
748 906c123b 2020-07-23 stsp cmp -s $testroot/content.expected $testroot/content
750 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
751 906c123b 2020-07-23 stsp diff -u $testroot/content.expected $testroot/content
753 0ab20ee9 2020-07-23 stsp test_done "$testroot" "$ret"
756 f6cae3ed 2020-09-13 naddy test_checkout_symlink_relative_wtpath() {
757 7d61d891 2020-07-23 stsp local testroot=`test_init checkout_symlink_with_wtpath`
759 7d61d891 2020-07-23 stsp (cd $testroot/repo && ln -s alpha alpha.link)
760 7d61d891 2020-07-23 stsp (cd $testroot/repo && ln -s epsilon epsilon.link)
761 7d61d891 2020-07-23 stsp (cd $testroot/repo && ln -s /etc/passwd passwd.link)
762 7d61d891 2020-07-23 stsp (cd $testroot/repo && ln -s ../beta epsilon/beta.link)
763 7d61d891 2020-07-23 stsp (cd $testroot/repo && ln -s nonexistent nonexistent.link)
764 7d61d891 2020-07-23 stsp (cd $testroot/repo && ln -s .got/foo dotgotfoo.link)
765 d1e03b8c 2023-10-08 thomas git -C $testroot/repo add .
766 7d61d891 2020-07-23 stsp git_commit $testroot/repo -m "add symlinks"
768 7d61d891 2020-07-23 stsp (cd $testroot && got checkout $testroot/repo wt > /dev/null)
770 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
771 7d61d891 2020-07-23 stsp test_done "$testroot" "$ret"
775 7d61d891 2020-07-23 stsp if ! [ -h $testroot/wt/alpha.link ]; then
776 7d61d891 2020-07-23 stsp echo "alpha.link is not a symlink"
777 7d61d891 2020-07-23 stsp test_done "$testroot" "1"
781 7d61d891 2020-07-23 stsp readlink $testroot/wt/alpha.link > $testroot/stdout
782 7d61d891 2020-07-23 stsp echo "alpha" > $testroot/stdout.expected
783 7d61d891 2020-07-23 stsp cmp -s $testroot/stdout.expected $testroot/stdout
785 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
786 7d61d891 2020-07-23 stsp diff -u $testroot/stdout.expected $testroot/stdout
787 7d61d891 2020-07-23 stsp test_done "$testroot" "$ret"
791 7d61d891 2020-07-23 stsp if ! [ -h $testroot/wt/epsilon.link ]; then
792 7d61d891 2020-07-23 stsp echo "epsilon.link is not a symlink"
793 7d61d891 2020-07-23 stsp test_done "$testroot" "1"
797 7d61d891 2020-07-23 stsp readlink $testroot/wt/epsilon.link > $testroot/stdout
798 7d61d891 2020-07-23 stsp echo "epsilon" > $testroot/stdout.expected
799 7d61d891 2020-07-23 stsp cmp -s $testroot/stdout.expected $testroot/stdout
801 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
802 7d61d891 2020-07-23 stsp diff -u $testroot/stdout.expected $testroot/stdout
803 7d61d891 2020-07-23 stsp test_done "$testroot" "$ret"
807 7d61d891 2020-07-23 stsp if [ -h $testroot/wt/passwd.link ]; then
808 7d61d891 2020-07-23 stsp echo -n "passwd.link symlink points outside of work tree: " >&2
809 7d61d891 2020-07-23 stsp readlink $testroot/wt/passwd.link >&2
810 7d61d891 2020-07-23 stsp test_done "$testroot" "1"
814 7d61d891 2020-07-23 stsp echo -n "/etc/passwd" > $testroot/content.expected
815 7d61d891 2020-07-23 stsp cp $testroot/wt/passwd.link $testroot/content
817 7d61d891 2020-07-23 stsp cmp -s $testroot/content.expected $testroot/content
819 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
820 7d61d891 2020-07-23 stsp diff -u $testroot/content.expected $testroot/content
821 7d61d891 2020-07-23 stsp test_done "$testroot" "$ret"
825 7d61d891 2020-07-23 stsp readlink $testroot/wt/epsilon/beta.link > $testroot/stdout
826 7d61d891 2020-07-23 stsp echo "../beta" > $testroot/stdout.expected
827 7d61d891 2020-07-23 stsp cmp -s $testroot/stdout.expected $testroot/stdout
829 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
830 7d61d891 2020-07-23 stsp diff -u $testroot/stdout.expected $testroot/stdout
831 7d61d891 2020-07-23 stsp test_done "$testroot" "$ret"
835 7d61d891 2020-07-23 stsp readlink $testroot/wt/nonexistent.link > $testroot/stdout
836 7d61d891 2020-07-23 stsp echo "nonexistent" > $testroot/stdout.expected
837 7d61d891 2020-07-23 stsp cmp -s $testroot/stdout.expected $testroot/stdout
839 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
840 7d61d891 2020-07-23 stsp diff -u $testroot/stdout.expected $testroot/stdout
841 7d61d891 2020-07-23 stsp test_done "$testroot" "$ret"
845 7d61d891 2020-07-23 stsp if [ -h $testroot/wt/dotgotfoo.link ]; then
846 7d61d891 2020-07-23 stsp echo -n "dotgotfoo.link symlink points into .got dir: " >&2
847 7d61d891 2020-07-23 stsp readlink $testroot/wt/dotgotfoo.link >&2
848 7d61d891 2020-07-23 stsp test_done "$testroot" "1"
852 7d61d891 2020-07-23 stsp echo -n ".got/foo" > $testroot/content.expected
853 7d61d891 2020-07-23 stsp cp $testroot/wt/dotgotfoo.link $testroot/content
855 7d61d891 2020-07-23 stsp cmp -s $testroot/content.expected $testroot/content
857 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
858 7d61d891 2020-07-23 stsp diff -u $testroot/content.expected $testroot/content
860 7d61d891 2020-07-23 stsp test_done "$testroot" "$ret"
863 20b7abb3 2020-10-22 stsp test_checkout_repo_with_unknown_extension() {
864 20b7abb3 2020-10-22 stsp local testroot=`test_init checkout_repo_with_unknown_extension`
866 d1e03b8c 2023-10-08 thomas git -C $testroot/repo config --add extensions.badExtension foobar
867 d1e03b8c 2023-10-08 thomas git -C $testroot/repo config --add extensions.otherBadExtension 0
869 20b7abb3 2020-10-22 stsp echo "got: badExtension: unsupported repository format extension" \
870 20b7abb3 2020-10-22 stsp > $testroot/stderr.expected
871 20b7abb3 2020-10-22 stsp got checkout $testroot/repo $testroot/wt \
872 20b7abb3 2020-10-22 stsp > $testroot/stdout 2> $testroot/stderr
875 fc414659 2022-04-16 thomas if [ $ret -eq 0 ]; then
876 20b7abb3 2020-10-22 stsp echo "got checkout command succeeded unexpectedly" >&2
877 20b7abb3 2020-10-22 stsp test_done "$testroot" "1"
881 20b7abb3 2020-10-22 stsp cmp -s $testroot/stderr.expected $testroot/stderr
883 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
884 20b7abb3 2020-10-22 stsp diff -u $testroot/stderr.expected $testroot/stderr
886 67c65ed7 2021-09-14 tracey test_done "$testroot" "$ret"
889 67c65ed7 2021-09-14 tracey test_checkout_quiet() {
890 67c65ed7 2021-09-14 tracey local testroot=`test_init checkout_quiet`
892 67c65ed7 2021-09-14 tracey echo -n "Checked out refs/heads/master: " >> $testroot/stdout.expected
893 67c65ed7 2021-09-14 tracey git_show_head $testroot/repo >> $testroot/stdout.expected
894 67d7451c 2021-09-15 naddy printf "\nNow shut up and hack\n" >> $testroot/stdout.expected
896 67c65ed7 2021-09-14 tracey got checkout -q $testroot/repo $testroot/wt > $testroot/stdout
898 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
899 67c65ed7 2021-09-14 tracey test_done "$testroot" "$ret"
903 67c65ed7 2021-09-14 tracey cmp -s $testroot/stdout.expected $testroot/stdout
905 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
906 67c65ed7 2021-09-14 tracey diff -u $testroot/stdout.expected $testroot/stdout
907 67c65ed7 2021-09-14 tracey test_done "$testroot" "$ret"
911 67c65ed7 2021-09-14 tracey echo "alpha" > $testroot/content.expected
912 67c65ed7 2021-09-14 tracey echo "beta" >> $testroot/content.expected
913 67c65ed7 2021-09-14 tracey echo "zeta" >> $testroot/content.expected
914 67c65ed7 2021-09-14 tracey echo "delta" >> $testroot/content.expected
915 67c65ed7 2021-09-14 tracey cat $testroot/wt/alpha $testroot/wt/beta $testroot/wt/epsilon/zeta \
916 67c65ed7 2021-09-14 tracey $testroot/wt/gamma/delta > $testroot/content
918 67c65ed7 2021-09-14 tracey cmp -s $testroot/content.expected $testroot/content
920 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
921 67c65ed7 2021-09-14 tracey diff -u $testroot/content.expected $testroot/content
923 20b7abb3 2020-10-22 stsp test_done "$testroot" "$ret"
926 a2c162eb 2022-10-30 thomas test_checkout_umask() {
927 a2c162eb 2022-10-30 thomas local testroot=`test_init checkout_umask`
929 a2c162eb 2022-10-30 thomas # using a subshell to avoid clobbering global umask
930 a2c162eb 2022-10-30 thomas (umask 044 && got checkout "$testroot/repo" "$testroot/wt") \
931 a2c162eb 2022-10-30 thomas >/dev/null
933 a2c162eb 2022-10-30 thomas if [ $ret -ne 0 ]; then
934 a2c162eb 2022-10-30 thomas test_done "$testroot" $ret
938 a2c162eb 2022-10-30 thomas for f in alpha beta epsilon/zeta gamma/delta; do
939 a2c162eb 2022-10-30 thomas ls -l "$testroot/wt/$f" | grep -q ^-rw-------
940 a2c162eb 2022-10-30 thomas if [ $? -ne 0 ]; then
941 a2c162eb 2022-10-30 thomas echo "$f is not 0600 after checkout" >&2
942 a2c162eb 2022-10-30 thomas ls -l "$testroot/wt/$f" >&2
943 a2c162eb 2022-10-30 thomas test_done "$testroot" 1
948 a2c162eb 2022-10-30 thomas for d in epsilon gamma; do
949 a2c162eb 2022-10-30 thomas ls -ld "$testroot/wt/$d" | grep -q ^drwx--x--x
950 a2c162eb 2022-10-30 thomas if [ $? -ne 0 ]; then
951 a2c162eb 2022-10-30 thomas echo "$d is not 711 after checkout" >&2
952 a2c162eb 2022-10-30 thomas ls -ld "$testroot/wt/$d" >&2
953 a2c162eb 2022-10-30 thomas test_done "$testroot" 1
958 a2c162eb 2022-10-30 thomas test_done "$testroot" 0
961 e0220e74 2022-10-31 thomas test_checkout_ulimit_n() {
962 e0220e74 2022-10-31 thomas local testroot=`test_init checkout_ulimit_n`
964 e0220e74 2022-10-31 thomas echo -n "Checked out refs/heads/master: " >> $testroot/stdout.expected
965 e0220e74 2022-10-31 thomas git_show_head $testroot/repo >> $testroot/stdout.expected
966 e0220e74 2022-10-31 thomas printf "\nNow shut up and hack\n" >> $testroot/stdout.expected
968 e0220e74 2022-10-31 thomas # Drastically reduce the number of files we are allowed to use.
969 e0220e74 2022-10-31 thomas # This tests our down-scaling of caches which store open file handles.
970 e0220e74 2022-10-31 thomas # Checkout should still work; if it does not, then either there is
971 e0220e74 2022-10-31 thomas # a bug or the fixed limit used by this test case is no longer valid
972 61d05f0f 2022-10-31 thomas # and must be raised. Use a subshell to avoid changing global ulimit.
973 4838433d 2023-01-28 thomas (ulimit -n 33; got checkout -q $testroot/repo $testroot/wt \
974 61d05f0f 2022-10-31 thomas > $testroot/stdout)
976 e0220e74 2022-10-31 thomas if [ $ret -ne 0 ]; then
977 e0220e74 2022-10-31 thomas test_done "$testroot" "$ret"
981 e0220e74 2022-10-31 thomas cmp -s $testroot/stdout.expected $testroot/stdout
983 e0220e74 2022-10-31 thomas if [ $ret -ne 0 ]; then
984 e0220e74 2022-10-31 thomas diff -u $testroot/stdout.expected $testroot/stdout
985 e0220e74 2022-10-31 thomas test_done "$testroot" "$ret"
989 e0220e74 2022-10-31 thomas echo "alpha" > $testroot/content.expected
990 e0220e74 2022-10-31 thomas echo "beta" >> $testroot/content.expected
991 e0220e74 2022-10-31 thomas echo "zeta" >> $testroot/content.expected
992 e0220e74 2022-10-31 thomas echo "delta" >> $testroot/content.expected
993 e0220e74 2022-10-31 thomas cat $testroot/wt/alpha $testroot/wt/beta $testroot/wt/epsilon/zeta \
994 e0220e74 2022-10-31 thomas $testroot/wt/gamma/delta > $testroot/content
996 e0220e74 2022-10-31 thomas cmp -s $testroot/content.expected $testroot/content
998 e0220e74 2022-10-31 thomas if [ $ret -ne 0 ]; then
999 e0220e74 2022-10-31 thomas diff -u $testroot/content.expected $testroot/content
1001 fb885120 2023-07-19 thomas test_done "$testroot" "$ret"
1004 fb885120 2023-07-19 thomas test_checkout_commit_keywords() {
1005 fb885120 2023-07-19 thomas local testroot=$(test_init checkout_commit_keywords)
1007 8642913b 2023-07-26 thomas set -- "$(git_show_head $testroot/repo)"
1009 fb885120 2023-07-19 thomas got checkout $testroot/repo $testroot/wt > /dev/null
1011 fb885120 2023-07-19 thomas if [ $ret -ne 0 ]; then
1012 fb885120 2023-07-19 thomas echo "checkout failed unexpectedly" >&2
1013 fb885120 2023-07-19 thomas test_done "$testroot" "$ret"
1014 fb885120 2023-07-19 thomas return 1
1017 fb885120 2023-07-19 thomas for i in $(seq 4); do
1018 fb885120 2023-07-19 thomas echo "zeta change $i" > "$testroot/wt/epsilon/zeta"
1020 fb885120 2023-07-19 thomas (cd "$testroot/wt" && got ci -m "commit number $i" > /dev/null)
1022 fb885120 2023-07-19 thomas if [ $ret -ne 0 ]; then
1023 fb885120 2023-07-19 thomas echo "commit failed unexpectedly" >&2
1024 fb885120 2023-07-19 thomas test_done "$testroot" "$ret"
1025 fb885120 2023-07-19 thomas return 1
1027 8642913b 2023-07-26 thomas set -- "$@" "$(git_show_head $testroot/repo)"
1030 fb885120 2023-07-19 thomas echo "A $testroot/wt2/alpha" > $testroot/stdout.expected
1031 fb885120 2023-07-19 thomas echo "A $testroot/wt2/beta" >> $testroot/stdout.expected
1032 fb885120 2023-07-19 thomas echo "A $testroot/wt2/epsilon/zeta" >> $testroot/stdout.expected
1033 fb885120 2023-07-19 thomas echo "A $testroot/wt2/gamma/delta" >> $testroot/stdout.expected
1034 8642913b 2023-07-26 thomas echo "Checked out refs/heads/master: $(pop_idx 4 $@)" \
1035 fb885120 2023-07-19 thomas >> $testroot/stdout.expected
1036 fb885120 2023-07-19 thomas echo "Now shut up and hack" >> $testroot/stdout.expected
1038 fb885120 2023-07-19 thomas got co -c :head:- $testroot/repo $testroot/wt2 > $testroot/stdout
1040 fb885120 2023-07-19 thomas if [ $ret -ne 0 ]; then
1041 fb885120 2023-07-19 thomas test_done "$testroot" "$ret"
1042 fb885120 2023-07-19 thomas return 1
1045 fb885120 2023-07-19 thomas cmp -s $testroot/stdout.expected $testroot/stdout
1047 fb885120 2023-07-19 thomas if [ $ret -ne 0 ]; then
1048 fb885120 2023-07-19 thomas diff -u $testroot/stdout.expected $testroot/stdout
1049 fb885120 2023-07-19 thomas test_done "$testroot" "$ret"
1050 fb885120 2023-07-19 thomas return 1
1053 fb885120 2023-07-19 thomas echo "A $testroot/wt3/alpha" > $testroot/stdout.expected
1054 fb885120 2023-07-19 thomas echo "A $testroot/wt3/beta" >> $testroot/stdout.expected
1055 fb885120 2023-07-19 thomas echo "A $testroot/wt3/epsilon/zeta" >> $testroot/stdout.expected
1056 fb885120 2023-07-19 thomas echo "A $testroot/wt3/gamma/delta" >> $testroot/stdout.expected
1057 8642913b 2023-07-26 thomas echo "Checked out refs/heads/master: $(pop_idx 4 $@)" \
1058 fb885120 2023-07-19 thomas >> $testroot/stdout.expected
1059 fb885120 2023-07-19 thomas echo "Now shut up and hack" >> $testroot/stdout.expected
1061 fb885120 2023-07-19 thomas got co -bmaster -c:base:- $testroot/repo $testroot/wt3 > \
1062 fb885120 2023-07-19 thomas $testroot/stdout
1064 fb885120 2023-07-19 thomas if [ $ret -ne 0 ]; then
1065 fb885120 2023-07-19 thomas test_done "$testroot" "$ret"
1066 fb885120 2023-07-19 thomas return 1
1069 fb885120 2023-07-19 thomas cmp -s $testroot/stdout.expected $testroot/stdout
1071 fb885120 2023-07-19 thomas if [ $ret -ne 0 ]; then
1072 fb885120 2023-07-19 thomas diff -u $testroot/stdout.expected $testroot/stdout
1075 e0220e74 2022-10-31 thomas test_done "$testroot" "$ret"
1078 7fb414ae 2020-08-08 stsp test_parseargs "$@"
1079 0e673013 2019-01-02 stsp run_test test_checkout_basic
1080 80c1b583 2019-08-07 stsp run_test test_checkout_dir_exists
1081 80c1b583 2019-08-07 stsp run_test test_checkout_dir_not_empty
1082 484d974b 2023-08-29 thomas run_test test_checkout_into_repo
1083 484d974b 2023-08-29 thomas run_test test_checkout_overlap_repo
1084 68ed9ba5 2019-02-10 stsp run_test test_checkout_sets_xbit
1085 45d344f6 2019-05-14 stsp run_test test_checkout_commit_from_wrong_branch
1086 303e2782 2019-08-09 stsp run_test test_checkout_tag
1087 63c5ca5d 2019-08-24 stsp run_test test_checkout_ignores_submodules
1088 7f47418f 2019-12-20 stsp run_test test_checkout_read_only
1089 bb51a5b4 2020-01-13 stsp run_test test_checkout_into_nonempty_dir
1090 8ba819a3 2020-07-23 stsp run_test test_checkout_symlink
1091 7d61d891 2020-07-23 stsp run_test test_checkout_symlink_relative_wtpath
1092 20b7abb3 2020-10-22 stsp run_test test_checkout_repo_with_unknown_extension
1093 67c65ed7 2021-09-14 tracey run_test test_checkout_quiet
1094 a2c162eb 2022-10-30 thomas run_test test_checkout_umask
1095 e0220e74 2022-10-31 thomas run_test test_checkout_ulimit_n
1096 fb885120 2023-07-19 thomas run_test test_checkout_commit_keywords