about summary refs log tree commit diff
path: root/third_party/git/t/t5410-receive-pack-alternates.sh
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/git/t/t5410-receive-pack-alternates.sh')
-rwxr-xr-xthird_party/git/t/t5410-receive-pack-alternates.sh41
1 files changed, 41 insertions, 0 deletions
diff --git a/third_party/git/t/t5410-receive-pack-alternates.sh b/third_party/git/t/t5410-receive-pack-alternates.sh
new file mode 100755
index 000000000000..f00d0da8606d
--- /dev/null
+++ b/third_party/git/t/t5410-receive-pack-alternates.sh
@@ -0,0 +1,41 @@
+#!/bin/sh
+
+test_description='git receive-pack with alternate ref filtering'
+
+. ./test-lib.sh
+
+test_expect_success 'setup' '
+	test_commit base &&
+	git clone -s --bare . fork &&
+	git checkout -b public/branch master &&
+	test_commit public &&
+	git checkout -b private/branch master &&
+	test_commit private
+'
+
+extract_haves () {
+	depacketize | perl -lne '/^(\S+) \.have/ and print $1'
+}
+
+test_expect_success 'with core.alternateRefsCommand' '
+	write_script fork/alternate-refs <<-\EOF &&
+		git --git-dir="$1" for-each-ref \
+			--format="%(objectname)" \
+			refs/heads/public/
+	EOF
+	test_config -C fork core.alternateRefsCommand ./alternate-refs &&
+	git rev-parse public/branch >expect &&
+	printf "0000" | git receive-pack fork >actual &&
+	extract_haves <actual >actual.haves &&
+	test_cmp expect actual.haves
+'
+
+test_expect_success 'with core.alternateRefsPrefixes' '
+	test_config -C fork core.alternateRefsPrefixes "refs/heads/private" &&
+	git rev-parse private/branch >expect &&
+	printf "0000" | git receive-pack fork >actual &&
+	extract_haves <actual >actual.haves &&
+	test_cmp expect actual.haves
+'
+
+test_done