(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:'test --stat output of various commands' span_id:15))}
          spids: [13]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(.)} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) (/lib-terminal.sh)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:name)
          op: assign_op.Equal
          rhs: {(aaaaaaaaaa)}
          spids: [34]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:name)
          op: assign_op.Equal
          rhs: 
            {($ Id.VSub_DollarName '$name') ($ Id.VSub_DollarName '$name') 
              ($ Id.VSub_DollarName '$name') ($ Id.VSub_DollarName '$name') ($ Id.VSub_DollarName '$name') ($ Id.VSub_DollarName '$name') 
              ($ Id.VSub_DollarName '$name') ($ Id.VSub_DollarName '$name') ($ Id.VSub_DollarName '$name') ($ Id.VSub_DollarName '$name') 
              ($ Id.VSub_DollarName '$name') ($ Id.VSub_DollarName '$name')
            }
          spids: [37]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:preparation span_id:54))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:58) 
          (Token id:Id.Lit_Chars val:'\t>"$name" &&\n' span_id:59) (Token id:Id.Lit_Chars val:'\tgit add "$name" &&\n' span_id:60) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m message &&\n' span_id:61) (Token id:Id.Lit_Chars val:'\techo a >"$name" &&\n' span_id:62) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m message "$name"\n' span_id:63)
        )
      }
    )
    (command.WhileUntil
      keyword: (Token id:Id.KW_While val:while span_id:67)
      cond: [(C {(read)} {(cmd)} {(args)})]
      body: 
        (command.DoGroup
          children: [
            (command.Simple
              words: [{(cat)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:80)
                  fd: -1
                  arg_word: {(expect)}
                )
                (redir.HereDoc
                  op: (Token id:Id.Redir_DLessDash val:'<<-' span_id:83)
                  fd: -1
                  here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:85))}
                  here_end_span_id: 89
                  stdin_parts: [
                    (
' ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1 +\n'
                    )
                  ]
                )
              ]
            )
            (C {(test_expect_success)} 
              {
                (DQ ($ Id.VSub_DollarName '$cmd') 
                  (': small change with long name gives more space to the name')
                )
              } 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:99) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tgit $cmd $args >output &&\n'
                    span_id: 100
                  ) (Token id:Id.Lit_Chars val:'\t\tgrep " | " output >actual &&\n' span_id:101) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\ttest_cmp expect actual\n'
                    span_id: 102
                  ) (Token id:Id.Lit_Chars val:'\t' span_id:103)
                )
              }
            )
            (command.Simple
              words: [{(cat)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:110)
                  fd: -1
                  arg_word: {(expect)}
                )
                (redir.HereDoc
                  op: (Token id:Id.Redir_DLessDash val:'<<-' span_id:113)
                  fd: -1
                  here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:115))}
                  here_end_span_id: 119
                  stdin_parts: [(' ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1 +\n')]
                )
              ]
            )
            (C {(test_expect_success)} 
              {
                (DQ ($ Id.VSub_DollarName '$cmd') 
                  (' --stat=width: a long name is given more room when the bar is short')
                )
              } 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:129) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tgit $cmd $args --stat=40 >output &&\n'
                    span_id: 130
                  ) (Token id:Id.Lit_Chars val:'\t\tgrep " | " output >actual &&\n' span_id:131) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\ttest_cmp expect actual\n'
                    span_id: 132
                  ) (Token id:Id.Lit_Chars val:'\t' span_id:133)
                )
              }
            )
            (C {(test_expect_success)} 
              {(DQ ($ Id.VSub_DollarName '$cmd') (' --stat-width=width with long name'))} 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:146) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tgit $cmd $args --stat-width=40 >output &&\n'
                    span_id: 147
                  ) (Token id:Id.Lit_Chars val:'\t\tgrep " | " output >actual &&\n' span_id:148) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\ttest_cmp expect actual\n'
                    span_id: 149
                  ) (Token id:Id.Lit_Chars val:'\t' span_id:150)
                )
              }
            )
            (command.Simple
              words: [{(cat)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:157)
                  fd: -1
                  arg_word: {(expect)}
                )
                (redir.HereDoc
                  op: (Token id:Id.Redir_DLessDash val:'<<-' span_id:160)
                  fd: -1
                  here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:162))}
                  here_end_span_id: 166
                  stdin_parts: [(' ...aaaaaaaaaaaaaaaaaaaaaaaaaaa | 1 +\n')]
                )
              ]
            )
            (C {(test_expect_success)} 
              {(DQ ($ Id.VSub_DollarName '$cmd') (' --stat=...,name-width with long name'))} 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:176) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tgit $cmd $args --stat=60,30 >output &&\n'
                    span_id: 177
                  ) (Token id:Id.Lit_Chars val:'\t\tgrep " | " output >actual &&\n' span_id:178) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\ttest_cmp expect actual\n'
                    span_id: 179
                  ) (Token id:Id.Lit_Chars val:'\t' span_id:180)
                )
              }
            )
            (C {(test_expect_success)} 
              {(DQ ($ Id.VSub_DollarName '$cmd') (' --stat-name-width with long name'))} 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:193) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tgit $cmd $args --stat-name-width=30 >output &&\n'
                    span_id: 194
                  ) (Token id:Id.Lit_Chars val:'\t\tgrep " | " output >actual &&\n' span_id:195) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\ttest_cmp expect actual\n'
                    span_id: 196
                  ) (Token id:Id.Lit_Chars val:'\t' span_id:197)
                )
              }
            )
          ]
        )
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:202)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:203)) 
              (OF)
            }
          here_end_span_id: 210
          stdin_parts: [
            ('format-patch -1 --stdout\n')
            ('diff HEAD^ HEAD --stat\n')
            ('show --stat\n')
            ('log -1 --stat\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'preparation for big change tests' span_id:216))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:220) 
          (Token id:Id.Lit_Chars val:'\t>abcd &&\n' span_id:221) (Token id:Id.Lit_Chars val:'\tgit add abcd &&\n' span_id:222) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m message &&\n' span_id:223) (Token id:Id.Lit_Chars val:'\ti=0 &&\n' span_id:224) 
          (Token id:Id.Lit_Chars val:'\twhile test $i -lt 1000\n' span_id:225) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:226) 
          (Token id:Id.Lit_Chars val:'\t\techo $i && i=$(($i + 1))\n' span_id:227) (Token id:Id.Lit_Chars val:'\tdone >abcd &&\n' span_id:228) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m message abcd\n' span_id:229)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:235)
          fd: -1
          arg_word: {(expect80)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:238)
          fd: -1
          here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:240))}
          here_end_span_id: 244
          stdin_parts: [
            (' abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:247)
          fd: -1
          arg_word: {(expect80-graph)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:250)
          fd: -1
          here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:252))}
          here_end_span_id: 256
          stdin_parts: [
            ('|  abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:259)
          fd: -1
          arg_word: {(expect200)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:262)
          fd: -1
          here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:264))}
          here_end_span_id: 268
          stdin_parts: [
            (
' abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n'
            )
          ]
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:271)
          fd: -1
          arg_word: {(expect200-graph)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:274)
          fd: -1
          here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:276))}
          here_end_span_id: 280
          stdin_parts: [
            (
'|  abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n'
            )
          ]
        )
      ]
    )
    (command.WhileUntil
      keyword: (Token id:Id.KW_While val:while span_id:281)
      cond: [(C {(read)} {(verb)} {(expect)} {(cmd)} {(args)})]
      body: 
        (command.DoGroup
          children: [
            (C {(test_expect_success)} 
              {
                (DQ ($ Id.VSub_DollarName '$cmd') (' ') ($ Id.VSub_DollarName '$verb') 
                  (' COLUMNS (big change)')
                )
              } 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:306) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tCOLUMNS=200 git $cmd $args >output &&\n'
                    span_id: 307
                  ) (Token id:Id.Lit_Chars val:'\t\tgrep " | " output >actual &&\n' span_id:308) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\ttest_cmp "$expect" actual\n'
                    span_id: 309
                  ) (Token id:Id.Lit_Chars val:'\t' span_id:310)
                )
              }
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$cmd'))}
              arms: [
                (case_arm
                  pat_list: [{(diff)} {(show)}]
                  action: [
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Continue val:continue span_id:328)
                    )
                  ]
                  spids: [323 326 329 -1]
                )
              ]
            )
            (C {(test_expect_success)} 
              {
                (DQ ($ Id.VSub_DollarName '$cmd') (' --graph ') ($ Id.VSub_DollarName '$verb') 
                  (' COLUMNS (big change)')
                )
              } 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:345) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tCOLUMNS=200 git $cmd $args --graph >output &&\n'
                    span_id: 346
                  ) (Token id:Id.Lit_Chars val:'\t\tgrep " | " output >actual &&\n' span_id:347) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\ttest_cmp "$expect-graph" actual\n'
                    span_id: 348
                  ) (Token id:Id.Lit_Chars val:'\t' span_id:349)
                )
              }
            )
          ]
        )
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:354)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:355)) 
              (OF)
            }
          here_end_span_id: 362
          stdin_parts: [
            ('ignores expect80 format-patch -1 --stdout\n')
            ('respects expect200 diff HEAD^ HEAD --stat\n')
            ('respects expect200 show --stat\n')
            ('respects expect200 log -1 --stat\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:366)
          fd: -1
          arg_word: {(expect40)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:369)
          fd: -1
          here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:371))}
          here_end_span_id: 375
          stdin_parts: [(' abcd | 1000 ++++++++++++++++++++++++++\n')]
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:378)
          fd: -1
          arg_word: {(expect40-graph)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:381)
          fd: -1
          here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:383))}
          here_end_span_id: 387
          stdin_parts: [('|  abcd | 1000 ++++++++++++++++++++++++\n')]
        )
      ]
    )
    (command.WhileUntil
      keyword: (Token id:Id.KW_While val:while span_id:388)
      cond: [(C {(read)} {(verb)} {(expect)} {(cmd)} {(args)})]
      body: 
        (command.DoGroup
          children: [
            (C {(test_expect_success)} 
              {
                (DQ ($ Id.VSub_DollarName '$cmd') (' ') ($ Id.VSub_DollarName '$verb') 
                  (' not enough COLUMNS (big change)')
                )
              } 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:413) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tCOLUMNS=40 git $cmd $args >output &&\n'
                    span_id: 414
                  ) (Token id:Id.Lit_Chars val:'\t\tgrep " | " output >actual &&\n' span_id:415) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\ttest_cmp "$expect" actual\n'
                    span_id: 416
                  ) (Token id:Id.Lit_Chars val:'\t' span_id:417)
                )
              }
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$cmd'))}
              arms: [
                (case_arm
                  pat_list: [{(diff)} {(show)}]
                  action: [
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Continue val:continue span_id:435)
                    )
                  ]
                  spids: [430 433 436 -1]
                )
              ]
            )
            (C {(test_expect_success)} 
              {
                (DQ ($ Id.VSub_DollarName '$cmd') (' --graph ') ($ Id.VSub_DollarName '$verb') 
                  (' not enough COLUMNS (big change)')
                )
              } 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:452) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tCOLUMNS=40 git $cmd $args --graph >output &&\n'
                    span_id: 453
                  ) (Token id:Id.Lit_Chars val:'\t\tgrep " | " output >actual &&\n' span_id:454) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\ttest_cmp "$expect-graph" actual\n'
                    span_id: 455
                  ) (Token id:Id.Lit_Chars val:'\t' span_id:456)
                )
              }
            )
          ]
        )
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:461)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:462)) 
              (OF)
            }
          here_end_span_id: 469
          stdin_parts: [
            ('ignores expect80 format-patch -1 --stdout\n')
            ('respects expect40 diff HEAD^ HEAD --stat\n')
            ('respects expect40 show --stat\n')
            ('respects expect40 log -1 --stat\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:473)
          fd: -1
          arg_word: {(expect40)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:476)
          fd: -1
          here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:478))}
          here_end_span_id: 482
          stdin_parts: [(' abcd | 1000 ++++++++++++++++++++++++++\n')]
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:485)
          fd: -1
          arg_word: {(expect40-graph)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:488)
          fd: -1
          here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:490))}
          here_end_span_id: 494
          stdin_parts: [('|  abcd | 1000 ++++++++++++++++++++++++++\n')]
        )
      ]
    )
    (command.WhileUntil
      keyword: (Token id:Id.KW_While val:while span_id:495)
      cond: [(C {(read)} {(verb)} {(expect)} {(cmd)} {(args)})]
      body: 
        (command.DoGroup
          children: [
            (C {(test_expect_success)} 
              {
                (DQ ($ Id.VSub_DollarName '$cmd') (' ') ($ Id.VSub_DollarName '$verb') 
                  (' statGraphWidth config')
                )
              } 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:520) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tgit -c diff.statGraphWidth=26 $cmd $args >output &&\n'
                    span_id: 521
                  ) (Token id:Id.Lit_Chars val:'\t\tgrep " | " output >actual &&\n' span_id:522) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\ttest_cmp "$expect" actual\n'
                    span_id: 523
                  ) (Token id:Id.Lit_Chars val:'\t' span_id:524)
                )
              }
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$cmd'))}
              arms: [
                (case_arm
                  pat_list: [{(diff)} {(show)}]
                  action: [
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Continue val:continue span_id:542)
                    )
                  ]
                  spids: [537 540 543 -1]
                )
              ]
            )
            (C {(test_expect_success)} 
              {
                (DQ ($ Id.VSub_DollarName '$cmd') (' --graph ') ($ Id.VSub_DollarName '$verb') 
                  (' statGraphWidth config')
                )
              } 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:559) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tgit -c diff.statGraphWidth=26 $cmd $args --graph >output &&\n'
                    span_id: 560
                  ) (Token id:Id.Lit_Chars val:'\t\tgrep " | " output >actual &&\n' span_id:561) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\ttest_cmp "$expect-graph" actual\n'
                    span_id: 562
                  ) (Token id:Id.Lit_Chars val:'\t' span_id:563)
                )
              }
            )
          ]
        )
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:568)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:569)) 
              (OF)
            }
          here_end_span_id: 576
          stdin_parts: [
            ('ignores expect80 format-patch -1 --stdout\n')
            ('respects expect40 diff HEAD^ HEAD --stat\n')
            ('respects expect40 show --stat\n')
            ('respects expect40 log -1 --stat\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:581)
          fd: -1
          arg_word: {(expect)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:584)
          fd: -1
          here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:586))}
          here_end_span_id: 590
          stdin_parts: [(' abcd | 1000 ++++++++++++++++++++++++++\n')]
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:593)
          fd: -1
          arg_word: {(expect-graph)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:596)
          fd: -1
          here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:598))}
          here_end_span_id: 602
          stdin_parts: [('|  abcd | 1000 ++++++++++++++++++++++++++\n')]
        )
      ]
    )
    (command.WhileUntil
      keyword: (Token id:Id.KW_While val:while span_id:603)
      cond: [(C {(read)} {(cmd)} {(args)})]
      body: 
        (command.DoGroup
          children: [
            (C {(test_expect_success)} 
              {(DQ ($ Id.VSub_DollarName '$cmd') (' --stat=width with big change'))} 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:622) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tgit $cmd $args --stat=40 >output &&\n'
                    span_id: 623
                  ) (Token id:Id.Lit_Chars val:'\t\tgrep " | " output >actual &&\n' span_id:624) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\ttest_cmp expect actual\n'
                    span_id: 625
                  ) (Token id:Id.Lit_Chars val:'\t' span_id:626)
                )
              }
            )
            (C {(test_expect_success)} 
              {(DQ ($ Id.VSub_DollarName '$cmd') (' --stat-width=width with big change'))} 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:639) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tgit $cmd $args --stat-width=40 >output &&\n'
                    span_id: 640
                  ) (Token id:Id.Lit_Chars val:'\t\tgrep " | " output >actual &&\n' span_id:641) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\ttest_cmp expect actual\n'
                    span_id: 642
                  ) (Token id:Id.Lit_Chars val:'\t' span_id:643)
                )
              }
            )
            (C {(test_expect_success)} 
              {(DQ ($ Id.VSub_DollarName '$cmd') (' --stat-graph-width with big change'))} 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:656) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tgit $cmd $args --stat-graph-width=26 >output &&\n'
                    span_id: 657
                  ) (Token id:Id.Lit_Chars val:'\t\tgrep " | " output >actual &&\n' span_id:658) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\ttest_cmp expect actual\n'
                    span_id: 659
                  ) (Token id:Id.Lit_Chars val:'\t' span_id:660)
                )
              }
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$cmd'))}
              arms: [
                (case_arm
                  pat_list: [{(diff)} {(show)}]
                  action: [
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Continue val:continue span_id:678)
                    )
                  ]
                  spids: [673 676 679 -1]
                )
              ]
            )
            (C {(test_expect_success)} 
              {(DQ ($ Id.VSub_DollarName '$cmd') (' --stat-width=width --graph with big change'))} 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:693) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tgit $cmd $args --stat-width=40 --graph >output &&\n'
                    span_id: 694
                  ) (Token id:Id.Lit_Chars val:'\t\tgrep " | " output >actual &&\n' span_id:695) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\ttest_cmp expect-graph actual\n'
                    span_id: 696
                  ) (Token id:Id.Lit_Chars val:'\t' span_id:697)
                )
              }
            )
            (C {(test_expect_success)} 
              {(DQ ($ Id.VSub_DollarName '$cmd') (' --stat-graph-width --graph with big change'))} 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:710) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tgit $cmd $args --stat-graph-width=26 --graph >output &&\n'
                    span_id: 711
                  ) (Token id:Id.Lit_Chars val:'\t\tgrep " | " output >actual &&\n' span_id:712) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\ttest_cmp expect-graph actual\n'
                    span_id: 713
                  ) (Token id:Id.Lit_Chars val:'\t' span_id:714)
                )
              }
            )
          ]
        )
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:719)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:720)) 
              (OF)
            }
          here_end_span_id: 727
          stdin_parts: [
            ('format-patch -1 --stdout\n')
            ('diff HEAD^ HEAD --stat\n')
            ('show --stat\n')
            ('log -1 --stat\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'preparation for long filename tests' span_id:732))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:736) 
          (Token
            id: Id.Lit_Chars
            val: '\tcp abcd aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &&\n'
            span_id: 737
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit add aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &&\n'
            span_id: 738
          ) (Token id:Id.Lit_Chars val:'\tgit commit -m message\n' span_id:739)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:745)
          fd: -1
          arg_word: {(expect)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:748)
          fd: -1
          here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:750))}
          here_end_span_id: 754
          stdin_parts: [(' ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 ++++++++++++\n')]
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:757)
          fd: -1
          arg_word: {(expect-graph)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:760)
          fd: -1
          here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:762))}
          here_end_span_id: 766
          stdin_parts: [('|  ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 ++++++++++++\n')]
        )
      ]
    )
    (command.WhileUntil
      keyword: (Token id:Id.KW_While val:while span_id:767)
      cond: [(C {(read)} {(cmd)} {(args)})]
      body: 
        (command.DoGroup
          children: [
            (C {(test_expect_success)} 
              {(DQ ($ Id.VSub_DollarName '$cmd') (' --stat=width with big change is more balanced'))} 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:786) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tgit $cmd $args --stat-width=60 >output &&\n'
                    span_id: 787
                  ) (Token id:Id.Lit_Chars val:'\t\tgrep " | " output >actual &&\n' span_id:788) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\ttest_cmp expect actual\n'
                    span_id: 789
                  ) (Token id:Id.Lit_Chars val:'\t' span_id:790)
                )
              }
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$cmd'))}
              arms: [
                (case_arm
                  pat_list: [{(diff)} {(show)}]
                  action: [
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Continue val:continue span_id:808)
                    )
                  ]
                  spids: [803 806 809 -1]
                )
              ]
            )
            (C {(test_expect_success)} 
              {
                (DQ ($ Id.VSub_DollarName '$cmd') 
                  (' --stat=width --graph with big change is balanced')
                )
              } 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:823) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tgit $cmd $args --stat-width=60 --graph >output &&\n'
                    span_id: 824
                  ) (Token id:Id.Lit_Chars val:'\t\tgrep " | " output >actual &&\n' span_id:825) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\ttest_cmp expect-graph actual\n'
                    span_id: 826
                  ) (Token id:Id.Lit_Chars val:'\t' span_id:827)
                )
              }
            )
          ]
        )
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:832)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:833)) 
              (OF)
            }
          here_end_span_id: 840
          stdin_parts: [
            ('format-patch -1 --stdout\n')
            ('diff HEAD^ HEAD --stat\n')
            ('show --stat\n')
            ('log -1 --stat\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:844)
          fd: -1
          arg_word: {(expect80)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:847)
          fd: -1
          here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:849))}
          here_end_span_id: 853
          stdin_parts: [
            (' ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 ++++++++++++++++++++\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:856)
          fd: -1
          arg_word: {(expect80-graph)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:859)
          fd: -1
          here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:861))}
          here_end_span_id: 865
          stdin_parts: [
            ('|  ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 ++++++++++++++++++++\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:868)
          fd: -1
          arg_word: {(expect200)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:871)
          fd: -1
          here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:873))}
          here_end_span_id: 877
          stdin_parts: [
            (
' aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n'
            )
          ]
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:880)
          fd: -1
          arg_word: {(expect200-graph)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:883)
          fd: -1
          here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:885))}
          here_end_span_id: 889
          stdin_parts: [
            (
'|  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n'
            )
          ]
        )
      ]
    )
    (command.WhileUntil
      keyword: (Token id:Id.KW_While val:while span_id:890)
      cond: [(C {(read)} {(verb)} {(expect)} {(cmd)} {(args)})]
      body: 
        (command.DoGroup
          children: [
            (C {(test_expect_success)} 
              {
                (DQ ($ Id.VSub_DollarName '$cmd') (' ') ($ Id.VSub_DollarName '$verb') 
                  (' COLUMNS (long filename)')
                )
              } 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:915) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tCOLUMNS=200 git $cmd $args >output &&\n'
                    span_id: 916
                  ) (Token id:Id.Lit_Chars val:'\t\tgrep " | " output >actual &&\n' span_id:917) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\ttest_cmp "$expect" actual\n'
                    span_id: 918
                  ) (Token id:Id.Lit_Chars val:'\t' span_id:919)
                )
              }
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$cmd'))}
              arms: [
                (case_arm
                  pat_list: [{(diff)} {(show)}]
                  action: [
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Continue val:continue span_id:937)
                    )
                  ]
                  spids: [932 935 938 -1]
                )
              ]
            )
            (C {(test_expect_success)} 
              {
                (DQ ($ Id.VSub_DollarName '$cmd') (' --graph ') ($ Id.VSub_DollarName '$verb') 
                  (' COLUMNS (long filename)')
                )
              } 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:954) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tCOLUMNS=200 git $cmd $args --graph >output &&\n'
                    span_id: 955
                  ) (Token id:Id.Lit_Chars val:'\t\tgrep " | " output >actual &&\n' span_id:956) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\ttest_cmp "$expect-graph" actual\n'
                    span_id: 957
                  ) (Token id:Id.Lit_Chars val:'\t' span_id:958)
                )
              }
            )
          ]
        )
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:963)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:964)) 
              (OF)
            }
          here_end_span_id: 971
          stdin_parts: [
            ('ignores expect80 format-patch -1 --stdout\n')
            ('respects expect200 diff HEAD^ HEAD --stat\n')
            ('respects expect200 show --stat\n')
            ('respects expect200 log -1 --stat\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:975)
          fd: -1
          arg_word: {(expect1)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:978)
          fd: -1
          here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:980))}
          here_end_span_id: 984
          stdin_parts: [(' ...aaaaaaa | 1000 ++++++\n')]
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:987)
          fd: -1
          arg_word: {(expect1-graph)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:990)
          fd: -1
          here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:992))}
          here_end_span_id: 996
          stdin_parts: [('|  ...aaaaaaa | 1000 ++++++\n')]
        )
      ]
    )
    (command.WhileUntil
      keyword: (Token id:Id.KW_While val:while span_id:997)
      cond: [(C {(read)} {(verb)} {(expect)} {(cmd)} {(args)})]
      body: 
        (command.DoGroup
          children: [
            (C {(test_expect_success)} {(COLUMNS_CAN_BE_1)} 
              {
                (DQ ($ Id.VSub_DollarName '$cmd') (' ') ($ Id.VSub_DollarName '$verb') 
                  (' prefix greater than COLUMNS (big change)')
                )
              } 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1026) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tCOLUMNS=1 git $cmd $args >output &&\n'
                    span_id: 1027
                  ) (Token id:Id.Lit_Chars val:'\t\tgrep " | " output >actual &&\n' span_id:1028) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\ttest_cmp "$expect" actual\n'
                    span_id: 1029
                  ) (Token id:Id.Lit_Chars val:'\t' span_id:1030)
                )
              }
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$cmd'))}
              arms: [
                (case_arm
                  pat_list: [{(diff)} {(show)}]
                  action: [
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Continue val:continue span_id:1048)
                    )
                  ]
                  spids: [1043 1046 1049 -1]
                )
              ]
            )
            (C {(test_expect_success)} {(COLUMNS_CAN_BE_1)} 
              {
                (DQ ($ Id.VSub_DollarName '$cmd') (' --graph ') ($ Id.VSub_DollarName '$verb') 
                  (' prefix greater than COLUMNS (big change)')
                )
              } 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1069) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tCOLUMNS=1 git $cmd $args --graph >output &&\n'
                    span_id: 1070
                  ) (Token id:Id.Lit_Chars val:'\t\tgrep " | " output >actual &&\n' span_id:1071) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\ttest_cmp "$expect-graph" actual\n'
                    span_id: 1072
                  ) (Token id:Id.Lit_Chars val:'\t' span_id:1073)
                )
              }
            )
          ]
        )
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1078)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:1079)) 
              (OF)
            }
          here_end_span_id: 1086
          stdin_parts: [
            ('ignores expect80 format-patch -1 --stdout\n')
            ('respects expect1 diff HEAD^ HEAD --stat\n')
            ('respects expect1 show --stat\n')
            ('respects expect1 log -1 --stat\n')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1090)
          fd: -1
          arg_word: {(expect)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1093)
          fd: -1
          here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:1095))}
          here_end_span_id: 1099
          stdin_parts: [
            (
' abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n'
            )
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'merge --stat respects COLUMNS (big change)' span_id:1103))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1107) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -b branch HEAD^^ &&\n' span_id:1108) 
          (Token
            id: Id.Lit_Chars
            val: '\tCOLUMNS=100 git merge --stat --no-ff master^ >output &&\n'
            span_id: 1109
          ) (Token id:Id.Lit_Chars val:'\tgrep " | " output >actual &&\n' span_id:1110) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1111)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1117)
          fd: -1
          arg_word: {(expect)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1120)
          fd: -1
          here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:1122))}
          here_end_span_id: 1126
          stdin_parts: [
            (
' aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 +++++++++++++++++++++++++++++++++++++++\n'
            )
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'merge --stat respects COLUMNS (long filename)' span_id:1130))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1134) 
          (Token
            id: Id.Lit_Chars
            val: '\tCOLUMNS=100 git merge --stat --no-ff master >output &&\n'
            span_id: 1135
          ) (Token id:Id.Lit_Chars val:'\tgrep " | " output >actual &&\n' span_id:1136) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1137)
        )
      }
    )
    (C {(test_done)})
  ]
)