t0610: make `--shared=` tests reusable

We have two kinds of `--shared=` tests, one for git-init(1) and one for git-pack-refs(1). Merge them into a reusable function such that we can easily add additional testcases with different umasks and flags for the `--shared=` switch. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Patrick Steinhardt committed Apr 9, 2024 at 11:57 UTC 2f960dd5fe484679486cfdd42a3f0015d97fa822
1 file changed +30 -27
t/t0610-reftable-basics.sh
+30 -27
@@ -96,23 +96,46 @@ test_expect_perms () {
96 esac
97 }
98
99 -for umask in 002 022
100 -do
101 - test_expect_success POSIXPERM 'init: honors core.sharedRepository' '
99 +test_expect_reftable_perms () {
100 + local umask="$1"
101 + local shared="$2"
102 + local expect="$3"
103 +
104 + test_expect_success POSIXPERM "init: honors --shared=$shared with umask $umask" '
105 test_when_finished "rm -rf repo" &&
106 (
107 umask $umask &&
105 - git init --shared=true repo &&
108 + git init --shared=$shared repo &&
109 test 1 = "$(git -C repo config core.sharedrepository)"
110 ) &&
108 - test_expect_perms "-rw-rw-r--" repo/.git/reftable/tables.list &&
111 + test_expect_perms "$expect" repo/.git/reftable/tables.list &&
112 for table in repo/.git/reftable/*.ref
113 do
111 - test_expect_perms "-rw-rw-r--" "$table" ||
114 + test_expect_perms "$expect" "$table" ||
115 return 1
116 done
117 '
115 -done
118 +
119 + test_expect_success POSIXPERM "pack-refs: honors --shared=$shared with umask $umask" '
120 + test_when_finished "rm -rf repo" &&
121 + (
122 + umask $umask &&
123 + git init --shared=$shared repo &&
124 + test_commit -C repo A &&
125 + test_line_count = 3 repo/.git/reftable/tables.list
126 + ) &&
127 + git -C repo pack-refs &&
128 + test_expect_perms "$expect" repo/.git/reftable/tables.list &&
129 + for table in repo/.git/reftable/*.ref
130 + do
131 + test_expect_perms "$expect" "$table" ||
132 + return 1
133 + done
134 + '
135 +}
136 +
137 +test_expect_reftable_perms 002 true "-rw-rw-r--"
138 +test_expect_reftable_perms 022 true "-rw-rw-r--"
139
140 test_expect_success 'clone: can clone reftable repository' '
141 test_when_finished "rm -rf repo clone" &&
@@ -359,26 +382,6 @@ test_expect_success 'pack-refs: does not prune non-table files' '
382 test_path_is_file repo/.git/reftable/garbage
383 '
384
362 -for umask in 002 022
363 -do
364 - test_expect_success POSIXPERM 'pack-refs: honors core.sharedRepository' '
365 - test_when_finished "rm -rf repo" &&
366 - (
367 - umask $umask &&
368 - git init --shared=true repo &&
369 - test_commit -C repo A &&
370 - test_line_count = 3 repo/.git/reftable/tables.list
371 - ) &&
372 - git -C repo pack-refs &&
373 - test_expect_perms "-rw-rw-r--" repo/.git/reftable/tables.list &&
374 - for table in repo/.git/reftable/*.ref
375 - do
376 - test_expect_perms "-rw-rw-r--" "$table" ||
377 - return 1
378 - done
379 - '
380 -done
381 -
385 test_expect_success 'packed-refs: writes are synced' '
386 test_when_finished "rm -rf repo" &&
387 git init repo &&