git p4 test: should honor symlink in p4 client root
authorPete Wyckoff <pw@padd.com>
Mon, 11 Mar 2013 21:45:28 +0000 (17:45 -0400)
committerJunio C Hamano <gitster@pobox.com>
Mon, 11 Mar 2013 22:02:59 +0000 (15:02 -0700)
This test fails when the p4 client root includes
a symlink. It complains:

Path /vol/bar/projects/foo/... is not under client root /p/foo

and dumps a traceback.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t9808-git-p4-chdir.sh
index 55c5e36a27fcde0b46f9c1f4ccded65fef49c1e9..4773296480c3c04aaef9c5aa62bf7e47fa107df2 100755 (executable)
@@ -56,6 +56,33 @@ test_expect_success 'p4 client root would be relative due to clone --dest' '
        )
 '
 
+# When the p4 client Root is a symlink, make sure chdir() does not use
+# getcwd() to convert it to a physical path.
+test_expect_failure SYMLINKS 'p4 client root symlink should stay symbolic' '
+       physical="$TRASH_DIRECTORY/physical" &&
+       symbolic="$TRASH_DIRECTORY/symbolic" &&
+       test_when_finished "rm -rf \"$physical\"" &&
+       test_when_finished "rm \"$symbolic\"" &&
+       mkdir -p "$physical" &&
+       ln -s "$physical" "$symbolic" &&
+       test_when_finished cleanup_git &&
+       (
+               P4CLIENT=client-sym &&
+               p4 client -i <<-EOF &&
+               Client: $P4CLIENT
+               Description: $P4CLIENT
+               Root: $symbolic
+               LineEnd: unix
+               View: //depot/... //$P4CLIENT/...
+               EOF
+               git p4 clone --dest="$git" //depot &&
+               cd "$git" &&
+               test_commit file2 &&
+               git config git-p4.skipSubmitEdit true &&
+               git p4 submit
+       )
+'
+
 test_expect_success 'kill p4d' '
        kill_p4d
 '