t1510: setup case #22
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Nguyễn Thái Ngọc Duy committed
Nov 26, 2010 at 22:32 UTC
fd4e1888ae16978ce687de25409ee36eb11138ad
1 file changed
+337
t/t1510-repo-setup.sh
+337
@@ -3084,4 +3084,341 @@ EOF
3084
test_repo 21/sub
3085
'
3086
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
+
3424
test_done