#!/bin/sh
#
# Copyright (c) 2005 Junio C Hamano
#

test_description='Pathnames with funny characters.

This test tries pathnames with funny characters in the working
tree, index, and tree objects.
'

. ./test-lib.sh

p0='no-funny'
p1='tabs	," (dq) and spaces'
p2='just space'

cat >"$p0" <<\EOF
1. A quick brown fox jumps over the lazy cat, oops dog.
2. A quick brown fox jumps over the lazy cat, oops dog.
3. A quick brown fox jumps over the lazy cat, oops dog.
EOF

cat >"$p1" "$p0"
echo 'Foo Bar Baz' >"$p2"

test -f "$p1" && cmp "$p0" "$p1" || {
	# since FAT/NTFS does not allow tabs in filenames, skip this test
	say 'Your filesystem does not allow tabs in filenames, test skipped.'
	test_done
}

echo 'just space
no-funny' >expected
test_expect_success 'git ls-files no-funny' \
	'git update-index --add "$p0" "$p2" &&
	git ls-files >current &&
	git diff expected current'

t0=`git write-tree`
echo "$t0" >t0

cat > expected <<\EOF
just space
no-funny
"tabs\t,\" (dq) and spaces"
EOF
test_expect_success 'git ls-files with-funny' \
	'git update-index --add "$p1" &&
	git ls-files >current &&
	git diff expected current'

echo 'just space
no-funny
tabs	," (dq) and spaces' >expected
test_expect_success 'git ls-files -z with-funny' \
	'git ls-files -z | tr \\000 \\012 >current &&
	git diff expected current'

t1=`git write-tree`
echo "$t1" >t1

cat > expected <<\EOF
just space
no-funny
"tabs\t,\" (dq) and spaces"
EOF
test_expect_success 'git ls-tree with funny' \
	'git ls-tree -r $t1 | sed -e "s/^[^	]*	//" >current &&
	 git diff expected current'

cat > expected <<\EOF
A	"tabs\t,\" (dq) and spaces"
EOF
test_expect_success 'git diff-index with-funny' \
	'git diff-index --name-status $t0 >current &&
	git diff expected current'

test_expect_success 'git diff-tree with-funny' \
	'git diff-tree --name-status $t0 $t1 >current &&
	git diff expected current'

echo 'A
tabs	," (dq) and spaces' >expected
test_expect_success 'git diff-index -z with-funny' \
	'git diff-index -z --name-status $t0 | tr \\000 \\012 >current &&
	git diff expected current'

test_expect_success 'git diff-tree -z with-funny' \
	'git diff-tree -z --name-status $t0 $t1 | tr \\000 \\012 >current &&
	git diff expected current'

cat > expected <<\EOF
CNUM	no-funny	"tabs\t,\" (dq) and spaces"
EOF
test_expect_success 'git diff-tree -C with-funny' \
	'git diff-tree -C --find-copies-harder --name-status \
		$t0 $t1 | sed -e 's/^C[0-9]*/CNUM/' >current &&
	git diff expected current'

cat > expected <<\EOF
RNUM	no-funny	"tabs\t,\" (dq) and spaces"
EOF
test_expect_success 'git diff-tree delete with-funny' \
	'git update-index --force-remove "$p0" &&
	git diff-index -M --name-status \
		$t0 | sed -e 's/^R[0-9]*/RNUM/' >current &&
	git diff expected current'

cat > expected <<\EOF
diff --git a/no-funny "b/tabs\t,\" (dq) and spaces"
similarity index NUM%
rename from no-funny
rename to "tabs\t,\" (dq) and spaces"
EOF
test_expect_success 'git diff-tree delete with-funny' \
	'git diff-index -M -p $t0 |
	 sed -e "s/index [0-9]*%/index NUM%/" >current &&
	 git diff expected current'

chmod +x "$p1"
cat > expected <<\EOF
diff --git a/no-funny "b/tabs\t,\" (dq) and spaces"
old mode 100644
new mode 100755
similarity index NUM%
rename from no-funny
rename to "tabs\t,\" (dq) and spaces"
EOF
test_expect_success 'git diff-tree delete with-funny' \
	'git diff-index -M -p $t0 |
	 sed -e "s/index [0-9]*%/index NUM%/" >current &&
	 git diff expected current'

cat >expected <<\EOF
 "tabs\t,\" (dq) and spaces"
 1 files changed, 0 insertions(+), 0 deletions(-)
EOF
test_expect_success 'git diff-tree rename with-funny applied' \
	'git diff-index -M -p $t0 |
	 git apply --stat | sed -e "s/|.*//" -e "s/ *\$//" >current &&
	 git diff expected current'

cat > expected <<\EOF
 no-funny
 "tabs\t,\" (dq) and spaces"
 2 files changed, 3 insertions(+), 3 deletions(-)
EOF
test_expect_success 'git diff-tree delete with-funny applied' \
	'git diff-index -p $t0 |
	 git apply --stat | sed -e "s/|.*//" -e "s/ *\$//" >current &&
	 git diff expected current'

test_expect_success 'git apply non-git diff' \
	'git diff-index -p $t0 |
	 sed -ne "/^[-+@]/p" |
	 git apply --stat | sed -e "s/|.*//" -e "s/ *\$//" >current &&
	 git diff expected current'

test_done
