Merge branch 'ps/ref-tests-update-more' into maint-2.43

Tests update.

* ps/ref-tests-update-more:
  t6301: write invalid object ID via `test-tool ref-store`
  t5551: stop writing packed-refs directly
  t5401: speed up creation of many branches
  t4013: simplify magic parsing and drop "failure"
  t3310: stop checking for reference existence via `test -f`
  t1417: make `reflog --updateref` tests backend agnostic
  t1410: use test-tool to create empty reflog
  t1401: stop treating FETCH_HEAD as real reference
  t1400: split up generic reflog tests from the reffile-specific ones
  t0410: mark tests to require the reffiles backend
This commit is contained in:
Junio C Hamano 2024-02-08 16:22:06 -08:00
commit 67bb8ff5da
10 changed files with 74 additions and 45 deletions

View file

@ -49,7 +49,7 @@ test_expect_success 'convert shallow clone to partial clone' '
test_cmp_config -C client 1 core.repositoryformatversion
'
test_expect_success SHA1 'convert to partial clone with noop extension' '
test_expect_success SHA1,REFFILES 'convert to partial clone with noop extension' '
rm -fr server client &&
test_create_repo server &&
test_commit -C server my_commit 1 &&
@ -60,7 +60,7 @@ test_expect_success SHA1 'convert to partial clone with noop extension' '
git -C client fetch --unshallow --filter="blob:none"
'
test_expect_success SHA1 'converting to partial clone fails with unrecognized extension' '
test_expect_success SHA1,REFFILES 'converting to partial clone fails with unrecognized extension' '
rm -fr server client &&
test_create_repo server &&
test_commit -C server my_commit 1 &&

View file

@ -354,14 +354,28 @@ test_expect_success "verifying $m's log (logged by config)" '
'
test_expect_success 'set up for querying the reflog' '
git update-ref -d $m &&
test-tool ref-store main delete-reflog $m &&
GIT_COMMITTER_DATE="1117150320 -0500" git update-ref $m $C &&
GIT_COMMITTER_DATE="1117150350 -0500" git update-ref $m $A &&
GIT_COMMITTER_DATE="1117150380 -0500" git update-ref $m $B &&
GIT_COMMITTER_DATE="1117150680 -0500" git update-ref $m $F &&
GIT_COMMITTER_DATE="1117150980 -0500" git update-ref $m $E &&
git update-ref $m $D &&
cat >.git/logs/$m <<-EOF
# Delete the last reflog entry so that the tip of m and the reflog for
# it disagree.
git reflog delete $m@{0} &&
cat >expect <<-EOF &&
$Z $C $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> 1117150320 -0500
$C $A $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> 1117150350 -0500
$A $B $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> 1117150380 -0500
$F $Z $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> 1117150680 -0500
$Z $E $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> 1117150980 -0500
$B $F $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> 1117150680 -0500
$F $E $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> 1117150980 -0500
EOF
test-tool ref-store main for-each-reflog-ent $m >actual &&
test_cmp expect actual
'
ed="Thu, 26 May 2005 18:32:00 -0500"
@ -409,13 +423,12 @@ test_expect_success 'Query "main@{2005-05-26 23:33:01}" (middle of history with
test_when_finished "rm -f o e" &&
git rev-parse --verify "main@{2005-05-26 23:33:01}" >o 2>e &&
echo "$B" >expect &&
test_cmp expect o &&
test_grep -F "warning: log for ref $m has gap after $gd" e
test_cmp expect o
'
test_expect_success 'Query "main@{2005-05-26 23:38:00}" (middle of history)' '
test_when_finished "rm -f o e" &&
git rev-parse --verify "main@{2005-05-26 23:38:00}" >o 2>e &&
echo "$Z" >expect &&
echo "$F" >expect &&
test_cmp expect o &&
test_must_be_empty e
'
@ -436,6 +449,22 @@ test_expect_success 'Query "main@{2005-05-28}" (past end of history)' '
rm -f .git/$m .git/logs/$m expect
test_expect_success REFFILES 'query reflog with gap' '
test_when_finished "git update-ref -d $m" &&
git update-ref $m $F &&
cat >.git/logs/$m <<-EOF &&
$Z $A $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> 1117150320 -0500
$A $B $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> 1117150380 -0500
$D $F $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> 1117150680 -0500
EOF
git rev-parse --verify "main@{2005-05-26 23:33:01}" >actual 2>stderr &&
echo "$B" >expect &&
test_cmp expect actual &&
test_grep -F "warning: log for ref $m has gap after $gd" stderr
'
test_expect_success 'creating initial files' '
test_when_finished rm -f M &&
echo TEST >F &&

View file

@ -171,8 +171,8 @@ test_expect_success 'symbolic-ref refuses invalid target for non-HEAD' '
'
test_expect_success 'symbolic-ref allows top-level target for non-HEAD' '
git symbolic-ref refs/heads/top-level FETCH_HEAD &&
git update-ref FETCH_HEAD HEAD &&
git symbolic-ref refs/heads/top-level ORIG_HEAD &&
git update-ref ORIG_HEAD HEAD &&
test_cmp_rev top-level HEAD
'

View file

@ -469,11 +469,11 @@ test_expect_success 'expire one of multiple worktrees' '
)
'
test_expect_success REFFILES 'empty reflog' '
test_expect_success 'empty reflog' '
test_when_finished "rm -rf empty" &&
git init empty &&
test_commit -C empty A &&
>empty/.git/logs/refs/heads/foo &&
test-tool ref-store main create-reflog refs/heads/foo &&
git -C empty reflog expire --all 2>err &&
test_must_be_empty err
'

View file

@ -14,9 +14,13 @@ test_expect_success 'setup' '
test_commit B &&
test_commit C &&
cp .git/logs/HEAD HEAD.old &&
git reflog HEAD >expect &&
git reset --hard HEAD~ &&
cp HEAD.old .git/logs/HEAD
# Make sure that the reflog does not point to the same commit
# as HEAD.
git reflog delete HEAD@{0} &&
git reflog HEAD >actual &&
test_cmp expect actual
)
'
@ -25,7 +29,7 @@ test_reflog_updateref () {
shift
args="$@"
test_expect_success REFFILES "get '$exp' with '$args'" '
test_expect_success "get '$exp' with '$args'" '
test_when_finished "rm -rf copy" &&
cp -R repo copy &&

View file

@ -561,9 +561,9 @@ y and z notes on 4th commit
EOF
# Fail to finalize merge
test_must_fail git notes merge --commit >output 2>&1 &&
# .git/NOTES_MERGE_* must remain
test -f .git/NOTES_MERGE_PARTIAL &&
test -f .git/NOTES_MERGE_REF &&
# NOTES_MERGE_* refs and .git/NOTES_MERGE_* state files must remain
git rev-parse --verify NOTES_MERGE_PARTIAL &&
git rev-parse --verify NOTES_MERGE_REF &&
test -f .git/NOTES_MERGE_WORKTREE/$commit_sha1 &&
test -f .git/NOTES_MERGE_WORKTREE/$commit_sha2 &&
test -f .git/NOTES_MERGE_WORKTREE/$commit_sha3 &&

View file

@ -178,32 +178,29 @@ process_diffs () {
V=$(git version | sed -e 's/^git version //' -e 's/\./\\./g')
while read magic cmd
do
status=success
case "$magic" in
'' | '#'*)
continue ;;
:*)
magic=${magic#:}
:noellipses)
magic=noellipses
label="$magic-$cmd"
case "$magic" in
noellipses) ;;
failure)
status=failure
magic=
label="$cmd" ;;
*)
BUG "unknown magic $magic" ;;
esac ;;
;;
:*)
BUG "unknown magic $magic"
;;
*)
cmd="$magic $cmd" magic=
label="$cmd" ;;
cmd="$magic $cmd"
magic=
label="$cmd"
;;
esac
test=$(echo "$label" | sed -e 's|[/ ][/ ]*|_|g')
pfx=$(printf "%04d" $test_count)
expect="$TEST_DIRECTORY/t4013/diff.$test"
actual="$pfx-diff.$test"
test_expect_$status "git $cmd # magic is ${magic:-(not used)}" '
test_expect_success "git $cmd # magic is ${magic:-(not used)}" '
{
echo "$ git $cmd"
case "$magic" in

View file

@ -133,10 +133,8 @@ test_expect_success 'pre-receive hook that forgets to read its input' '
EOF
rm -f victim.git/hooks/update victim.git/hooks/post-update &&
for v in $(test_seq 100 999)
do
git branch branch_$v main || return
done &&
printf "create refs/heads/branch_%d main\n" $(test_seq 100 999) >input &&
git update-ref --stdin <input &&
git push ./victim.git "+refs/heads/*:refs/heads/*"
'

View file

@ -359,7 +359,9 @@ create_tags () {
# now assign tags to all the dangling commits we created above
tag=$(perl -e "print \"bla\" x 30") &&
sed -e "s|^:\([^ ]*\) \(.*\)$|\2 refs/tags/$tag-\1|" <marks >>packed-refs
sed -e "s|^:\([^ ]*\) \(.*\)$|create refs/tags/$tag-\1 \2|" <marks >input &&
git update-ref --stdin <input &&
rm input
}
test_expect_success 'create 2,000 tags in the repo' '

View file

@ -15,7 +15,7 @@ test_expect_success setup '
git for-each-ref --format="%(objectname) %(refname)" >brief-list
'
test_expect_success 'Broken refs are reported correctly' '
test_expect_success REFFILES 'Broken refs are reported correctly' '
r=refs/heads/bogus &&
: >.git/$r &&
test_when_finished "rm -f .git/$r" &&
@ -25,7 +25,7 @@ test_expect_success 'Broken refs are reported correctly' '
test_cmp broken-err err
'
test_expect_success 'NULL_SHA1 refs are reported correctly' '
test_expect_success REFFILES 'NULL_SHA1 refs are reported correctly' '
r=refs/heads/zeros &&
echo $ZEROS >.git/$r &&
test_when_finished "rm -f .git/$r" &&
@ -39,15 +39,14 @@ test_expect_success 'NULL_SHA1 refs are reported correctly' '
'
test_expect_success 'Missing objects are reported correctly' '
r=refs/heads/missing &&
echo $MISSING >.git/$r &&
test_when_finished "rm -f .git/$r" &&
echo "fatal: missing object $MISSING for $r" >missing-err &&
test_when_finished "git update-ref -d refs/heads/missing" &&
test-tool ref-store main update-ref msg refs/heads/missing "$MISSING" "$ZERO_OID" REF_SKIP_OID_VERIFICATION &&
echo "fatal: missing object $MISSING for refs/heads/missing" >missing-err &&
test_must_fail git for-each-ref 2>err &&
test_cmp missing-err err &&
(
cat brief-list &&
echo "$MISSING $r"
echo "$MISSING refs/heads/missing"
) | sort -k 2 >missing-brief-expected &&
git for-each-ref --format="%(objectname) %(refname)" >brief-out 2>brief-err &&
test_cmp missing-brief-expected brief-out &&