diff options
author | Pete Wyckoff <pw@padd.com> | 2013-01-14 19:46:55 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-01-15 09:46:29 -0800 |
commit | 46738bd7e9209e9a636dfddb46e32fd606386d81 (patch) | |
tree | 6ce5d607d735fa1b872e423c2dbba6a9204dc1d4 /t | |
parent | Git 1.8.1.1 (diff) | |
download | tgif-46738bd7e9209e9a636dfddb46e32fd606386d81.tar.xz |
git p4: test sync/clone --branch behavior
Add failing tests to document behavior when there are multiple p4
branches, as created using the --branch option. In particular:
Using clone --branch populates the specified branch correctly, but
dies with an error when trying to checkout master.
Calling sync without a master branch dies with an error looking for
master. When there are two or more branches, a sync does
nothing due to branch detection code, but that is expected.
Using sync --branch to try to update just a particular branch
updates no branch, but appears to succeed.
Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't')
-rwxr-xr-x | t/t9806-git-p4-options.sh | 53 |
1 files changed, 49 insertions, 4 deletions
diff --git a/t/t9806-git-p4-options.sh b/t/t9806-git-p4-options.sh index fa40cc8bb5..844aae048e 100755 --- a/t/t9806-git-p4-options.sh +++ b/t/t9806-git-p4-options.sh @@ -27,14 +27,59 @@ test_expect_success 'clone no --git-dir' ' test_must_fail git p4 clone --git-dir=xx //depot ' -test_expect_success 'clone --branch' ' +test_expect_failure 'clone --branch should checkout master' ' git p4 clone --branch=refs/remotes/p4/sb --dest="$git" //depot && test_when_finished cleanup_git && ( cd "$git" && - git ls-files >files && - test_line_count = 0 files && - test_path_is_file .git/refs/remotes/p4/sb + git rev-parse refs/remotes/p4/sb >sb && + git rev-parse refs/heads/master >master && + test_cmp sb master && + git rev-parse HEAD >head && + test_cmp sb head + ) +' + +test_expect_failure 'sync when branch is not called master should work' ' + git p4 clone --branch=refs/remotes/p4/sb --dest="$git" //depot@2 && + test_when_finished cleanup_git && + ( + cd "$git" && + git p4 sync && + git show -s --format=%s refs/remotes/p4/sb >show && + grep "change 3" show + ) +' + +# engages --detect-branches code, which will do filename filtering so +# no sync to either b1 or b2 +test_expect_success 'sync when two branches but no master should noop' ' + test_when_finished cleanup_git && + ( + cd "$git" && + git init && + git p4 sync --branch=refs/remotes/p4/b1 //depot@2 && + git p4 sync --branch=refs/remotes/p4/b2 //depot@2 && + git p4 sync && + git show -s --format=%s refs/remotes/p4/b1 >show && + grep "Initial import" show && + git show -s --format=%s refs/remotes/p4/b2 >show && + grep "Initial import" show + ) +' + +test_expect_failure 'sync --branch updates specified branch' ' + test_when_finished cleanup_git && + ( + cd "$git" && + git init && + git p4 sync --branch=refs/remotes/p4/b1 //depot@2 && + git p4 sync --branch=refs/remotes/p4/b2 //depot@2 && + git p4 sync --branch=refs/remotes/p4/b2 && + git show -s --format=%s refs/remotes/p4/b1 >show && + grep "Initial import" show && + git show -s --format=%s refs/remotes/p4/b2 >show && + grep "change 3" show ) ' |