]>
Commit | Line | Data |
---|---|---|
f87f9497 JH |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2005 Junio C Hamano | |
4 | # | |
5 | ||
5be60078 | 6 | test_description='git ls-files --others --exclude |
f87f9497 | 7 | |
5be60078 | 8 | This test runs git ls-files --others and tests --exclude patterns. |
f87f9497 JH |
9 | ' |
10 | ||
11 | . ./test-lib.sh | |
12 | ||
13 | rm -fr one three | |
14 | for dir in . one one/two three | |
15 | do | |
16 | mkdir -p $dir && | |
1df092d2 | 17 | for i in 1 2 3 4 5 6 7 8 |
f87f9497 JH |
18 | do |
19 | >$dir/a.$i | |
20 | done | |
21 | done | |
22 | ||
23 | cat >expect <<EOF | |
24 | a.2 | |
25 | a.4 | |
26 | a.5 | |
1df092d2 | 27 | a.8 |
f87f9497 JH |
28 | one/a.3 |
29 | one/a.4 | |
30 | one/a.5 | |
1df092d2 JH |
31 | one/a.7 |
32 | one/two/a.2 | |
f87f9497 JH |
33 | one/two/a.3 |
34 | one/two/a.5 | |
1df092d2 JH |
35 | one/two/a.7 |
36 | one/two/a.8 | |
f87f9497 JH |
37 | three/a.2 |
38 | three/a.3 | |
39 | three/a.4 | |
40 | three/a.5 | |
1df092d2 | 41 | three/a.8 |
f87f9497 JH |
42 | EOF |
43 | ||
44 | echo '.gitignore | |
45 | output | |
46 | expect | |
47 | .gitignore | |
1df092d2 JH |
48 | *.7 |
49 | !*.8' >.git/ignore | |
f87f9497 JH |
50 | |
51 | echo '*.1 | |
1df092d2 JH |
52 | /*.3 |
53 | !*.6' >.gitignore | |
f87f9497 | 54 | echo '*.2 |
1df092d2 JH |
55 | two/*.4 |
56 | !*.7 | |
57 | *.8' >one/.gitignore | |
58 | echo '!*.2 | |
59 | !*.8' >one/two/.gitignore | |
f87f9497 JH |
60 | |
61 | test_expect_success \ | |
5be60078 JH |
62 | 'git ls-files --others with various exclude options.' \ |
63 | 'git ls-files --others \ | |
1df092d2 | 64 | --exclude=\*.6 \ |
f87f9497 JH |
65 | --exclude-per-directory=.gitignore \ |
66 | --exclude-from=.git/ignore \ | |
67 | >output && | |
3af82863 | 68 | test_cmp expect output' |
da7bc9b0 | 69 | |
d317e438 | 70 | # Test \r\n (MSDOS-like systems) |
0dbc4e89 | 71 | printf '*.1\r\n/*.3\r\n!*.6\r\n' >.gitignore |
d317e438 AR |
72 | |
73 | test_expect_success \ | |
5be60078 JH |
74 | 'git ls-files --others with \r\n line endings.' \ |
75 | 'git ls-files --others \ | |
d317e438 AR |
76 | --exclude=\*.6 \ |
77 | --exclude-per-directory=.gitignore \ | |
78 | --exclude-from=.git/ignore \ | |
79 | >output && | |
3af82863 | 80 | test_cmp expect output' |
d317e438 | 81 | |
0ba956d3 JS |
82 | cat > excludes-file << EOF |
83 | *.[1-8] | |
84 | e* | |
85 | EOF | |
86 | ||
5be60078 | 87 | git config core.excludesFile excludes-file |
0ba956d3 | 88 | |
637efc34 | 89 | git status | grep "^# " > output |
0ba956d3 JS |
90 | |
91 | cat > expect << EOF | |
92 | # .gitignore | |
93 | # a.6 | |
94 | # one/ | |
95 | # output | |
96 | # three/ | |
97 | EOF | |
98 | ||
99 | test_expect_success 'git-status honours core.excludesfile' \ | |
82ebb0b6 | 100 | 'test_cmp expect output' |
0ba956d3 | 101 | |
d6b8fc30 JH |
102 | test_expect_success 'trailing slash in exclude allows directory match(1)' ' |
103 | ||
104 | git ls-files --others --exclude=one/ >output && | |
105 | if grep "^one/" output | |
106 | then | |
107 | echo Ooops | |
108 | false | |
109 | else | |
110 | : happy | |
111 | fi | |
112 | ||
113 | ' | |
114 | ||
115 | test_expect_success 'trailing slash in exclude allows directory match (2)' ' | |
116 | ||
117 | git ls-files --others --exclude=one/two/ >output && | |
118 | if grep "^one/two/" output | |
119 | then | |
120 | echo Ooops | |
121 | false | |
122 | else | |
123 | : happy | |
124 | fi | |
125 | ||
126 | ' | |
127 | ||
128 | test_expect_success 'trailing slash in exclude forces directory match (1)' ' | |
129 | ||
130 | >two | |
131 | git ls-files --others --exclude=two/ >output && | |
132 | grep "^two" output | |
133 | ||
134 | ' | |
135 | ||
136 | test_expect_success 'trailing slash in exclude forces directory match (2)' ' | |
137 | ||
138 | git ls-files --others --exclude=one/a.1/ >output && | |
139 | grep "^one/a.1" output | |
140 | ||
141 | ' | |
142 | ||
da7bc9b0 | 143 | test_done |