(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'combined diff show only paths that are different to all parents'>)}
          spids: [4]
        )
      ]
    )
    (C {<.>} {<'./test-lib.sh'>})
    (command.ShFunction
      name: diffc_verify
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.Simple
                  words: [
                    {<git>}
                    {<diff>}
                    {<-c>}
                    {<--name-only>}
                    {<HEAD>}
                    {<HEAD> <Id.Lit_Other '^'>}
                    {<HEAD> <Id.Lit_Other '^'> <2>}
                  ]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<diffc.actual>}
                    )
                  ]
                  do_fork: T
                )
                (C {<test_cmp>} {<diffc.expect>} {<diffc.actual>})
              ]
            )
          ]
        )
    )
    (C {<test_expect_success>} {(SQ <'trivial merge - combine-diff empty'>)} 
      {
        (SQ <'\n'> <'\tfor i in $(test_seq 1 9)\n'> <'\tdo\n'> <'\t\techo $i >$i.txt\t&&\n'> 
          <'\t\tgit add $i.txt\n'> <'\tdone &&\n'> <'\tgit commit -m "init" &&\n'> <'\tgit checkout -b side &&\n'> 
          <'\tfor i in $(test_seq 2 9)\n'> <'\tdo\n'> <'\t\techo $i/2 >>$i.txt\n'> <'\tdone &&\n'> <'\tgit commit -a -m "side 2-9" &&\n'> 
          <'\tgit checkout master &&\n'> <'\techo 1/2 >1.txt &&\n'> <'\tgit commit -a -m "master 1" &&\n'> <'\tgit merge side &&\n'> 
          <'\t>diffc.expect &&\n'> <'\tdiffc_verify\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'only one trully conflicting path'>)} 
      {
        (SQ <'\n'> <'\tgit checkout side &&\n'> <'\tfor i in $(test_seq 2 9)\n'> <'\tdo\n'> 
          <'\t\techo $i/3 >>$i.txt\n'> <'\tdone &&\n'> <'\techo "4side" >>4.txt &&\n'> <'\tgit commit -a -m "side 2-9 +4" &&\n'> 
          <'\tgit checkout master &&\n'> <'\tfor i in $(test_seq 1 9)\n'> <'\tdo\n'> <'\t\techo $i/3 >>$i.txt\n'> <'\tdone &&\n'> 
          <'\techo "4master" >>4.txt &&\n'> <'\tgit commit -a -m "master 1-9 +4" &&\n'> <'\ttest_must_fail git merge side &&\n'> 
          <'\tcat <<-\\EOF >4.txt &&\n'> <'\t4\n'> <'\t4/2\n'> <'\t4/3\n'> <'\t4master\n'> <'\t4side\n'> <'\tEOF\n'> <'\tgit add 4.txt &&\n'> 
          <'\tgit commit -m "merge side (2)" &&\n'> <'\techo 4.txt >diffc.expect &&\n'> <'\tdiffc_verify\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'merge introduces new file'>)} 
      {
        (SQ <'\n'> <'\tgit checkout side &&\n'> <'\tfor i in $(test_seq 5 9)\n'> <'\tdo\n'> 
          <'\t\techo $i/4 >>$i.txt\n'> <'\tdone &&\n'> <'\tgit commit -a -m "side 5-9" &&\n'> <'\tgit checkout master &&\n'> 
          <'\tfor i in $(test_seq 1 3)\n'> <'\tdo\n'> <'\t\techo $i/4 >>$i.txt\n'> <'\tdone &&\n'> <'\tgit commit -a -m "master 1-3 +4hello" &&\n'> 
          <'\tgit merge side &&\n'> <'\techo "Hello World" >4hello.txt &&\n'> <'\tgit add 4hello.txt &&\n'> <'\tgit commit --amend &&\n'> 
          <'\techo 4hello.txt >diffc.expect &&\n'> <'\tdiffc_verify\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'merge removed a file'>)} 
      {
        (SQ <'\n'> <'\tgit checkout side &&\n'> <'\tfor i in $(test_seq 5 9)\n'> <'\tdo\n'> 
          <'\t\techo $i/5 >>$i.txt\n'> <'\tdone &&\n'> <'\tgit commit -a -m "side 5-9" &&\n'> <'\tgit checkout master &&\n'> 
          <'\tfor i in $(test_seq 1 3)\n'> <'\tdo\n'> <'\t\techo $i/4 >>$i.txt\n'> <'\tdone &&\n'> <'\tgit commit -a -m "master 1-3" &&\n'> 
          <'\tgit merge side &&\n'> <'\tgit rm 4.txt &&\n'> <'\tgit commit --amend &&\n'> <'\techo 4.txt >diffc.expect &&\n'> 
          <'\tdiffc_verify\n'>
        )
      }
    )
    (C {<test_done>})
  ]
)