6bfd0c0582ed1e0774e7e0de45b2490ffa50bb0f
   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        echo 6 >a1 &&
  41        git commit --quiet -m "Commit by someone else" \
  42                --author="Someone else <not!me>" a1
  43'
  44
  45test_expect_success 'shortlog wrapping' '
  46        cat >expect <<\EOF &&
  47A U Thor (5):
  48      Test
  49      This is a very, very long first line for the commit message to see if
  50         it is wrapped correctly
  51      Th𝄞s 𝄞s a very, very long f𝄞rst l𝄞ne for the comm𝄞t message to see 𝄞f
  52         𝄞t 𝄞s wrapped correctly
  53      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
  54         message to see ø\9d\84\9ef ø\9d\84\9et ø\9d\84\9es wrapped correctly
  55      a                                                         12      34
  56         56     78
  57
  58Someone else (1):
  59      Commit by someone else
  60
  61EOF
  62        git shortlog -w HEAD >out &&
  63        test_cmp expect out
  64'
  65
  66test_expect_success 'shortlog from non-git directory' '
  67        git log HEAD >log &&
  68        GIT_DIR=non-existing git shortlog -w <log >out &&
  69        test_cmp expect out
  70'
  71
  72iconvfromutf8toiso88591() {
  73        printf "%s" "$*" | iconv -f UTF-8 -t ISO8859-1
  74}
  75
  76DSCHO="Jöhännës \"Dschö\" Schindëlin"
  77DSCHOE="$DSCHO <Johannes.Schindelin@gmx.de>"
  78MSG1="set a1 to 2 and some non-ASCII chars: Äßø"
  79MSG2="set a1 to 3 and some non-ASCII chars: áæï"
  80cat > expect << EOF
  81$DSCHO (2):
  82      $MSG1
  83      $MSG2
  84
  85EOF
  86
  87test_expect_success 'shortlog encoding' '
  88        git reset --hard "$commit" &&
  89        git config --unset i18n.commitencoding &&
  90        echo 2 > a1 &&
  91        git commit --quiet -m "$MSG1" --author="$DSCHOE" a1 &&
  92        git config i18n.commitencoding "ISO8859-1" &&
  93        echo 3 > a1 &&
  94        git commit --quiet -m "$(iconvfromutf8toiso88591 "$MSG2")" \
  95                --author="$(iconvfromutf8toiso88591 "$DSCHOE")" a1 &&
  96        git config --unset i18n.commitencoding &&
  97        git shortlog HEAD~2.. > out &&
  98test_cmp expect out'
  99
 100test_done