summaryrefslogtreecommitdiff
path: root/t/t3080-list-files.sh
blob: 01b96623cfec2480ca25d415854ae302784bd0be (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#!/bin/sh

test_description='git list-files test'

. ./test-lib.sh

test_expect_success 'setup' '
	mkdir dir &&
	touch file dir/file &&
	git init gitlink &&
	( cd gitlink && test_commit foo ) &&
	git add file dir/file gitlink &&
	git commit -qm1
'

test_expect_success 'LS_COLORS env variable' '
	LS_COLORS="rs=0:fi=31:di=32" \
		git list-files --color=always | test_decode_color | \
		grep -v gitlink >actual &&
	cat >expected <<-\EOF &&
	<GREEN>dir<RESET>
	<RED>file<RESET>
	EOF
	test_cmp expected actual
'

test_expect_success 'color.ls.*' '
	test_config color.ls.file red &&
	test_config color.ls.directory green &&
	test_config color.ls.submodule yellow &&
	git list-files --color=always | test_decode_color >actual &&
	cat >expected <<-\EOF &&
	<GREEN>dir<RESET>
	<RED>file<RESET>
	<YELLOW>gitlink<RESET>
	EOF
	test_cmp expected actual
'

test_expect_success 'column output' '
	COLUMNS=20 git list-files --column=always >actual &&
	cat >expected <<-\EOF &&
	dir      gitlink
	file
	EOF
	test_cmp expected actual &&
	git list-files -1 >actual &&
	cat >expected <<-\EOF &&
	dir
	file
	gitlink
	EOF
	test_cmp expected actual
'

test_expect_success '--max-depth' '
	git list-files --max-depth=1 >actual &&
	cat >expected <<-\EOF &&
	dir/file
	file
	gitlink
	EOF
	test_cmp expected actual
'

test_expect_success 'recursive' '
	git list-files -R >actual &&
	cat >expected <<-\EOF &&
	dir/file
	file
	gitlink
	EOF
	test_cmp expected actual
'

test_expect_success 'globbing' '
	git list-files "f*" >actual &&
	cat >expected <<-\EOF &&
	file
	EOF
	test_cmp expected actual &&
	git list-files "**/f*" >actual &&
	cat >expected <<-\EOF &&
	dir/file
	file
	EOF
	test_cmp expected actual
'

test_expect_success 'no dups' '
	test_when_finished "git checkout file" &&
	echo dirty >>file &&
	git list-files -m file >actual &&
	echo "file" >expected &&
	test_cmp expected actual &&
	git list-files -cm file >actual &&
	echo "C file" >expected &&
	test_cmp expected actual &&
	git list-files -tcm file >actual &&
	test_cmp expected actual
'

test_expect_success '--classify' '
	git list-files -F >actual &&
	cat >expected <<-\EOF &&
	dir/
	file
	gitlink&
	EOF
	test_cmp expected actual
'

test_expect_success 'diff-cached' '
	test_when_finished "git checkout file" &&
	echo dirty >>file &&
	git add file &&
	git list-files -M >actual &&
	echo "file" >expected &&
	test_cmp expected actual
'

test_expect_success 'unmerged files' '
	git ls-files --stage file >index-info &&
	sed "s/ 0/ 2/;s/file/unmerged/" index-info | git update-index --index-info &&
	sed "s/ 0/ 3/;s,file,dir/unmerged," index-info | git update-index --index-info &&
	git list-files -u >actual &&
	cat >expected <<-\EOF &&
	dir
	unmerged
	EOF
	test_cmp expected actual
'

test_done