]>
Commit | Line | Data |
---|---|---|
52030836 NTND |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2008 Nguyễn Thái Ngọc Duy | |
4 | # | |
5 | ||
6 | test_description='test worktree writing operations when skip-worktree is used' | |
7 | ||
8 | . ./test-lib.sh | |
9 | ||
10 | test_expect_success 'setup' ' | |
11 | test_commit init && | |
12 | echo modified >> init.t && | |
13 | touch added && | |
14 | git add init.t added && | |
15 | git commit -m "modified and added" && | |
16 | git tag top | |
17 | ' | |
18 | ||
19 | test_expect_success 'read-tree updates worktree, absent case' ' | |
20 | git checkout -f top && | |
21 | git update-index --skip-worktree init.t && | |
22 | rm init.t && | |
23 | git read-tree -m -u HEAD^ && | |
24 | echo init > expected && | |
25 | test_cmp expected init.t | |
26 | ' | |
27 | ||
28 | test_expect_success 'read-tree updates worktree, dirty case' ' | |
29 | git checkout -f top && | |
30 | git update-index --skip-worktree init.t && | |
31 | echo dirty >> init.t && | |
32 | test_must_fail git read-tree -m -u HEAD^ && | |
33 | grep -q dirty init.t && | |
34 | test "$(git ls-files -t init.t)" = "S init.t" && | |
35 | git update-index --no-skip-worktree init.t | |
36 | ' | |
37 | ||
38 | test_expect_success 'read-tree removes worktree, absent case' ' | |
39 | git checkout -f top && | |
40 | git update-index --skip-worktree added && | |
41 | rm added && | |
42 | git read-tree -m -u HEAD^ && | |
43 | test ! -f added | |
44 | ' | |
45 | ||
46 | test_expect_success 'read-tree removes worktree, dirty case' ' | |
47 | git checkout -f top && | |
48 | git update-index --skip-worktree added && | |
49 | echo dirty >> added && | |
50 | test_must_fail git read-tree -m -u HEAD^ && | |
51 | grep -q dirty added && | |
52 | test "$(git ls-files -t added)" = "S added" && | |
53 | git update-index --no-skip-worktree added | |
54 | ' | |
55 | ||
52030836 NTND |
56 | setup_absent() { |
57 | test -f 1 && rm 1 | |
58 | git update-index --remove 1 && | |
378932d3 | 59 | git update-index --add --cacheinfo 100644 $EMPTY_BLOB 1 && |
52030836 NTND |
60 | git update-index --skip-worktree 1 |
61 | } | |
62 | ||
63 | test_absent() { | |
378932d3 | 64 | echo "100644 $EMPTY_BLOB 0 1" > expected && |
52030836 NTND |
65 | git ls-files --stage 1 > result && |
66 | test_cmp expected result && | |
67 | test ! -f 1 | |
68 | } | |
69 | ||
70 | setup_dirty() { | |
71 | git update-index --force-remove 1 && | |
72 | echo dirty > 1 && | |
378932d3 | 73 | git update-index --add --cacheinfo 100644 $EMPTY_BLOB 1 && |
52030836 NTND |
74 | git update-index --skip-worktree 1 |
75 | } | |
76 | ||
77 | test_dirty() { | |
378932d3 | 78 | echo "100644 $EMPTY_BLOB 0 1" > expected && |
52030836 NTND |
79 | git ls-files --stage 1 > result && |
80 | test_cmp expected result && | |
81 | echo dirty > expected | |
82 | test_cmp expected 1 | |
83 | } | |
84 | ||
85 | cat >expected <<EOF | |
86 | S 1 | |
87 | H 2 | |
88 | H init.t | |
89 | S sub/1 | |
90 | H sub/2 | |
91 | EOF | |
92 | ||
93 | test_expect_success 'index setup' ' | |
94 | git checkout -f init && | |
95 | mkdir sub && | |
96 | touch ./1 ./2 sub/1 sub/2 && | |
97 | git add 1 2 sub/1 sub/2 && | |
98 | git update-index --skip-worktree 1 sub/1 && | |
99 | git ls-files -t > result && | |
100 | test_cmp expected result | |
101 | ' | |
102 | ||
103 | test_expect_success 'git-add ignores worktree content' ' | |
104 | setup_absent && | |
105 | git add 1 && | |
106 | test_absent | |
107 | ' | |
108 | ||
109 | test_expect_success 'git-add ignores worktree content' ' | |
110 | setup_dirty && | |
111 | git add 1 && | |
112 | test_dirty | |
113 | ' | |
114 | ||
115 | test_expect_success 'git-rm fails if worktree is dirty' ' | |
116 | setup_dirty && | |
117 | test_must_fail git rm 1 && | |
118 | test_dirty | |
119 | ' | |
120 | ||
121 | cat >expected <<EOF | |
122 | Would remove expected | |
123 | Would remove result | |
124 | EOF | |
b3e1900a | 125 | test_expect_success 'git-clean, absent case' ' |
52030836 NTND |
126 | setup_absent && |
127 | git clean -n > result && | |
b3e1900a | 128 | test_i18ncmp expected result |
52030836 NTND |
129 | ' |
130 | ||
b3e1900a | 131 | test_expect_success 'git-clean, dirty case' ' |
52030836 NTND |
132 | setup_dirty && |
133 | git clean -n > result && | |
b3e1900a | 134 | test_i18ncmp expected result |
52030836 NTND |
135 | ' |
136 | ||
3d816767 MG |
137 | #TODO test_expect_failure 'git-apply adds file' false |
138 | #TODO test_expect_failure 'git-apply updates file' false | |
139 | #TODO test_expect_failure 'git-apply removes file' false | |
140 | #TODO test_expect_failure 'git-mv to skip-worktree' false | |
141 | #TODO test_expect_failure 'git-mv from skip-worktree' false | |
142 | #TODO test_expect_failure 'git-checkout' false | |
52030836 NTND |
143 | |
144 | test_done |