t / t9129-git-svn-i18n-commitencoding.shon commit Merge branch 'ab/grep-lose-opt-regflags' (eac97b4)
   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
  17prepare_a_utf8_locale
  18
  19compare_svn_head_with () {
  20        # extract just the log message and strip out committer info.
  21        # don't use --limit here since svn 1.1.x doesn't have it,
  22        LC_ALL="$a_utf8_locale" svn log $(git svn info --url) | perl -w -e '
  23                use bytes;
  24                $/ = ("-"x72) . "\n";
  25                my @x = <STDIN>;
  26                @x = split(/\n/, $x[1]);
  27                splice(@x, 0, 2);
  28                $x[-1] = "";
  29                print join("\n", @x);
  30        ' > current &&
  31        test_cmp current "$1"
  32}
  33
  34for H in ISO8859-1 eucJP ISO-2022-JP
  35do
  36        test_expect_success "$H setup" '
  37                mkdir $H &&
  38                svn_cmd import -m "$H test" $H "$svnrepo"/$H &&
  39                git svn clone "$svnrepo"/$H $H
  40        '
  41done
  42
  43for H in ISO8859-1 eucJP ISO-2022-JP
  44do
  45        test_expect_success "$H commit on git side" '
  46        (
  47                cd $H &&
  48                git config i18n.commitencoding $H &&
  49                git checkout -b t refs/remotes/git-svn &&
  50                echo $H >F &&
  51                git add F &&
  52                git commit -a -F "$TEST_DIRECTORY"/t3900/$H.txt &&
  53                E=$(git cat-file commit HEAD | sed -ne "s/^encoding //p") &&
  54                test "z$E" = "z$H"
  55                compare_git_head_with "$TEST_DIRECTORY"/t3900/$H.txt
  56        )
  57        '
  58done
  59
  60for H in ISO8859-1 eucJP ISO-2022-JP
  61do
  62        test_expect_success "$H dcommit to svn" '
  63        (
  64                cd $H &&
  65                git svn dcommit &&
  66                git cat-file commit HEAD | grep git-svn-id: &&
  67                E=$(git cat-file commit HEAD | sed -ne "s/^encoding //p") &&
  68                test "z$E" = "z$H" &&
  69                compare_git_head_with "$TEST_DIRECTORY"/t3900/$H.txt
  70        )
  71        '
  72done
  73
  74test_expect_success UTF8 'ISO-8859-1 should match UTF-8 in svn' '
  75        (
  76                cd ISO8859-1 &&
  77                compare_svn_head_with "$TEST_DIRECTORY"/t3900/1-UTF-8.txt
  78        )
  79'
  80
  81for H in eucJP ISO-2022-JP
  82do
  83        test_expect_success UTF8 "$H should match UTF-8 in svn" '
  84                (
  85                        cd $H &&
  86                        compare_svn_head_with "$TEST_DIRECTORY"/t3900/2-UTF-8.txt
  87                )
  88        '
  89done
  90
  91test_done