Staging
v0.5.1
https://github.com/git/git
Raw File
Tip revision: ca182053c7710a286d72102f4576cf32e0dafcfb authored by Junio C Hamano on 27 January 2006, 22:46:10 UTC
GIT 1.0.13
Tip revision: ca18205
t3300-funny-names.sh
#!/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 &&
	diff -u expected current'

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

echo 'just space
no-funny
"tabs\t,\" (dq) and spaces"' >expected
test_expect_success 'git-ls-files with-funny' \
	'git-update-index --add "$p1" &&
	git-ls-files >current &&
	diff -u 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 \\0 \\012 >current &&
	diff -u expected current'

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

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

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

test_expect_success 'git-diff-tree with-funny' \
	'git-diff-tree --name-status $t0 $t1 >current &&
	diff -u 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 \\0 \\012 >current &&
	diff -u expected current'

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

echo 'CNUM	no-funny	"tabs\t,\" (dq) and spaces"' >expected
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 &&
	diff -u expected current'

echo 'RNUM	no-funny	"tabs\t,\" (dq) and spaces"' >expected
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 &&
	diff -u expected current'

echo '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"' >expected

test_expect_success 'git-diff-tree delete with-funny' \
	'git-diff-index -M -p $t0 |
	 sed -e "s/index [0-9]*%/index NUM%/" >current &&
	 diff -u expected current'

chmod +x "$p1"
echo '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"' >expected

test_expect_success 'git-diff-tree delete with-funny' \
	'git-diff-index -M -p $t0 |
	 sed -e "s/index [0-9]*%/index NUM%/" >current &&
	 diff -u expected current'

echo >expected ' "tabs\t,\" (dq) and spaces"
 1 files changed, 0 insertions(+), 0 deletions(-)'
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 &&
	 diff -u expected current'

echo >expected ' no-funny
 "tabs\t,\" (dq) and spaces"
 2 files changed, 3 insertions(+), 3 deletions(-)'

test_expect_success 'git-diff-tree delete with-funny applied' \
	'git-diff-index -p $t0 |
	 git-apply --stat | sed -e "s/|.*//" -e "s/ *\$//" >current &&
	 diff -u 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 &&
	 diff -u expected current'

test_done
back to top