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.
53 lines
1.1 KiB
53 lines
1.1 KiB
#!/bin/sh |
|
|
|
test_description='fetching via git:// using core.gitproxy' |
|
|
|
TEST_PASSES_SANITIZE_LEAK=true |
|
. ./test-lib.sh |
|
|
|
test_expect_success 'setup remote repo' ' |
|
git init remote && |
|
(cd remote && |
|
echo content >file && |
|
git add file && |
|
git commit -m one |
|
) |
|
' |
|
|
|
test_expect_success 'setup proxy script' ' |
|
write_script proxy-get-cmd "$PERL_PATH" <<-\EOF && |
|
read(STDIN, $buf, 4); |
|
my $n = hex($buf) - 4; |
|
read(STDIN, $buf, $n); |
|
my ($cmd, $other) = split /\0/, $buf; |
|
# drop absolute-path on repo name |
|
$cmd =~ s{ /}{ }; |
|
print $cmd; |
|
EOF |
|
|
|
write_script proxy <<-\EOF |
|
echo >&2 "proxying for $*" |
|
cmd=$(./proxy-get-cmd) |
|
echo >&2 "Running $cmd" |
|
exec $cmd |
|
EOF |
|
' |
|
|
|
test_expect_success 'setup local repo' ' |
|
git remote add fake git://example.com/remote && |
|
git config core.gitproxy ./proxy |
|
' |
|
|
|
test_expect_success 'fetch through proxy works' ' |
|
git fetch fake && |
|
echo one >expect && |
|
git log -1 --format=%s FETCH_HEAD >actual && |
|
test_cmp expect actual |
|
' |
|
|
|
test_expect_success 'funny hostnames are rejected before running proxy' ' |
|
test_must_fail git fetch git://-remote/repo.git 2>stderr && |
|
! grep "proxying for" stderr |
|
' |
|
|
|
test_done
|
|
|