Merge branch 'rs/archive'
[git/builtin-gsoc.git] / t / t3001-ls-files-others-exclude.sh
blobae0639d8f3a3fa428dca31df55193487a74b5b57
1 #!/bin/sh
3 # Copyright (c) 2005 Junio C Hamano
6 test_description='git ls-files --others --exclude
8 This test runs git ls-files --others and tests --exclude patterns.
11 . ./test-lib.sh
13 rm -fr one three
14 for dir in . one one/two three
16 mkdir -p $dir &&
17 for i in 1 2 3 4 5 6 7 8
19 >$dir/a.$i
20 done
21 done
23 cat >expect <<EOF
24 a.2
25 a.4
26 a.5
27 a.8
28 one/a.3
29 one/a.4
30 one/a.5
31 one/a.7
32 one/two/a.2
33 one/two/a.3
34 one/two/a.5
35 one/two/a.7
36 one/two/a.8
37 three/a.2
38 three/a.3
39 three/a.4
40 three/a.5
41 three/a.8
42 EOF
44 echo '.gitignore
45 output
46 expect
47 .gitignore
48 *.7
49 !*.8' >.git/ignore
51 echo '*.1
52 /*.3
53 !*.6' >.gitignore
54 echo '*.2
55 two/*.4
56 !*.7
57 *.8' >one/.gitignore
58 echo '!*.2
59 !*.8' >one/two/.gitignore
61 test_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'
70 # Test \r\n (MSDOS-like systems)
71 printf '*.1\r\n/*.3\r\n!*.6\r\n' >.gitignore
73 test_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'
82 cat > excludes-file << EOF
83 *.[1-8]
85 EOF
87 git config core.excludesFile excludes-file
89 git runstatus | grep "^# " > output
91 cat > expect << EOF
92 # .gitignore
93 # a.6
94 # one/
95 # output
96 # three/
97 EOF
99 test_expect_success 'git-status honours core.excludesfile' \
100 'diff -u expect output'
102 test_done