3 # Copyright (c) 2005 Junio C Hamano
6 test_description
='Pathnames with funny characters.
8 This test tries pathnames with funny characters in the working
9 tree, index, and tree objects.
15 p1
='tabs ," (dq) and spaces'
19 1. A quick brown fox jumps over the lazy
cat, oops dog.
20 2. A quick brown fox jumps over the lazy
cat, oops dog.
21 3. A quick brown fox jumps over the lazy
cat, oops dog.
24 cat 2>/dev
/null
>"$p1" "$p0"
25 echo 'Foo Bar Baz' >"$p2"
27 if test -f "$p1" && cmp "$p0" "$p1"
29 test_set_prereq TABS_IN_FILENAMES
31 # since FAT/NTFS does not allow tabs in filenames, skip this test
32 say
'Your filesystem does not allow tabs in filenames'
35 test_expect_success TABS_IN_FILENAMES
'setup expect' "
40 test_expect_success TABS_IN_FILENAMES
'git ls-files no-funny' \
41 'git update-index --add "$p0" "$p2" &&
42 git ls-files >current &&
43 test_cmp expected current'
45 test_expect_success TABS_IN_FILENAMES
'setup expect' '
52 "tabs\t,\" (dq) and spaces"
56 test_expect_success TABS_IN_FILENAMES
'git ls-files with-funny' \
57 'git update-index --add "$p1" &&
58 git ls-files >current &&
59 test_cmp expected current'
61 test_expect_success TABS_IN_FILENAMES
'setup expect' "
64 tabs ,\" (dq) and spaces' >expected
67 test_expect_success TABS_IN_FILENAMES
'git ls-files -z with-funny' \
68 'git ls-files -z | perl -pe y/\\000/\\012/ >current &&
69 test_cmp expected current'
71 test_expect_success TABS_IN_FILENAMES
'setup expect' '
78 "tabs\t,\" (dq) and spaces"
82 test_expect_success TABS_IN_FILENAMES
'git ls-tree with funny' \
83 'git ls-tree -r $t1 | sed -e "s/^[^ ]* //" >current &&
84 test_cmp expected current'
86 test_expect_success TABS_IN_FILENAMES
'setup expect' '
88 A "tabs\t,\" (dq) and spaces"
92 test_expect_success TABS_IN_FILENAMES
'git diff-index with-funny' \
93 'git diff-index --name-status $t0 >current &&
94 test_cmp expected current'
96 test_expect_success TABS_IN_FILENAMES
'git diff-tree with-funny' \
97 'git diff-tree --name-status $t0 $t1 >current &&
98 test_cmp expected current'
100 test_expect_success TABS_IN_FILENAMES
'setup expect' "
102 tabs ,\" (dq) and spaces' >expected
105 test_expect_success TABS_IN_FILENAMES
'git diff-index -z with-funny' \
106 'git diff-index -z --name-status $t0 | perl -pe y/\\000/\\012/ >current &&
107 test_cmp expected current'
109 test_expect_success TABS_IN_FILENAMES
'git diff-tree -z with-funny' \
110 'git diff-tree -z --name-status $t0 $t1 | perl -pe y/\\000/\\012/ >current &&
111 test_cmp expected current'
113 test_expect_success TABS_IN_FILENAMES
'setup expect' '
114 cat > expected <<\EOF
115 CNUM no-funny "tabs\t,\" (dq) and spaces"
119 test_expect_success TABS_IN_FILENAMES
'git diff-tree -C with-funny' \
120 'git diff-tree -C --find-copies-harder --name-status \
121 $t0 $t1 | sed -e 's
/^C
[0-9]*/CNUM
/' >current &&
122 test_cmp expected current'
124 test_expect_success TABS_IN_FILENAMES
'setup expect' '
125 cat > expected <<\EOF
126 RNUM no-funny "tabs\t,\" (dq) and spaces"
130 test_expect_success TABS_IN_FILENAMES
'git diff-tree delete with-funny' \
131 'git update-index --force-remove "$p0" &&
132 git diff-index -M --name-status \
133 $t0 | sed -e 's
/^R
[0-9]*/RNUM
/' >current &&
134 test_cmp expected current'
136 test_expect_success TABS_IN_FILENAMES
'setup expect' '
137 cat > expected <<\EOF
138 diff --git a/no-funny "b/tabs\t,\" (dq) and spaces"
139 similarity index NUM%
141 rename to "tabs\t,\" (dq) and spaces"
145 test_expect_success TABS_IN_FILENAMES
'git diff-tree delete with-funny' \
146 'git diff-index -M -p $t0 |
147 sed -e "s/index [0-9]*%/index NUM%/" >current &&
148 test_cmp expected current'
150 test_expect_success TABS_IN_FILENAMES
'setup expect' '
152 cat > expected <<\EOF
153 diff --git a/no-funny "b/tabs\t,\" (dq) and spaces"
156 similarity index NUM%
158 rename to "tabs\t,\" (dq) and spaces"
162 test_expect_success TABS_IN_FILENAMES
'git diff-tree delete with-funny' \
163 'git diff-index -M -p $t0 |
164 sed -e "s/index [0-9]*%/index NUM%/" >current &&
165 test_cmp expected current'
167 test_expect_success TABS_IN_FILENAMES
'setup expect' '
169 "tabs\t,\" (dq) and spaces"
170 1 files changed, 0 insertions(+), 0 deletions(-)
174 test_expect_success TABS_IN_FILENAMES
'git diff-tree rename with-funny applied' \
175 'git diff-index -M -p $t0 |
176 git apply --stat | sed -e "s/|.*//" -e "s/ *\$//" >current &&
177 test_cmp expected current'
179 test_expect_success TABS_IN_FILENAMES
'setup expect' '
180 cat > expected <<\EOF
182 "tabs\t,\" (dq) and spaces"
183 2 files changed, 3 insertions(+), 3 deletions(-)
187 test_expect_success TABS_IN_FILENAMES
'git diff-tree delete with-funny applied' \
188 'git diff-index -p $t0 |
189 git apply --stat | sed -e "s/|.*//" -e "s/ *\$//" >current &&
190 test_cmp expected current'
192 test_expect_success TABS_IN_FILENAMES
'git apply non-git diff' \
193 'git diff-index -p $t0 |
194 sed -ne "/^[-+@]/p" |
195 git apply --stat | sed -e "s/|.*//" -e "s/ *\$//" >current &&
196 test_cmp expected current'