| #!/bin/sh |
| # |
| # Copyright (c) 2006 Junio C Hamano |
| # |
| |
| test_description='quoted output' |
| |
| TEST_PASSES_SANITIZE_LEAK=true |
| . ./test-lib.sh |
| |
| FN='濱野' |
| GN='純' |
| HT=' ' |
| DQ='"' |
| |
| test_have_prereq MINGW || |
| echo foo 2>/dev/null > "Name and an${HT}HT" |
| if ! test -f "Name and an${HT}HT" |
| then |
| # FAT/NTFS does not allow tabs in filenames |
| skip_all='Your filesystem does not allow tabs in filenames' |
| test_done |
| fi |
| |
| for_each_name () { |
| for name in \ |
| Name "Name and a${LF}LF" "Name and an${HT}HT" "Name${DQ}" \ |
| "$FN$HT$GN" "$FN$LF$GN" "$FN $GN" "$FN$GN" "$FN$DQ$GN" \ |
| "With SP in it" "$FN/file" |
| do |
| eval "$1" |
| done |
| } |
| |
| test_expect_success 'setup' ' |
| |
| mkdir "$FN" && |
| for_each_name "echo initial >\"\$name\"" && |
| git add . && |
| git commit -q -m Initial && |
| |
| for_each_name "echo second >\"\$name\"" && |
| git commit -a -m Second && |
| |
| for_each_name "echo modified >\"\$name\"" |
| |
| ' |
| |
| test_expect_success 'setup expected files' ' |
| cat >expect.quoted <<\EOF && |
| Name |
| "Name and a\nLF" |
| "Name and an\tHT" |
| "Name\"" |
| With SP in it |
| "\346\277\261\351\207\216\t\347\264\224" |
| "\346\277\261\351\207\216\n\347\264\224" |
| "\346\277\261\351\207\216 \347\264\224" |
| "\346\277\261\351\207\216\"\347\264\224" |
| "\346\277\261\351\207\216/file" |
| "\346\277\261\351\207\216\347\264\224" |
| EOF |
| |
| cat >expect.raw <<\EOF |
| Name |
| "Name and a\nLF" |
| "Name and an\tHT" |
| "Name\"" |
| With SP in it |
| "濱野\t純" |
| "濱野\n純" |
| 濱野 純 |
| "濱野\"純" |
| 濱野/file |
| 濱野純 |
| EOF |
| ' |
| |
| test_expect_success 'check fully quoted output from ls-files' ' |
| |
| git ls-files >current && test_cmp expect.quoted current |
| |
| ' |
| |
| test_expect_success 'check fully quoted output from diff-files' ' |
| |
| git diff --name-only >current && |
| test_cmp expect.quoted current |
| |
| ' |
| |
| test_expect_success 'check fully quoted output from diff-index' ' |
| |
| git diff --name-only HEAD >current && |
| test_cmp expect.quoted current |
| |
| ' |
| |
| test_expect_success 'check fully quoted output from diff-tree' ' |
| |
| git diff --name-only HEAD^ HEAD >current && |
| test_cmp expect.quoted current |
| |
| ' |
| |
| test_expect_success 'check fully quoted output from ls-tree' ' |
| |
| git ls-tree --name-only -r HEAD >current && |
| test_cmp expect.quoted current |
| |
| ' |
| |
| test_expect_success 'setting core.quotepath' ' |
| |
| git config --bool core.quotepath false |
| |
| ' |
| |
| test_expect_success 'check fully quoted output from ls-files' ' |
| |
| git ls-files >current && test_cmp expect.raw current |
| |
| ' |
| |
| test_expect_success 'check fully quoted output from diff-files' ' |
| |
| git diff --name-only >current && |
| test_cmp expect.raw current |
| |
| ' |
| |
| test_expect_success 'check fully quoted output from diff-index' ' |
| |
| git diff --name-only HEAD >current && |
| test_cmp expect.raw current |
| |
| ' |
| |
| test_expect_success 'check fully quoted output from diff-tree' ' |
| |
| git diff --name-only HEAD^ HEAD >current && |
| test_cmp expect.raw current |
| |
| ' |
| |
| test_expect_success 'check fully quoted output from ls-tree' ' |
| |
| git ls-tree --name-only -r HEAD >current && |
| test_cmp expect.raw current |
| |
| ' |
| |
| test_done |