[PATCH 4/5] Add tests for using symbolic refs as branch name aliases.
- From
Johan Herland <johan@herland.net>
- Date
- Oct 16, 2012, 13:44 UTC
- Message-ID
- <1350395094-11404-5-git-send-email-johan@herland.net>
- In-Reply-To
- <1350395094-11404-1-git-send-email-johan@herland.net>
A branch name alias is an alternative name for a branch, that is in most respects equivalent to using the proper branch name. It is implemented as a symbolic ref from the alias to the proper branch name.
Currently branch aliases work well up to the point where you try to delete them (with "git branch -d"), at which point they incorrectly delete the proper branch name instead of the alias. This is reflected in these tests, and will be fixed in a subsequent patch.
Signed-off-by: Johan Herland <johan@herland.net> --- t/t3220-symbolic-ref-as-branch-alias.sh | 53 +++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100755 t/t3220-symbolic-ref-as-branch-alias.sh
diff --git a/t/t3220-symbolic-ref-as-branch-alias.sh b/t/t3220-symbolic-ref-as-branch-alias.sh new file mode 100755 index 0000000..39f3a33 --- /dev/null +++ b/t/t3220-symbolic-ref-as-branch-alias.sh @@ -0,0 +1,53 @@ +#!/bin/sh + +test_description='Using a symbolic ref as a branch name alias + +This test uses refs/heads/alias as a symbolic ref to refs/heads/master, and +verifies that it works as a branch name alias, namely: + - commits on "master" are automatically reflected on "alias" + - creating or deleting "alias" does not affect "master" + - the "alias" is not broken by "git gc" +' +. ./test-lib.sh + +test_expect_success 'prepare a trivial repository' ' + echo Hello > A && + git add A && + git commit -m "Hello" && + git rev-parse --verify HEAD > expect +' + +test_expect_success 'create symref: refs/heads/alias -> refs/heads/master' ' + git symbolic-ref refs/heads/alias refs/heads/master && + git rev-parse --verify master > master && + git rev-parse --verify alias > alias && + test_cmp expect master && + test_cmp expect alias +' + +test_expect_success '"git gc" does not change "alias" symref' ' + git gc && + git rev-parse --verify master > master && + git rev-parse --verify alias > alias && + test_cmp expect master && + test_cmp expect alias +' + +test_expect_success 'commits are reflected through "alias" symref' ' + echo World >> A && + git commit -am "A" && + git rev-parse --verify HEAD > expect && + git rev-parse --verify master > master && + git rev-parse --verify alias > alias && + test_cmp expect master && + test_cmp expect alias +' + +test_expect_failure '"branch -d" deletes the "alias" symref' ' + git branch -d alias && + git rev-parse --verify master > master && + test_must_fail git rev-parse --verify alias && + test_cmp expect master +' + +test_done
-- 1.7.12.1.609.g5cd6968