fe17fc0006
When we run scripted Porcelains, "git" potty has set up the $PATH by prepending $GIT_EXEC_PATH, the path given by "git --exec-path=$there $cmd", etc. already. Because of this, scripted Porcelains can dot-source shell script library like git-sh-setup with simple dot without specifying any path. t2300 however dot-sources git-sh-setup without adjusting $PATH like the real "git" potty does. This has not been a problem so far, but once git-sh-setup wants to rely on the $PATH adjustment, just like any scripted Porcelains already do, it would become one. It cannot for example dot-source another shell library without specifying the full path to it by prefixing $(git --exec-path). Signed-off-by: Junio C Hamano <gitster@pobox.com>
39 lines
771 B
Bash
Executable File
39 lines
771 B
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='cd_to_toplevel'
|
|
|
|
. ./test-lib.sh
|
|
|
|
test_cd_to_toplevel () {
|
|
test_expect_success $3 "$2" '
|
|
(
|
|
cd '"'$1'"' &&
|
|
PATH="$(git --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
|