You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
160 lines
4.2 KiB
160 lines
4.2 KiB
#!/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 && |
|
test_cmp 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 && |
|
test_cmp 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 | perl -pe y/\\000/\\012/ >current && |
|
test_cmp 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 && |
|
test_cmp 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 && |
|
test_cmp expected current' |
|
|
|
test_expect_success 'git diff-tree with-funny' \ |
|
'git diff-tree --name-status $t0 $t1 >current && |
|
test_cmp 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 | perl -pe y/\\000/\\012/ >current && |
|
test_cmp expected current' |
|
|
|
test_expect_success 'git diff-tree -z with-funny' \ |
|
'git diff-tree -z --name-status $t0 $t1 | perl -pe y/\\000/\\012/ >current && |
|
test_cmp 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 && |
|
test_cmp 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 && |
|
test_cmp 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 && |
|
test_cmp 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 && |
|
test_cmp 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 && |
|
test_cmp 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 && |
|
test_cmp 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 && |
|
test_cmp expected current' |
|
|
|
test_done
|
|
|