438a826473b483a9aad94264c62687d3e78861f0
   1#!/bin/sh
   2#
   3# Copyright (c) 2006 Johannes E. Schindelin
   4#
   5
   6test_description='git shortlog
   7'
   8
   9. ./test-lib.sh
  10
  11test_expect_success 'setup' '
  12        echo 1 >a1 &&
  13        git add a1 &&
  14        tree=$(git write-tree) &&
  15        commit=$(printf "%s\n" "Test" "" | git commit-tree "$tree") &&
  16        git update-ref HEAD "$commit" &&
  17
  18        echo 2 >a1 &&
  19        git commit --quiet -m "This is a very, very long first line for the commit message to see if it is wrapped correctly" a1 &&
  20
  21        # test if the wrapping is still valid
  22        # when replacing all is by treble clefs.
  23        echo 3 >a1 &&
  24        git commit --quiet -m "$(
  25                echo "This is a very, very long first line for the commit message to see if it is wrapped correctly" |
  26                sed "s/i/1234/g" |
  27                tr 1234 "\360\235\204\236")" a1 &&
  28
  29        # now fsck up the utf8
  30        git config i18n.commitencoding non-utf-8 &&
  31        echo 4 >a1 &&
  32        git commit --quiet -m "$(
  33                echo "This is a very, very long first line for the commit message to see if it is wrapped correctly" |
  34                sed "s/i/1234/g" |
  35                tr 1234 "\370\235\204\236")" a1 &&
  36
  37        echo 5 >a1 &&
  38        git commit --quiet -m "a                                                                12      34      56      78" a1
  39'
  40
  41test_expect_success 'shortlog wrapping' '
  42        cat >expect <<\EOF &&
  43A U Thor (5):
  44      Test
  45      This is a very, very long first line for the commit message to see if
  46         it is wrapped correctly
  47      Th𝄞s 𝄞s a very, very long f𝄞rst l𝄞ne for the comm𝄞t message to see 𝄞f
  48         𝄞t 𝄞s wrapped correctly
  49      Thø\9d\84\9es ø\9d\84\9es a very, very long fø\9d\84\9erst lø\9d\84\9ene for the commø\9d\84\9et
  50         message to see ø\9d\84\9ef ø\9d\84\9et ø\9d\84\9es wrapped correctly
  51      a                                                         12      34
  52         56     78
  53
  54EOF
  55        git shortlog -w HEAD >out &&
  56        test_cmp expect out
  57'
  58
  59test_expect_success 'shortlog from non-git directory' '
  60        git log HEAD >log &&
  61        GIT_DIR=non-existing git shortlog -w <log >out &&
  62        test_cmp expect out
  63'
  64
  65iconvfromutf8toiso88591() {
  66        printf "%s" "$*" | iconv -f UTF-8 -t ISO8859-1
  67}
  68
  69DSCHO="Jöhännës \"Dschö\" Schindëlin"
  70DSCHOE="$DSCHO <Johannes.Schindelin@gmx.de>"
  71MSG1="set a1 to 2 and some non-ASCII chars: Äßø"
  72MSG2="set a1 to 3 and some non-ASCII chars: áæï"
  73cat > expect << EOF
  74$DSCHO (2):
  75      $MSG1
  76      $MSG2
  77
  78EOF
  79
  80test_expect_success 'shortlog encoding' '
  81        git reset --hard "$commit" &&
  82        git config --unset i18n.commitencoding &&
  83        echo 2 > a1 &&
  84        git commit --quiet -m "$MSG1" --author="$DSCHOE" a1 &&
  85        git config i18n.commitencoding "ISO8859-1" &&
  86        echo 3 > a1 &&
  87        git commit --quiet -m "$(iconvfromutf8toiso88591 "$MSG2")" \
  88                --author="$(iconvfromutf8toiso88591 "$DSCHOE")" a1 &&
  89        git config --unset i18n.commitencoding &&
  90        git shortlog HEAD~2.. > out &&
  91test_cmp expect out'
  92
  93test_done