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