Message ID | 089565a358eb28544f0ad6b83b8c47e1edf2db6f.1698156169.git.ps@pks.im (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | t: reduce direct disk access to data structures | expand |
On Tue, Oct 24, 2023 at 10:05 AM Patrick Steinhardt <ps@pks.im> wrote: > Some of our tests in t1450 create worktrees and then corrupt them. > As it is impossible to delete such worktrees via a normal call to `git > worktree remove`, we instead opt to remove them manually by calling > rm(1) instead. > > This is ultimately unnecessary though as we can use the `-f` switch to > remove the worktree. Let's convert the tests to do so such that we don't > have to reach into internal implementation details of worktrees. > > Signed-off-by: Patrick Steinhardt <ps@pks.im> > --- > diff --git a/t/t1450-fsck.sh b/t/t1450-fsck.sh > @@ -141,7 +141,7 @@ test_expect_success 'HEAD link pointing at a funny place' ' > test_expect_success 'HEAD link pointing at a funny object (from different wt)' ' > test_when_finished "git update-ref HEAD $orig_head" && > - test_when_finished "rm -rf .git/worktrees wt" && > + test_when_finished "git worktree remove -f wt" && > git worktree add wt && > echo $ZERO_OID >.git/HEAD && Technically, this is a change of behavior since the original code removed the entire .git/worktrees directory, which deleted administrative metainformation for _all_ worktrees, whereas the new code only deletes administrative metadata for the mentioned worktree. However, since there are no other existing worktrees at this point in any of these tests, the result is functionally the same, so the change of behavior is immaterial. Moreover, the revised code has a smaller blast-radius, which may be a desirable property since there has been some movement toward making tests more self-contained so that they can be run individually more easily.
diff --git a/t/t1450-fsck.sh b/t/t1450-fsck.sh index a3c97b9c7fc..a6af550867c 100755 --- a/t/t1450-fsck.sh +++ b/t/t1450-fsck.sh @@ -141,7 +141,7 @@ test_expect_success 'HEAD link pointing at a funny place' ' test_expect_success 'HEAD link pointing at a funny object (from different wt)' ' test_when_finished "git update-ref HEAD $orig_head" && - test_when_finished "rm -rf .git/worktrees wt" && + test_when_finished "git worktree remove -f wt" && git worktree add wt && echo $ZERO_OID >.git/HEAD && # avoid corrupt/broken HEAD from interfering with repo discovery @@ -150,7 +150,7 @@ test_expect_success 'HEAD link pointing at a funny object (from different wt)' ' ' test_expect_success 'other worktree HEAD link pointing at a funny object' ' - test_when_finished "rm -rf .git/worktrees other" && + test_when_finished "git worktree remove -f other" && git worktree add other && echo $ZERO_OID >.git/worktrees/other/HEAD && test_must_fail git fsck 2>out && @@ -158,7 +158,7 @@ test_expect_success 'other worktree HEAD link pointing at a funny object' ' ' test_expect_success 'other worktree HEAD link pointing at missing object' ' - test_when_finished "rm -rf .git/worktrees other" && + test_when_finished "git worktree remove -f other" && git worktree add other && object_id=$(echo "Contents missing from repo" | git hash-object --stdin) && test-tool -C other ref-store main update-ref msg HEAD $object_id "" REF_NO_DEREF,REF_SKIP_OID_VERIFICATION && @@ -167,7 +167,7 @@ test_expect_success 'other worktree HEAD link pointing at missing object' ' ' test_expect_success 'other worktree HEAD link pointing at a funny place' ' - test_when_finished "rm -rf .git/worktrees other" && + test_when_finished "git worktree remove -f other" && git worktree add other && git -C other symbolic-ref HEAD refs/funny/place && test_must_fail git fsck 2>out &&
Some of our tests in t1450 create worktrees and then corrupt them. As it is impossible to delete such worktrees via a normal call to `git worktree remove`, we instead opt to remove them manually by calling rm(1) instead. This is ultimately unnecessary though as we can use the `-f` switch to remove the worktree. Let's convert the tests to do so such that we don't have to reach into internal implementation details of worktrees. Signed-off-by: Patrick Steinhardt <ps@pks.im> --- t/t1450-fsck.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)