| #!/bin/sh | 
 |  | 
 | test_description='cd_to_toplevel' | 
 |  | 
 | TEST_PASSES_SANITIZE_LEAK=true | 
 | . ./test-lib.sh | 
 |  | 
 | EXEC_PATH="$(git --exec-path)" | 
 | test_have_prereq !MINGW || | 
 | case "$EXEC_PATH" in | 
 | [A-Za-z]:/*) | 
 | 	EXEC_PATH="/${EXEC_PATH%%:*}${EXEC_PATH#?:}" | 
 | 	;; | 
 | esac | 
 |  | 
 | test_cd_to_toplevel () { | 
 | 	test_expect_success $3 "$2" ' | 
 | 		( | 
 | 			cd '"'$1'"' && | 
 | 			PATH="$EXEC_PATH:$PATH" && | 
 | 			. git-sh-setup && | 
 | 			cd_to_toplevel && | 
 | 			[ "$(pwd -P)" = "$TOPLEVEL" ] | 
 | 		) | 
 | 	' | 
 | } | 
 |  | 
 | TOPLEVEL="$(pwd -P)/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 2>/dev/null | 
 | test_cd_to_toplevel symrepo 'at symbolic root' SYMLINKS | 
 |  | 
 | ln -s repo/sub/dir subdir-link 2>/dev/null | 
 | test_cd_to_toplevel subdir-link 'at symbolic subdir' SYMLINKS | 
 |  | 
 | cd repo | 
 | ln -s sub/dir internal-link 2>/dev/null | 
 | test_cd_to_toplevel internal-link 'at internal symbolic subdir' SYMLINKS | 
 |  | 
 | test_done |