t0060: verify that real_path() works correctly with absolute paths
authorMichael Haggerty <mhagger@alum.mit.edu>
Thu, 6 Sep 2012 22:41:02 +0000 (00:41 +0200)
committerJunio C Hamano <gitster@pobox.com>
Thu, 6 Sep 2012 23:19:58 +0000 (16:19 -0700)
There is currently a bug: if passed an absolute top-level path that
doesn't exist (e.g., "/foo") it incorrectly interprets the path as a
relative path (e.g., returns "$(pwd)/foo"). So mark the test as
failing.

These tests are skipped on Windows because test-path-utils operates on
a DOS-style absolute path even if a POSIX style absolute path is
passed as argument.

Adjusted for Windows by: Johannes Sixt <j6t@kdbg.org>

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t0060-path-utils.sh
index fab5ea28b24a26e449469ffd022f01b2221c3218..3121691c6f34f03b9b17e9e0717283f60b5e2255 100755 (executable)
@@ -148,7 +148,17 @@ test_expect_success 'real path rejects the empty string' '
        test_must_fail test-path-utils real_path ""
 '
 
-test_expect_success SYMLINKS 'real path works as expected' '
+test_expect_failure POSIX 'real path works on absolute paths' '
+       nopath="hopefully-absent-path" &&
+       test "/" = "$(test-path-utils real_path "/")" &&
+       test "/$nopath" = "$(test-path-utils real_path "/$nopath")" &&
+       # Find an existing top-level directory for the remaining tests:
+       d=$(pwd -P | sed -e "s|^\([^/]*/[^/]*\)/.*|\1|") &&
+       test "$d" = "$(test-path-utils real_path "$d")" &&
+       test "$d/$nopath" = "$(test-path-utils real_path "$d/$nopath")"
+'
+
+test_expect_success SYMLINKS 'real path works on symlinks' '
        mkdir first &&
        ln -s ../.git first/.git &&
        mkdir second &&