|  | #!/bin/sh | 
|  |  | 
|  | test_description='test GIT_CEILING_DIRECTORIES' | 
|  |  | 
|  | TEST_PASSES_SANITIZE_LEAK=true | 
|  | . ./test-lib.sh | 
|  |  | 
|  | test_prefix() { | 
|  | test_expect_success "$1" \ | 
|  | "test '$2' = \"\$(git rev-parse --show-prefix)\"" | 
|  | } | 
|  |  | 
|  | test_fail() { | 
|  | test_expect_success "$1: prefix" ' | 
|  | test_expect_code 128 git rev-parse --show-prefix | 
|  | ' | 
|  | } | 
|  |  | 
|  | TRASH_ROOT="$PWD" | 
|  | ROOT_PARENT=$(dirname "$TRASH_ROOT") | 
|  |  | 
|  |  | 
|  | unset GIT_CEILING_DIRECTORIES | 
|  | test_prefix no_ceil "" | 
|  |  | 
|  | export GIT_CEILING_DIRECTORIES | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="" | 
|  | test_prefix ceil_empty "" | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$ROOT_PARENT" | 
|  | test_prefix ceil_at_parent "" | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$ROOT_PARENT/" | 
|  | test_prefix ceil_at_parent_slash "" | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT" | 
|  | test_prefix ceil_at_trash "" | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT/" | 
|  | test_prefix ceil_at_trash_slash "" | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub" | 
|  | test_prefix ceil_at_sub "" | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub/" | 
|  | test_prefix ceil_at_sub_slash "" | 
|  |  | 
|  | if test_have_prereq SYMLINKS | 
|  | then | 
|  | ln -s sub top | 
|  | fi | 
|  |  | 
|  | mkdir -p sub/dir || exit 1 | 
|  | cd sub/dir || exit 1 | 
|  |  | 
|  | unset GIT_CEILING_DIRECTORIES | 
|  | test_prefix subdir_no_ceil "sub/dir/" | 
|  |  | 
|  | export GIT_CEILING_DIRECTORIES | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="" | 
|  | test_prefix subdir_ceil_empty "sub/dir/" | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT" | 
|  | test_fail subdir_ceil_at_trash | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT/" | 
|  | test_fail subdir_ceil_at_trash_slash | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub" | 
|  | test_fail subdir_ceil_at_sub | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub/" | 
|  | test_fail subdir_ceil_at_sub_slash | 
|  |  | 
|  | if test_have_prereq SYMLINKS | 
|  | then | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT/top" | 
|  | test_fail subdir_ceil_at_top | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT/top/" | 
|  | test_fail subdir_ceil_at_top_slash | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES=":$TRASH_ROOT/top" | 
|  | test_prefix subdir_ceil_at_top_no_resolve "sub/dir/" | 
|  | GIT_CEILING_DIRECTORIES=":$TRASH_ROOT/top/" | 
|  | test_prefix subdir_ceil_at_top_slash_no_resolve "sub/dir/" | 
|  | fi | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub/dir" | 
|  | test_prefix subdir_ceil_at_subdir "sub/dir/" | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub/dir/" | 
|  | test_prefix subdir_ceil_at_subdir_slash "sub/dir/" | 
|  |  | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT/su" | 
|  | test_prefix subdir_ceil_at_su "sub/dir/" | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT/su/" | 
|  | test_prefix subdir_ceil_at_su_slash "sub/dir/" | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub/di" | 
|  | test_prefix subdir_ceil_at_sub_di "sub/dir/" | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub/di" | 
|  | test_prefix subdir_ceil_at_sub_di_slash "sub/dir/" | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT/subdi" | 
|  | test_prefix subdir_ceil_at_subdi "sub/dir/" | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT/subdi" | 
|  | test_prefix subdir_ceil_at_subdi_slash "sub/dir/" | 
|  |  | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="/foo:$TRASH_ROOT/sub" | 
|  | test_fail second_of_two | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub:/bar" | 
|  | test_fail first_of_two | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="/foo:$TRASH_ROOT/sub:/bar" | 
|  | test_fail second_of_three | 
|  |  | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub" | 
|  | GIT_DIR=../../.git | 
|  | export GIT_DIR | 
|  | test_prefix git_dir_specified "" | 
|  | unset GIT_DIR | 
|  |  | 
|  |  | 
|  | cd ../.. || exit 1 | 
|  | mkdir -p s/d || exit 1 | 
|  | cd s/d || exit 1 | 
|  |  | 
|  | unset GIT_CEILING_DIRECTORIES | 
|  | test_prefix sd_no_ceil "s/d/" | 
|  |  | 
|  | export GIT_CEILING_DIRECTORIES | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="" | 
|  | test_prefix sd_ceil_empty "s/d/" | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT" | 
|  | test_fail sd_ceil_at_trash | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT/" | 
|  | test_fail sd_ceil_at_trash_slash | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT/s" | 
|  | test_fail sd_ceil_at_s | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT/s/" | 
|  | test_fail sd_ceil_at_s_slash | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT/s/d" | 
|  | test_prefix sd_ceil_at_sd "s/d/" | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT/s/d/" | 
|  | test_prefix sd_ceil_at_sd_slash "s/d/" | 
|  |  | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT/su" | 
|  | test_prefix sd_ceil_at_su "s/d/" | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT/su/" | 
|  | test_prefix sd_ceil_at_su_slash "s/d/" | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT/s/di" | 
|  | test_prefix sd_ceil_at_s_di "s/d/" | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT/s/di" | 
|  | test_prefix sd_ceil_at_s_di_slash "s/d/" | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sdi" | 
|  | test_prefix sd_ceil_at_sdi "s/d/" | 
|  |  | 
|  | GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sdi" | 
|  | test_prefix sd_ceil_at_sdi_slash "s/d/" | 
|  |  | 
|  |  | 
|  | test_done |