t / t3902-quoted.shon commit Merge branch 'jk/maint-soliconv' into maint (027b5a4)
   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"
  18test -f "Name and an${HT}HT" || {
  19        # since FAT/NTFS does not allow tabs in filenames, skip this test
  20        say 'Your filesystem does not allow tabs in filenames, test skipped.'
  21        test_done
  22}
  23
  24for_each_name () {
  25        for name in \
  26            Name "Name and a${LF}LF" "Name and an${HT}HT" "Name${DQ}" \
  27            "$FN$HT$GN" "$FN$LF$GN" "$FN $GN" "$FN$GN" "$FN$DQ$GN" \
  28            "With SP in it"
  29        do
  30                eval "$1"
  31        done
  32}
  33
  34test_expect_success setup '
  35
  36        for_each_name "echo initial >\"\$name\""
  37        git add . &&
  38        git commit -q -m Initial &&
  39
  40        for_each_name "echo second >\"\$name\"" &&
  41        git commit -a -m Second
  42
  43        for_each_name "echo modified >\"\$name\""
  44
  45'
  46
  47cat >expect.quoted <<\EOF
  48Name
  49"Name and a\nLF"
  50"Name and an\tHT"
  51"Name\""
  52With SP in it
  53"\346\277\261\351\207\216\t\347\264\224"
  54"\346\277\261\351\207\216\n\347\264\224"
  55"\346\277\261\351\207\216 \347\264\224"
  56"\346\277\261\351\207\216\"\347\264\224"
  57"\346\277\261\351\207\216\347\264\224"
  58EOF
  59
  60cat >expect.raw <<\EOF
  61Name
  62"Name and a\nLF"
  63"Name and an\tHT"
  64"Name\""
  65With SP in it
  66"濱野\t純"
  67"濱野\n純"
  68濱野 純
  69"濱野\"純"
  70濱野純
  71EOF
  72
  73test_expect_success 'check fully quoted output from ls-files' '
  74
  75        git ls-files >current && test_cmp expect.quoted current
  76
  77'
  78
  79test_expect_success 'check fully quoted output from diff-files' '
  80
  81        git diff --name-only >current &&
  82        test_cmp expect.quoted current
  83
  84'
  85
  86test_expect_success 'check fully quoted output from diff-index' '
  87
  88        git diff --name-only HEAD >current &&
  89        test_cmp expect.quoted current
  90
  91'
  92
  93test_expect_success 'check fully quoted output from diff-tree' '
  94
  95        git diff --name-only HEAD^ HEAD >current &&
  96        test_cmp expect.quoted current
  97
  98'
  99
 100test_expect_success 'setting core.quotepath' '
 101
 102        git config --bool core.quotepath false
 103
 104'
 105
 106test_expect_success 'check fully quoted output from ls-files' '
 107
 108        git ls-files >current && test_cmp expect.raw current
 109
 110'
 111
 112test_expect_success 'check fully quoted output from diff-files' '
 113
 114        git diff --name-only >current &&
 115        test_cmp expect.raw current
 116
 117'
 118
 119test_expect_success 'check fully quoted output from diff-index' '
 120
 121        git diff --name-only HEAD >current &&
 122        test_cmp expect.raw current
 123
 124'
 125
 126test_expect_success 'check fully quoted output from diff-tree' '
 127
 128        git diff --name-only HEAD^ HEAD >current &&
 129        test_cmp expect.raw current
 130
 131'
 132
 133test_done