Sync with 1.7.7.2
[git/gitweb.git] / t / t3300-funny-names.sh
blob5e29a052599bc28c0edaf56dfedb5f069b5ff01e
1 #!/bin/sh
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.
12 . ./test-lib.sh
14 p0='no-funny'
15 p1='tabs ," (dq) and spaces'
16 p2='just space'
18 cat >"$p0" <<\EOF
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.
22 EOF
24 cat 2>/dev/null >"$p1" "$p0"
25 echo 'Foo Bar Baz' >"$p2"
27 if test -f "$p1" && cmp "$p0" "$p1"
28 then
29 test_set_prereq TABS_IN_FILENAMES
30 else
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' "
36 echo 'just space
37 no-funny' >expected
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' '
46 t0=`git write-tree` &&
47 echo "$t0" >t0 &&
49 cat > expected <<\EOF
50 just space
51 no-funny
52 "tabs\t,\" (dq) and spaces"
53 EOF
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' "
62 echo 'just space
63 no-funny
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' '
72 t1=`git write-tree` &&
73 echo "$t1" >t1 &&
75 cat > expected <<\EOF
76 just space
77 no-funny
78 "tabs\t,\" (dq) and spaces"
79 EOF
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' '
87 cat > expected <<\EOF
88 A "tabs\t,\" (dq) and spaces"
89 EOF
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' "
101 echo 'A
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%
140 rename from no-funny
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' '
151 chmod +x "$p1" &&
152 cat > expected <<\EOF
153 diff --git a/no-funny "b/tabs\t,\" (dq) and spaces"
154 old mode 100644
155 new mode 100755
156 similarity index NUM%
157 rename from no-funny
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' '
168 cat >expected <<\EOF
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
181 no-funny
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'
198 test_done