git/t/t5517-push-mirror.sh
Elia Pinto 5ee0d624fb t/t5517-push-mirror.sh: use the $( ... ) construct for command substitution
The Git CodingGuidelines prefer the $(...) construct for command
substitution instead of using the backquotes `...`.

The backquoted form is the traditional method for command
substitution, and is supported by POSIX.  However, all but the
simplest uses become complicated quickly.  In particular, embedded
command substitutions and/or the use of double quotes require
careful escaping with the backslash character.

The patch was generated by:

for _f in $(find . -name "*.sh")
do
	perl -i -pe 'BEGIN{undef $/;} s/`(.+?)`/\$(\1)/smg'  "${_f}"
done

and then carefully proof-read.

Signed-off-by: Elia Pinto <gitter.spiros@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2015-12-28 13:37:05 -08:00

269 lines
6.3 KiB
Bash
Executable File

#!/bin/sh
test_description='pushing to a mirror repository'
. ./test-lib.sh
D=$(pwd)
invert () {
if "$@"; then
return 1
else
return 0
fi
}
mk_repo_pair () {
rm -rf master mirror &&
mkdir mirror &&
(
cd mirror &&
git init &&
git config receive.denyCurrentBranch warn
) &&
mkdir master &&
(
cd master &&
git init &&
git remote add $1 up ../mirror
)
}
# BRANCH tests
test_expect_success 'push mirror creates new branches' '
mk_repo_pair &&
(
cd master &&
echo one >foo && git add foo && git commit -m one &&
git push --mirror up
) &&
master_master=$(cd master && git show-ref -s --verify refs/heads/master) &&
mirror_master=$(cd mirror && git show-ref -s --verify refs/heads/master) &&
test "$master_master" = "$mirror_master"
'
test_expect_success 'push mirror updates existing branches' '
mk_repo_pair &&
(
cd master &&
echo one >foo && git add foo && git commit -m one &&
git push --mirror up &&
echo two >foo && git add foo && git commit -m two &&
git push --mirror up
) &&
master_master=$(cd master && git show-ref -s --verify refs/heads/master) &&
mirror_master=$(cd mirror && git show-ref -s --verify refs/heads/master) &&
test "$master_master" = "$mirror_master"
'
test_expect_success 'push mirror force updates existing branches' '
mk_repo_pair &&
(
cd master &&
echo one >foo && git add foo && git commit -m one &&
git push --mirror up &&
echo two >foo && git add foo && git commit -m two &&
git push --mirror up &&
git reset --hard HEAD^
git push --mirror up
) &&
master_master=$(cd master && git show-ref -s --verify refs/heads/master) &&
mirror_master=$(cd mirror && git show-ref -s --verify refs/heads/master) &&
test "$master_master" = "$mirror_master"
'
test_expect_success 'push mirror removes branches' '
mk_repo_pair &&
(
cd master &&
echo one >foo && git add foo && git commit -m one &&
git branch remove master &&
git push --mirror up &&
git branch -D remove
git push --mirror up
) &&
(
cd mirror &&
invert git show-ref -s --verify refs/heads/remove
)
'
test_expect_success 'push mirror adds, updates and removes branches together' '
mk_repo_pair &&
(
cd master &&
echo one >foo && git add foo && git commit -m one &&
git branch remove master &&
git push --mirror up &&
git branch -D remove &&
git branch add master &&
echo two >foo && git add foo && git commit -m two &&
git push --mirror up
) &&
master_master=$(cd master && git show-ref -s --verify refs/heads/master) &&
master_add=$(cd master && git show-ref -s --verify refs/heads/add) &&
mirror_master=$(cd mirror && git show-ref -s --verify refs/heads/master) &&
mirror_add=$(cd mirror && git show-ref -s --verify refs/heads/add) &&
test "$master_master" = "$mirror_master" &&
test "$master_add" = "$mirror_add" &&
(
cd mirror &&
invert git show-ref -s --verify refs/heads/remove
)
'
# TAG tests
test_expect_success 'push mirror creates new tags' '
mk_repo_pair &&
(
cd master &&
echo one >foo && git add foo && git commit -m one &&
git tag -f tmaster master &&
git push --mirror up
) &&
master_master=$(cd master && git show-ref -s --verify refs/tags/tmaster) &&
mirror_master=$(cd mirror && git show-ref -s --verify refs/tags/tmaster) &&
test "$master_master" = "$mirror_master"
'
test_expect_success 'push mirror updates existing tags' '
mk_repo_pair &&
(
cd master &&
echo one >foo && git add foo && git commit -m one &&
git tag -f tmaster master &&
git push --mirror up &&
echo two >foo && git add foo && git commit -m two &&
git tag -f tmaster master &&
git push --mirror up
) &&
master_master=$(cd master && git show-ref -s --verify refs/tags/tmaster) &&
mirror_master=$(cd mirror && git show-ref -s --verify refs/tags/tmaster) &&
test "$master_master" = "$mirror_master"
'
test_expect_success 'push mirror force updates existing tags' '
mk_repo_pair &&
(
cd master &&
echo one >foo && git add foo && git commit -m one &&
git tag -f tmaster master &&
git push --mirror up &&
echo two >foo && git add foo && git commit -m two &&
git tag -f tmaster master &&
git push --mirror up &&
git reset --hard HEAD^
git tag -f tmaster master &&
git push --mirror up
) &&
master_master=$(cd master && git show-ref -s --verify refs/tags/tmaster) &&
mirror_master=$(cd mirror && git show-ref -s --verify refs/tags/tmaster) &&
test "$master_master" = "$mirror_master"
'
test_expect_success 'push mirror removes tags' '
mk_repo_pair &&
(
cd master &&
echo one >foo && git add foo && git commit -m one &&
git tag -f tremove master &&
git push --mirror up &&
git tag -d tremove
git push --mirror up
) &&
(
cd mirror &&
invert git show-ref -s --verify refs/tags/tremove
)
'
test_expect_success 'push mirror adds, updates and removes tags together' '
mk_repo_pair &&
(
cd master &&
echo one >foo && git add foo && git commit -m one &&
git tag -f tmaster master &&
git tag -f tremove master &&
git push --mirror up &&
git tag -d tremove &&
git tag tadd master &&
echo two >foo && git add foo && git commit -m two &&
git tag -f tmaster master &&
git push --mirror up
) &&
master_master=$(cd master && git show-ref -s --verify refs/tags/tmaster) &&
master_add=$(cd master && git show-ref -s --verify refs/tags/tadd) &&
mirror_master=$(cd mirror && git show-ref -s --verify refs/tags/tmaster) &&
mirror_add=$(cd mirror && git show-ref -s --verify refs/tags/tadd) &&
test "$master_master" = "$mirror_master" &&
test "$master_add" = "$mirror_add" &&
(
cd mirror &&
invert git show-ref -s --verify refs/tags/tremove
)
'
test_expect_success 'remote.foo.mirror adds and removes branches' '
mk_repo_pair --mirror &&
(
cd master &&
echo one >foo && git add foo && git commit -m one &&
git branch keep master &&
git branch remove master &&
git push up &&
git branch -D remove
git push up
) &&
(
cd mirror &&
git show-ref -s --verify refs/heads/keep &&
invert git show-ref -s --verify refs/heads/remove
)
'
test_expect_success 'remote.foo.mirror=no has no effect' '
mk_repo_pair &&
(
cd master &&
echo one >foo && git add foo && git commit -m one &&
git config --add remote.up.mirror no &&
git branch keep master &&
git push --mirror up &&
git branch -D keep &&
git push up :
) &&
(
cd mirror &&
git show-ref -s --verify refs/heads/keep
)
'
test_done