1#!/bin/sh 2# 3# Copyright (c) 2006 Junio C Hamano 4# 5 6test_description='quoted output' 7 8TEST_PASSES_SANITIZE_LEAK=true 9. ./test-lib.sh 10 11FN='濱野' 12GN='純' 13HT=' ' 14DQ='"' 15 16test_have_prereq MINGW || 17echo foo 2>/dev/null > "Name and an${HT}HT" 18if ! test -f "Name and an${HT}HT" 19then 20 # FAT/NTFS does not allow tabs in filenames 21 skip_all='Your filesystem does not allow tabs in filenames' 22 test_done 23fi 24 25for_each_name () { 26 for name in \ 27 Name "Name and a${LF}LF" "Name and an${HT}HT" "Name${DQ}" \ 28 "$FN$HT$GN" "$FN$LF$GN" "$FN $GN" "$FN$GN" "$FN$DQ$GN" \ 29 "With SP in it" "$FN/file" 30 do 31 eval "$1" 32 done 33} 34 35test_expect_success 'setup' ' 36 37 mkdir "$FN" && 38 for_each_name "echo initial >\"\$name\"" && 39 git add . && 40 git commit -q -m Initial && 41 42 for_each_name "echo second >\"\$name\"" && 43 git commit -a -m Second && 44 45 for_each_name "echo modified >\"\$name\"" 46 47' 48 49test_expect_success 'setup expected files' ' 50cat >expect.quoted <<\EOF && 51Name 52"Name and a\nLF" 53"Name and an\tHT" 54"Name\"" 55With SP in it 56"\346\277\261\351\207\216\t\347\264\224" 57"\346\277\261\351\207\216\n\347\264\224" 58"\346\277\261\351\207\216 \347\264\224" 59"\346\277\261\351\207\216\"\347\264\224" 60"\346\277\261\351\207\216/file" 61"\346\277\261\351\207\216\347\264\224" 62EOF 63 64cat >expect.raw <<\EOF 65Name 66"Name and a\nLF" 67"Name and an\tHT" 68"Name\"" 69With SP in it 70"濱野\t純" 71"濱野\n純" 72濱野 純 73"濱野\"純" 74濱野/file 75濱野純 76EOF 77' 78 79test_expect_success 'check fully quoted output from ls-files' ' 80 81 git ls-files >current && test_cmp expect.quoted current 82 83' 84 85test_expect_success 'check fully quoted output from diff-files' ' 86 87 git diff --name-only >current && 88 test_cmp expect.quoted current 89 90' 91 92test_expect_success 'check fully quoted output from diff-index' ' 93 94 git diff --name-only HEAD >current && 95 test_cmp expect.quoted current 96 97' 98 99test_expect_success 'check fully quoted output from diff-tree' ' 100 101 git diff --name-only HEAD^ HEAD >current && 102 test_cmp expect.quoted current 103 104' 105 106test_expect_success 'check fully quoted output from ls-tree' ' 107 108 git ls-tree --name-only -r HEAD >current && 109 test_cmp expect.quoted current 110 111' 112 113test_expect_success 'setting core.quotepath' ' 114 115 git config --bool core.quotepath false 116 117' 118 119test_expect_success 'check fully quoted output from ls-files' ' 120 121 git ls-files >current && test_cmp expect.raw current 122 123' 124 125test_expect_success 'check fully quoted output from diff-files' ' 126 127 git diff --name-only >current && 128 test_cmp expect.raw current 129 130' 131 132test_expect_success 'check fully quoted output from diff-index' ' 133 134 git diff --name-only HEAD >current && 135 test_cmp expect.raw current 136 137' 138 139test_expect_success 'check fully quoted output from diff-tree' ' 140 141 git diff --name-only HEAD^ HEAD >current && 142 test_cmp expect.raw current 143 144' 145 146test_expect_success 'check fully quoted output from ls-tree' ' 147 148 git ls-tree --name-only -r HEAD >current && 149 test_cmp expect.raw current 150 151' 152 153test_done 154