summaryrefslogtreecommitdiff
path: root/t/t9804-git-p4-label.sh
diff options
context:
space:
mode:
authorLuke Diamand <luke@diamand.org>2012-01-19 09:52:29 +0000
committerJunio C Hamano <gitster@pobox.com>2012-01-20 14:47:46 -0800
commita080558ed77952b2394499531edc324eb2885d67 (patch)
treece703d5a5d7912288709d3a622cddb752db72dd9 /t/t9804-git-p4-label.sh
parent4139ecc2f0d18eef54666c660285136488b90c03 (diff)
downloadgit-a080558ed77952b2394499531edc324eb2885d67.tar.gz
git-p4: label import fails with multiple labels at the same changelistld/git-p4-branches-and-labels
git-p4 has an array of changelists with one label per changelist. But you can have multiple labels on a single changelist and so this code fails. Add a test case demonstrating the problem. Signed-off-by: Luke Diamand <luke@diamand.org> Acked-by: Pete Wyckoff <pw@padd.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t9804-git-p4-label.sh')
-rwxr-xr-xt/t9804-git-p4-label.sh41
1 files changed, 41 insertions, 0 deletions
diff --git a/t/t9804-git-p4-label.sh b/t/t9804-git-p4-label.sh
index 5fa2bcfa97..80d01ea438 100755
--- a/t/t9804-git-p4-label.sh
+++ b/t/t9804-git-p4-label.sh
@@ -65,6 +65,47 @@ test_expect_success 'basic p4 labels' '
)
'
+# Test some label corner cases:
+#
+# - two tags on the same file; both should be available
+# - a tag that is only on one file; this kind of tag
+# cannot be imported (at least not easily).
+
+test_expect_failure 'two labels on the same changelist' '
+ test_when_finished cleanup_git &&
+ (
+ cd "$cli" &&
+ mkdir -p main &&
+
+ p4 edit main/f1 main/f2 &&
+ echo "hello world" >main/f1 &&
+ echo "not in the tag" >main/f2 &&
+ p4 submit -d "main/f[12]: testing two labels" &&
+
+ p4 tag -l tag_f1_1 main/... &&
+ p4 tag -l tag_f1_2 main/... &&
+
+ p4 labels ... &&
+
+ "$GITP4" clone --dest="$git" --detect-labels //depot@all &&
+ cd "$git" &&
+
+ git tag | grep tag_f1 &&
+ git tag | grep -q tag_f1_1 &&
+ git tag | grep -q tag_f1_2 &&
+
+ cd main &&
+
+ git checkout tag_tag_f1_1 &&
+ ls &&
+ test -f f1 &&
+
+ git checkout tag_tag_f1_2 &&
+ ls &&
+ test -f f1
+ )
+'
+
test_expect_success 'kill p4d' '
kill_p4d
'