t / t4052-stat-output.shon commit Merge branch 'mm/simple-push' (a3db851)
   1#!/bin/sh
   2#
   3# Copyright (c) 2012 Zbigniew Jędrzejewski-Szmek
   4#
   5
   6test_description='test --stat output of various commands'
   7
   8. ./test-lib.sh
   9. "$TEST_DIRECTORY"/lib-terminal.sh
  10
  11# 120 character name
  12name=aaaaaaaaaa
  13name=$name$name$name$name$name$name$name$name$name$name$name$name
  14test_expect_success 'preparation' '
  15        >"$name" &&
  16        git add "$name" &&
  17        git commit -m message &&
  18        echo a >"$name" &&
  19        git commit -m message "$name"
  20'
  21
  22while read cmd args
  23do
  24        cat >expect <<-'EOF'
  25         ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |    1 +
  26        EOF
  27        test_expect_success "$cmd: small change with long name gives more space to the name" '
  28                git $cmd $args >output &&
  29                grep " | " output >actual &&
  30                test_cmp expect actual
  31        '
  32
  33        cat >expect <<-'EOF'
  34         ...aaaaaaaaaaaaaaaaaaaaaaaaaa |    1 +
  35        EOF
  36        test_expect_success "$cmd --stat=width: a long name is given more room when the bar is short" '
  37                git $cmd $args --stat=40 >output &&
  38                grep " | " output >actual &&
  39                test_cmp expect actual
  40        '
  41
  42        test_expect_success "$cmd --stat-width=width with long name" '
  43                git $cmd $args --stat-width=40 >output &&
  44                grep " | " output >actual &&
  45                test_cmp expect actual
  46        '
  47
  48        cat >expect <<-'EOF'
  49         ...aaaaaaaaaaaaaaaaaaaaaaaaaaa |    1 +
  50        EOF
  51        test_expect_success "$cmd --stat=...,name-width with long name" '
  52                git $cmd $args --stat=60,30 >output &&
  53                grep " | " output >actual &&
  54                test_cmp expect actual
  55        '
  56
  57        test_expect_success "$cmd --stat-name-width with long name" '
  58                git $cmd $args --stat-name-width=30 >output &&
  59                grep " | " output >actual &&
  60                test_cmp expect actual
  61        '
  62done <<\EOF
  63format-patch -1 --stdout
  64diff HEAD^ HEAD --stat
  65show --stat
  66log -1 --stat
  67EOF
  68
  69
  70test_expect_success 'preparation for big change tests' '
  71        >abcd &&
  72        git add abcd &&
  73        git commit -m message &&
  74        i=0 &&
  75        while test $i -lt 1000
  76        do
  77                echo $i && i=$(($i + 1))
  78        done >abcd &&
  79        git commit -m message abcd
  80'
  81
  82cat >expect80 <<'EOF'
  83 abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  84EOF
  85
  86cat >expect200 <<'EOF'
  87 abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  88EOF
  89
  90while read verb expect cmd args
  91do
  92        test_expect_success "$cmd $verb COLUMNS (big change)" '
  93                COLUMNS=200 git $cmd $args >output
  94                grep " | " output >actual &&
  95                test_cmp "$expect" actual
  96        '
  97done <<\EOF
  98ignores expect80 format-patch -1 --stdout
  99respects expect200 diff HEAD^ HEAD --stat
 100respects expect200 show --stat
 101respects expect200 log -1 --stat
 102EOF
 103
 104cat >expect40 <<'EOF'
 105 abcd | 1000 ++++++++++++++++++++++++++
 106EOF
 107
 108while read verb expect cmd args
 109do
 110        test_expect_success "$cmd $verb not enough COLUMNS (big change)" '
 111                COLUMNS=40 git $cmd $args >output
 112                grep " | " output >actual &&
 113                test_cmp "$expect" actual
 114        '
 115
 116        test_expect_success "$cmd $verb statGraphWidth config" '
 117                git -c diff.statGraphWidth=26 $cmd $args >output
 118                grep " | " output >actual &&
 119                test_cmp "$expect" actual
 120        '
 121done <<\EOF
 122ignores expect80 format-patch -1 --stdout
 123respects expect40 diff HEAD^ HEAD --stat
 124respects expect40 show --stat
 125respects expect40 log -1 --stat
 126EOF
 127
 128
 129cat >expect <<'EOF'
 130 abcd | 1000 ++++++++++++++++++++++++++
 131EOF
 132while read cmd args
 133do
 134        test_expect_success "$cmd --stat=width with big change" '
 135                git $cmd $args --stat=40 >output
 136                grep " | " output >actual &&
 137                test_cmp expect actual
 138        '
 139
 140        test_expect_success "$cmd --stat-width=width with big change" '
 141                git $cmd $args --stat-width=40 >output
 142                grep " | " output >actual &&
 143                test_cmp expect actual
 144        '
 145
 146        test_expect_success "$cmd --stat-graph--width with big change" '
 147                git $cmd $args --stat-graph-width=26 >output
 148                grep " | " output >actual &&
 149                test_cmp expect actual
 150        '
 151done <<\EOF
 152format-patch -1 --stdout
 153diff HEAD^ HEAD --stat
 154show --stat
 155log -1 --stat
 156EOF
 157
 158test_expect_success 'preparation for long filename tests' '
 159        cp abcd aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &&
 160        git add aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &&
 161        git commit -m message
 162'
 163
 164cat >expect <<'EOF'
 165 ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 ++++++++++++
 166EOF
 167while read cmd args
 168do
 169        test_expect_success "$cmd --stat=width with big change is more balanced" '
 170                git $cmd $args --stat-width=60 >output &&
 171                grep " | " output >actual &&
 172                test_cmp expect actual
 173        '
 174done <<\EOF
 175format-patch -1 --stdout
 176diff HEAD^ HEAD --stat
 177show --stat
 178log -1 --stat
 179EOF
 180
 181cat >expect80 <<'EOF'
 182 ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 ++++++++++++++++++++
 183EOF
 184cat >expect200 <<'EOF'
 185 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 186EOF
 187while read verb expect cmd args
 188do
 189        test_expect_success "$cmd $verb COLUMNS (long filename)" '
 190                COLUMNS=200 git $cmd $args >output
 191                grep " | " output >actual &&
 192                test_cmp "$expect" actual
 193        '
 194done <<\EOF
 195ignores expect80 format-patch -1 --stdout
 196respects expect200 diff HEAD^ HEAD --stat
 197respects expect200 show --stat
 198respects expect200 log -1 --stat
 199EOF
 200
 201cat >expect <<'EOF'
 202 abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 203EOF
 204test_expect_success 'merge --stat respects COLUMNS (big change)' '
 205        git checkout -b branch HEAD^^ &&
 206        COLUMNS=100 git merge --stat --no-ff master^ >output &&
 207        grep " | " output >actual
 208        test_cmp expect actual
 209'
 210
 211cat >expect <<'EOF'
 212 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 +++++++++++++++++++++++++++++++++++++++
 213EOF
 214test_expect_success 'merge --stat respects COLUMNS (long filename)' '
 215        COLUMNS=100 git merge --stat --no-ff master >output &&
 216        grep " | " output >actual
 217        test_cmp expect actual
 218'
 219
 220test_done