1#!/bin/sh
2#
3# Copyright (c) 2005 Junio C Hamano
4#
5
6test_description='git-ls-files --others --exclude
7
8This test runs git-ls-files --others and tests --exclude patterns.
9'
10
11. ./test-lib.sh
12
13rm -fr one three
14for dir in . one one/two three
15do
16 mkdir -p $dir &&
17 for i in 1 2 3 4 5 6 7 8
18 do
19 >$dir/a.$i
20 done
21done
22
23cat >expect <<EOF
24a.2
25a.4
26a.5
27a.8
28one/a.3
29one/a.4
30one/a.5
31one/a.7
32one/two/a.2
33one/two/a.3
34one/two/a.5
35one/two/a.7
36one/two/a.8
37three/a.2
38three/a.3
39three/a.4
40three/a.5
41three/a.8
42EOF
43
44echo '.gitignore
45output
46expect
47.gitignore
48*.7
49!*.8' >.git/ignore
50
51echo '*.1
52/*.3
53!*.6' >.gitignore
54echo '*.2
55two/*.4
56!*.7
57*.8' >one/.gitignore
58echo '!*.2
59!*.8' >one/two/.gitignore
60
61test_expect_success \
62 'git-ls-files --others with various exclude options.' \
63 'git-ls-files --others \
64 --exclude=\*.6 \
65 --exclude-per-directory=.gitignore \
66 --exclude-from=.git/ignore \
67 >output &&
68 git diff expect output'
69
70# Test \r\n (MSDOS-like systems)
71printf '*.1\r\n/*.3\r\n!*.6\r\n' >.gitignore
72
73test_expect_success \
74 'git-ls-files --others with \r\n line endings.' \
75 'git-ls-files --others \
76 --exclude=\*.6 \
77 --exclude-per-directory=.gitignore \
78 --exclude-from=.git/ignore \
79 >output &&
80 git diff expect output'
81
82cat > excludes-file << EOF
83*.[1-8]
84e*
85EOF
86
87git-config core.excludesFile excludes-file
88
89git-runstatus | grep "^# " > output
90
91cat > expect << EOF
92# .gitignore
93# a.6
94# one/
95# output
96# three/
97EOF
98
99test_expect_success 'git-status honours core.excludesfile' \
100 'diff -u expect output'
101
102test_done