Skip to content

Commit fd4e188

Browse files
pcloudsgitster
authored andcommitted
t1510: setup case #22
Signed-off-by: Nguyễn Thái Ngọc Duy <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 21b3466 commit fd4e188

File tree

1 file changed

+337
-0
lines changed

1 file changed

+337
-0
lines changed

t/t1510-repo-setup.sh

Lines changed: 337 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3084,4 +3084,341 @@ EOF
30843084
test_repo 21/sub
30853085
'
30863086

3087+
#
3088+
# case #22.1
3089+
#
3090+
############################################################
3091+
#
3092+
# Input:
3093+
#
3094+
# - GIT_WORK_TREE is not set
3095+
# - GIT_DIR is set
3096+
# - core.worktree is set
3097+
# - .git is a directory
3098+
# - cwd is inside .git
3099+
#
3100+
# Output:
3101+
#
3102+
# bare attribute is ignored
3103+
#
3104+
# - worktree is at core.worktree
3105+
# - cwd is at worktree root
3106+
# - prefix is calculated
3107+
# - git_dir is at $GIT_DIR
3108+
# - cwd can be outside worktree
3109+
3110+
test_expect_success '#22.1: setup' '
3111+
unset GIT_DIR GIT_WORK_TREE &&
3112+
mkdir 22 &&
3113+
cd 22 &&
3114+
git init &&
3115+
mkdir .git/sub .git/wt .git/wt/sub &&
3116+
cd ..
3117+
'
3118+
3119+
test_expect_success '#22.1: GIT_DIR(rel), core.worktree=. at .git' '
3120+
cat >22/.git/expected <<EOF &&
3121+
setup: git_dir: .
3122+
setup: worktree: $TRASH_DIRECTORY/22/.git
3123+
setup: cwd: $TRASH_DIRECTORY/22/.git
3124+
setup: prefix: (null)
3125+
EOF
3126+
git config --file="$TRASH_DIRECTORY/22/.git/config" core.worktree "$TRASH_DIRECTORY/22/.git" &&
3127+
test_repo 22/.git .
3128+
'
3129+
3130+
test_expect_success '#22.1: GIT_DIR(rel), core.worktree=.(rel) at .git' '
3131+
cat >22/.git/expected <<EOF &&
3132+
setup: git_dir: .
3133+
setup: worktree: $TRASH_DIRECTORY/22/.git
3134+
setup: cwd: $TRASH_DIRECTORY/22/.git
3135+
setup: prefix: (null)
3136+
EOF
3137+
git config --file="$TRASH_DIRECTORY/22/.git/config" core.worktree . &&
3138+
test_repo 22/.git .
3139+
'
3140+
3141+
test_expect_success '#22.1: GIT_DIR, core.worktree=. at .git' '
3142+
cat >22/.git/expected <<EOF &&
3143+
setup: git_dir: $TRASH_DIRECTORY/22/.git
3144+
setup: worktree: $TRASH_DIRECTORY/22/.git
3145+
setup: cwd: $TRASH_DIRECTORY/22/.git
3146+
setup: prefix: (null)
3147+
EOF
3148+
git config --file="$TRASH_DIRECTORY/22/.git/config" core.worktree "$TRASH_DIRECTORY/22/.git" &&
3149+
test_repo 22/.git "$TRASH_DIRECTORY/22/.git"
3150+
'
3151+
3152+
test_expect_success '#22.1: GIT_DIR, core.worktree=.(rel) at root' '
3153+
cat >22/.git/expected <<EOF &&
3154+
setup: git_dir: $TRASH_DIRECTORY/22/.git
3155+
setup: worktree: $TRASH_DIRECTORY/22/.git
3156+
setup: cwd: $TRASH_DIRECTORY/22/.git
3157+
setup: prefix: (null)
3158+
EOF
3159+
git config --file="$TRASH_DIRECTORY/22/.git/config" core.worktree . &&
3160+
test_repo 22/.git "$TRASH_DIRECTORY/22/.git"
3161+
'
3162+
3163+
test_expect_failure '#22.1: GIT_DIR(rel), core.worktree=. in .git/sub' '
3164+
cat >22/.git/sub/expected <<EOF &&
3165+
setup: git_dir: $TRASH_DIRECTORY/22/.git
3166+
setup: worktree: $TRASH_DIRECTORY/22/.git
3167+
setup: cwd: $TRASH_DIRECTORY/22/.git
3168+
setup: prefix: sub/
3169+
EOF
3170+
git config --file="$TRASH_DIRECTORY/22/.git/config" core.worktree "$TRASH_DIRECTORY/22/.git" &&
3171+
test_repo 22/.git/sub ..
3172+
'
3173+
3174+
test_expect_failure '#22.1: GIT_DIR(rel), core.worktree=.(rel) in .git/sub' '
3175+
cat >22/.git/sub/expected <<EOF &&
3176+
setup: git_dir: $TRASH_DIRECTORY/22/.git
3177+
setup: worktree: $TRASH_DIRECTORY/22/.git
3178+
setup: cwd: $TRASH_DIRECTORY/22/.git
3179+
setup: prefix: sub/
3180+
EOF
3181+
git config --file="$TRASH_DIRECTORY/22/.git/config" core.worktree . &&
3182+
test_repo 22/.git/sub/ ..
3183+
'
3184+
3185+
test_expect_success '#22.1: GIT_DIR, core.worktree=. in .git/sub' '
3186+
cat >22/.git/sub/expected <<EOF &&
3187+
setup: git_dir: $TRASH_DIRECTORY/22/.git
3188+
setup: worktree: $TRASH_DIRECTORY/22/.git
3189+
setup: cwd: $TRASH_DIRECTORY/22/.git
3190+
setup: prefix: sub/
3191+
EOF
3192+
git config --file="$TRASH_DIRECTORY/22/.git/config" core.worktree "$TRASH_DIRECTORY/22/.git" &&
3193+
test_repo 22/.git/sub "$TRASH_DIRECTORY/22/.git"
3194+
'
3195+
3196+
test_expect_success '#22.1: GIT_DIR, core.worktree=.(rel) in .git/sub' '
3197+
cat >22/.git/sub/expected <<EOF &&
3198+
setup: git_dir: $TRASH_DIRECTORY/22/.git
3199+
setup: worktree: $TRASH_DIRECTORY/22/.git
3200+
setup: cwd: $TRASH_DIRECTORY/22/.git
3201+
setup: prefix: sub/
3202+
EOF
3203+
git config --file="$TRASH_DIRECTORY/22/.git/config" core.worktree . &&
3204+
test_repo 22/.git/sub "$TRASH_DIRECTORY/22/.git"
3205+
'
3206+
3207+
test_expect_success '#22.1: GIT_DIR(rel), core.worktree=wt at .git' '
3208+
cat >22/.git/expected <<EOF &&
3209+
setup: git_dir: .
3210+
setup: worktree: $TRASH_DIRECTORY/22/.git/wt
3211+
setup: cwd: $TRASH_DIRECTORY/22/.git
3212+
setup: prefix: (null)
3213+
EOF
3214+
git config --file="$TRASH_DIRECTORY/22/.git/config" core.worktree "$TRASH_DIRECTORY/22/.git/wt" &&
3215+
test_repo 22/.git .
3216+
'
3217+
3218+
test_expect_success '#22.1: GIT_DIR(rel), core.worktree=wt(rel) at .git' '
3219+
cat >22/.git/expected <<EOF &&
3220+
setup: git_dir: .
3221+
setup: worktree: $TRASH_DIRECTORY/22/.git/wt
3222+
setup: cwd: $TRASH_DIRECTORY/22/.git
3223+
setup: prefix: (null)
3224+
EOF
3225+
git config --file="$TRASH_DIRECTORY/22/.git/config" core.worktree wt &&
3226+
test_repo 22/.git .
3227+
'
3228+
3229+
test_expect_success '#22.1: GIT_DIR, core.worktree=wt(rel) at .git' '
3230+
cat >22/.git/expected <<EOF &&
3231+
setup: git_dir: $TRASH_DIRECTORY/22/.git
3232+
setup: worktree: $TRASH_DIRECTORY/22/.git/wt
3233+
setup: cwd: $TRASH_DIRECTORY/22/.git
3234+
setup: prefix: (null)
3235+
EOF
3236+
git config --file="$TRASH_DIRECTORY/22/.git/config" core.worktree wt &&
3237+
test_repo 22/.git "$TRASH_DIRECTORY/22/.git"
3238+
'
3239+
3240+
test_expect_success '#22.1: GIT_DIR, core.worktree=wt at .git' '
3241+
cat >22/.git/expected <<EOF &&
3242+
setup: git_dir: $TRASH_DIRECTORY/22/.git
3243+
setup: worktree: $TRASH_DIRECTORY/22/.git/wt
3244+
setup: cwd: $TRASH_DIRECTORY/22/.git
3245+
setup: prefix: (null)
3246+
EOF
3247+
git config --file="$TRASH_DIRECTORY/22/.git/config" core.worktree "$TRASH_DIRECTORY/22/.git/wt" &&
3248+
test_repo 22/.git "$TRASH_DIRECTORY/22/.git"
3249+
'
3250+
3251+
test_expect_success '#22.1: GIT_DIR(rel), core.worktree=wt in .git/sub' '
3252+
cat >22/.git/sub/expected <<EOF &&
3253+
setup: git_dir: ..
3254+
setup: worktree: $TRASH_DIRECTORY/22/.git/wt
3255+
setup: cwd: $TRASH_DIRECTORY/22/.git/sub
3256+
setup: prefix: (null)
3257+
EOF
3258+
git config --file="$TRASH_DIRECTORY/22/.git/config" core.worktree "$TRASH_DIRECTORY/22/.git/wt" &&
3259+
test_repo 22/.git/sub ..
3260+
'
3261+
3262+
test_expect_success '#22.1: GIT_DIR(rel), core.worktree=wt(rel) in .git/sub' '
3263+
cat >22/.git/sub/expected <<EOF &&
3264+
setup: git_dir: ..
3265+
setup: worktree: $TRASH_DIRECTORY/22/.git/wt
3266+
setup: cwd: $TRASH_DIRECTORY/22/.git/sub
3267+
setup: prefix: (null)
3268+
EOF
3269+
git config --file="$TRASH_DIRECTORY/22/.git/config" core.worktree wt &&
3270+
test_repo 22/.git/sub ..
3271+
'
3272+
3273+
test_expect_success '#22.1: GIT_DIR, core.worktree=wt(rel) in .git/sub' '
3274+
cat >22/.git/sub/expected <<EOF &&
3275+
setup: git_dir: $TRASH_DIRECTORY/22/.git
3276+
setup: worktree: $TRASH_DIRECTORY/22/.git/wt
3277+
setup: cwd: $TRASH_DIRECTORY/22/.git/sub
3278+
setup: prefix: (null)
3279+
EOF
3280+
git config --file="$TRASH_DIRECTORY/22/.git/config" core.worktree wt &&
3281+
test_repo 22/.git/sub "$TRASH_DIRECTORY/22/.git"
3282+
'
3283+
3284+
test_expect_success '#22.1: GIT_DIR, core.worktree=wt in .git/sub' '
3285+
cat >22/.git/sub/expected <<EOF &&
3286+
setup: git_dir: $TRASH_DIRECTORY/22/.git
3287+
setup: worktree: $TRASH_DIRECTORY/22/.git/wt
3288+
setup: cwd: $TRASH_DIRECTORY/22/.git/sub
3289+
setup: prefix: (null)
3290+
EOF
3291+
git config --file="$TRASH_DIRECTORY/22/.git/config" core.worktree "$TRASH_DIRECTORY/22/.git/wt" &&
3292+
test_repo 22/.git/sub "$TRASH_DIRECTORY/22/.git"
3293+
'
3294+
3295+
test_expect_failure '#22.1: GIT_DIR(rel), core.worktree=.. at .git' '
3296+
cat >22/.git/expected <<EOF &&
3297+
setup: git_dir: $TRASH_DIRECTORY/22/.git
3298+
setup: worktree: $TRASH_DIRECTORY/22
3299+
setup: cwd: $TRASH_DIRECTORY/22
3300+
setup: prefix: .git/
3301+
EOF
3302+
git config --file="$TRASH_DIRECTORY/22/.git/config" core.worktree "$TRASH_DIRECTORY/22" &&
3303+
test_repo 22/.git .
3304+
'
3305+
3306+
test_expect_failure '#22.1: GIT_DIR(rel), core.worktree=..(rel) at .git' '
3307+
cat >22/.git/expected <<EOF &&
3308+
setup: git_dir: $TRASH_DIRECTORY/22/.git
3309+
setup: worktree: $TRASH_DIRECTORY/22
3310+
setup: cwd: $TRASH_DIRECTORY/22
3311+
setup: prefix: .git/
3312+
EOF
3313+
git config --file="$TRASH_DIRECTORY/22/.git/config" core.worktree .. &&
3314+
test_repo 22/.git .
3315+
'
3316+
3317+
test_expect_success '#22.1: GIT_DIR, core.worktree=..(rel) at .git' '
3318+
cat >22/.git/expected <<EOF &&
3319+
setup: git_dir: $TRASH_DIRECTORY/22/.git
3320+
setup: worktree: $TRASH_DIRECTORY/22
3321+
setup: cwd: $TRASH_DIRECTORY/22
3322+
setup: prefix: .git/
3323+
EOF
3324+
git config --file="$TRASH_DIRECTORY/22/.git/config" core.worktree .. &&
3325+
test_repo 22/.git "$TRASH_DIRECTORY/22/.git"
3326+
'
3327+
3328+
test_expect_success '#22.1: GIT_DIR, core.worktree=.. at .git' '
3329+
cat >22/.git/expected <<EOF &&
3330+
setup: git_dir: $TRASH_DIRECTORY/22/.git
3331+
setup: worktree: $TRASH_DIRECTORY/22
3332+
setup: cwd: $TRASH_DIRECTORY/22
3333+
setup: prefix: .git/
3334+
EOF
3335+
git config --file="$TRASH_DIRECTORY/22/.git/config" core.worktree "$TRASH_DIRECTORY/22" &&
3336+
test_repo 22/.git "$TRASH_DIRECTORY/22/.git"
3337+
'
3338+
3339+
test_expect_failure '#22.1: GIT_DIR(rel), core.worktree=.. in .git/sub' '
3340+
cat >22/.git/sub/expected <<EOF &&
3341+
setup: git_dir: $TRASH_DIRECTORY/22/.git
3342+
setup: worktree: $TRASH_DIRECTORY/22
3343+
setup: cwd: $TRASH_DIRECTORY/22
3344+
setup: prefix: .git/sub/
3345+
EOF
3346+
git config --file="$TRASH_DIRECTORY/22/.git/config" core.worktree "$TRASH_DIRECTORY/22" &&
3347+
test_repo 22/.git/sub ..
3348+
'
3349+
3350+
test_expect_failure '#22.1: GIT_DIR(rel), core.worktree=..(rel) in .git/sub' '
3351+
cat >22/.git/sub/expected <<EOF &&
3352+
setup: git_dir: $TRASH_DIRECTORY/22/.git
3353+
setup: worktree: $TRASH_DIRECTORY/22
3354+
setup: cwd: $TRASH_DIRECTORY/22
3355+
setup: prefix: .git/sub/
3356+
EOF
3357+
git config --file="$TRASH_DIRECTORY/22/.git/config" core.worktree .. &&
3358+
test_repo 22/.git/sub ..
3359+
'
3360+
3361+
test_expect_success '#22.1: GIT_DIR, core.worktree=..(rel) in .git/sub' '
3362+
cat >22/.git/sub/expected <<EOF &&
3363+
setup: git_dir: $TRASH_DIRECTORY/22/.git
3364+
setup: worktree: $TRASH_DIRECTORY/22
3365+
setup: cwd: $TRASH_DIRECTORY/22
3366+
setup: prefix: .git/sub/
3367+
EOF
3368+
git config --file="$TRASH_DIRECTORY/22/.git/config" core.worktree .. &&
3369+
test_repo 22/.git/sub "$TRASH_DIRECTORY/22/.git"
3370+
'
3371+
3372+
test_expect_success '#22.1: GIT_DIR, core.worktree=.. in .git/sub' '
3373+
cat >22/.git/sub/expected <<EOF &&
3374+
setup: git_dir: $TRASH_DIRECTORY/22/.git
3375+
setup: worktree: $TRASH_DIRECTORY/22
3376+
setup: cwd: $TRASH_DIRECTORY/22
3377+
setup: prefix: .git/sub/
3378+
EOF
3379+
git config --file="$TRASH_DIRECTORY/22/.git/config" core.worktree "$TRASH_DIRECTORY/22" &&
3380+
test_repo 22/.git/sub "$TRASH_DIRECTORY/22/.git"
3381+
'
3382+
3383+
#
3384+
# case #22.2
3385+
#
3386+
############################################################
3387+
#
3388+
# Input:
3389+
#
3390+
# - GIT_WORK_TREE is not set
3391+
# - GIT_DIR is set
3392+
# - core.worktree is set
3393+
# - .git is a directory
3394+
# - core.bare is set
3395+
#
3396+
# Output:
3397+
#
3398+
# core.worktree and core.bare conflict, won't fly.
3399+
3400+
test_expect_success '#22.2: setup' '
3401+
git config --file="$TRASH_DIRECTORY/22/.git/config" core.bare true
3402+
'
3403+
3404+
test_expect_failure '#22.2: at .git' '
3405+
(
3406+
cd 22/.git &&
3407+
GIT_DIR=. &&
3408+
export GIT_DIR &&
3409+
test_must_fail git symbolic-ref HEAD 2>result &&
3410+
grep "core.bare and core.worktree do not make sense" result
3411+
)
3412+
'
3413+
3414+
test_expect_failure '#22.2: at root' '
3415+
(
3416+
cd 22 &&
3417+
GIT_DIR=.git &&
3418+
export GIT_DIR &&
3419+
test_must_fail git symbolic-ref HEAD 2>result &&
3420+
grep "core.bare and core.worktree do not make sense" result
3421+
)
3422+
'
3423+
30873424
test_done

0 commit comments

Comments
 (0)