]>
Commit | Line | Data |
---|---|---|
b4d1690d NTND |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2008 Nguyễn Thái Ngọc Duy | |
4 | # | |
5 | ||
6 | test_description='skip-worktree bit test' | |
7 | ||
8 | . ./test-lib.sh | |
9 | ||
10 | cat >expect.full <<EOF | |
11 | H 1 | |
12 | H 2 | |
13 | H init.t | |
14 | H sub/1 | |
15 | H sub/2 | |
16 | EOF | |
17 | ||
18 | cat >expect.skip <<EOF | |
19 | S 1 | |
20 | H 2 | |
21 | H init.t | |
22 | S sub/1 | |
23 | H sub/2 | |
24 | EOF | |
25 | ||
b4d1690d NTND |
26 | setup_absent() { |
27 | test -f 1 && rm 1 | |
28 | git update-index --remove 1 && | |
378932d3 | 29 | git update-index --add --cacheinfo 100644 $EMPTY_BLOB 1 && |
b4d1690d NTND |
30 | git update-index --skip-worktree 1 |
31 | } | |
32 | ||
33 | test_absent() { | |
378932d3 | 34 | echo "100644 $EMPTY_BLOB 0 1" > expected && |
b4d1690d NTND |
35 | git ls-files --stage 1 > result && |
36 | test_cmp expected result && | |
37 | test ! -f 1 | |
38 | } | |
39 | ||
40 | setup_dirty() { | |
41 | git update-index --force-remove 1 && | |
42 | echo dirty > 1 && | |
378932d3 | 43 | git update-index --add --cacheinfo 100644 $EMPTY_BLOB 1 && |
b4d1690d NTND |
44 | git update-index --skip-worktree 1 |
45 | } | |
46 | ||
47 | test_dirty() { | |
378932d3 | 48 | echo "100644 $EMPTY_BLOB 0 1" > expected && |
b4d1690d NTND |
49 | git ls-files --stage 1 > result && |
50 | test_cmp expected result && | |
51 | echo dirty > expected | |
52 | test_cmp expected 1 | |
53 | } | |
54 | ||
55 | test_expect_success 'setup' ' | |
56 | test_commit init && | |
57 | mkdir sub && | |
58 | touch ./1 ./2 sub/1 sub/2 && | |
59 | git add 1 2 sub/1 sub/2 && | |
60 | git update-index --skip-worktree 1 sub/1 && | |
61 | git ls-files -t > result && | |
62 | test_cmp expect.skip result | |
63 | ' | |
64 | ||
65 | test_expect_success 'update-index' ' | |
66 | setup_absent && | |
67 | git update-index 1 && | |
68 | test_absent | |
69 | ' | |
70 | ||
71 | test_expect_success 'update-index' ' | |
72 | setup_dirty && | |
73 | git update-index 1 && | |
74 | test_dirty | |
75 | ' | |
76 | ||
77 | test_expect_success 'update-index --remove' ' | |
78 | setup_absent && | |
79 | git update-index --remove 1 && | |
80 | test -z "$(git ls-files 1)" && | |
81 | test ! -f 1 | |
82 | ' | |
83 | ||
84 | test_expect_success 'update-index --remove' ' | |
85 | setup_dirty && | |
86 | git update-index --remove 1 && | |
87 | test -z "$(git ls-files 1)" && | |
88 | echo dirty > expected && | |
89 | test_cmp expected 1 | |
90 | ' | |
91 | ||
5155c7f3 | 92 | test_expect_success 'ls-files --deleted' ' |
b4d1690d NTND |
93 | setup_absent && |
94 | test -z "$(git ls-files -d)" | |
95 | ' | |
96 | ||
5155c7f3 | 97 | test_expect_success 'ls-files --deleted' ' |
b4d1690d NTND |
98 | setup_dirty && |
99 | test -z "$(git ls-files -d)" | |
100 | ' | |
101 | ||
102 | test_expect_success 'ls-files --modified' ' | |
103 | setup_absent && | |
104 | test -z "$(git ls-files -m)" | |
105 | ' | |
106 | ||
107 | test_expect_success 'ls-files --modified' ' | |
108 | setup_dirty && | |
109 | test -z "$(git ls-files -m)" | |
110 | ' | |
111 | ||
112 | test_expect_success 'grep with skip-worktree file' ' | |
113 | git update-index --no-skip-worktree 1 && | |
114 | echo test > 1 && | |
115 | git update-index 1 && | |
116 | git update-index --skip-worktree 1 && | |
117 | rm 1 && | |
118 | test "$(git grep --no-ext-grep test)" = "1:test" | |
119 | ' | |
120 | ||
8125a58b | 121 | echo ":000000 100644 $ZERO_OID $EMPTY_BLOB A 1" > expected |
b4d1690d NTND |
122 | test_expect_success 'diff-index does not examine skip-worktree absent entries' ' |
123 | setup_absent && | |
124 | git diff-index HEAD -- 1 > result && | |
125 | test_cmp expected result | |
126 | ' | |
127 | ||
128 | test_expect_success 'diff-index does not examine skip-worktree dirty entries' ' | |
129 | setup_dirty && | |
130 | git diff-index HEAD -- 1 > result && | |
131 | test_cmp expected result | |
132 | ' | |
133 | ||
134 | test_expect_success 'diff-files does not examine skip-worktree absent entries' ' | |
135 | setup_absent && | |
136 | test -z "$(git diff-files -- one)" | |
137 | ' | |
138 | ||
139 | test_expect_success 'diff-files does not examine skip-worktree dirty entries' ' | |
140 | setup_dirty && | |
141 | test -z "$(git diff-files -- one)" | |
142 | ' | |
143 | ||
144 | test_expect_success 'git-rm succeeds on skip-worktree absent entries' ' | |
145 | setup_absent && | |
146 | git rm 1 | |
147 | ' | |
148 | ||
7fce6e3c | 149 | test_expect_success 'commit on skip-worktree absent entries' ' |
b4d1690d NTND |
150 | git reset && |
151 | setup_absent && | |
152 | test_must_fail git commit -m null 1 | |
153 | ' | |
154 | ||
7fce6e3c | 155 | test_expect_success 'commit on skip-worktree dirty entries' ' |
b4d1690d NTND |
156 | git reset && |
157 | setup_dirty && | |
158 | test_must_fail git commit -m null 1 | |
159 | ' | |
160 | ||
161 | test_done |