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