Test modernization.

* ab/hook-tests:
  hook tests: use a modern style for "pre-push" tests
  hook tests: test for exact "pre-push" hook input
This commit is contained in:
Junio C Hamano 2022-03-06 21:25:31 -08:00
Родитель ae59346f09 4454015767
Коммит 6878ea6f14
1 изменённых файлов: 54 добавлений и 42 удалений

Просмотреть файл

@ -11,7 +11,7 @@ HOOKDIR="$(git rev-parse --git-dir)/hooks"
HOOK="$HOOKDIR/pre-push"
mkdir -p "$HOOKDIR"
write_script "$HOOK" <<EOF
cat >/dev/null
cat >actual
exit 0
EOF
@ -20,10 +20,16 @@ test_expect_success 'setup' '
git init --bare repo1 &&
git remote add parent1 repo1 &&
test_commit one &&
git push parent1 HEAD:foreign
cat >expect <<-EOF &&
HEAD $(git rev-parse HEAD) refs/heads/foreign $(test_oid zero)
EOF
test_when_finished "rm actual" &&
git push parent1 HEAD:foreign &&
test_cmp expect actual
'
write_script "$HOOK" <<EOF
cat >/dev/null
cat >actual
exit 1
EOF
@ -32,11 +38,18 @@ export COMMIT1
test_expect_success 'push with failing hook' '
test_commit two &&
test_must_fail git push parent1 HEAD
cat >expect <<-EOF &&
HEAD $(git rev-parse HEAD) refs/heads/main $(test_oid zero)
EOF
test_when_finished "rm actual" &&
test_must_fail git push parent1 HEAD &&
test_cmp expect actual
'
test_expect_success '--no-verify bypasses hook' '
git push --no-verify parent1 HEAD
git push --no-verify parent1 HEAD &&
test_path_is_missing actual
'
COMMIT2="$(git rev-parse HEAD)"
@ -48,15 +61,15 @@ echo "$2" >>actual
cat >>actual
EOF
cat >expected <<EOF
parent1
repo1
refs/heads/main $COMMIT2 refs/heads/foreign $COMMIT1
EOF
test_expect_success 'push with hook' '
cat >expect <<-EOF &&
parent1
repo1
refs/heads/main $COMMIT2 refs/heads/foreign $COMMIT1
EOF
git push parent1 main:foreign &&
diff expected actual
test_cmp expect actual
'
test_expect_success 'add a branch' '
@ -67,49 +80,48 @@ test_expect_success 'add a branch' '
COMMIT3="$(git rev-parse HEAD)"
export COMMIT3
cat >expected <<EOF
parent1
repo1
refs/heads/other $COMMIT3 refs/heads/foreign $COMMIT2
EOF
test_expect_success 'push to default' '
cat >expect <<-EOF &&
parent1
repo1
refs/heads/other $COMMIT3 refs/heads/foreign $COMMIT2
EOF
git push &&
diff expected actual
test_cmp expect actual
'
cat >expected <<EOF
parent1
repo1
refs/tags/one $COMMIT1 refs/tags/tag1 $ZERO_OID
HEAD~ $COMMIT2 refs/heads/prev $ZERO_OID
EOF
test_expect_success 'push non-branches' '
git push parent1 one:tag1 HEAD~:refs/heads/prev &&
diff expected actual
'
cat >expect <<-EOF &&
parent1
repo1
refs/tags/one $COMMIT1 refs/tags/tag1 $ZERO_OID
HEAD~ $COMMIT2 refs/heads/prev $ZERO_OID
EOF
cat >expected <<EOF
parent1
repo1
(delete) $ZERO_OID refs/heads/prev $COMMIT2
EOF
git push parent1 one:tag1 HEAD~:refs/heads/prev &&
test_cmp expect actual
'
test_expect_success 'push delete' '
cat >expect <<-EOF &&
parent1
repo1
(delete) $ZERO_OID refs/heads/prev $COMMIT2
EOF
git push parent1 :prev &&
diff expected actual
test_cmp expect actual
'
cat >expected <<EOF
repo1
repo1
HEAD $COMMIT3 refs/heads/other $ZERO_OID
EOF
test_expect_success 'push to URL' '
cat >expect <<-EOF &&
repo1
repo1
HEAD $COMMIT3 refs/heads/other $ZERO_OID
EOF
git push repo1 HEAD &&
diff expected actual
test_cmp expect actual
'
test_expect_success 'set up many-ref tests' '