(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 for "git log --decorate" colors' span_id:15))}
          spids: [13]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.ShFunction
      name: get_color
      body: 
        (command.BraceGroup
          children: [
            (C {(git)} {(config)} {(--get-color)} {(no.such.slot)} {(DQ ($ Id.VSub_Number '$1'))})
          ]
        )
    )
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:52) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config diff.color.commit yellow &&\n'
            span_id: 53
          ) (Token id:Id.Lit_Chars val:'\tgit config color.decorate.branch green &&\n' span_id:54) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config color.decorate.remoteBranch red &&\n'
            span_id: 55
          ) (Token id:Id.Lit_Chars val:'\tgit config color.decorate.tag "reverse bold yellow" &&\n' span_id:56) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config color.decorate.stash magenta &&\n'
            span_id: 57
          ) (Token id:Id.Lit_Chars val:'\tgit config color.decorate.HEAD cyan &&\n' span_id:58) 
          (Token id:Id.Lit_Chars val:'\n' span_id:59) (Token id:Id.Lit_Chars val:'\tc_reset=$(get_color reset) &&\n' span_id:60) 
          (Token id:Id.Lit_Chars val:'\n' span_id:61) (Token id:Id.Lit_Chars val:'\tc_commit=$(get_color yellow) &&\n' span_id:62) 
          (Token id:Id.Lit_Chars val:'\tc_branch=$(get_color green) &&\n' span_id:63) (Token id:Id.Lit_Chars val:'\tc_remoteBranch=$(get_color red) &&\n' span_id:64) 
          (Token
            id: Id.Lit_Chars
            val: '\tc_tag=$(get_color "reverse bold yellow") &&\n'
            span_id: 65
          ) (Token id:Id.Lit_Chars val:'\tc_stash=$(get_color magenta) &&\n' span_id:66) 
          (Token id:Id.Lit_Chars val:'\tc_HEAD=$(get_color cyan) &&\n' span_id:67) (Token id:Id.Lit_Chars val:'\n' span_id:68) 
          (Token id:Id.Lit_Chars val:'\ttest_commit A &&\n' span_id:69) (Token id:Id.Lit_Chars val:'\tgit clone . other &&\n' span_id:70) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:71) (Token id:Id.Lit_Chars val:'\t\tcd other &&\n' span_id:72) 
          (Token id:Id.Lit_Chars val:'\t\ttest_commit A1\n' span_id:73) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:74) (Token id:Id.Lit_Chars val:'\n' span_id:75) 
          (Token id:Id.Lit_Chars val:'\tgit remote add -f other ./other &&\n' span_id:76) (Token id:Id.Lit_Chars val:'\ttest_commit B &&\n' span_id:77) 
          (Token id:Id.Lit_Chars val:'\tgit tag v1.0 &&\n' span_id:78) (Token id:Id.Lit_Chars val:'\techo >>A.t &&\n' span_id:79) 
          (Token id:Id.Lit_Chars val:'\tgit stash save Changes to A.t\n' span_id:80)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:86)
          fd: -1
          arg_word: {(expected)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:89)
          fd: -1
          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')
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'Commit Decorations Colored Correctly' span_id:278))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:282) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit log --first-parent --abbrev=10 --all --decorate --oneline --color=always |\n'
            span_id: 283
          ) (Token id:Id.Lit_Chars val:'\tsed "s/[0-9a-f]\\{10,10\\}/COMMIT_ID/" >out &&\n' span_id:284) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected out\n' span_id:285)
        )
      }
    )
    (C {(test_done)})
  ]
)