1 #!/bin/sh
2 #
3 # Copyright (c) 2006 Junio C Hamano
4 #
6 test_description='quoted output'
8 . ./test-lib.sh
10 P1='pathname with HT'
11 : >"$P1" 2>&1 && test -f "$P1" && rm -f "$P1" || {
12 echo >&2 'Filesystem does not support HT in names'
13 test_done
14 }
16 FN='濱野'
17 GN='純'
18 HT=' '
19 LF='
20 '
21 DQ='"'
23 for_each_name () {
24 for name in \
25 Name "Name and a${LF}LF" "Name and an${HT}HT" "Name${DQ}" \
26 "$FN$HT$GN" "$FN$LF$GN" "$FN $GN" "$FN$GN" "$FN$DQ$GN" \
27 "With SP in it"
28 do
29 eval "$1"
30 done
31 }
33 test_expect_success setup '
35 for_each_name "echo initial >\"\$name\""
36 git add . &&
37 git commit -q -m Initial &&
39 for_each_name "echo second >\"\$name\"" &&
40 git commit -a -m Second
42 for_each_name "echo modified >\"\$name\""
44 '
46 cat >expect.quoted <<\EOF
47 Name
48 "Name and a\nLF"
49 "Name and an\tHT"
50 "Name\""
51 With SP in it
52 "\346\277\261\351\207\216\t\347\264\224"
53 "\346\277\261\351\207\216\n\347\264\224"
54 "\346\277\261\351\207\216 \347\264\224"
55 "\346\277\261\351\207\216\"\347\264\224"
56 "\346\277\261\351\207\216\347\264\224"
57 EOF
59 cat >expect.raw <<\EOF
60 Name
61 "Name and a\nLF"
62 "Name and an\tHT"
63 "Name\""
64 With SP in it
65 "濱野\t純"
66 "濱野\n純"
67 濱野 純
68 "濱野\"純"
69 濱野純
70 EOF
72 test_expect_success 'check fully quoted output from ls-files' '
74 git ls-files >current && diff -u expect.quoted current
76 '
78 test_expect_success 'check fully quoted output from diff-files' '
80 git diff --name-only >current &&
81 diff -u expect.quoted current
83 '
85 test_expect_success 'check fully quoted output from diff-index' '
87 git diff --name-only HEAD >current &&
88 diff -u expect.quoted current
90 '
92 test_expect_success 'check fully quoted output from diff-tree' '
94 git diff --name-only HEAD^ HEAD >current &&
95 diff -u expect.quoted current
97 '
99 test_expect_success 'setting core.quotepath' '
101 git config --bool core.quotepath false
103 '
105 test_expect_success 'check fully quoted output from ls-files' '
107 git ls-files >current && diff -u expect.raw current
109 '
111 test_expect_success 'check fully quoted output from diff-files' '
113 git diff --name-only >current &&
114 diff -u expect.raw current
116 '
118 test_expect_success 'check fully quoted output from diff-index' '
120 git diff --name-only HEAD >current &&
121 diff -u expect.raw current
123 '
125 test_expect_success 'check fully quoted output from diff-tree' '
127 git diff --name-only HEAD^ HEAD >current &&
128 diff -u expect.raw current
130 '
132 test_done