]>
Commit | Line | Data |
---|---|---|
368f99d5 JH |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2005 Junio C Hamano | |
4 | # | |
5 | ||
5be60078 | 6 | test_description='git ls-files -k and -m flags test. |
368f99d5 JH |
7 | |
8 | This test prepares the following in the cache: | |
9 | ||
10 | path0 - a file | |
11 | path1 - a symlink | |
12 | path2/file2 - a file in a directory | |
13 | path3/file3 - a file in a directory | |
3c568751 | 14 | pathx/ju - a file in a directory |
26c986e1 JH |
15 | submod1/ - a submodule |
16 | submod2/ - another submodule | |
368f99d5 JH |
17 | |
18 | and the following on the filesystem: | |
19 | ||
20 | path0/file0 - a file in a directory | |
21 | path1/file1 - a file in a directory | |
22 | path2 - a file | |
23 | path3 - a symlink | |
24 | path4 - a file | |
25 | path5 - a symlink | |
26 | path6/file6 - a file in a directory | |
3c568751 | 27 | pathx/ju/nk - a file in a directory to be killed |
26c986e1 JH |
28 | submod1/ - a submodule (modified from the cache) |
29 | submod2/ - a submodule (matches the cache) | |
368f99d5 | 30 | |
26c986e1 JH |
31 | git ls-files -k should report that existing filesystem objects |
32 | path0/*, path1/*, path2 and path3 to be killed. | |
b0391890 JH |
33 | |
34 | Also for modification test, the cache and working tree have: | |
35 | ||
36 | path7 - an empty file, modified to a non-empty file. | |
37 | path8 - a non-empty file, modified to an empty file. | |
38 | path9 - an empty file, cache dirtied. | |
39 | path10 - a non-empty file, cache dirtied. | |
40 | ||
41 | We should report path0, path1, path2/file2, path3/file3, path7 and path8 | |
26c986e1 | 42 | modified without reporting path9 and path10. submod1 is also modified. |
368f99d5 | 43 | ' |
03267e86 ÆAB |
44 | |
45 | TEST_PASSES_SANITIZE_LEAK=true | |
368f99d5 JH |
46 | . ./test-lib.sh |
47 | ||
cb648689 JS |
48 | test_expect_success 'git update-index --add to add various paths.' ' |
49 | date >path0 && | |
889c6f0e | 50 | test_ln_s_add xyzzy path1 && |
4c4d9d9b | 51 | mkdir path2 path3 pathx && |
cb648689 JS |
52 | date >path2/file2 && |
53 | date >path3/file3 && | |
4c4d9d9b | 54 | >pathx/ju && |
cb648689 JS |
55 | : >path7 && |
56 | date >path8 && | |
57 | : >path9 && | |
58 | date >path10 && | |
4c4d9d9b | 59 | git update-index --add -- path0 path?/file? pathx/ju path7 path8 path9 path10 && |
e6821d09 JK |
60 | git init submod1 && |
61 | git -C submod1 commit --allow-empty -m "empty 1" && | |
62 | git init submod2 && | |
63 | git -C submod2 commit --allow-empty -m "empty 2" && | |
99094a7a | 64 | git update-index --add submod[12] && |
26c986e1 JH |
65 | ( |
66 | cd submod1 && | |
67 | git commit --allow-empty -m "empty 1 (updated)" | |
68 | ) && | |
cb648689 JS |
69 | rm -fr path? # leave path10 alone |
70 | ' | |
368f99d5 | 71 | |
cb648689 JS |
72 | test_expect_success 'git ls-files -k to show killed files.' ' |
73 | date >path2 && | |
74 | if test_have_prereq SYMLINKS | |
75 | then | |
76 | ln -s frotz path3 && | |
77 | ln -s nitfol path5 | |
78 | else | |
79 | date >path3 && | |
80 | date >path5 | |
81 | fi && | |
4c4d9d9b | 82 | mkdir -p path0 path1 path6 pathx/ju && |
cb648689 JS |
83 | date >path0/file0 && |
84 | date >path1/file1 && | |
85 | date >path6/file6 && | |
86 | date >path7 && | |
87 | : >path8 && | |
88 | : >path9 && | |
89 | touch path10 && | |
4c4d9d9b JH |
90 | >pathx/ju/nk && |
91 | cat >.expected <<-\EOF | |
cb648689 JS |
92 | path0/file0 |
93 | path1/file1 | |
94 | path2 | |
95 | path3 | |
4c4d9d9b | 96 | pathx/ju/nk |
cb648689 | 97 | EOF |
680be044 | 98 | ' |
b0391890 | 99 | |
4c4d9d9b | 100 | test_expect_success 'git ls-files -k output (w/o icase)' ' |
60687de5 | 101 | git ls-files -k >.output && |
4c4d9d9b JH |
102 | test_cmp .expected .output |
103 | ' | |
104 | ||
105 | test_expect_success 'git ls-files -k output (w/ icase)' ' | |
60687de5 | 106 | git -c core.ignorecase=true ls-files -k >.output && |
cb648689 JS |
107 | test_cmp .expected .output |
108 | ' | |
b0391890 | 109 | |
cb648689 JS |
110 | test_expect_success 'git ls-files -m to show modified files.' ' |
111 | git ls-files -m >.output | |
112 | ' | |
b0391890 | 113 | |
cb648689 JS |
114 | test_expect_success 'validate git ls-files -m output.' ' |
115 | cat >.expected <<-\EOF && | |
116 | path0 | |
117 | path1 | |
118 | path2/file2 | |
119 | path3/file3 | |
120 | path7 | |
121 | path8 | |
4c4d9d9b | 122 | pathx/ju |
26c986e1 | 123 | submod1 |
cb648689 JS |
124 | EOF |
125 | test_cmp .expected .output | |
126 | ' | |
b0391890 | 127 | |
368f99d5 | 128 | test_done |