t1510: setup case #3
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
8718ed61251ae1fd80a375a9f907edb2635a8a29
1 file changed
+267
t/t1510-repo-setup.sh
+267
@@ -219,4 +219,271 @@ EOF
219
test_repo 2/sub ../.git
220
'
221
222
+#
223
+# case #3
224
+#
225
+############################################################
226
+#
227
+# Input:
228
+#
229
+# - GIT_WORK_TREE is set
230
+# - GIT_DIR is set
231
+# - core.worktree is not set
232
+# - .git is a directory
233
+# - core.bare is not set, cwd is outside .git
234
+#
235
+# Output:
236
+#
237
+# - worktree is set to $GIT_WORK_TREE
238
+# - cwd is at worktree root
239
+# - prefix is calculated
240
+# - git_dir is set to $GIT_DIR
241
+# - cwd can be outside worktree
242
+
243
+test_expect_success '#3: setup' '
244
+ unset GIT_DIR GIT_WORK_TREE &&
245
+ mkdir 3 3/sub 3/sub/sub 3.wt 3.wt/sub 3/wt 3/wt/sub &&
246
+ cd 3 && git init && cd ..
247
+'
248
+
249
+test_expect_success '#3: GIT_DIR(rel), GIT_WORK_TREE=root at root' '
250
+ cat >3/expected <<EOF &&
251
+setup: git_dir: .git
252
+setup: worktree: $TRASH_DIRECTORY/3
253
+setup: cwd: $TRASH_DIRECTORY/3
254
+setup: prefix: (null)
255
+EOF
256
+ test_repo 3 .git "$TRASH_DIRECTORY/3"
257
+'
258
+
259
+test_expect_success '#3: GIT_DIR(rel), GIT_WORK_TREE=root(rel) at root' '
260
+ cat >3/expected <<EOF &&
261
+setup: git_dir: .git
262
+setup: worktree: $TRASH_DIRECTORY/3
263
+setup: cwd: $TRASH_DIRECTORY/3
264
+setup: prefix: (null)
265
+EOF
266
+ test_repo 3 .git .
267
+'
268
+
269
+test_expect_success '#3: GIT_DIR, GIT_WORK_TREE=root at root' '
270
+ cat >3/expected <<EOF &&
271
+setup: git_dir: $TRASH_DIRECTORY/3/.git
272
+setup: worktree: $TRASH_DIRECTORY/3
273
+setup: cwd: $TRASH_DIRECTORY/3
274
+setup: prefix: (null)
275
+EOF
276
+ test_repo 3 "$TRASH_DIRECTORY/3/.git" "$TRASH_DIRECTORY/3"
277
+'
278
+
279
+test_expect_success '#3: GIT_DIR, GIT_WORK_TREE=root(rel) at root' '
280
+ cat >3/expected <<EOF &&
281
+setup: git_dir: $TRASH_DIRECTORY/3/.git
282
+setup: worktree: $TRASH_DIRECTORY/3
283
+setup: cwd: $TRASH_DIRECTORY/3
284
+setup: prefix: (null)
285
+EOF
286
+ test_repo 3 "$TRASH_DIRECTORY/3/.git" .
287
+'
288
+
289
+test_expect_success '#3: GIT_DIR(rel), GIT_WORKTREE=root in subdir' '
290
+ cat >3/sub/sub/expected <<EOF &&
291
+setup: git_dir: $TRASH_DIRECTORY/3/.git
292
+setup: worktree: $TRASH_DIRECTORY/3
293
+setup: cwd: $TRASH_DIRECTORY/3
294
+setup: prefix: sub/sub/
295
+EOF
296
+ test_repo 3/sub/sub ../../.git "$TRASH_DIRECTORY/3"
297
+'
298
+
299
+test_expect_success '#3: GIT_DIR(rel), GIT_WORKTREE=root(rel) in subdir' '
300
+ cat >3/sub/sub/expected <<EOF &&
301
+setup: git_dir: $TRASH_DIRECTORY/3/.git
302
+setup: worktree: $TRASH_DIRECTORY/3
303
+setup: cwd: $TRASH_DIRECTORY/3
304
+setup: prefix: sub/sub/
305
+EOF
306
+ test_repo 3/sub/sub ../../.git ../..
307
+'
308
+
309
+test_expect_success '#3: GIT_DIR, GIT_WORKTREE=root in subdir' '
310
+ cat >3/sub/expected <<EOF &&
311
+setup: git_dir: $TRASH_DIRECTORY/3/.git
312
+setup: worktree: $TRASH_DIRECTORY/3
313
+setup: cwd: $TRASH_DIRECTORY/3
314
+setup: prefix: sub/
315
+EOF
316
+ test_repo 3/sub "$TRASH_DIRECTORY/3/.git" "$TRASH_DIRECTORY/3"
317
+'
318
+
319
+test_expect_success '#3: GIT_DIR, GIT_WORKTREE=root(rel) in subdir' '
320
+ cat >3/sub/sub/expected <<EOF &&
321
+setup: git_dir: $TRASH_DIRECTORY/3/.git
322
+setup: worktree: $TRASH_DIRECTORY/3
323
+setup: cwd: $TRASH_DIRECTORY/3
324
+setup: prefix: sub/sub/
325
+EOF
326
+ test_repo 3/sub/sub "$TRASH_DIRECTORY/3/.git" ../..
327
+'
328
+
329
+test_expect_success '#3: GIT_DIR(rel), GIT_WORK_TREE=wt at root' '
330
+ cat >3/expected <<EOF &&
331
+setup: git_dir: .git
332
+setup: worktree: $TRASH_DIRECTORY/3/wt
333
+setup: cwd: $TRASH_DIRECTORY/3
334
+setup: prefix: (null)
335
+EOF
336
+ test_repo 3 .git "$TRASH_DIRECTORY/3/wt"
337
+'
338
+
339
+test_expect_success '#3: GIT_DIR(rel), GIT_WORK_TREE=wt(rel) at root' '
340
+ cat >3/expected <<EOF &&
341
+setup: git_dir: .git
342
+setup: worktree: $TRASH_DIRECTORY/3/wt
343
+setup: cwd: $TRASH_DIRECTORY/3
344
+setup: prefix: (null)
345
+EOF
346
+ test_repo 3 .git wt
347
+'
348
+
349
+test_expect_success '#3: GIT_DIR, GIT_WORK_TREE=wt(rel) at root' '
350
+ cat >3/expected <<EOF &&
351
+setup: git_dir: $TRASH_DIRECTORY/3/.git
352
+setup: worktree: $TRASH_DIRECTORY/3/wt
353
+setup: cwd: $TRASH_DIRECTORY/3
354
+setup: prefix: (null)
355
+EOF
356
+ test_repo 3 "$TRASH_DIRECTORY/3/.git" wt
357
+'
358
+
359
+test_expect_success '#3: GIT_DIR, GIT_WORK_TREE=wt at root' '
360
+ cat >3/expected <<EOF &&
361
+setup: git_dir: $TRASH_DIRECTORY/3/.git
362
+setup: worktree: $TRASH_DIRECTORY/3/wt
363
+setup: cwd: $TRASH_DIRECTORY/3
364
+setup: prefix: (null)
365
+EOF
366
+ test_repo 3 "$TRASH_DIRECTORY/3/.git" "$TRASH_DIRECTORY/3/wt"
367
+'
368
+
369
+test_expect_success '#3: GIT_DIR(rel), GIT_WORK_TREE=wt in subdir' '
370
+ cat >3/sub/sub/expected <<EOF &&
371
+setup: git_dir: ../../.git
372
+setup: worktree: $TRASH_DIRECTORY/3/wt
373
+setup: cwd: $TRASH_DIRECTORY/3/sub/sub
374
+setup: prefix: (null)
375
+EOF
376
+ test_repo 3/sub/sub ../../.git "$TRASH_DIRECTORY/3/wt"
377
+'
378
+
379
+test_expect_success '#3: GIT_DIR(rel), GIT_WORK_TREE=wt(rel) in subdir' '
380
+ cat >3/sub/sub/expected <<EOF &&
381
+setup: git_dir: ../../.git
382
+setup: worktree: $TRASH_DIRECTORY/3/wt
383
+setup: cwd: $TRASH_DIRECTORY/3/sub/sub
384
+setup: prefix: (null)
385
+EOF
386
+ test_repo 3/sub/sub ../../.git ../../wt
387
+'
388
+
389
+test_expect_success '#3: GIT_DIR, GIT_WORK_TREE=wt(rel) in subdir' '
390
+ cat >3/sub/sub/expected <<EOF &&
391
+setup: git_dir: $TRASH_DIRECTORY/3/.git
392
+setup: worktree: $TRASH_DIRECTORY/3/wt
393
+setup: cwd: $TRASH_DIRECTORY/3/sub/sub
394
+setup: prefix: (null)
395
+EOF
396
+ test_repo 3/sub/sub "$TRASH_DIRECTORY/3/.git" ../../wt
397
+'
398
+
399
+test_expect_success '#3: GIT_DIR, GIT_WORK_TREE=wt in subdir' '
400
+ cat >3/sub/sub/expected <<EOF &&
401
+setup: git_dir: $TRASH_DIRECTORY/3/.git
402
+setup: worktree: $TRASH_DIRECTORY/3/wt
403
+setup: cwd: $TRASH_DIRECTORY/3/sub/sub
404
+setup: prefix: (null)
405
+EOF
406
+ test_repo 3/sub/sub "$TRASH_DIRECTORY/3/.git" "$TRASH_DIRECTORY/3/wt"
407
+'
408
+
409
+test_expect_success '#3: GIT_DIR(rel), GIT_WORK_TREE=.. at root' '
410
+ cat >3/expected <<EOF &&
411
+setup: git_dir: $TRASH_DIRECTORY/3/.git
412
+setup: worktree: $TRASH_DIRECTORY
413
+setup: cwd: $TRASH_DIRECTORY
414
+setup: prefix: 3/
415
+EOF
416
+ test_repo 3 .git "$TRASH_DIRECTORY"
417
+'
418
+
419
+test_expect_success '#3: GIT_DIR(rel), GIT_WORK_TREE=..(rel) at root' '
420
+ cat >3/expected <<EOF &&
421
+setup: git_dir: $TRASH_DIRECTORY/3/.git
422
+setup: worktree: $TRASH_DIRECTORY
423
+setup: cwd: $TRASH_DIRECTORY
424
+setup: prefix: 3/
425
+EOF
426
+ test_repo 3 .git ..
427
+'
428
+
429
+test_expect_success '#3: GIT_DIR, GIT_WORK_TREE=..(rel) at root' '
430
+ cat >3/expected <<EOF &&
431
+setup: git_dir: $TRASH_DIRECTORY/3/.git
432
+setup: worktree: $TRASH_DIRECTORY
433
+setup: cwd: $TRASH_DIRECTORY
434
+setup: prefix: 3/
435
+EOF
436
+ test_repo 3 "$TRASH_DIRECTORY/3/.git" ..
437
+'
438
+
439
+test_expect_success '#3: GIT_DIR, GIT_WORK_TREE=.. at root' '
440
+ cat >3/expected <<EOF &&
441
+setup: git_dir: $TRASH_DIRECTORY/3/.git
442
+setup: worktree: $TRASH_DIRECTORY
443
+setup: cwd: $TRASH_DIRECTORY
444
+setup: prefix: 3/
445
+EOF
446
+ test_repo 3 "$TRASH_DIRECTORY/3/.git" "$TRASH_DIRECTORY"
447
+'
448
+
449
+test_expect_success '#3: GIT_DIR(rel), GIT_WORK_TREE=.. in subdir' '
450
+ cat >3/sub/sub/expected <<EOF &&
451
+setup: git_dir: $TRASH_DIRECTORY/3/.git
452
+setup: worktree: $TRASH_DIRECTORY
453
+setup: cwd: $TRASH_DIRECTORY
454
+setup: prefix: 3/sub/sub/
455
+EOF
456
+ test_repo 3/sub/sub ../../.git "$TRASH_DIRECTORY"
457
+'
458
+
459
+test_expect_success '#3: GIT_DIR(rel), GIT_WORK_TREE=..(rel) in subdir' '
460
+ cat >3/sub/sub/expected <<EOF &&
461
+setup: git_dir: $TRASH_DIRECTORY/3/.git
462
+setup: worktree: $TRASH_DIRECTORY
463
+setup: cwd: $TRASH_DIRECTORY
464
+setup: prefix: 3/sub/sub/
465
+EOF
466
+ test_repo 3/sub/sub ../../.git ../../..
467
+'
468
+
469
+test_expect_success '#3: GIT_DIR, GIT_WORK_TREE=..(rel) in subdir' '
470
+ cat >3/sub/sub/expected <<EOF &&
471
+setup: git_dir: $TRASH_DIRECTORY/3/.git
472
+setup: worktree: $TRASH_DIRECTORY
473
+setup: cwd: $TRASH_DIRECTORY
474
+setup: prefix: 3/sub/sub/
475
+EOF
476
+ test_repo 3/sub/sub "$TRASH_DIRECTORY/3/.git" ../../../
477
+'
478
+
479
+test_expect_success '#3: GIT_DIR, GIT_WORK_TREE=.. in subdir' '
480
+ cat >3/sub/sub/expected <<EOF &&
481
+setup: git_dir: $TRASH_DIRECTORY/3/.git
482
+setup: worktree: $TRASH_DIRECTORY
483
+setup: cwd: $TRASH_DIRECTORY
484
+setup: prefix: 3/sub/sub/
485
+EOF
486
+ test_repo 3/sub/sub "$TRASH_DIRECTORY/3/.git" "$TRASH_DIRECTORY"
487
+'
488
+
489
test_done