t / t3900-i18n-commit.shon commit Merge branch 'maint' (4a09bc9)
   1#!/bin/sh
   2#
   3# Copyright (c) 2006 Junio C Hamano
   4#
   5
   6test_description='commit and log output encodings'
   7
   8. ./test-lib.sh
   9
  10compare_with () {
  11        git show -s $1 | sed -e '1,/^$/d' -e 's/^    //' >current &&
  12        test_cmp current "$2"
  13}
  14
  15test_expect_success setup '
  16        : >F &&
  17        git add F &&
  18        T=$(git write-tree) &&
  19        C=$(git commit-tree $T <"$TEST_DIRECTORY"/t3900/1-UTF-8.txt) &&
  20        git update-ref HEAD $C &&
  21        git tag C0
  22'
  23
  24test_expect_success 'no encoding header for base case' '
  25        E=$(git cat-file commit C0 | sed -ne "s/^encoding //p") &&
  26        test z = "z$E"
  27'
  28
  29for H in ISO-8859-1 EUCJP ISO-2022-JP
  30do
  31        test_expect_success "$H setup" '
  32                git config i18n.commitencoding $H &&
  33                git checkout -b $H C0 &&
  34                echo $H >F &&
  35                git commit -a -F "$TEST_DIRECTORY"/t3900/$H.txt
  36        '
  37done
  38
  39for H in ISO-8859-1 EUCJP ISO-2022-JP
  40do
  41        test_expect_success "check encoding header for $H" '
  42                E=$(git cat-file commit '$H' | sed -ne "s/^encoding //p") &&
  43                test "z$E" = "z'$H'"
  44        '
  45done
  46
  47test_expect_success 'config to remove customization' '
  48        git config --unset-all i18n.commitencoding &&
  49        if Z=$(git config --get-all i18n.commitencoding)
  50        then
  51                echo Oops, should have failed.
  52                false
  53        else
  54                test z = "z$Z"
  55        fi &&
  56        git config i18n.commitencoding utf-8
  57'
  58
  59test_expect_success 'ISO-8859-1 should be shown in UTF-8 now' '
  60        compare_with ISO-8859-1 "$TEST_DIRECTORY"/t3900/1-UTF-8.txt
  61'
  62
  63for H in EUCJP ISO-2022-JP
  64do
  65        test_expect_success "$H should be shown in UTF-8 now" '
  66                compare_with '$H' "$TEST_DIRECTORY"/t3900/2-UTF-8.txt
  67        '
  68done
  69
  70test_expect_success 'config to add customization' '
  71        git config --unset-all i18n.commitencoding &&
  72        if Z=$(git config --get-all i18n.commitencoding)
  73        then
  74                echo Oops, should have failed.
  75                false
  76        else
  77                test z = "z$Z"
  78        fi
  79'
  80
  81for H in ISO-8859-1 EUCJP ISO-2022-JP
  82do
  83        test_expect_success "$H should be shown in itself now" '
  84                git config i18n.commitencoding '$H' &&
  85                compare_with '$H' "$TEST_DIRECTORY"/t3900/'$H'.txt
  86        '
  87done
  88
  89test_expect_success 'config to tweak customization' '
  90        git config i18n.logoutputencoding utf-8
  91'
  92
  93test_expect_success 'ISO-8859-1 should be shown in UTF-8 now' '
  94        compare_with ISO-8859-1 "$TEST_DIRECTORY"/t3900/1-UTF-8.txt
  95'
  96
  97for H in EUCJP ISO-2022-JP
  98do
  99        test_expect_success "$H should be shown in UTF-8 now" '
 100                compare_with '$H' "$TEST_DIRECTORY"/t3900/2-UTF-8.txt
 101        '
 102done
 103
 104for J in EUCJP ISO-2022-JP
 105do
 106        git config i18n.logoutputencoding $J
 107        for H in EUCJP ISO-2022-JP
 108        do
 109                test_expect_success "$H should be shown in $J now" '
 110                        compare_with '$H' "$TEST_DIRECTORY"/t3900/'$J'.txt
 111                '
 112        done
 113done
 114
 115for H in ISO-8859-1 EUCJP ISO-2022-JP
 116do
 117        test_expect_success "No conversion with $H" '
 118                compare_with "--encoding=none '$H'" "$TEST_DIRECTORY"/t3900/'$H'.txt
 119        '
 120done
 121
 122test_done