1#!/bin/sh
   2test_description='test GIT_CEILING_DIRECTORIES'
   4. ./test-lib.sh
   5test_prefix() {
   7        test_expect_success "$1" \
   8        "test '$2' = \"\$(git rev-parse --show-prefix)\""
   9}
  10test_fail() {
  12        test_expect_success "$1: prefix" '
  13                test_expect_code 128 git rev-parse --show-prefix
  14        '
  15}
  16TRASH_ROOT="$PWD"
  18ROOT_PARENT=$(dirname "$TRASH_ROOT")
  19unset GIT_CEILING_DIRECTORIES
  22test_prefix no_ceil ""
  23export GIT_CEILING_DIRECTORIES
  25GIT_CEILING_DIRECTORIES=""
  27test_prefix ceil_empty ""
  28GIT_CEILING_DIRECTORIES="$ROOT_PARENT"
  30test_prefix ceil_at_parent ""
  31GIT_CEILING_DIRECTORIES="$ROOT_PARENT/"
  33test_prefix ceil_at_parent_slash ""
  34GIT_CEILING_DIRECTORIES="$TRASH_ROOT"
  36test_prefix ceil_at_trash ""
  37GIT_CEILING_DIRECTORIES="$TRASH_ROOT/"
  39test_prefix ceil_at_trash_slash ""
  40GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub"
  42test_prefix ceil_at_sub ""
  43GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub/"
  45test_prefix ceil_at_sub_slash ""
  46if test_have_prereq SYMLINKS
  48then
  49        ln -s sub top
  50fi
  51mkdir -p sub/dir || exit 1
  53cd sub/dir || exit 1
  54unset GIT_CEILING_DIRECTORIES
  56test_prefix subdir_no_ceil "sub/dir/"
  57export GIT_CEILING_DIRECTORIES
  59GIT_CEILING_DIRECTORIES=""
  61test_prefix subdir_ceil_empty "sub/dir/"
  62GIT_CEILING_DIRECTORIES="$TRASH_ROOT"
  64test_fail subdir_ceil_at_trash
  65GIT_CEILING_DIRECTORIES="$TRASH_ROOT/"
  67test_fail subdir_ceil_at_trash_slash
  68GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub"
  70test_fail subdir_ceil_at_sub
  71GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub/"
  73test_fail subdir_ceil_at_sub_slash
  74if test_have_prereq SYMLINKS
  76then
  77        GIT_CEILING_DIRECTORIES="$TRASH_ROOT/top"
  78        test_fail subdir_ceil_at_top
  79        GIT_CEILING_DIRECTORIES="$TRASH_ROOT/top/"
  80        test_fail subdir_ceil_at_top_slash
  81        GIT_CEILING_DIRECTORIES=":$TRASH_ROOT/top"
  83        test_prefix subdir_ceil_at_top_no_resolve "sub/dir/"
  84        GIT_CEILING_DIRECTORIES=":$TRASH_ROOT/top/"
  85        test_prefix subdir_ceil_at_top_slash_no_resolve "sub/dir/"
  86fi
  87GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub/dir"
  89test_prefix subdir_ceil_at_subdir "sub/dir/"
  90GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub/dir/"
  92test_prefix subdir_ceil_at_subdir_slash "sub/dir/"
  93GIT_CEILING_DIRECTORIES="$TRASH_ROOT/su"
  96test_prefix subdir_ceil_at_su "sub/dir/"
  97GIT_CEILING_DIRECTORIES="$TRASH_ROOT/su/"
  99test_prefix subdir_ceil_at_su_slash "sub/dir/"
 100GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub/di"
 102test_prefix subdir_ceil_at_sub_di "sub/dir/"
 103GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub/di"
 105test_prefix subdir_ceil_at_sub_di_slash "sub/dir/"
 106GIT_CEILING_DIRECTORIES="$TRASH_ROOT/subdi"
 108test_prefix subdir_ceil_at_subdi "sub/dir/"
 109GIT_CEILING_DIRECTORIES="$TRASH_ROOT/subdi"
 111test_prefix subdir_ceil_at_subdi_slash "sub/dir/"
 112GIT_CEILING_DIRECTORIES="/foo:$TRASH_ROOT/sub"
 115test_fail second_of_two
 116GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub:/bar"
 118test_fail first_of_two
 119GIT_CEILING_DIRECTORIES="/foo:$TRASH_ROOT/sub:/bar"
 121test_fail second_of_three
 122GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub"
 125GIT_DIR=../../.git
 126export GIT_DIR
 127test_prefix git_dir_specified ""
 128unset GIT_DIR
 129cd ../.. || exit 1
 132mkdir -p s/d || exit 1
 133cd s/d || exit 1
 134unset GIT_CEILING_DIRECTORIES
 136test_prefix sd_no_ceil "s/d/"
 137export GIT_CEILING_DIRECTORIES
 139GIT_CEILING_DIRECTORIES=""
 141test_prefix sd_ceil_empty "s/d/"
 142GIT_CEILING_DIRECTORIES="$TRASH_ROOT"
 144test_fail sd_ceil_at_trash
 145GIT_CEILING_DIRECTORIES="$TRASH_ROOT/"
 147test_fail sd_ceil_at_trash_slash
 148GIT_CEILING_DIRECTORIES="$TRASH_ROOT/s"
 150test_fail sd_ceil_at_s
 151GIT_CEILING_DIRECTORIES="$TRASH_ROOT/s/"
 153test_fail sd_ceil_at_s_slash
 154GIT_CEILING_DIRECTORIES="$TRASH_ROOT/s/d"
 156test_prefix sd_ceil_at_sd "s/d/"
 157GIT_CEILING_DIRECTORIES="$TRASH_ROOT/s/d/"
 159test_prefix sd_ceil_at_sd_slash "s/d/"
 160GIT_CEILING_DIRECTORIES="$TRASH_ROOT/su"
 163test_prefix sd_ceil_at_su "s/d/"
 164GIT_CEILING_DIRECTORIES="$TRASH_ROOT/su/"
 166test_prefix sd_ceil_at_su_slash "s/d/"
 167GIT_CEILING_DIRECTORIES="$TRASH_ROOT/s/di"
 169test_prefix sd_ceil_at_s_di "s/d/"
 170GIT_CEILING_DIRECTORIES="$TRASH_ROOT/s/di"
 172test_prefix sd_ceil_at_s_di_slash "s/d/"
 173GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sdi"
 175test_prefix sd_ceil_at_sdi "s/d/"
 176GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sdi"
 178test_prefix sd_ceil_at_sdi_slash "s/d/"
 179test_done