t5300-pack-object.sh: Split the big verify-pack test into smaller parts.
[git] / t / t3902-quoted.sh
1 #!/bin/sh
2 #
3 # Copyright (c) 2006 Junio C Hamano
4 #
5
6 test_description='quoted output'
7
8 . ./test-lib.sh
9
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 }
15
16 FN='濱野'
17 GN='純'
18 HT='    '
19 LF='
20 '
21 DQ='"'
22
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 }
32
33 test_expect_success setup '
34
35         for_each_name "echo initial >\"\$name\""
36         git add . &&
37         git commit -q -m Initial &&
38
39         for_each_name "echo second >\"\$name\"" &&
40         git commit -a -m Second
41
42         for_each_name "echo modified >\"\$name\""
43
44 '
45
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
58
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
71
72 test_expect_success 'check fully quoted output from ls-files' '
73
74         git ls-files >current && diff -u expect.quoted current
75
76 '
77
78 test_expect_success 'check fully quoted output from diff-files' '
79
80         git diff --name-only >current &&
81         diff -u expect.quoted current
82
83 '
84
85 test_expect_success 'check fully quoted output from diff-index' '
86
87         git diff --name-only HEAD >current &&
88         diff -u expect.quoted current
89
90 '
91
92 test_expect_success 'check fully quoted output from diff-tree' '
93
94         git diff --name-only HEAD^ HEAD >current &&
95         diff -u expect.quoted current
96
97 '
98
99 test_expect_success 'setting core.quotepath' '
100
101         git config --bool core.quotepath false
102
103 '
104
105 test_expect_success 'check fully quoted output from ls-files' '
106
107         git ls-files >current && diff -u expect.raw current
108
109 '
110
111 test_expect_success 'check fully quoted output from diff-files' '
112
113         git diff --name-only >current &&
114         diff -u expect.raw current
115
116 '
117
118 test_expect_success 'check fully quoted output from diff-index' '
119
120         git diff --name-only HEAD >current &&
121         diff -u expect.raw current
122
123 '
124
125 test_expect_success 'check fully quoted output from diff-tree' '
126
127         git diff --name-only HEAD^ HEAD >current &&
128         diff -u expect.raw current
129
130 '
131
132 test_done