1#!/bin/sh 2 3test_description='test GIT_CEILING_DIRECTORIES' 4 5TEST_PASSES_SANITIZE_LEAK=true 6. ./test-lib.sh 7 8test_prefix() { 9 test_expect_success "$1" \ 10 "test '$2' = \"\$(git rev-parse --show-prefix)\"" 11} 12 13test_fail() { 14 test_expect_success "$1: prefix" ' 15 test_expect_code 128 git rev-parse --show-prefix 16 ' 17} 18 19TRASH_ROOT="$PWD" 20ROOT_PARENT=$(dirname "$TRASH_ROOT") 21 22 23unset GIT_CEILING_DIRECTORIES 24test_prefix no_ceil "" 25 26export GIT_CEILING_DIRECTORIES 27 28GIT_CEILING_DIRECTORIES="" 29test_prefix ceil_empty "" 30 31GIT_CEILING_DIRECTORIES="$ROOT_PARENT" 32test_prefix ceil_at_parent "" 33 34GIT_CEILING_DIRECTORIES="$ROOT_PARENT/" 35test_prefix ceil_at_parent_slash "" 36 37GIT_CEILING_DIRECTORIES="$TRASH_ROOT" 38test_prefix ceil_at_trash "" 39 40GIT_CEILING_DIRECTORIES="$TRASH_ROOT/" 41test_prefix ceil_at_trash_slash "" 42 43GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub" 44test_prefix ceil_at_sub "" 45 46GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub/" 47test_prefix ceil_at_sub_slash "" 48 49if test_have_prereq SYMLINKS 50then 51 ln -s sub top 52fi 53 54mkdir -p sub/dir || exit 1 55cd sub/dir || exit 1 56 57unset GIT_CEILING_DIRECTORIES 58test_prefix subdir_no_ceil "sub/dir/" 59 60export GIT_CEILING_DIRECTORIES 61 62GIT_CEILING_DIRECTORIES="" 63test_prefix subdir_ceil_empty "sub/dir/" 64 65GIT_CEILING_DIRECTORIES="$TRASH_ROOT" 66test_fail subdir_ceil_at_trash 67 68GIT_CEILING_DIRECTORIES="$TRASH_ROOT/" 69test_fail subdir_ceil_at_trash_slash 70 71GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub" 72test_fail subdir_ceil_at_sub 73 74GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub/" 75test_fail subdir_ceil_at_sub_slash 76 77if test_have_prereq SYMLINKS 78then 79 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/top" 80 test_fail subdir_ceil_at_top 81 GIT_CEILING_DIRECTORIES="$TRASH_ROOT/top/" 82 test_fail subdir_ceil_at_top_slash 83 84 GIT_CEILING_DIRECTORIES=":$TRASH_ROOT/top" 85 test_prefix subdir_ceil_at_top_no_resolve "sub/dir/" 86 GIT_CEILING_DIRECTORIES=":$TRASH_ROOT/top/" 87 test_prefix subdir_ceil_at_top_slash_no_resolve "sub/dir/" 88fi 89 90GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub/dir" 91test_prefix subdir_ceil_at_subdir "sub/dir/" 92 93GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub/dir/" 94test_prefix subdir_ceil_at_subdir_slash "sub/dir/" 95 96 97GIT_CEILING_DIRECTORIES="$TRASH_ROOT/su" 98test_prefix subdir_ceil_at_su "sub/dir/" 99 100GIT_CEILING_DIRECTORIES="$TRASH_ROOT/su/" 101test_prefix subdir_ceil_at_su_slash "sub/dir/" 102 103GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub/di" 104test_prefix subdir_ceil_at_sub_di "sub/dir/" 105 106GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub/di" 107test_prefix subdir_ceil_at_sub_di_slash "sub/dir/" 108 109GIT_CEILING_DIRECTORIES="$TRASH_ROOT/subdi" 110test_prefix subdir_ceil_at_subdi "sub/dir/" 111 112GIT_CEILING_DIRECTORIES="$TRASH_ROOT/subdi" 113test_prefix subdir_ceil_at_subdi_slash "sub/dir/" 114 115 116GIT_CEILING_DIRECTORIES="/foo:$TRASH_ROOT/sub" 117test_fail second_of_two 118 119GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub:/bar" 120test_fail first_of_two 121 122GIT_CEILING_DIRECTORIES="/foo:$TRASH_ROOT/sub:/bar" 123test_fail second_of_three 124 125 126GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub" 127GIT_DIR=../../.git 128export GIT_DIR 129test_prefix git_dir_specified "" 130unset GIT_DIR 131 132 133cd ../.. || exit 1 134mkdir -p s/d || exit 1 135cd s/d || exit 1 136 137unset GIT_CEILING_DIRECTORIES 138test_prefix sd_no_ceil "s/d/" 139 140export GIT_CEILING_DIRECTORIES 141 142GIT_CEILING_DIRECTORIES="" 143test_prefix sd_ceil_empty "s/d/" 144 145GIT_CEILING_DIRECTORIES="$TRASH_ROOT" 146test_fail sd_ceil_at_trash 147 148GIT_CEILING_DIRECTORIES="$TRASH_ROOT/" 149test_fail sd_ceil_at_trash_slash 150 151GIT_CEILING_DIRECTORIES="$TRASH_ROOT/s" 152test_fail sd_ceil_at_s 153 154GIT_CEILING_DIRECTORIES="$TRASH_ROOT/s/" 155test_fail sd_ceil_at_s_slash 156 157GIT_CEILING_DIRECTORIES="$TRASH_ROOT/s/d" 158test_prefix sd_ceil_at_sd "s/d/" 159 160GIT_CEILING_DIRECTORIES="$TRASH_ROOT/s/d/" 161test_prefix sd_ceil_at_sd_slash "s/d/" 162 163 164GIT_CEILING_DIRECTORIES="$TRASH_ROOT/su" 165test_prefix sd_ceil_at_su "s/d/" 166 167GIT_CEILING_DIRECTORIES="$TRASH_ROOT/su/" 168test_prefix sd_ceil_at_su_slash "s/d/" 169 170GIT_CEILING_DIRECTORIES="$TRASH_ROOT/s/di" 171test_prefix sd_ceil_at_s_di "s/d/" 172 173GIT_CEILING_DIRECTORIES="$TRASH_ROOT/s/di" 174test_prefix sd_ceil_at_s_di_slash "s/d/" 175 176GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sdi" 177test_prefix sd_ceil_at_sdi "s/d/" 178 179GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sdi" 180test_prefix sd_ceil_at_sdi_slash "s/d/" 181 182 183test_done 184