1#!/bin/sh
2
3test_description='test case insensitive pathspec limiting'
4. ./test-lib.sh
5
6if test_have_prereq CASE_INSENSITIVE_FS
7then
8	skip_all='skipping case sensitive tests - case insensitive file system'
9	test_done
10fi
11
12test_expect_success 'create commits with glob characters' '
13	test_commit bar bar &&
14	test_commit bAr bAr &&
15	test_commit BAR BAR &&
16	mkdir foo &&
17	test_commit foo/bar foo/bar &&
18	test_commit foo/bAr foo/bAr &&
19	test_commit foo/BAR foo/BAR &&
20	mkdir fOo &&
21	test_commit fOo/bar fOo/bar &&
22	test_commit fOo/bAr fOo/bAr &&
23	test_commit fOo/BAR fOo/BAR &&
24	mkdir FOO &&
25	test_commit FOO/bar FOO/bar &&
26	test_commit FOO/bAr FOO/bAr &&
27	test_commit FOO/BAR FOO/BAR
28'
29
30test_expect_success 'tree_entry_interesting matches bar' '
31	echo bar >expect &&
32	git log --format=%s -- "bar" >actual &&
33	test_cmp expect actual
34'
35
36test_expect_success 'tree_entry_interesting matches :(icase)bar' '
37	cat <<-EOF >expect &&
38	BAR
39	bAr
40	bar
41	EOF
42	git log --format=%s -- ":(icase)bar" >actual &&
43	test_cmp expect actual
44'
45
46test_expect_success 'tree_entry_interesting matches :(icase)bar with prefix' '
47	cat <<-EOF >expect &&
48	fOo/BAR
49	fOo/bAr
50	fOo/bar
51	EOF
52	( cd fOo && git log --format=%s -- ":(icase)bar" ) >actual &&
53	test_cmp expect actual
54'
55
56test_expect_success 'tree_entry_interesting matches :(icase)bar with empty prefix' '
57	cat <<-EOF >expect &&
58	FOO/BAR
59	FOO/bAr
60	FOO/bar
61	fOo/BAR
62	fOo/bAr
63	fOo/bar
64	foo/BAR
65	foo/bAr
66	foo/bar
67	EOF
68	( cd fOo && git log --format=%s -- ":(icase)../foo/bar" ) >actual &&
69	test_cmp expect actual
70'
71
72test_expect_success 'match_pathspec matches :(icase)bar' '
73	cat <<-EOF >expect &&
74	BAR
75	bAr
76	bar
77	EOF
78	git ls-files ":(icase)bar" >actual &&
79	test_cmp expect actual
80'
81
82test_expect_success 'match_pathspec matches :(icase)bar with prefix' '
83	cat <<-EOF >expect &&
84	fOo/BAR
85	fOo/bAr
86	fOo/bar
87	EOF
88	( cd fOo && git ls-files --full-name ":(icase)bar" ) >actual &&
89	test_cmp expect actual
90'
91
92test_expect_success 'match_pathspec matches :(icase)bar with empty prefix' '
93	cat <<-EOF >expect &&
94	bar
95	fOo/BAR
96	fOo/bAr
97	fOo/bar
98	EOF
99	( cd fOo && git ls-files --full-name ":(icase)bar" ../bar ) >actual &&
100	test_cmp expect actual
101'
102
103test_expect_success '"git diff" can take magic :(icase) pathspec' '
104	echo FOO/BAR >expect &&
105	git diff --name-only HEAD^ HEAD -- ":(icase)foo/bar" >actual &&
106	test_cmp expect actual
107'
108
109test_done
110