1#!/bin/sh
   2#
   3# Copyright (c) 2006 Junio C Hamano
   4#
   5test_description='quoted output'
   7. ./test-lib.sh
   9FN='濱野'
  11GN='純'
  12HT='    '
  13LF='
  14'
  15DQ='"'
  16echo 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}
  23for_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}
  33test_expect_success setup '
  35        for_each_name "echo initial >\"\$name\""
  37        git add . &&
  38        git commit -q -m Initial &&
  39        for_each_name "echo second >\"\$name\"" &&
  41        git commit -a -m Second
  42        for_each_name "echo modified >\"\$name\""
  44'
  46cat >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
  59cat >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
  72test_expect_success 'check fully quoted output from ls-files' '
  74        git ls-files >current && test_cmp expect.quoted current
  76'
  78test_expect_success 'check fully quoted output from diff-files' '
  80        git diff --name-only >current &&
  82        test_cmp expect.quoted current
  83'
  85test_expect_success 'check fully quoted output from diff-index' '
  87        git diff --name-only HEAD >current &&
  89        test_cmp expect.quoted current
  90'
  92test_expect_success 'check fully quoted output from diff-tree' '
  94        git diff --name-only HEAD^ HEAD >current &&
  96        test_cmp expect.quoted current
  97'
  99test_expect_success 'setting core.quotepath' '
 101        git config --bool core.quotepath false
 103'
 105test_expect_success 'check fully quoted output from ls-files' '
 107        git ls-files >current && test_cmp expect.raw current
 109'
 111test_expect_success 'check fully quoted output from diff-files' '
 113        git diff --name-only >current &&
 115        test_cmp expect.raw current
 116'
 118test_expect_success 'check fully quoted output from diff-index' '
 120        git diff --name-only HEAD >current &&
 122        test_cmp expect.raw current
 123'
 125test_expect_success 'check fully quoted output from diff-tree' '
 127        git diff --name-only HEAD^ HEAD >current &&
 129        test_cmp expect.raw current
 130'
 132test_done