t / t9129-git-svn-i18n-commitencoding.shon commit symbolic ref: refuse non-ref targets in HEAD (afe5d3d)
   1#!/bin/sh
   2#
   3# Copyright (c) 2008 Eric Wong
   4
   5test_description='git svn honors i18n.commitEncoding in config'
   6
   7. ./lib-git-svn.sh
   8
   9compare_git_head_with () {
  10        nr=`wc -l < "$1"`
  11        a=7
  12        b=$(($a + $nr - 1))
  13        git cat-file commit HEAD | sed -ne "$a,${b}p" >current &&
  14        test_cmp current "$1"
  15}
  16
  17compare_svn_head_with () {
  18        LC_ALL=en_US.UTF-8 svn log --limit 1 `git svn info --url` | \
  19                sed -e 1,3d -e "/^-\{1,\}\$/d" >current &&
  20        test_cmp current "$1"
  21}
  22
  23for H in ISO-8859-1 EUCJP ISO-2022-JP
  24do
  25        test_expect_success "$H setup" '
  26                mkdir $H &&
  27                svn import -m "$H test" $H "$svnrepo"/$H &&
  28                git svn clone "$svnrepo"/$H $H
  29        '
  30done
  31
  32for H in ISO-8859-1 EUCJP ISO-2022-JP
  33do
  34        test_expect_success "$H commit on git side" '
  35        (
  36                cd $H &&
  37                git config i18n.commitencoding $H &&
  38                git checkout -b t refs/remotes/git-svn &&
  39                echo $H >F &&
  40                git add F &&
  41                git commit -a -F "$TEST_DIRECTORY"/t3900/$H.txt &&
  42                E=$(git cat-file commit HEAD | sed -ne "s/^encoding //p") &&
  43                test "z$E" = "z$H"
  44                compare_git_head_with "$TEST_DIRECTORY"/t3900/$H.txt
  45        )
  46        '
  47done
  48
  49for H in ISO-8859-1 EUCJP ISO-2022-JP
  50do
  51        test_expect_success "$H dcommit to svn" '
  52        (
  53                cd $H &&
  54                git svn dcommit &&
  55                git cat-file commit HEAD | grep git-svn-id: &&
  56                E=$(git cat-file commit HEAD | sed -ne "s/^encoding //p") &&
  57                test "z$E" = "z$H" &&
  58                compare_git_head_with "$TEST_DIRECTORY"/t3900/$H.txt
  59        )
  60        '
  61done
  62
  63if locale -a |grep -q en_US.utf8; then
  64        test_expect_success 'ISO-8859-1 should match UTF-8 in svn' '
  65        (
  66                cd ISO-8859-1 &&
  67                compare_svn_head_with "$TEST_DIRECTORY"/t3900/1-UTF-8.txt
  68        )
  69        '
  70
  71        for H in EUCJP ISO-2022-JP
  72        do
  73                test_expect_success '$H should match UTF-8 in svn' '
  74                (
  75                        cd $H &&
  76                        compare_svn_head_with "$TEST_DIRECTORY"/t3900/2-UTF-8.txt
  77                )
  78                '
  79        done
  80else
  81        say "UTF-8 locale not available, test skipped"
  82fi
  83
  84test_done