You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
1.9 KiB
92 lines
1.9 KiB
#!/bin/sh |
|
|
|
test_description='send-pack --stdin tests' |
|
. ./test-lib.sh |
|
|
|
create_ref () { |
|
tree=$(git write-tree) && |
|
test_tick && |
|
commit=$(echo "$1" | git commit-tree $tree) && |
|
git update-ref "$1" $commit |
|
} |
|
|
|
clear_remote () { |
|
rm -rf remote.git && |
|
git init --bare remote.git |
|
} |
|
|
|
verify_push () { |
|
git rev-parse "$1" >expect && |
|
git --git-dir=remote.git rev-parse "${2:-$1}" >actual && |
|
test_cmp expect actual |
|
} |
|
|
|
test_expect_success 'setup refs' ' |
|
cat >refs <<-\EOF && |
|
refs/heads/A |
|
refs/heads/C |
|
refs/tags/D |
|
refs/heads/B |
|
refs/tags/E |
|
EOF |
|
for i in $(cat refs); do |
|
create_ref $i || return 1 |
|
done |
|
' |
|
|
|
# sanity check our setup |
|
test_expect_success 'refs on cmdline' ' |
|
clear_remote && |
|
git send-pack remote.git $(cat refs) && |
|
for i in $(cat refs); do |
|
verify_push $i || return 1 |
|
done |
|
' |
|
|
|
test_expect_success 'refs over stdin' ' |
|
clear_remote && |
|
git send-pack remote.git --stdin <refs && |
|
for i in $(cat refs); do |
|
verify_push $i || return 1 |
|
done |
|
' |
|
|
|
test_expect_success 'stdin lines are full refspecs' ' |
|
clear_remote && |
|
echo "A:other" >input && |
|
git send-pack remote.git --stdin <input && |
|
verify_push refs/heads/A refs/heads/other |
|
' |
|
|
|
test_expect_success 'stdin mixed with cmdline' ' |
|
clear_remote && |
|
echo A >input && |
|
git send-pack remote.git --stdin B <input && |
|
verify_push A && |
|
verify_push B |
|
' |
|
|
|
test_expect_success 'cmdline refs written in order' ' |
|
clear_remote && |
|
test_must_fail git send-pack remote.git A:foo B:foo && |
|
verify_push A foo |
|
' |
|
|
|
test_expect_success '--stdin refs come after cmdline' ' |
|
clear_remote && |
|
echo A:foo >input && |
|
test_must_fail git send-pack remote.git --stdin B:foo <input && |
|
verify_push B foo |
|
' |
|
|
|
test_expect_success 'refspecs and --mirror do not mix (cmdline)' ' |
|
clear_remote && |
|
test_must_fail git send-pack remote.git --mirror $(cat refs) |
|
' |
|
|
|
test_expect_success 'refspecs and --mirror do not mix (stdin)' ' |
|
clear_remote && |
|
test_must_fail git send-pack remote.git --mirror --stdin <refs |
|
' |
|
|
|
test_done
|
|
|