-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add tests for git push'es mirror mode
Add some tests for git push --mirror mode. Signed-off-by: Andy Whitcroft <apw@shadowen.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
- Loading branch information
Andy Whitcroft
authored and
Junio C Hamano
committed
Nov 13, 2007
1 parent
94c89ba
commit 8e806ad
Showing
1 changed file
with
228 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,228 @@ | ||
#!/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 | ||
) && | ||
mkdir master && | ||
( | ||
cd master && | ||
git init && | ||
git config remote.up.url ../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_done |