Merge branch 'sb/doc-config-submodule-update'
[git] / t / t2028-worktree-move.sh
1 #!/bin/sh
2
3 test_description='test git worktree move, remove, lock and unlock'
4
5 . ./test-lib.sh
6
7 test_expect_success 'setup' '
8         test_commit init &&
9         git worktree add source &&
10         git worktree list --porcelain | grep "^worktree" >actual &&
11         cat <<-EOF >expected &&
12         worktree $(pwd)
13         worktree $(pwd)/source
14         EOF
15         test_cmp expected actual
16 '
17
18 test_expect_success 'lock main worktree' '
19         test_must_fail git worktree lock .
20 '
21
22 test_expect_success 'lock linked worktree' '
23         git worktree lock --reason hahaha source &&
24         echo hahaha >expected &&
25         test_cmp expected .git/worktrees/source/locked
26 '
27
28 test_expect_success 'lock linked worktree from another worktree' '
29         rm .git/worktrees/source/locked &&
30         git worktree add elsewhere &&
31         git -C elsewhere worktree lock --reason hahaha ../source &&
32         echo hahaha >expected &&
33         test_cmp expected .git/worktrees/source/locked
34 '
35
36 test_expect_success 'lock worktree twice' '
37         test_must_fail git worktree lock source &&
38         echo hahaha >expected &&
39         test_cmp expected .git/worktrees/source/locked
40 '
41
42 test_expect_success 'lock worktree twice (from the locked worktree)' '
43         test_must_fail git -C source worktree lock . &&
44         echo hahaha >expected &&
45         test_cmp expected .git/worktrees/source/locked
46 '
47
48 test_expect_success 'unlock main worktree' '
49         test_must_fail git worktree unlock .
50 '
51
52 test_expect_success 'unlock linked worktree' '
53         git worktree unlock source &&
54         test_path_is_missing .git/worktrees/source/locked
55 '
56
57 test_expect_success 'unlock worktree twice' '
58         test_must_fail git worktree unlock source &&
59         test_path_is_missing .git/worktrees/source/locked
60 '
61
62 test_done