| #!/bin/sh |
| |
| test_description='post upload-hook' |
| |
| . ./test-lib.sh |
| |
| LOGFILE=".git/post-upload-pack-log" |
| |
| test_expect_success setup ' |
| test_commit A && |
| test_commit B && |
| git reset --hard A && |
| test_commit C && |
| git branch prev B && |
| mkdir -p .git/hooks && |
| { |
| echo "#!$SHELL_PATH" && |
| echo "cat >post-upload-pack-log" |
| } >".git/hooks/post-upload-pack" && |
| chmod +x .git/hooks/post-upload-pack |
| ' |
| |
| test_expect_success initial ' |
| rm -fr sub && |
| git init sub && |
| ( |
| cd sub && |
| git fetch --no-tags .. prev |
| ) && |
| want=$(sed -n "s/^want //p" "$LOGFILE") && |
| test "$want" = "$(git rev-parse --verify B)" && |
| ! grep "^have " "$LOGFILE" && |
| kind=$(sed -n "s/^kind //p" "$LOGFILE") && |
| test "$kind" = fetch |
| ' |
| |
| test_expect_success second ' |
| rm -fr sub && |
| git init sub && |
| ( |
| cd sub && |
| git fetch --no-tags .. prev:refs/remotes/prev && |
| git fetch --no-tags .. master |
| ) && |
| want=$(sed -n "s/^want //p" "$LOGFILE") && |
| test "$want" = "$(git rev-parse --verify C)" && |
| have=$(sed -n "s/^have //p" "$LOGFILE") && |
| test "$have" = "$(git rev-parse --verify B)" && |
| kind=$(sed -n "s/^kind //p" "$LOGFILE") && |
| test "$kind" = fetch |
| ' |
| |
| test_expect_success all ' |
| rm -fr sub && |
| HERE=$(pwd) && |
| git init sub && |
| ( |
| cd sub && |
| git clone "file://$HERE/.git" new |
| ) && |
| sed -n "s/^want //p" "$LOGFILE" | sort >actual && |
| git rev-parse A B C | sort >expect && |
| test_cmp expect actual && |
| ! grep "^have " "$LOGFILE" && |
| kind=$(sed -n "s/^kind //p" "$LOGFILE") && |
| test "$kind" = clone |
| ' |
| |
| test_done |