@@ -3854,4 +3854,272 @@ EOF
38543854 test_repo 26/sub "$TRASH_DIRECTORY/26/.git"
38553855'
38563856
3857+ #
3858+ # case #27
3859+ #
3860+ # ###########################################################
3861+ #
3862+ # Input:
3863+ #
3864+ # - GIT_WORK_TREE is set
3865+ # - GIT_DIR is set
3866+ # - .git is a file
3867+ # - core.worktree is not set
3868+ # - core.bare is set
3869+ #
3870+ # Output:
3871+ #
3872+ # #19 except git_dir is set according to .git file
3873+
3874+ test_expect_success ' #27: setup' '
3875+ unset GIT_DIR GIT_WORK_TREE &&
3876+ mkdir 27 27/sub 27/sub/sub 27.wt 27.wt/sub 27/wt 27/wt/sub &&
3877+ cd 27 &&
3878+ git init &&
3879+ git config core.bare true &&
3880+ mv .git ../27.git &&
3881+ echo gitdir: ../27.git >.git &&
3882+ cd ..
3883+ '
3884+
3885+ test_expect_failure ' #27: GIT_DIR(rel), GIT_WORK_TREE=root at root' '
3886+ cat >27/expected <<EOF &&
3887+ setup: git_dir: $TRASH_DIRECTORY/27.git
3888+ setup: worktree: $TRASH_DIRECTORY/27
3889+ setup: cwd: $TRASH_DIRECTORY/27
3890+ setup: prefix: (null)
3891+ EOF
3892+ test_repo 27 .git "$TRASH_DIRECTORY/27"
3893+ '
3894+
3895+ test_expect_failure ' #27: GIT_DIR(rel), GIT_WORK_TREE=root(rel) at root' '
3896+ cat >27/expected <<EOF &&
3897+ setup: git_dir: $TRASH_DIRECTORY/27.git
3898+ setup: worktree: $TRASH_DIRECTORY/27
3899+ setup: cwd: $TRASH_DIRECTORY/27
3900+ setup: prefix: (null)
3901+ EOF
3902+ test_repo 27 .git .
3903+ '
3904+
3905+ test_expect_failure ' #27: GIT_DIR, GIT_WORK_TREE=root at root' '
3906+ cat >27/expected <<EOF &&
3907+ setup: git_dir: $TRASH_DIRECTORY/27.git
3908+ setup: worktree: $TRASH_DIRECTORY/27
3909+ setup: cwd: $TRASH_DIRECTORY/27
3910+ setup: prefix: (null)
3911+ EOF
3912+ test_repo 27 "$TRASH_DIRECTORY/27/.git" "$TRASH_DIRECTORY/27"
3913+ '
3914+
3915+ test_expect_failure ' #27: GIT_DIR, GIT_WORK_TREE=root(rel) at root' '
3916+ cat >27/expected <<EOF &&
3917+ setup: git_dir: $TRASH_DIRECTORY/27.git
3918+ setup: worktree: $TRASH_DIRECTORY/27
3919+ setup: cwd: $TRASH_DIRECTORY/27
3920+ setup: prefix: (null)
3921+ EOF
3922+ test_repo 27 "$TRASH_DIRECTORY/27/.git" .
3923+ '
3924+
3925+ test_expect_failure ' #27: GIT_DIR(rel), GIT_WORKTREE=root in subdir' '
3926+ cat >27/sub/sub/expected <<EOF &&
3927+ setup: git_dir: $TRASH_DIRECTORY/27.git
3928+ setup: worktree: $TRASH_DIRECTORY/27
3929+ setup: cwd: $TRASH_DIRECTORY/27
3930+ setup: prefix: sub/sub/
3931+ EOF
3932+ test_repo 27/sub/sub ../../.git "$TRASH_DIRECTORY/27"
3933+ '
3934+
3935+ test_expect_failure ' #27: GIT_DIR(rel), GIT_WORKTREE=root(rel) in subdir' '
3936+ cat >27/sub/sub/expected <<EOF &&
3937+ setup: git_dir: $TRASH_DIRECTORY/27.git
3938+ setup: worktree: $TRASH_DIRECTORY/27
3939+ setup: cwd: $TRASH_DIRECTORY/27
3940+ setup: prefix: sub/sub/
3941+ EOF
3942+ test_repo 27/sub/sub ../../.git ../..
3943+ '
3944+
3945+ test_expect_failure ' #27: GIT_DIR, GIT_WORKTREE=root in subdir' '
3946+ cat >27/sub/expected <<EOF &&
3947+ setup: git_dir: $TRASH_DIRECTORY/27.git
3948+ setup: worktree: $TRASH_DIRECTORY/27
3949+ setup: cwd: $TRASH_DIRECTORY/27
3950+ setup: prefix: sub/
3951+ EOF
3952+ test_repo 27/sub "$TRASH_DIRECTORY/27/.git" "$TRASH_DIRECTORY/27"
3953+ '
3954+
3955+ test_expect_failure ' #27: GIT_DIR, GIT_WORKTREE=root(rel) in subdir' '
3956+ cat >27/sub/sub/expected <<EOF &&
3957+ setup: git_dir: $TRASH_DIRECTORY/27.git
3958+ setup: worktree: $TRASH_DIRECTORY/27
3959+ setup: cwd: $TRASH_DIRECTORY/27
3960+ setup: prefix: sub/sub/
3961+ EOF
3962+ test_repo 27/sub/sub "$TRASH_DIRECTORY/27/.git" ../..
3963+ '
3964+
3965+ test_expect_failure ' #27: GIT_DIR(rel), GIT_WORK_TREE=wt at root' '
3966+ cat >27/expected <<EOF &&
3967+ setup: git_dir: $TRASH_DIRECTORY/27.git
3968+ setup: worktree: $TRASH_DIRECTORY/27/wt
3969+ setup: cwd: $TRASH_DIRECTORY/27
3970+ setup: prefix: (null)
3971+ EOF
3972+ test_repo 27 .git "$TRASH_DIRECTORY/27/wt"
3973+ '
3974+
3975+ test_expect_failure ' #27: GIT_DIR(rel), GIT_WORK_TREE=wt(rel) at root' '
3976+ cat >27/expected <<EOF &&
3977+ setup: git_dir: $TRASH_DIRECTORY/27.git
3978+ setup: worktree: $TRASH_DIRECTORY/27/wt
3979+ setup: cwd: $TRASH_DIRECTORY/27
3980+ setup: prefix: (null)
3981+ EOF
3982+ test_repo 27 .git wt
3983+ '
3984+
3985+ test_expect_failure ' #27: GIT_DIR, GIT_WORK_TREE=wt(rel) at root' '
3986+ cat >27/expected <<EOF &&
3987+ setup: git_dir: $TRASH_DIRECTORY/27.git
3988+ setup: worktree: $TRASH_DIRECTORY/27/wt
3989+ setup: cwd: $TRASH_DIRECTORY/27
3990+ setup: prefix: (null)
3991+ EOF
3992+ test_repo 27 "$TRASH_DIRECTORY/27/.git" wt
3993+ '
3994+
3995+ test_expect_failure ' #27: GIT_DIR, GIT_WORK_TREE=wt at root' '
3996+ cat >27/expected <<EOF &&
3997+ setup: git_dir: $TRASH_DIRECTORY/27.git
3998+ setup: worktree: $TRASH_DIRECTORY/27/wt
3999+ setup: cwd: $TRASH_DIRECTORY/27
4000+ setup: prefix: (null)
4001+ EOF
4002+ test_repo 27 "$TRASH_DIRECTORY/27/.git" "$TRASH_DIRECTORY/27/wt"
4003+ '
4004+
4005+ test_expect_failure ' #27: GIT_DIR(rel), GIT_WORK_TREE=wt in subdir' '
4006+ cat >27/sub/sub/expected <<EOF &&
4007+ setup: git_dir: $TRASH_DIRECTORY/27.git
4008+ setup: worktree: $TRASH_DIRECTORY/27/wt
4009+ setup: cwd: $TRASH_DIRECTORY/27/sub/sub
4010+ setup: prefix: (null)
4011+ EOF
4012+ test_repo 27/sub/sub ../../.git "$TRASH_DIRECTORY/27/wt"
4013+ '
4014+
4015+ test_expect_failure ' #27: GIT_DIR(rel), GIT_WORK_TREE=wt(rel) in subdir' '
4016+ cat >27/sub/sub/expected <<EOF &&
4017+ setup: git_dir: $TRASH_DIRECTORY/27.git
4018+ setup: worktree: $TRASH_DIRECTORY/27/wt
4019+ setup: cwd: $TRASH_DIRECTORY/27/sub/sub
4020+ setup: prefix: (null)
4021+ EOF
4022+ test_repo 27/sub/sub ../../.git ../../wt
4023+ '
4024+
4025+ test_expect_failure ' #27: GIT_DIR, GIT_WORK_TREE=wt(rel) in subdir' '
4026+ cat >27/sub/sub/expected <<EOF &&
4027+ setup: git_dir: $TRASH_DIRECTORY/27.git
4028+ setup: worktree: $TRASH_DIRECTORY/27/wt
4029+ setup: cwd: $TRASH_DIRECTORY/27/sub/sub
4030+ setup: prefix: (null)
4031+ EOF
4032+ test_repo 27/sub/sub "$TRASH_DIRECTORY/27/.git" ../../wt
4033+ '
4034+
4035+ test_expect_failure ' #27: GIT_DIR, GIT_WORK_TREE=wt in subdir' '
4036+ cat >27/sub/sub/expected <<EOF &&
4037+ setup: git_dir: $TRASH_DIRECTORY/27.git
4038+ setup: worktree: $TRASH_DIRECTORY/27/wt
4039+ setup: cwd: $TRASH_DIRECTORY/27/sub/sub
4040+ setup: prefix: (null)
4041+ EOF
4042+ test_repo 27/sub/sub "$TRASH_DIRECTORY/27/.git" "$TRASH_DIRECTORY/27/wt"
4043+ '
4044+
4045+ test_expect_failure ' #27: GIT_DIR(rel), GIT_WORK_TREE=.. at root' '
4046+ cat >27/expected <<EOF &&
4047+ setup: git_dir: $TRASH_DIRECTORY/27.git
4048+ setup: worktree: $TRASH_DIRECTORY
4049+ setup: cwd: $TRASH_DIRECTORY
4050+ setup: prefix: 27/
4051+ EOF
4052+ test_repo 27 .git "$TRASH_DIRECTORY"
4053+ '
4054+
4055+ test_expect_failure ' #27: GIT_DIR(rel), GIT_WORK_TREE=..(rel) at root' '
4056+ cat >27/expected <<EOF &&
4057+ setup: git_dir: $TRASH_DIRECTORY/27.git
4058+ setup: worktree: $TRASH_DIRECTORY
4059+ setup: cwd: $TRASH_DIRECTORY
4060+ setup: prefix: 27/
4061+ EOF
4062+ test_repo 27 .git ..
4063+ '
4064+
4065+ test_expect_failure ' #27: GIT_DIR, GIT_WORK_TREE=..(rel) at root' '
4066+ cat >27/expected <<EOF &&
4067+ setup: git_dir: $TRASH_DIRECTORY/27.git
4068+ setup: worktree: $TRASH_DIRECTORY
4069+ setup: cwd: $TRASH_DIRECTORY
4070+ setup: prefix: 27/
4071+ EOF
4072+ test_repo 27 "$TRASH_DIRECTORY/27/.git" ..
4073+ '
4074+
4075+ test_expect_failure ' #27: GIT_DIR, GIT_WORK_TREE=.. at root' '
4076+ cat >27/expected <<EOF &&
4077+ setup: git_dir: $TRASH_DIRECTORY/27.git
4078+ setup: worktree: $TRASH_DIRECTORY
4079+ setup: cwd: $TRASH_DIRECTORY
4080+ setup: prefix: 27/
4081+ EOF
4082+ test_repo 27 "$TRASH_DIRECTORY/27/.git" "$TRASH_DIRECTORY"
4083+ '
4084+
4085+ test_expect_failure ' #27: GIT_DIR(rel), GIT_WORK_TREE=.. in subdir' '
4086+ cat >27/sub/sub/expected <<EOF &&
4087+ setup: git_dir: $TRASH_DIRECTORY/27.git
4088+ setup: worktree: $TRASH_DIRECTORY
4089+ setup: cwd: $TRASH_DIRECTORY
4090+ setup: prefix: 27/sub/sub/
4091+ EOF
4092+ test_repo 27/sub/sub ../../.git "$TRASH_DIRECTORY"
4093+ '
4094+
4095+ test_expect_failure ' #27: GIT_DIR(rel), GIT_WORK_TREE=..(rel) in subdir' '
4096+ cat >27/sub/sub/expected <<EOF &&
4097+ setup: git_dir: $TRASH_DIRECTORY/27.git
4098+ setup: worktree: $TRASH_DIRECTORY
4099+ setup: cwd: $TRASH_DIRECTORY
4100+ setup: prefix: 27/sub/sub/
4101+ EOF
4102+ test_repo 27/sub/sub ../../.git ../../..
4103+ '
4104+
4105+ test_expect_failure ' #27: GIT_DIR, GIT_WORK_TREE=..(rel) in subdir' '
4106+ cat >27/sub/sub/expected <<EOF &&
4107+ setup: git_dir: $TRASH_DIRECTORY/27.git
4108+ setup: worktree: $TRASH_DIRECTORY
4109+ setup: cwd: $TRASH_DIRECTORY
4110+ setup: prefix: 27/sub/sub/
4111+ EOF
4112+ test_repo 27/sub/sub "$TRASH_DIRECTORY/27/.git" ../../../
4113+ '
4114+
4115+ test_expect_failure ' #27: GIT_DIR, GIT_WORK_TREE=.. in subdir' '
4116+ cat >27/sub/sub/expected <<EOF &&
4117+ setup: git_dir: $TRASH_DIRECTORY/27.git
4118+ setup: worktree: $TRASH_DIRECTORY
4119+ setup: cwd: $TRASH_DIRECTORY
4120+ setup: prefix: 27/sub/sub/
4121+ EOF
4122+ test_repo 27/sub/sub "$TRASH_DIRECTORY/27/.git" "$TRASH_DIRECTORY"
4123+ '
4124+
38574125test_done
0 commit comments