1#!/bin/sh
   2#
   3# Copyright (c) 2006 Junio C Hamano
   4#
   5test_description='quoted output'
   7. ./test-lib.sh
   9P1='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}
  15FN='濱野'
  17GN='純'
  18HT='    '
  19LF='
  20'
  21DQ='"'
  22for_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}
  32test_expect_success setup '
  34        for_each_name "echo initial >\"\$name\""
  36        git add . &&
  37        git commit -q -m Initial &&
  38        for_each_name "echo second >\"\$name\"" &&
  40        git commit -a -m Second
  41        for_each_name "echo modified >\"\$name\""
  43'
  45cat >expect.quoted <<\EOF
  47Name
  48"Name and a\nLF"
  49"Name and an\tHT"
  50"Name\""
  51With 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"
  57EOF
  58cat >expect.raw <<\EOF
  60Name
  61"Name and a\nLF"
  62"Name and an\tHT"
  63"Name\""
  64With SP in it
  65"濱野\t純"
  66"濱野\n純"
  67濱野 純
  68"濱野\"純"
  69濱野純
  70EOF
  71test_expect_success 'check fully quoted output from ls-files' '
  73        git ls-files >current && diff -u expect.quoted current
  75'
  77test_expect_success 'check fully quoted output from diff-files' '
  79        git diff --name-only >current &&
  81        diff -u expect.quoted current
  82'
  84test_expect_success 'check fully quoted output from diff-index' '
  86        git diff --name-only HEAD >current &&
  88        diff -u expect.quoted current
  89'
  91test_expect_success 'check fully quoted output from diff-tree' '
  93        git diff --name-only HEAD^ HEAD >current &&
  95        diff -u expect.quoted current
  96'
  98test_expect_success 'setting core.quotepath' '
 100        git config --bool core.quotepath false
 102'
 104test_expect_success 'check fully quoted output from ls-files' '
 106        git ls-files >current && diff -u expect.raw current
 108'
 110test_expect_success 'check fully quoted output from diff-files' '
 112        git diff --name-only >current &&
 114        diff -u expect.raw current
 115'
 117test_expect_success 'check fully quoted output from diff-index' '
 119        git diff --name-only HEAD >current &&
 121        diff -u expect.raw current
 122'
 124test_expect_success 'check fully quoted output from diff-tree' '
 126        git diff --name-only HEAD^ HEAD >current &&
 128        diff -u expect.raw current
 129'
 131test_done