(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"git rev-list --pretty=format test">)}
          spids: [11]
        )
      ]
      spids: [11]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(.)} {(DQ ($ VSub_Name "$TEST_DIRECTORY")) (/lib-terminal.sh)})
    (C {(test_tick)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_encoding)
          op: Equal
          rhs: {(DQ (ISO8859-1))}
          spids: [34]
        )
      ]
      spids: [34]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:added_utf8_part)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (C {(printf)} 
                        {
                          (DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\3">) (03) 
                            (EscapedLiteralPart
                              token: <Lit_EscapedChar "\\2">
                            ) (74)
                          )
                        }
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [50 59]
              )
            }
          spids: [49]
        )
      ]
      spids: [49]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:added_utf8_part_iso88591)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Pipeline
                        children: [
                          (C {(echo)} {(DQ ($ VSub_Name "$added_utf8_part"))})
                          (C {(iconv)} {(-f)} {(utf-8)} {(-t)} {($ VSub_Name "$test_encoding")})
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [62 80]
              )
            }
          spids: [61]
        )
      ]
      spids: [61]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:added)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (C {(printf)} 
                        {(DQ ("added (hinzugef") (${ VSub_Name added_utf8_part) ("gt) foo"))}
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [83 93]
              )
            }
          spids: [82]
        )
      ]
      spids: [82]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:added_iso88591)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Pipeline
                        children: [
                          (C {(echo)} {(DQ ($ VSub_Name "$added"))})
                          (C {(iconv)} {(-f)} {(utf-8)} {(-t)} {($ VSub_Name "$test_encoding")})
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [96 114]
              )
            }
          spids: [95]
        )
      ]
      spids: [95]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:changed_utf8_part)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (C {(printf)} 
                        {
                          (DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\3">) (03) 
                            (EscapedLiteralPart
                              token: <Lit_EscapedChar "\\2">
                            ) (44)
                          )
                        }
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [120 129]
              )
            }
          spids: [119]
        )
      ]
      spids: [119]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:changed_utf8_part_iso88591)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Pipeline
                        children: [
                          (C {(echo)} {(DQ ($ VSub_Name "$changed_utf8_part"))})
                          (C {(iconv)} {(-f)} {(utf-8)} {(-t)} {($ VSub_Name "$test_encoding")})
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [132 150]
              )
            }
          spids: [131]
        )
      ]
      spids: [131]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:changed)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (C {(printf)} 
                        {(DQ ("changed (ge") (${ VSub_Name changed_utf8_part) ("ndert) foo"))}
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [153 163]
              )
            }
          spids: [152]
        )
      ]
      spids: [152]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:changed_iso88591)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Pipeline
                        children: [
                          (C {(echo)} {(DQ ($ VSub_Name "$changed"))})
                          (C {(iconv)} {(-f)} {(utf-8)} {(-t)} {($ VSub_Name "$test_encoding")})
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [166 184]
              )
            }
          spids: [165]
        )
      ]
      spids: [165]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:truncate_count) op:Equal rhs:{(20)} spids:[199])]
      spids: [199]
    )
    (C {(test_expect_success)} {(SQ <setup>)} 
      {
        (SQ <"\n"> <"\t: >foo &&\n"> <"\tgit add foo &&\n"> 
          <"\tgit config i18n.commitEncoding $test_encoding &&\n"> <"\techo \"$added_iso88591\" | git commit -F - &&\n"> <"\thead1=$(git rev-parse --verify HEAD) &&\n"> 
          <"\thead1_short=$(git rev-parse --verify --short $head1) &&\n"> <"\ttree1=$(git rev-parse --verify HEAD:) &&\n"> 
          <"\ttree1_short=$(git rev-parse --verify --short $tree1) &&\n"> <"\techo \"$changed\" > foo &&\n"> <"\techo \"$changed_iso88591\" | git commit -a -F - &&\n"> 
          <"\thead2=$(git rev-parse --verify HEAD) &&\n"> <"\thead2_short=$(git rev-parse --verify --short $head2) &&\n"> 
          <"\ttree2=$(git rev-parse --verify HEAD:) &&\n"> <"\ttree2_short=$(git rev-parse --verify --short $tree2) &&\n"> 
          <"\tgit config --unset i18n.commitEncoding\n">
        )
      }
    )
    (FuncDef
      name: test_format
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {(expect.) ($ VSub_Number "$1")}
                  spids: [242]
                )
              ]
            )
            (C 
              {(test_expect_) 
                (BracedVarSub
                  token: <VSub_Number 3>
                  suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(success)})
                  spids: [248 252]
                )
              } {(DQ ("format ") ($ VSub_Number "$1"))} 
              {
                (DQ ("\n") ("\t\tgit rev-list --pretty=format:'") ($ VSub_Number "$2") 
                  ("' master >output.") ($ VSub_Number "$1") (" &&\n") ("\t\ttest_cmp expect.") ($ VSub_Number "$1") (" output.") 
                  ($ VSub_Number "$1") ("\n") ("\t")
                )
              }
            )
          ]
          spids: [237]
        )
      spids: [232 236]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:AUTO_COLOR)
          op: Equal
          rhs: {(SQ <"%C(auto,red)foo%C(auto,reset)">)}
          spids: [280]
        )
      ]
      spids: [280]
    )
    (FuncDef
      name: has_color
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (SimpleCommand
                  words: [{(printf)} {(SQ <"\\033[31mfoo\\033[m\\n">)}]
                  redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[299])]
                )
                (C {(test_cmp)} {(expect)} {(DQ ($ VSub_Number "$1"))})
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [290]
        )
      spids: [285 289]
    )
    (FuncDef
      name: has_no_color
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (SimpleCommand
                  words: [{(echo)} {(foo)}]
                  redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[328])]
                )
                (C {(test_cmp)} {(expect)} {(DQ ($ VSub_Number "$1"))})
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [321]
        )
      spids: [316 320]
    )
    (SimpleCommand
      words: [{(test_format)} {(percent)} {(Lit_Other "%") (Lit_Other "%") (h)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("commit ") ($ VSub_Name "$head2") ("\n") ("%h\n") ("commit ") ($ VSub_Name "$head1") 
                ("\n") ("%h\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [353]
        )
      ]
    )
    (SimpleCommand
      words: [{(test_format)} {(hash)} {(Lit_Other "%") (H) (Lit_Other "%") (n) (Lit_Other "%") (h)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("commit ") ($ VSub_Name "$head2") ("\n") ($ VSub_Name "$head2") ("\n") 
                ($ VSub_Name "$head2_short") ("\n") ("commit ") ($ VSub_Name "$head1") ("\n") ($ VSub_Name "$head1") ("\n") ($ VSub_Name "$head1_short") 
                ("\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [376]
        )
      ]
    )
    (SimpleCommand
      words: [{(test_format)} {(tree)} {(Lit_Other "%") (T) (Lit_Other "%") (n) (Lit_Other "%") (t)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("commit ") ($ VSub_Name "$head2") ("\n") ($ VSub_Name "$tree2") ("\n") 
                ($ VSub_Name "$tree2_short") ("\n") ("commit ") ($ VSub_Name "$head1") ("\n") ($ VSub_Name "$tree1") ("\n") ($ VSub_Name "$tree1_short") 
                ("\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [405]
        )
      ]
    )
    (SimpleCommand
      words: [{(test_format)} {(parents)} {(Lit_Other "%") (P) (Lit_Other "%") (n) (Lit_Other "%") (p)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("commit ") ($ VSub_Name "$head2") ("\n") ($ VSub_Name "$head1") ("\n") 
                ($ VSub_Name "$head1_short") ("\n") ("commit ") ($ VSub_Name "$head1") ("\n") ("\n") ("\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [434]
        )
      ]
    )
    (SimpleCommand
      words: [
        {(test_format)}
        {(author)}
        {(Lit_Other "%") (an) (Lit_Other "%") (n) (Lit_Other "%") (ae) (Lit_Other "%") (n) (Lit_Other "%") 
          (ad) (Lit_Other "%") (n) (Lit_Other "%") (aD) (Lit_Other "%") (n) (Lit_Other "%") (at)
        }
      ]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("commit ") ($ VSub_Name "$head2") ("\n") ("A U Thor\n") ("author@example.com\n") 
                ("Thu Apr 7 15:13:13 2005 -0700\n") ("Thu, 7 Apr 2005 15:13:13 -0700\n") ("1112911993\n") ("commit ") ($ VSub_Name "$head1") ("\n") 
                ("A U Thor\n") ("author@example.com\n") ("Thu Apr 7 15:13:13 2005 -0700\n") ("Thu, 7 Apr 2005 15:13:13 -0700\n") 
                ("1112911993\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [476]
        )
      ]
    )
    (SimpleCommand
      words: [
        {(test_format)}
        {(committer)}
        {(Lit_Other "%") (cn) (Lit_Other "%") (n) (Lit_Other "%") (ce) (Lit_Other "%") (n) (Lit_Other "%") 
          (cd) (Lit_Other "%") (n) (Lit_Other "%") (cD) (Lit_Other "%") (n) (Lit_Other "%") (ct)
        }
      ]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("commit ") ($ VSub_Name "$head2") ("\n") ("C O Mitter\n") ("committer@example.com\n") 
                ("Thu Apr 7 15:13:13 2005 -0700\n") ("Thu, 7 Apr 2005 15:13:13 -0700\n") ("1112911993\n") ("commit ") ($ VSub_Name "$head1") ("\n") 
                ("C O Mitter\n") ("committer@example.com\n") ("Thu Apr 7 15:13:13 2005 -0700\n") ("Thu, 7 Apr 2005 15:13:13 -0700\n") 
                ("1112911993\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [519]
        )
      ]
    )
    (SimpleCommand
      words: [{(test_format)} {(encoding)} {(Lit_Other "%") (e)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("commit ") ($ VSub_Name "$head2") ("\n") ($ VSub_Name "$test_encoding") ("\n") 
                ("commit ") ($ VSub_Name "$head1") ("\n") ($ VSub_Name "$test_encoding") ("\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [546]
        )
      ]
    )
    (SimpleCommand
      words: [{(test_format)} {(subject)} {(Lit_Other "%") (s)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("commit ") ($ VSub_Name "$head2") ("\n") ($ VSub_Name "$changed") ("\n") ("commit ") 
                ($ VSub_Name "$head1") ("\n") ($ VSub_Name "$added") ("\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [567]
        )
      ]
    )
    (SimpleCommand
      words: [
        {(test_format)}
        {(subject-truncated)}
        {(DQ ("%<(") ($ VSub_Name "$truncate_count") (",trunc)%s"))}
      ]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("commit ") ($ VSub_Name "$head2") ("\n") ("changed (ge") 
                (${ VSub_Name changed_utf8_part) ("ndert)..\n") ("commit ") ($ VSub_Name "$head1") ("\n") ("added (hinzugef") 
                (${ VSub_Name added_utf8_part) ("gt..\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [591]
        )
      ]
    )
    (SimpleCommand
      words: [{(test_format)} {(body)} {(Lit_Other "%") (b)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("commit ") ($ VSub_Name "$head2") ("\n") ("commit ") ($ VSub_Name "$head1") ("\n"))
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [618]
        )
      ]
    )
    (SimpleCommand
      words: [{(test_format)} {(raw-body)} {(Lit_Other "%") (B)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("commit ") ($ VSub_Name "$head2") ("\n") ($ VSub_Name "$changed") ("\n") ("\n") 
                ("commit ") ($ VSub_Name "$head1") ("\n") ($ VSub_Name "$added") ("\n") ("\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [635]
        )
      ]
    )
    (SimpleCommand
      words: [
        {(test_format)}
        {(colors)}
        {(Lit_Other "%") (Credfoo) (Lit_Other "%") (Cgreenbar) (Lit_Other "%") (Cbluebaz) (Lit_Other "%") 
          (Cresetxyzzy)
        }
      ]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("commit ") ($ VSub_Name "$head2") ("\n") 
                ("\u001b[31mfoo\u001b[32mbar\u001b[34mbaz\u001b[mxyzzy\n") ("commit ") ($ VSub_Name "$head1") ("\n") ("\u001b[31mfoo\u001b[32mbar\u001b[34mbaz\u001b[mxyzzy\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [664]
        )
      ]
    )
    (SimpleCommand
      words: [{(test_format)} {(advanced-colors)} {(SQ <"%C(red yellow bold)foo%C(reset)">)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("commit ") ($ VSub_Name "$head2") ("\n") ("\u001b[1;31;43mfoo\u001b[m\n") ("commit ") 
                ($ VSub_Name "$head1") ("\n") ("\u001b[1;31;43mfoo\u001b[m\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [684]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"%C(auto,...) does not enable color by default">)} 
      {(SQ <"\n"> <"\tgit log --format=$AUTO_COLOR -1 >actual &&\n"> <"\thas_no_color actual\n">)}
    )
    (C {(test_expect_success)} {(SQ <"%C(auto,...) enables colors for color.diff">)} 
      {
        (SQ <"\n"> <"\tgit -c color.diff=always log --format=$AUTO_COLOR -1 >actual &&\n"> 
          <"\thas_color actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"%C(auto,...) enables colors for color.ui">)} 
      {
        (SQ <"\n"> <"\tgit -c color.ui=always log --format=$AUTO_COLOR -1 >actual &&\n"> 
          <"\thas_color actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"%C(auto,...) respects --color">)} 
      {
        (SQ <"\n"> <"\tgit log --format=$AUTO_COLOR -1 --color >actual &&\n"> <"\thas_color actual\n">)
      }
    )
    (C {(test_expect_success)} {(SQ <"%C(auto,...) respects --no-color">)} 
      {
        (SQ <"\n"> <"\tgit -c color.ui=always log --format=$AUTO_COLOR -1 --no-color >actual &&\n"> 
          <"\thas_no_color actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(TTY)} {(SQ <"%C(auto,...) respects --color=auto (stdout is tty)">)} 
      {
        (SQ <"\n"> <"\ttest_terminal env TERM=vt100 \\\n"> 
          <"\t\tgit log --format=$AUTO_COLOR -1 --color=auto >actual &&\n"> <"\thas_color actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"%C(auto,...) respects --color=auto (stdout not tty)">)} 
      {
        (SQ <"\n"> <"\t(\n"> <"\t\tTERM=vt100 && export TERM &&\n"> 
          <"\t\tgit log --format=$AUTO_COLOR -1 --color=auto >actual &&\n"> <"\t\thas_no_color actual\n"> <"\t)\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"%C(auto) respects --color">)} 
      {
        (SQ <"\n"> <"\tgit log --color --format=\"%C(auto)%H\" -1 >actual &&\n"> 
          <"\tprintf \"\\\\033[33m%s\\\\033[m\\\\n\" $(git rev-parse HEAD) >expect &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"%C(auto) respects --no-color">)} 
      {
        (SQ <"\n"> <"\tgit log --no-color --format=\"%C(auto)%H\" -1 >actual &&\n"> 
          <"\tgit rev-parse HEAD >expect &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (SimpleCommand
      words: [{(iconv)} {(-f)} {(utf-8)} {(-t)} {($ VSub_Name "$test_encoding")}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(commit-msg)} spids:[831])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("Test printing of complex bodies\n") ("\n") 
                ("This commit message is much longer than the others,\n") ("and it will be encoded in ") ($ VSub_Name "$test_encoding") (". We should therefore\n") 
                ("include an ISO8859 character: \u00a1bueno!\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [835]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"setup complex body">)} 
      {
        (SQ <"\n"> <"\tgit config i18n.commitencoding $test_encoding &&\n"> 
          <"\techo change2 >foo && git commit -a -F commit-msg &&\n"> <"\thead3=$(git rev-parse --verify HEAD) &&\n"> <"\thead3_short=$(git rev-parse --short $head3)\n">
        )
      }
    )
    (SimpleCommand
      words: [{(test_format)} {(complex-encoding)} {(Lit_Other "%") (e)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("commit ") ($ VSub_Name "$head3") ("\n") ($ VSub_Name "$test_encoding") ("\n") 
                ("commit ") ($ VSub_Name "$head2") ("\n") ($ VSub_Name "$test_encoding") ("\n") ("commit ") ($ VSub_Name "$head1") 
                ("\n") ($ VSub_Name "$test_encoding") ("\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [868]
        )
      ]
    )
    (SimpleCommand
      words: [{(test_format)} {(complex-subject)} {(Lit_Other "%") (s)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("commit ") ($ VSub_Name "$head3") ("\n") ("Test printing of complex bodies\n") 
                ("commit ") ($ VSub_Name "$head2") ("\n") ($ VSub_Name "$changed_iso88591") ("\n") ("commit ") ($ VSub_Name "$head1") 
                ("\n") ($ VSub_Name "$added_iso88591") ("\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [894]
        )
      ]
    )
    (SimpleCommand
      words: [
        {(test_format)}
        {(complex-subject-trunc)}
        {(DQ ("%<(") ($ VSub_Name "$truncate_count") (",trunc)%s"))}
      ]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("commit ") ($ VSub_Name "$head3") ("\n") ("Test printing of c..\n") ("commit ") 
                ($ VSub_Name "$head2") ("\n") ("changed (ge") (${ VSub_Name changed_utf8_part_iso88591) ("ndert)..\n") ("commit ") 
                ($ VSub_Name "$head1") ("\n") ("added (hinzugef") (${ VSub_Name added_utf8_part_iso88591) ("gt..\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [922]
        )
      ]
    )
    (SimpleCommand
      words: [
        {(test_format)}
        {(complex-subject-mtrunc)}
        {(DQ ("%<(") ($ VSub_Name "$truncate_count") (",mtrunc)%s"))}
      ]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("commit ") ($ VSub_Name "$head3") ("\n") ("Test prin..ex bodies\n") ("commit ") 
                ($ VSub_Name "$head2") ("\n") ("changed (..dert) foo\n") ("commit ") ($ VSub_Name "$head1") ("\n") ("added (hi..f") 
                (${ VSub_Name added_utf8_part_iso88591) ("gt) foo\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [956]
        )
      ]
    )
    (SimpleCommand
      words: [
        {(test_format)}
        {(complex-subject-ltrunc)}
        {(DQ ("%<(") ($ VSub_Name "$truncate_count") (",ltrunc)%s"))}
      ]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("commit ") ($ VSub_Name "$head3") ("\n") (".. of complex bodies\n") ("commit ") 
                ($ VSub_Name "$head2") ("\n") ("..ged (ge") (${ VSub_Name changed_utf8_part_iso88591) ("ndert) foo\n") ("commit ") 
                ($ VSub_Name "$head1") ("\n") (".. (hinzugef") (${ VSub_Name added_utf8_part_iso88591) ("gt) foo\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [986]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"prepare expected messages (for test %b)">)} 
      {
        (SQ <"\n"> <"\tcat <<-EOF >expected.utf-8 &&\n"> <"\tcommit $head3\n"> 
          <"\tThis commit message is much longer than the others,\n"> <"\tand it will be encoded in $test_encoding. We should therefore\n"> 
          <"\tinclude an ISO8859 character: \u00a1bueno!\n"> <"\n"> <"\tcommit $head2\n"> <"\tcommit $head1\n"> <"\tEOF\n"> 
          <"\ticonv -f utf-8 -t $test_encoding expected.utf-8 >expected.ISO8859-1\n">
        )
      }
    )
    (SimpleCommand
      words: [{(test_format)} {(complex-body)} {(Lit_Other "%") (b)}]
      redirects: [(Redir op_id:Redir_Less fd:-1 arg_word:{(expected.ISO8859-1)} spids:[1038])]
    )
    (C {(git)} {(config)} {(--unset)} {(i18n.commitEncoding)})
    (SimpleCommand
      words: [{(test_format)} {(complex-subject-commitencoding-unset)} {(Lit_Other "%") (s)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("commit ") ($ VSub_Name "$head3") ("\n") ("Test printing of complex bodies\n") 
                ("commit ") ($ VSub_Name "$head2") ("\n") ($ VSub_Name "$changed") ("\n") ("commit ") ($ VSub_Name "$head1") ("\n") 
                ($ VSub_Name "$added") ("\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [1064]
        )
      ]
    )
    (SimpleCommand
      words: [
        {(test_format)}
        {(complex-subject-commitencoding-unset-trunc)}
        {(DQ ("%<(") ($ VSub_Name "$truncate_count") (",trunc)%s"))}
      ]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("commit ") ($ VSub_Name "$head3") ("\n") ("Test printing of c..\n") ("commit ") 
                ($ VSub_Name "$head2") ("\n") ("changed (ge") (${ VSub_Name changed_utf8_part) ("ndert)..\n") ("commit ") ($ VSub_Name "$head1") 
                ("\n") ("added (hinzugef") (${ VSub_Name added_utf8_part) ("gt..\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [1092]
        )
      ]
    )
    (SimpleCommand
      words: [
        {(test_format)}
        {(complex-subject-commitencoding-unset-mtrunc)}
        {(DQ ("%<(") ($ VSub_Name "$truncate_count") (",mtrunc)%s"))}
      ]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("commit ") ($ VSub_Name "$head3") ("\n") ("Test prin..ex bodies\n") ("commit ") 
                ($ VSub_Name "$head2") ("\n") ("changed (..dert) foo\n") ("commit ") ($ VSub_Name "$head1") ("\n") ("added (hi..f") 
                (${ VSub_Name added_utf8_part) ("gt) foo\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [1126]
        )
      ]
    )
    (SimpleCommand
      words: [
        {(test_format)}
        {(complex-subject-commitencoding-unset-ltrunc)}
        {(DQ ("%<(") ($ VSub_Name "$truncate_count") (",ltrunc)%s"))}
      ]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("commit ") ($ VSub_Name "$head3") ("\n") (".. of complex bodies\n") ("commit ") 
                ($ VSub_Name "$head2") ("\n") ("..ged (ge") (${ VSub_Name changed_utf8_part) ("ndert) foo\n") ("commit ") ($ VSub_Name "$head1") 
                ("\n") (".. (hinzugef") (${ VSub_Name added_utf8_part) ("gt) foo\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [1156]
        )
      ]
    )
    (SimpleCommand
      words: [{(test_format)} {(complex-body-commitencoding-unset)} {(Lit_Other "%") (b)}]
      redirects: [(Redir op_id:Redir_Less fd:-1 arg_word:{(expected.utf-8)} spids:[1187])]
    )
    (C {(test_expect_success)} {(SQ <"%x00 shows NUL">)} 
      {
        (SQ <"\n"> <"\techo  >expect commit $head3 &&\n"> <"\techo >>expect fooQbar &&\n"> 
          <"\tgit rev-list -1 --format=foo%x00bar HEAD >actual.nul &&\n"> <"\tnul_to_q <actual.nul >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"%ad respects --date=">)} 
      {
        (SQ <"\n"> <"\techo 2005-04-07 >expect.ad-short &&\n"> 
          <"\tgit log -1 --date=short --pretty=tformat:%ad >output.ad-short master &&\n"> <"\ttest_cmp expect.ad-short output.ad-short\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"empty email">)} 
      {
        (SQ <"\n"> <"\ttest_tick &&\n"> 
          <"\tC=$(GIT_AUTHOR_EMAIL= git commit-tree HEAD^{tree} </dev/null) &&\n"> <"\tA=$(git show --pretty=format:%an,%ae,%ad%n -s $C) &&\n"> 
          <"\tverbose test \"$A\" = \"A U Thor,,Thu Apr 7 15:14:13 2005 -0700\"\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"del LF before empty (1)">)} 
      {
        (SQ <"\n"> <"\tgit show -s --pretty=format:\"%s%n%-b%nThanks%n\" HEAD^^ >actual &&\n"> 
          <"\ttest_line_count = 2 actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"del LF before empty (2)">)} 
      {
        (SQ <"\n"> <"\tgit show -s --pretty=format:\"%s%n%-b%nThanks%n\" HEAD >actual &&\n"> 
          <"\ttest_line_count = 6 actual &&\n"> <"\tgrep \"^$\" actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"add LF before non-empty (1)">)} 
      {
        (SQ <"\n"> <"\tgit show -s --pretty=format:\"%s%+b%nThanks%n\" HEAD^^ >actual &&\n"> 
          <"\ttest_line_count = 2 actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"add LF before non-empty (2)">)} 
      {
        (SQ <"\n"> <"\tgit show -s --pretty=format:\"%s%+b%nThanks%n\" HEAD >actual &&\n"> 
          <"\ttest_line_count = 6 actual &&\n"> <"\tgrep \"^$\" actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"add SP before non-empty (1)">)} 
      {
        (SQ <"\n"> <"\tgit show -s --pretty=format:\"%s% bThanks\" HEAD^^ >actual &&\n"> 
          <"\ttest $(wc -w <actual) = 3\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"add SP before non-empty (2)">)} 
      {
        (SQ <"\n"> <"\tgit show -s --pretty=format:\"%s% sThanks\" HEAD^^ >actual &&\n"> 
          <"\ttest $(wc -w <actual) = 6\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <--abbrev>)} 
      {
        (SQ <"\n"> <"\techo SHORT SHORT SHORT >expect2 &&\n"> <"\techo LONG LONG LONG >expect3 &&\n"> 
          <"\tgit log -1 --format=\"%h %h %h\" HEAD >actual1 &&\n"> <"\tgit log -1 --abbrev=5 --format=\"%h %h %h\" HEAD >actual2 &&\n"> 
          <"\tgit log -1 --abbrev=5 --format=\"%H %H %H\" HEAD >actual3 &&\n"> <"\tsed -e \"s/$_x40/LONG/g\" -e \"s/$_x05/SHORT/g\" <actual2 >fuzzy2 &&\n"> 
          <"\tsed -e \"s/$_x40/LONG/g\" -e \"s/$_x05/SHORT/g\" <actual3 >fuzzy3 &&\n"> <"\ttest_cmp expect2 fuzzy2 &&\n"> <"\ttest_cmp expect3 fuzzy3 &&\n"> 
          <"\t! test_cmp actual1 actual2\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"%H is not affected by --abbrev-commit">)} 
      {
        (SQ <"\n"> <"\tgit log -1 --format=%H --abbrev-commit --abbrev=20 HEAD >actual &&\n"> 
          <"\tlen=$(wc -c <actual) &&\n"> <"\ttest $len = 41\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"%h is not affected by --abbrev-commit">)} 
      {
        (SQ <"\n"> <"\tgit log -1 --format=%h --abbrev-commit --abbrev=20 HEAD >actual &&\n"> 
          <"\tlen=$(wc -c <actual) &&\n"> <"\ttest $len = 21\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"\"%h %gD: %gs\" is same as git-reflog">)} 
      {
        (SQ <"\n"> <"\tgit reflog >expect &&\n"> <"\tgit log -g --format=\"%h %gD: %gs\" >actual &&\n"> 
          <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"\"%h %gD: %gs\" is same as git-reflog (with date)">)} 
      {
        (SQ <"\n"> <"\tgit reflog --date=raw >expect &&\n"> 
          <"\tgit log -g --format=\"%h %gD: %gs\" --date=raw >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"\"%h %gD: %gs\" is same as git-reflog (with --abbrev)">)} 
      {
        (SQ <"\n"> <"\tgit reflog --abbrev=13 --date=raw >expect &&\n"> 
          <"\tgit log -g --abbrev=13 --format=\"%h %gD: %gs\" --date=raw >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"%gd shortens ref name">)} 
      {
        (SQ <"\n"> <"\techo \"master@{0}\" >expect.gd-short &&\n"> 
          <"\tgit log -g -1 --format=%gd refs/heads/master >actual.gd-short &&\n"> <"\ttest_cmp expect.gd-short actual.gd-short\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"reflog identity">)} 
      {
        (SQ <"\n"> <"\techo \"C O Mitter:committer@example.com\" >expect &&\n"> 
          <"\tgit log -g -1 --format=\"%gn:%ge\" >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"oneline with empty message">)} 
      {
        (SQ <"\n"> <"\tgit commit -m \"dummy\" --allow-empty &&\n"> 
          <"\tgit commit -m \"dummy\" --allow-empty &&\n"> <"\tgit filter-branch --msg-filter \"sed -e s/dummy//\" HEAD^^.. &&\n"> 
          <"\tgit rev-list --oneline HEAD >test.txt &&\n"> <"\ttest_line_count = 5 test.txt &&\n"> <"\tgit rev-list --oneline --graph HEAD >testg.txt &&\n"> 
          <"\ttest_line_count = 5 testg.txt\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"single-character name is parsed correctly">)} 
      {
        (SQ <"\n"> <"\tgit commit --author=\"a <a@example.com>\" --allow-empty -m foo &&\n"> 
          <"\techo \"a <a@example.com>\" >expect &&\n"> <"\tgit log -1 --format=\"%an <%ae>\" >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"unused %G placeholders are passed through">)} 
      {
        (SQ <"\n"> <"\techo \"%GX %G\" >expect &&\n"> <"\tgit log -1 --format=\"%GX %G\" >actual &&\n"> 
          <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_done)})
  ]
)