]> granicus.if.org Git - git/commitdiff
git-p4: add failing tests for case-folding p4d
authorLuke Diamand <luke@diamand.org>
Tue, 28 Apr 2015 09:08:01 +0000 (10:08 +0100)
committerJunio C Hamano <gitster@pobox.com>
Tue, 28 Apr 2015 19:19:43 +0000 (12:19 -0700)
When p4d runs on a case-folding OS, git-p4 can end up getting
very confused. This adds failing tests to demonstrate the problem.

Signed-off-by: Luke Diamand <luke@diamand.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/lib-git-p4.sh
t/t9819-git-p4-case-folding.sh [new file with mode: 0755]

index 5aa8adcf9c8a53b8a643a37b9474886448f6a45b..75482254a3e72a65640c6805abd028e2b7bd0e2f 100644 (file)
@@ -69,7 +69,7 @@ start_p4d() {
        (
                cd "$db" &&
                {
-                       p4d -q -p $P4DPORT &
+                       p4d -q -p $P4DPORT "$@" &
                        echo $! >"$pidfile"
                }
        ) &&
diff --git a/t/t9819-git-p4-case-folding.sh b/t/t9819-git-p4-case-folding.sh
new file mode 100755 (executable)
index 0000000..78f1d0f
--- /dev/null
@@ -0,0 +1,54 @@
+#!/bin/sh
+
+test_description='interaction with P4 case-folding'
+
+. ./lib-git-p4.sh
+
+test_expect_success 'start p4d with case folding enabled' '
+       start_p4d -C1
+'
+
+test_expect_success 'Create a repo, name is lowercase' '
+       (
+               client_view "//depot/... //client/..." &&
+               cd "$cli" &&
+               mkdir -p lc UC &&
+               >lc/file.txt && >UC/file.txt &&
+               p4 add lc/file.txt UC/file.txt &&
+               p4 submit -d "Add initial lc and UC repos"
+       )
+'
+
+test_expect_success 'Check p4 is in case-folding mode' '
+       (
+               cd "$cli" &&
+               >lc/FILE.TXT &&
+               p4 add lc/FILE.TXT &&
+               test_must_fail p4 submit -d "Cannot add file differing only in case" lc/FILE.TXT
+       )
+'
+
+# Check we created the repo properly
+test_expect_success 'Clone lc repo using lc name' '
+       git p4 clone //depot/lc/... &&
+       test_path_is_file lc/file.txt &&
+       git p4 clone //depot/UC/... &&
+       test_path_is_file UC/file.txt
+'
+
+# The clone should fail, since there is no repo called LC, but because
+# we have case-insensitive p4d enabled, it appears to go ahead and work,
+# but leaves an empty git repo in place.
+test_expect_failure 'Clone lc repo using uc name' '
+       test_must_fail git p4 clone //depot/LC/...
+'
+
+test_expect_failure 'Clone UC repo with lc name' '
+       test_must_fail git p4 clone //depot/uc/...
+'
+
+test_expect_success 'kill p4d' '
+       kill_p4d
+'
+
+test_done