(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:'git svn commit-diff' span_id:11))}
          spids: [9]
        )
      ]
    )
    (C {(.)} {(./lib-git-svn.sh)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'initialize repo' span_id:22))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:26) 
          (Token id:Id.Lit_Chars val:'\tmkdir import &&\n' span_id:27) (Token id:Id.Lit_Chars val:'\t(\n' span_id:28) 
          (Token id:Id.Lit_Chars val:'\t\tcd import &&\n' span_id:29) (Token id:Id.Lit_Chars val:'\t\techo hello >readme &&\n' span_id:30) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tsvn_cmd import -m "initial" . "$svnrepo"\n'
            span_id: 31
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:32) 
          (Token id:Id.Lit_Chars val:'\techo hello > readme &&\n' span_id:33) (Token id:Id.Lit_Chars val:'\tgit update-index --add readme &&\n' span_id:34) 
          (Token id:Id.Lit_Chars val:'\tgit commit -a -m "initial" &&\n' span_id:35) (Token id:Id.Lit_Chars val:'\techo world >> readme &&\n' span_id:36) 
          (Token id:Id.Lit_Chars val:'\tgit commit -a -m "another"\n' span_id:37) (Token id:Id.Lit_Chars val:'\t' span_id:38)
        )
      }
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:head)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:43)
                command_list: 
                  (command.CommandList
                    children: [(C {(git)} {(rev-parse)} {(--verify)} {(HEAD) (Id.Lit_Other '^') (0)})]
                  )
              )
            }
          spids: [42]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:prev)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:56)
                command_list: 
                  (command.CommandList
                    children: [(C {(git)} {(rev-parse)} {(--verify)} {(HEAD) (Id.Lit_Other '^') (1)})]
                  )
              )
            }
          spids: [55]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'test the commit-diff command' span_id:82))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:86) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest -n "$prev" && test -n "$head" &&\n'
            span_id: 87
          ) (Token id:Id.Lit_Chars val:'\tgit svn commit-diff -r1 "$prev" "$head" "$svnrepo" &&\n' span_id:88) 
          (Token id:Id.Lit_Chars val:'\tsvn_cmd co "$svnrepo" wc &&\n' span_id:89) (Token id:Id.Lit_Chars val:'\tcmp readme wc/readme\n' span_id:90) 
          (Token id:Id.Lit_Chars val:'\t' span_id:91)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'commit-diff to a sub-directory (with git svn config)'
            span_id: 98
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:102) 
          (Token
            id: Id.Lit_Chars
            val: '\tsvn_cmd import -m "sub-directory" import "$svnrepo"/subdir &&\n'
            span_id: 103
          ) (Token id:Id.Lit_Chars val:'\tgit svn init --minimize-url "$svnrepo"/subdir &&\n' span_id:104) 
          (Token id:Id.Lit_Chars val:'\tgit svn fetch &&\n' span_id:105) (Token id:Id.Lit_Chars val:'\tgit svn commit-diff -r3 "$prev" "$head" &&\n' span_id:106) 
          (Token
            id: Id.Lit_Chars
            val: '\tsvn_cmd cat "$svnrepo"/subdir/readme > readme.2 &&\n'
            span_id: 107
          ) (Token id:Id.Lit_Chars val:'\tcmp readme readme.2\n' span_id:108) 
          (Token id:Id.Lit_Chars val:'\t' span_id:109)
        )
      }
    )
    (C {(test_done)})
  ]
)