(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:'Various diff formatting options' span_id:15))}
          spids: [13]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:LF)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:'\n' span_id:26))}
          spids: [24]
        )
      ]
    )
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:35) (Token id:Id.Lit_Chars val:'\n' span_id:36) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_AUTHOR_DATE="2006-06-26 00:00:00 +0000" &&\n'
            span_id: 37
          ) (Token id:Id.Lit_Chars val:'\tGIT_COMMITTER_DATE="2006-06-26 00:00:00 +0000" &&\n' span_id:38) 
          (Token
            id: Id.Lit_Chars
            val: '\texport GIT_AUTHOR_DATE GIT_COMMITTER_DATE &&\n'
            span_id: 39
          ) (Token id:Id.Lit_Chars val:'\n' span_id:40) (Token id:Id.Lit_Chars val:'\tmkdir dir &&\n' span_id:41) 
          (Token id:Id.Lit_Chars val:'\tmkdir dir2 &&\n' span_id:42) (Token id:Id.Lit_Chars val:'\tfor i in 1 2 3; do echo $i; done >file0 &&\n' span_id:43) 
          (Token
            id: Id.Lit_Chars
            val: '\tfor i in A B; do echo $i; done >dir/sub &&\n'
            span_id: 44
          ) (Token id:Id.Lit_Chars val:'\tcat file0 >file2 &&\n' span_id:45) 
          (Token id:Id.Lit_Chars val:'\tgit add file0 file2 dir/sub &&\n' span_id:46) (Token id:Id.Lit_Chars val:'\tgit commit -m Initial &&\n' span_id:47) 
          (Token id:Id.Lit_Chars val:'\n' span_id:48) (Token id:Id.Lit_Chars val:'\tgit branch initial &&\n' span_id:49) 
          (Token id:Id.Lit_Chars val:'\tgit branch side &&\n' span_id:50) (Token id:Id.Lit_Chars val:'\n' span_id:51) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_AUTHOR_DATE="2006-06-26 00:01:00 +0000" &&\n'
            span_id: 52
          ) (Token id:Id.Lit_Chars val:'\tGIT_COMMITTER_DATE="2006-06-26 00:01:00 +0000" &&\n' span_id:53) 
          (Token
            id: Id.Lit_Chars
            val: '\texport GIT_AUTHOR_DATE GIT_COMMITTER_DATE &&\n'
            span_id: 54
          ) (Token id:Id.Lit_Chars val:'\n' span_id:55) 
          (Token
            id: Id.Lit_Chars
            val: '\tfor i in 4 5 6; do echo $i; done >>file0 &&\n'
            span_id: 56
          ) (Token id:Id.Lit_Chars val:'\tfor i in C D; do echo $i; done >>dir/sub &&\n' span_id:57) 
          (Token id:Id.Lit_Chars val:'\trm -f file2 &&\n' span_id:58) (Token id:Id.Lit_Chars val:'\tgit update-index --remove file0 file2 dir/sub &&\n' span_id:59) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit -m "Second${LF}${LF}This is the second commit." &&\n'
            span_id: 60
          ) (Token id:Id.Lit_Chars val:'\n' span_id:61) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_AUTHOR_DATE="2006-06-26 00:02:00 +0000" &&\n'
            span_id: 62
          ) (Token id:Id.Lit_Chars val:'\tGIT_COMMITTER_DATE="2006-06-26 00:02:00 +0000" &&\n' span_id:63) 
          (Token
            id: Id.Lit_Chars
            val: '\texport GIT_AUTHOR_DATE GIT_COMMITTER_DATE &&\n'
            span_id: 64
          ) (Token id:Id.Lit_Chars val:'\n' span_id:65) 
          (Token
            id: Id.Lit_Chars
            val: '\tfor i in A B C; do echo $i; done >file1 &&\n'
            span_id: 66
          ) (Token id:Id.Lit_Chars val:'\tgit add file1 &&\n' span_id:67) 
          (Token
            id: Id.Lit_Chars
            val: '\tfor i in E F; do echo $i; done >>dir/sub &&\n'
            span_id: 68
          ) (Token id:Id.Lit_Chars val:'\tgit update-index dir/sub &&\n' span_id:69) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m Third &&\n' span_id:70) (Token id:Id.Lit_Chars val:'\n' span_id:71) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_AUTHOR_DATE="2006-06-26 00:03:00 +0000" &&\n'
            span_id: 72
          ) (Token id:Id.Lit_Chars val:'\tGIT_COMMITTER_DATE="2006-06-26 00:03:00 +0000" &&\n' span_id:73) 
          (Token
            id: Id.Lit_Chars
            val: '\texport GIT_AUTHOR_DATE GIT_COMMITTER_DATE &&\n'
            span_id: 74
          ) (Token id:Id.Lit_Chars val:'\n' span_id:75) 
          (Token id:Id.Lit_Chars val:'\tgit checkout side &&\n' span_id:76) (Token id:Id.Lit_Chars val:'\tfor i in A B C; do echo $i; done >>file0 &&\n' span_id:77) 
          (Token
            id: Id.Lit_Chars
            val: '\tfor i in 1 2; do echo $i; done >>dir/sub &&\n'
            span_id: 78
          ) (Token id:Id.Lit_Chars val:'\tcat dir/sub >file3 &&\n' span_id:79) 
          (Token id:Id.Lit_Chars val:'\tgit add file3 &&\n' span_id:80) (Token id:Id.Lit_Chars val:'\tgit update-index file0 dir/sub &&\n' span_id:81) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m Side &&\n' span_id:82) (Token id:Id.Lit_Chars val:'\n' span_id:83) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_AUTHOR_DATE="2006-06-26 00:04:00 +0000" &&\n'
            span_id: 84
          ) (Token id:Id.Lit_Chars val:'\tGIT_COMMITTER_DATE="2006-06-26 00:04:00 +0000" &&\n' span_id:85) 
          (Token
            id: Id.Lit_Chars
            val: '\texport GIT_AUTHOR_DATE GIT_COMMITTER_DATE &&\n'
            span_id: 86
          ) (Token id:Id.Lit_Chars val:'\n' span_id:87) 
          (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:88) (Token id:Id.Lit_Chars val:'\tgit pull -s ours . side &&\n' span_id:89) 
          (Token id:Id.Lit_Chars val:'\n' span_id:90) (Token id:Id.Lit_Chars val:'\tGIT_AUTHOR_DATE="2006-06-26 00:05:00 +0000" &&\n' span_id:91) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_COMMITTER_DATE="2006-06-26 00:05:00 +0000" &&\n'
            span_id: 92
          ) (Token id:Id.Lit_Chars val:'\texport GIT_AUTHOR_DATE GIT_COMMITTER_DATE &&\n' span_id:93) 
          (Token id:Id.Lit_Chars val:'\n' span_id:94) (Token id:Id.Lit_Chars val:'\tfor i in A B C; do echo $i; done >>file0 &&\n' span_id:95) 
          (Token
            id: Id.Lit_Chars
            val: '\tfor i in 1 2; do echo $i; done >>dir/sub &&\n'
            span_id: 96
          ) (Token id:Id.Lit_Chars val:'\tgit update-index file0 dir/sub &&\n' span_id:97) 
          (Token id:Id.Lit_Chars val:'\n' span_id:98) (Token id:Id.Lit_Chars val:'\tmkdir dir3 &&\n' span_id:99) 
          (Token id:Id.Lit_Chars val:'\tcp dir/sub dir3/sub &&\n' span_id:100) (Token id:Id.Lit_Chars val:'\ttest-chmtime +1 dir3/sub &&\n' span_id:101) 
          (Token id:Id.Lit_Chars val:'\n' span_id:102) (Token id:Id.Lit_Chars val:'\tgit config log.showroot false &&\n' span_id:103) 
          (Token id:Id.Lit_Chars val:'\tgit commit --amend &&\n' span_id:104) (Token id:Id.Lit_Chars val:'\n' span_id:105) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_AUTHOR_DATE="2006-06-26 00:06:00 +0000" &&\n'
            span_id: 106
          ) (Token id:Id.Lit_Chars val:'\tGIT_COMMITTER_DATE="2006-06-26 00:06:00 +0000" &&\n' span_id:107) 
          (Token
            id: Id.Lit_Chars
            val: '\texport GIT_AUTHOR_DATE GIT_COMMITTER_DATE &&\n'
            span_id: 108
          ) (Token id:Id.Lit_Chars val:'\tgit checkout -b rearrange initial &&\n' span_id:109) 
          (Token
            id: Id.Lit_Chars
            val: '\tfor i in B A; do echo $i; done >dir/sub &&\n'
            span_id: 110
          ) (Token id:Id.Lit_Chars val:'\tgit add dir/sub &&\n' span_id:111) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit -m "Rearranged lines in dir/sub" &&\n'
            span_id: 112
          ) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:113) 
          (Token id:Id.Lit_Chars val:'\n' span_id:114) (Token id:Id.Lit_Chars val:'\tgit config diff.renames false &&\n' span_id:115) 
          (Token id:Id.Lit_Chars val:'\n' span_id:116) (Token id:Id.Lit_Chars val:'\tgit show-branch\n' span_id:117)
        )
      }
    )
    (command.Simple
      words: [{(Id.Lit_Other ':')}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:123)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:124)) 
              (OF)
            }
          here_end_span_id: 138
          stdin_parts: [
            ('! [initial] Initial\n')
            (" * [master] Merge branch 'side'\n")
            ('  ! [rearrange] Rearranged lines in dir/sub\n')
            ('   ! [side] Side\n')
            ('----\n')
            ('  +  [rearrange] Rearranged lines in dir/sub\n')
            (" -   [master] Merge branch 'side'\n")
            (' * + [side] Side\n')
            (' *   [master^] Third\n')
            (' *   [master~2] Second\n')
            ('+*++ [initial] Initial\n')
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:V)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:141)
                command_list: 
                  (command.CommandList
                    children: [
                      (command.Pipeline
                        children: [
                          (C {(git)} {(version)})
                          (C {(sed)} {(-e)} 
                            {(SQ (Token id:Id.Lit_Chars val:'s/^git version //' span_id:153))} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'s/\\./\\\\./g' span_id:159))}
                          )
                        ]
                        negated: F
                      )
                    ]
                  )
              )
            }
          spids: [140]
        )
      ]
    )
    (command.WhileUntil
      keyword: (Token id:Id.KW_While val:while span_id:163)
      cond: [(C {(read)} {(cmd)})]
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$cmd'))}
              arms: [
                (case_arm
                  pat_list: [
                    {(SQ )}
                    {(SQ (Token id:Id.Lit_Chars val:'#' span_id:187)) (Id.Lit_Star '*')}
                  ]
                  action: [
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Continue val:continue span_id:192)
                    )
                  ]
                  spids: [181 190 194 -1]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:test)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:201)
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {(echo)} {(DQ ($ Id.VSub_DollarName '$cmd'))})
                                  (C {(sed)} {(-e)} 
                                    {(SQ (Token id:Id.Lit_Chars val:'s|[/ ][/ ]*|_|g' span_id:215))}
                                  )
                                ]
                                negated: F
                              )
                            ]
                          )
                      )
                    }
                  spids: [200]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:pfx)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:221)
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(printf)} {(DQ ('%04d'))} {($ Id.VSub_DollarName '$test_count')})
                            ]
                          )
                      )
                    }
                  spids: [220]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:expect)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY') (/t4013/diff.) 
                        ($ Id.VSub_DollarName '$test')
                      )
                    }
                  spids: [232]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:actual)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$pfx') (-diff.) ($ Id.VSub_DollarName '$test'))}
                  spids: [240]
                )
              ]
            )
            (C {(test_expect_success)} {(DQ ('git ') ($ Id.VSub_DollarName '$cmd'))} 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:257) 
                  (Token id:Id.Lit_Chars val:'\t\t{\n' span_id:258) (Token id:Id.Lit_Chars val:'\t\t\techo "\\$ git $cmd"\n' span_id:259) 
                  (Token id:Id.Lit_Chars val:'\t\t\tgit $cmd |\n' span_id:260) 
                  (Token
                    id: Id.Lit_Chars
                    val: 
'\t\t\tsed -e "s/^\\\\(-*\\\\)$V\\\\(-*\\\\)\\$/\\\\1g-i-t--v-e-r-s-i-o-n\\2/" \\\n'
                    span_id: 261
                  ) 
                  (Token
                    id: Id.Lit_Chars
                    val: 
'\t\t\t    -e "s/^\\\\(.*mixed; boundary=\\"-*\\\\)$V\\\\(-*\\\\)\\"\\$/\\\\1g-i-t--v-e-r-s-i-o-n\\2\\"/"\n'
                    span_id: 262
                  ) (Token id:Id.Lit_Chars val:'\t\t\techo "\\$"\n' span_id:263) 
                  (Token id:Id.Lit_Chars val:'\t\t} >"$actual" &&\n' span_id:264) (Token id:Id.Lit_Chars val:'\t\tif test -f "$expect"\n' span_id:265) 
                  (Token id:Id.Lit_Chars val:'\t\tthen\n' span_id:266) (Token id:Id.Lit_Chars val:'\t\t\tcase $cmd in\n' span_id:267) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\t\t*format-patch* | *-stat*)\n'
                    span_id: 268
                  ) (Token id:Id.Lit_Chars val:'\t\t\t\ttest_i18ncmp "$expect" "$actual";;\n' span_id:269) 
                  (Token id:Id.Lit_Chars val:'\t\t\t*)\n' span_id:270) (Token id:Id.Lit_Chars val:'\t\t\t\ttest_cmp "$expect" "$actual";;\n' span_id:271) 
                  (Token id:Id.Lit_Chars val:'\t\t\tesac &&\n' span_id:272) (Token id:Id.Lit_Chars val:'\t\t\trm -f "$actual"\n' span_id:273) 
                  (Token id:Id.Lit_Chars val:'\t\telse\n' span_id:274) (Token id:Id.Lit_Chars val:'\t\t\t# this is to help developing new tests.\n' span_id:275) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\t\tcp "$actual" "$expect"\n'
                    span_id: 276
                  ) (Token id:Id.Lit_Chars val:'\t\t\tfalse\n' span_id:277) 
                  (Token id:Id.Lit_Chars val:'\t\tfi\n' span_id:278) (Token id:Id.Lit_Chars val:'\t' span_id:279)
                )
              }
            )
          ]
        )
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:284)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:285)) 
              (OF)
            }
          here_end_span_id: 455
          stdin_parts: [
            ('diff-tree initial\n')
            ('diff-tree -r initial\n')
            ('diff-tree -r --abbrev initial\n')
            ('diff-tree -r --abbrev=4 initial\n')
            ('diff-tree --root initial\n')
            ('diff-tree --root --abbrev initial\n')
            ('diff-tree --root -r initial\n')
            ('diff-tree --root -r --abbrev initial\n')
            ('diff-tree --root -r --abbrev=4 initial\n')
            ('diff-tree -p initial\n')
            ('diff-tree --root -p initial\n')
            ('diff-tree --patch-with-stat initial\n')
            ('diff-tree --root --patch-with-stat initial\n')
            ('diff-tree --patch-with-raw initial\n')
            ('diff-tree --root --patch-with-raw initial\n')
            ('\n')
            ('diff-tree --pretty initial\n')
            ('diff-tree --pretty --root initial\n')
            ('diff-tree --pretty -p initial\n')
            ('diff-tree --pretty --stat initial\n')
            ('diff-tree --pretty --summary initial\n')
            ('diff-tree --pretty --stat --summary initial\n')
            ('diff-tree --pretty --root -p initial\n')
            ('diff-tree --pretty --root --stat initial\n')
            ("# improved by Timo's patch\n")
            ('diff-tree --pretty --root --summary initial\n')
            ("# improved by Timo's patch\n")
            ('diff-tree --pretty --root --summary -r initial\n')
            ('diff-tree --pretty --root --stat --summary initial\n')
            ('diff-tree --pretty --patch-with-stat initial\n')
            ('diff-tree --pretty --root --patch-with-stat initial\n')
            ('diff-tree --pretty --patch-with-raw initial\n')
            ('diff-tree --pretty --root --patch-with-raw initial\n')
            ('\n')
            ('diff-tree --pretty=oneline initial\n')
            ('diff-tree --pretty=oneline --root initial\n')
            ('diff-tree --pretty=oneline -p initial\n')
            ('diff-tree --pretty=oneline --root -p initial\n')
            ('diff-tree --pretty=oneline --patch-with-stat initial\n')
            ("# improved by Timo's patch\n")
            ('diff-tree --pretty=oneline --root --patch-with-stat initial\n')
            ('diff-tree --pretty=oneline --patch-with-raw initial\n')
            ('diff-tree --pretty=oneline --root --patch-with-raw initial\n')
            ('\n')
            ('diff-tree --pretty side\n')
            ('diff-tree --pretty -p side\n')
            ('diff-tree --pretty --patch-with-stat side\n')
            ('\n')
            ('diff-tree master\n')
            ('diff-tree -p master\n')
            ('diff-tree -p -m master\n')
            ('diff-tree -c master\n')
            ('diff-tree -c --abbrev master\n')
            ('diff-tree --cc master\n')
            ('# stat only should show the diffstat with the first parent\n')
            ('diff-tree -c --stat master\n')
            ('diff-tree --cc --stat master\n')
            ('diff-tree -c --stat --summary master\n')
            ('diff-tree --cc --stat --summary master\n')
            ('# stat summary should show the diffstat and summary with the first parent\n')
            ('diff-tree -c --stat --summary side\n')
            ('diff-tree --cc --stat --summary side\n')
            ("# improved by Timo's patch\n")
            ('diff-tree --cc --patch-with-stat master\n')
            ("# improved by Timo's patch\n")
            ('diff-tree --cc --patch-with-stat --summary master\n')
            ('# this is correct\n')
            ('diff-tree --cc --patch-with-stat --summary side\n')
            ('\n')
            ('log master\n')
            ('log -p master\n')
            ('log --root master\n')
            ('log --root -p master\n')
            ('log --patch-with-stat master\n')
            ('log --root --patch-with-stat master\n')
            ('log --root --patch-with-stat --summary master\n')
            ("# improved by Timo's patch\n")
            ('log --root -c --patch-with-stat --summary master\n')
            ("# improved by Timo's patch\n")
            ('log --root --cc --patch-with-stat --summary master\n')
            ('log -p --first-parent master\n')
            ('log -m -p --first-parent master\n')
            ('log -m -p master\n')
            ('log -SF master\n')
            ('log -S F master\n')
            ('log -SF -p master\n')
            ('log -SF master --max-count=0\n')
            ('log -SF master --max-count=1\n')
            ('log -SF master --max-count=2\n')
            ('log -GF master\n')
            ('log -GF -p master\n')
            ('log -GF -p --pickaxe-all master\n')
            ('log --decorate --all\n')
            ('log --decorate=full --all\n')
            ('\n')
            ('rev-list --parents HEAD\n')
            ('rev-list --children HEAD\n')
            ('\n')
            ('whatchanged master\n')
            ('whatchanged -p master\n')
            ('whatchanged --root master\n')
            ('whatchanged --root -p master\n')
            ('whatchanged --patch-with-stat master\n')
            ('whatchanged --root --patch-with-stat master\n')
            ('whatchanged --root --patch-with-stat --summary master\n')
            ("# improved by Timo's patch\n")
            ('whatchanged --root -c --patch-with-stat --summary master\n')
            ("# improved by Timo's patch\n")
            ('whatchanged --root --cc --patch-with-stat --summary master\n')
            ('whatchanged -SF master\n')
            ('whatchanged -SF -p master\n')
            ('\n')
            ('log --patch-with-stat master -- dir/\n')
            ('whatchanged --patch-with-stat master -- dir/\n')
            ('log --patch-with-stat --summary master -- dir/\n')
            ('whatchanged --patch-with-stat --summary master -- dir/\n')
            ('\n')
            ('show initial\n')
            ('show --root initial\n')
            ('show side\n')
            ('show master\n')
            ('show -c master\n')
            ('show -m master\n')
            ('show --first-parent master\n')
            ('show --stat side\n')
            ('show --stat --summary side\n')
            ('show --patch-with-stat side\n')
            ('show --patch-with-raw side\n')
            ('show --patch-with-stat --summary side\n')
            ('\n')
            ('format-patch --stdout initial..side\n')
            ('format-patch --stdout initial..master^\n')
            ('format-patch --stdout initial..master\n')
            ('format-patch --stdout --no-numbered initial..master\n')
            ('format-patch --stdout --numbered initial..master\n')
            ('format-patch --attach --stdout initial..side\n')
            ('format-patch --attach --stdout --suffix=.diff initial..side\n')
            ('format-patch --attach --stdout initial..master^\n')
            ('format-patch --attach --stdout initial..master\n')
            ('format-patch --inline --stdout initial..side\n')
            ('format-patch --inline --stdout initial..master^\n')
            ('format-patch --inline --stdout --numbered-files initial..master\n')
            ('format-patch --inline --stdout initial..master\n')
            ('format-patch --inline --stdout --subject-prefix=TESTCASE initial..master\n')
            ('config format.subjectprefix DIFFERENT_PREFIX\n')
            ('format-patch --inline --stdout initial..master^^\n')
            ('format-patch --stdout --cover-letter -n initial..master^\n')
            ('\n')
            ('diff --abbrev initial..side\n')
            ('diff -r initial..side\n')
            ('diff --stat initial..side\n')
            ('diff -r --stat initial..side\n')
            ('diff initial..side\n')
            ('diff --patch-with-stat initial..side\n')
            ('diff --patch-with-raw initial..side\n')
            ('diff --patch-with-stat -r initial..side\n')
            ('diff --patch-with-raw -r initial..side\n')
            ('diff --name-status dir2 dir\n')
            ('diff --no-index --name-status dir2 dir\n')
            ('diff --no-index --name-status -- dir2 dir\n')
            ('diff --no-index dir dir3\n')
            ('diff master master^ side\n')
            ("# Can't use spaces...\n")
            ('diff --line-prefix=abc master master^ side\n')
            ('diff --dirstat master~1 master~2\n')
            ('diff --dirstat initial rearrange\n')
            ('diff --dirstat-by-file initial rearrange\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'log -S requires an argument' span_id:460))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:464) 
          (Token id:Id.Lit_Chars val:'\ttest_must_fail git log -S\n' span_id:465)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'diff --cached on unborn branch' span_id:472))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:476) 
          (Token
            id: Id.Lit_Chars
            val: '\techo ref: refs/heads/unborn >.git/HEAD &&\n'
            span_id: 477
          ) (Token id:Id.Lit_Chars val:'\tgit diff --cached >result &&\n' span_id:478) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp "$TEST_DIRECTORY/t4013/diff.diff_--cached" result\n'
            span_id: 479
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'diff --cached -- file on unborn branch' span_id:486))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:490) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --cached -- file0 >result &&\n'
            span_id: 491
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp "$TEST_DIRECTORY/t4013/diff.diff_--cached_--_file0" result\n'
            span_id: 492
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'diff --line-prefix with spaces' span_id:498))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:502) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --line-prefix="| | | " --cached -- file0 >result &&\n'
            span_id: 503
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest_cmp "$TEST_DIRECTORY/t4013/diff.diff_--line-prefix_--cached_--_file0" result\n'
            span_id: 504
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'diff-tree --stdin with log formatting' span_id:511))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:515) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:516) (Token id:Id.Lit_Chars val:'\tSide\n' span_id:517) (Token id:Id.Lit_Chars val:'\tThird\n' span_id:518) 
          (Token id:Id.Lit_Chars val:'\tSecond\n' span_id:519) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:520) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit rev-list master | git diff-tree --stdin --format=%s -s >actual &&\n'
            span_id: 521
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:522)
        )
      }
    )
    (C {(test_done)})
  ]
)