(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'Test for "git log --decorate" colors'>)}
          spids: [13]
        )
      ]
    )
    (C {<.>} {<'./test-lib.sh'>})
    (command.ShFunction
      name: get_color
      body: 
        (BraceGroup
          children: [
            (C {<git>} {<config>} {<--get-color>} {<no.such.slot>} {(DQ ($ Id.VSub_Number '$1'))})
          ]
        )
    )
    (C {<test_expect_success>} {<setup>} 
      {
        (SQ <'\n'> <'\tgit config diff.color.commit yellow &&\n'> 
          <'\tgit config color.decorate.branch green &&\n'> <'\tgit config color.decorate.remoteBranch red &&\n'> 
          <'\tgit config color.decorate.tag "reverse bold yellow" &&\n'> <'\tgit config color.decorate.stash magenta &&\n'> <'\tgit config color.decorate.HEAD cyan &&\n'> 
          <'\n'> <'\tc_reset=$(get_color reset) &&\n'> <'\n'> <'\tc_commit=$(get_color yellow) &&\n'> 
          <'\tc_branch=$(get_color green) &&\n'> <'\tc_remoteBranch=$(get_color red) &&\n'> <'\tc_tag=$(get_color "reverse bold yellow") &&\n'> 
          <'\tc_stash=$(get_color magenta) &&\n'> <'\tc_HEAD=$(get_color cyan) &&\n'> <'\n'> <'\ttest_commit A &&\n'> <'\tgit clone . other &&\n'> 
          <'\t(\n'> <'\t\tcd other &&\n'> <'\t\ttest_commit A1\n'> <'\t) &&\n'> <'\n'> 
          <'\tgit remote add -f other ./other &&\n'> <'\ttest_commit B &&\n'> <'\tgit tag v1.0 &&\n'> <'\techo >>A.t &&\n'> 
          <'\tgit stash save Changes to A.t\n'>
        )
      }
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.MultiLine
              here_begin: {<EOF>}
              here_end_span_id: 267
              stdin_parts: [
                (${ Id.VSub_Name c_commit)
                <COMMIT_ID>
                (${ Id.VSub_Name c_reset)
                (${ Id.VSub_Name c_commit)
                <' ('>
                (${ Id.VSub_Name c_reset)
                (${ Id.VSub_Name c_HEAD)
                <'HEAD ->'>
                <' '>
                (${ Id.VSub_Name c_reset)
                (${ Id.VSub_Name c_branch)
                <master>
                (${ Id.VSub_Name c_reset)
                (${ Id.VSub_Name c_commit)
                <','>
                <' '>
                (${ Id.VSub_Name c_reset)
                (${ Id.VSub_Name c_tag)
                <'tag: v1.0'>
                (${ Id.VSub_Name c_reset)
                (${ Id.VSub_Name c_commit)
                <','>
                <' '>
                (${ Id.VSub_Name c_reset)
                (${ Id.VSub_Name c_tag)
                <'tag: B'>
                (${ Id.VSub_Name c_reset)
                (${ Id.VSub_Name c_commit)
                <')'>
                (${ Id.VSub_Name c_reset)
                <' B\n'>
                (${ Id.VSub_Name c_commit)
                <COMMIT_ID>
                (${ Id.VSub_Name c_reset)
                (${ Id.VSub_Name c_commit)
                <' ('>
                (${ Id.VSub_Name c_reset)
                (${ Id.VSub_Name c_tag)
                <'tag: A1'>
                (${ Id.VSub_Name c_reset)
                (${ Id.VSub_Name c_commit)
                <','>
                <' '>
                (${ Id.VSub_Name c_reset)
                (${ Id.VSub_Name c_remoteBranch)
                <'other/master'>
                (${ Id.VSub_Name c_reset)
                (${ Id.VSub_Name c_commit)
                <')'>
                (${ Id.VSub_Name c_reset)
                <' A1\n'>
                (${ Id.VSub_Name c_commit)
                <COMMIT_ID>
                (${ Id.VSub_Name c_reset)
                (${ Id.VSub_Name c_commit)
                <' ('>
                (${ Id.VSub_Name c_reset)
                (${ Id.VSub_Name c_stash)
                <'refs/stash'>
                (${ Id.VSub_Name c_reset)
                (${ Id.VSub_Name c_commit)
                <')'>
                (${ Id.VSub_Name c_reset)
                <' On master: Changes to A.t\n'>
                (${ Id.VSub_Name c_commit)
                <COMMIT_ID>
                (${ Id.VSub_Name c_reset)
                (${ Id.VSub_Name c_commit)
                <' ('>
                (${ Id.VSub_Name c_reset)
                (${ Id.VSub_Name c_tag)
                <'tag: A'>
                (${ Id.VSub_Name c_reset)
                (${ Id.VSub_Name c_commit)
                <')'>
                (${ Id.VSub_Name c_reset)
                <' A\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} {(SQ <'Commit Decorations Colored Correctly'>)} 
      {
        (SQ <'\n'> 
          <'\tgit log --first-parent --abbrev=10 --all --decorate --oneline --color=always |\n'> <'\tsed "s/[0-9a-f]\\{10,10\\}/COMMIT_ID/" >out &&\n'> <'\ttest_cmp expected out\n'>
        )
      }
    )
    (C {<test_done>})
  ]
)