Code

Hopefully the final update to draft release notes for 1.5.3.
[git.git] / t / t3902-quoted.sh
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
105 test_expect_success 'check fully quoted output from ls-files' '
107         git ls-files >current && diff -u expect.raw current
111 test_expect_success 'check fully quoted output from diff-files' '
113         git diff --name-only >current &&
114         diff -u expect.raw current
118 test_expect_success 'check fully quoted output from diff-index' '
120         git diff --name-only HEAD >current &&
121         diff -u expect.raw current
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
132 test_done