t: move tests exercising the "files" backend
We still have a bunch of tests scattered across our test suites that exercise on-disk files of the "files" backend directly: - t1301 exercises permissions of reflog files when the config "core.sharedRepository" is set. - t1400 exercises whether empty directories in the ref store are handled correctly. - t3200 exercises what happens when there are symlinks in the ref store. - t3400 also exercises what happens when ".git/logs" is a symlink. All of these are inherently low-level tests specific to the "files" backend. Move them into "t0600-reffiles-backend.sh" to reflect this. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
c875e0b8e0
commit
161d981641
@ -381,4 +381,95 @@ test_expect_success 'log diagnoses bogus HEAD symref' '
|
|||||||
test_grep broken stderr
|
test_grep broken stderr
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'empty directory removal' '
|
||||||
|
git branch d1/d2/r1 HEAD &&
|
||||||
|
git branch d1/r2 HEAD &&
|
||||||
|
test_path_is_file .git/refs/heads/d1/d2/r1 &&
|
||||||
|
test_path_is_file .git/logs/refs/heads/d1/d2/r1 &&
|
||||||
|
git branch -d d1/d2/r1 &&
|
||||||
|
test_must_fail git show-ref --verify -q refs/heads/d1/d2 &&
|
||||||
|
test_must_fail git show-ref --verify -q logs/refs/heads/d1/d2 &&
|
||||||
|
test_path_is_file .git/refs/heads/d1/r2 &&
|
||||||
|
test_path_is_file .git/logs/refs/heads/d1/r2
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'symref empty directory removal' '
|
||||||
|
git branch e1/e2/r1 HEAD &&
|
||||||
|
git branch e1/r2 HEAD &&
|
||||||
|
git checkout e1/e2/r1 &&
|
||||||
|
test_when_finished "git checkout main" &&
|
||||||
|
test_path_is_file .git/refs/heads/e1/e2/r1 &&
|
||||||
|
test_path_is_file .git/logs/refs/heads/e1/e2/r1 &&
|
||||||
|
git update-ref -d HEAD &&
|
||||||
|
test_must_fail git show-ref --verify -q refs/heads/e1/e2 &&
|
||||||
|
test_must_fail git show-ref --verify -q logs/refs/heads/e1/e2 &&
|
||||||
|
test_path_is_file .git/refs/heads/e1/r2 &&
|
||||||
|
test_path_is_file .git/logs/refs/heads/e1/r2 &&
|
||||||
|
test_path_is_file .git/logs/HEAD
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'directory not created deleting packed ref' '
|
||||||
|
git branch d1/d2/r1 HEAD &&
|
||||||
|
git pack-refs --all &&
|
||||||
|
test_path_is_missing .git/refs/heads/d1/d2 &&
|
||||||
|
git update-ref -d refs/heads/d1/d2/r1 &&
|
||||||
|
test_path_is_missing .git/refs/heads/d1/d2 &&
|
||||||
|
test_path_is_missing .git/refs/heads/d1
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success SYMLINKS 'git branch -m u v should fail when the reflog for u is a symlink' '
|
||||||
|
git branch --create-reflog u &&
|
||||||
|
mv .git/logs/refs/heads/u real-u &&
|
||||||
|
ln -s real-u .git/logs/refs/heads/u &&
|
||||||
|
test_must_fail git branch -m u v
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success SYMLINKS 'git branch -m with symlinked .git/refs' '
|
||||||
|
test_when_finished "rm -rf subdir" &&
|
||||||
|
git init --bare subdir &&
|
||||||
|
|
||||||
|
rm -rfv subdir/refs subdir/objects subdir/packed-refs &&
|
||||||
|
ln -s ../.git/refs subdir/refs &&
|
||||||
|
ln -s ../.git/objects subdir/objects &&
|
||||||
|
ln -s ../.git/packed-refs subdir/packed-refs &&
|
||||||
|
|
||||||
|
git -C subdir rev-parse --absolute-git-dir >subdir.dir &&
|
||||||
|
git rev-parse --absolute-git-dir >our.dir &&
|
||||||
|
! test_cmp subdir.dir our.dir &&
|
||||||
|
|
||||||
|
git -C subdir log &&
|
||||||
|
git -C subdir branch rename-src &&
|
||||||
|
git rev-parse rename-src >expect &&
|
||||||
|
git -C subdir branch -m rename-src rename-dest &&
|
||||||
|
git rev-parse rename-dest >actual &&
|
||||||
|
test_cmp expect actual &&
|
||||||
|
git branch -D rename-dest
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success MINGW,SYMLINKS_WINDOWS 'rebase when .git/logs is a symlink' '
|
||||||
|
git checkout main &&
|
||||||
|
mv .git/logs actual_logs &&
|
||||||
|
cmd //c "mklink /D .git\logs ..\actual_logs" &&
|
||||||
|
git rebase -f HEAD^ &&
|
||||||
|
test -L .git/logs &&
|
||||||
|
rm .git/logs &&
|
||||||
|
mv actual_logs .git/logs
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success POSIXPERM 'git reflog expire honors core.sharedRepository' '
|
||||||
|
umask 077 &&
|
||||||
|
git config core.sharedRepository group &&
|
||||||
|
git reflog expire --all &&
|
||||||
|
actual="$(ls -l .git/logs/refs/heads/main)" &&
|
||||||
|
case "$actual" in
|
||||||
|
-rw-rw-*)
|
||||||
|
: happy
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo Ooops, .git/logs/refs/heads/main is not 066x [$actual]
|
||||||
|
false
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
@ -137,22 +137,6 @@ test_expect_success POSIXPERM 'info/refs respects umask in unshared repo' '
|
|||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success REFFILES,POSIXPERM 'git reflog expire honors core.sharedRepository' '
|
|
||||||
umask 077 &&
|
|
||||||
git config core.sharedRepository group &&
|
|
||||||
git reflog expire --all &&
|
|
||||||
actual="$(ls -l .git/logs/refs/heads/main)" &&
|
|
||||||
case "$actual" in
|
|
||||||
-rw-rw-*)
|
|
||||||
: happy
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo Ooops, .git/logs/refs/heads/main is not 066x [$actual]
|
|
||||||
false
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success POSIXPERM 'forced modes' '
|
test_expect_success POSIXPERM 'forced modes' '
|
||||||
test_when_finished "rm -rf new" &&
|
test_when_finished "rm -rf new" &&
|
||||||
mkdir -p templates/hooks &&
|
mkdir -p templates/hooks &&
|
||||||
|
@ -288,33 +288,6 @@ test_expect_success "set $m (logged by touch)" '
|
|||||||
test $A = $(git show-ref -s --verify $m)
|
test $A = $(git show-ref -s --verify $m)
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success REFFILES 'empty directory removal' '
|
|
||||||
git branch d1/d2/r1 HEAD &&
|
|
||||||
git branch d1/r2 HEAD &&
|
|
||||||
test_path_is_file .git/refs/heads/d1/d2/r1 &&
|
|
||||||
test_path_is_file .git/logs/refs/heads/d1/d2/r1 &&
|
|
||||||
git branch -d d1/d2/r1 &&
|
|
||||||
test_must_fail git show-ref --verify -q refs/heads/d1/d2 &&
|
|
||||||
test_must_fail git show-ref --verify -q logs/refs/heads/d1/d2 &&
|
|
||||||
test_path_is_file .git/refs/heads/d1/r2 &&
|
|
||||||
test_path_is_file .git/logs/refs/heads/d1/r2
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success REFFILES 'symref empty directory removal' '
|
|
||||||
git branch e1/e2/r1 HEAD &&
|
|
||||||
git branch e1/r2 HEAD &&
|
|
||||||
git checkout e1/e2/r1 &&
|
|
||||||
test_when_finished "git checkout main" &&
|
|
||||||
test_path_is_file .git/refs/heads/e1/e2/r1 &&
|
|
||||||
test_path_is_file .git/logs/refs/heads/e1/e2/r1 &&
|
|
||||||
git update-ref -d HEAD &&
|
|
||||||
test_must_fail git show-ref --verify -q refs/heads/e1/e2 &&
|
|
||||||
test_must_fail git show-ref --verify -q logs/refs/heads/e1/e2 &&
|
|
||||||
test_path_is_file .git/refs/heads/e1/r2 &&
|
|
||||||
test_path_is_file .git/logs/refs/heads/e1/r2 &&
|
|
||||||
test_path_is_file .git/logs/HEAD
|
|
||||||
'
|
|
||||||
|
|
||||||
cat >expect <<EOF
|
cat >expect <<EOF
|
||||||
$Z $A $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> 1117150200 +0000 Initial Creation
|
$Z $A $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> 1117150200 +0000 Initial Creation
|
||||||
$A $B $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> 1117150260 +0000 Switch
|
$A $B $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> 1117150260 +0000 Switch
|
||||||
@ -1668,13 +1641,4 @@ test_expect_success PIPE 'transaction flushes status updates' '
|
|||||||
test_cmp expected actual
|
test_cmp expected actual
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success REFFILES 'directory not created deleting packed ref' '
|
|
||||||
git branch d1/d2/r1 HEAD &&
|
|
||||||
git pack-refs --all &&
|
|
||||||
test_path_is_missing .git/refs/heads/d1/d2 &&
|
|
||||||
git update-ref -d refs/heads/d1/d2/r1 &&
|
|
||||||
test_path_is_missing .git/refs/heads/d1/d2 &&
|
|
||||||
test_path_is_missing .git/refs/heads/d1
|
|
||||||
'
|
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
@ -836,35 +836,6 @@ test_expect_success 'renaming a symref is not allowed' '
|
|||||||
test_ref_missing refs/heads/new-topic
|
test_ref_missing refs/heads/new-topic
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success SYMLINKS,REFFILES 'git branch -m u v should fail when the reflog for u is a symlink' '
|
|
||||||
git branch --create-reflog u &&
|
|
||||||
mv .git/logs/refs/heads/u real-u &&
|
|
||||||
ln -s real-u .git/logs/refs/heads/u &&
|
|
||||||
test_must_fail git branch -m u v
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success SYMLINKS,REFFILES 'git branch -m with symlinked .git/refs' '
|
|
||||||
test_when_finished "rm -rf subdir" &&
|
|
||||||
git init --bare subdir &&
|
|
||||||
|
|
||||||
rm -rfv subdir/refs subdir/objects subdir/packed-refs &&
|
|
||||||
ln -s ../.git/refs subdir/refs &&
|
|
||||||
ln -s ../.git/objects subdir/objects &&
|
|
||||||
ln -s ../.git/packed-refs subdir/packed-refs &&
|
|
||||||
|
|
||||||
git -C subdir rev-parse --absolute-git-dir >subdir.dir &&
|
|
||||||
git rev-parse --absolute-git-dir >our.dir &&
|
|
||||||
! test_cmp subdir.dir our.dir &&
|
|
||||||
|
|
||||||
git -C subdir log &&
|
|
||||||
git -C subdir branch rename-src &&
|
|
||||||
git rev-parse rename-src >expect &&
|
|
||||||
git -C subdir branch -m rename-src rename-dest &&
|
|
||||||
git rev-parse rename-dest >actual &&
|
|
||||||
test_cmp expect actual &&
|
|
||||||
git branch -D rename-dest
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'test tracking setup via --track' '
|
test_expect_success 'test tracking setup via --track' '
|
||||||
git config remote.local.url . &&
|
git config remote.local.url . &&
|
||||||
git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
|
git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
|
||||||
|
@ -424,16 +424,6 @@ test_expect_success 'refuse to switch to branch checked out elsewhere' '
|
|||||||
test_grep "already used by worktree at" err
|
test_grep "already used by worktree at" err
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success REFFILES,MINGW,SYMLINKS_WINDOWS 'rebase when .git/logs is a symlink' '
|
|
||||||
git checkout main &&
|
|
||||||
mv .git/logs actual_logs &&
|
|
||||||
cmd //c "mklink /D .git\logs ..\actual_logs" &&
|
|
||||||
git rebase -f HEAD^ &&
|
|
||||||
test -L .git/logs &&
|
|
||||||
rm .git/logs &&
|
|
||||||
mv actual_logs .git/logs
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success 'rebase when inside worktree subdirectory' '
|
test_expect_success 'rebase when inside worktree subdirectory' '
|
||||||
git init main-wt &&
|
git init main-wt &&
|
||||||
(
|
(
|
||||||
|
Reference in New Issue
Block a user