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 <l...@diamand.org>
---
 t/lib-git-p4.sh                |  2 +-
 t/t9819-git-p4-case-folding.sh | 54 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 55 insertions(+), 1 deletion(-)
 create mode 100755 t/t9819-git-p4-case-folding.sh

diff --git a/t/lib-git-p4.sh b/t/lib-git-p4.sh
index 5aa8adc..7548225 100644
--- a/t/lib-git-p4.sh
+++ b/t/lib-git-p4.sh
@@ -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
index 0000000..78f1d0f
--- /dev/null
+++ b/t/t9819-git-p4-case-folding.sh
@@ -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
-- 
2.4.0.rc3.380.g8e2ddc7

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to