44 lines
838 B
Bash
44 lines
838 B
Bash
|
#!/bin/sh
|
||
|
|
||
|
test_description='fetching via git:// using core.gitproxy'
|
||
|
. ./test-lib.sh
|
||
|
|
||
|
test_expect_success 'setup remote repo' '
|
||
|
git init remote &&
|
||
|
(cd remote &&
|
||
|
echo content >file &&
|
||
|
git add file &&
|
||
|
git commit -m one
|
||
|
)
|
||
|
'
|
||
|
|
||
|
cat >proxy <<'EOF'
|
||
|
#!/bin/sh
|
||
|
echo >&2 "proxying for $*"
|
||
|
cmd=`perl -e '
|
||
|
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;
|
||
|
'`
|
||
|
echo >&2 "Running '$cmd'"
|
||
|
exec $cmd
|
||
|
EOF
|
||
|
chmod +x proxy
|
||
|
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_done
|