git/t/t2300-cd-to-toplevel.sh
Marcel M. Cary dd6c1360b2 git-sh-setup: Fix scripts whose PWD is a symlink to a work-dir on OS X
On Mac OS X and possibly BSDs, /bin/pwd reads PWD from the environment if
available and shows the logical path by default rather than the physical
one.

Unset PWD before running /bin/pwd in both cd_to_toplevel and its test.

Still use the external /bin/pwd because in my Bash on Linux, the builtin
pwd prints the same result whether or not PWD is set.

Signed-off-by: Marcel M. Cary <marcel@oak.homeunix.org>
Tested-by: Wincent Colaiuta <win@wincent.com> (on Mac OS X 10.5.5)
Tested-by: Marcel Koeppen <git-dev@marzelpan.de> (on Mac OS X 10.5.6)
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-05 11:46:58 -08:00

38 lines
693 B
Bash
Executable file

#!/bin/sh
test_description='cd_to_toplevel'
. ./test-lib.sh
test_cd_to_toplevel () {
test_expect_success "$2" '
(
cd '"'$1'"' &&
. git-sh-setup &&
cd_to_toplevel &&
[ "$(unset PWD; /bin/pwd)" = "$TOPLEVEL" ]
)
'
}
TOPLEVEL="$(unset PWD; /bin/pwd)/repo"
mkdir -p repo/sub/dir
mv .git repo/
SUBDIRECTORY_OK=1
test_cd_to_toplevel repo 'at physical root'
test_cd_to_toplevel repo/sub/dir 'at physical subdir'
ln -s repo symrepo
test_cd_to_toplevel symrepo 'at symbolic root'
ln -s repo/sub/dir subdir-link
test_cd_to_toplevel subdir-link 'at symbolic subdir'
cd repo
ln -s sub/dir internal-link
test_cd_to_toplevel internal-link 'at internal symbolic subdir'
test_done