(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 merge detection' span_id:15))}
          spids: [13]
        )
      ]
    )
    (C {(.)} {(./lib-git-svn.sh)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:svn_ver)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:25)
                  command_list: 
                    (command.CommandList
                      children: [(C {(svn)} {(--version)} {(--quiet)})]
                    )
                )
              )
            }
          spids: [23]
        )
      ]
    )
    (command.Case
      to_match: {($ Id.VSub_DollarName '$svn_ver')}
      arms: [
        (case_arm
          pat_list: [
            {(0.) (Id.Lit_Star '*')}
            {(1.) (Id.Lit_LBracket '[') (0-4) (Id.Lit_RBracket ']') (.) (Id.Lit_Star '*')}
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:skip_all)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ ('skipping git-svn test - SVN too old (') ($ Id.VSub_DollarName '$svn_ver') 
                        (')')
                      )
                    }
                  spids: [54]
                )
              ]
            )
            (C {(test_done)})
          ]
          spids: [40 51 65 -1]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'initialize source svn repo' span_id:73))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:77) 
          (Token
            id: Id.Lit_Chars
            val: '\tsvn_cmd mkdir -m x "$svnrepo"/trunk &&\n'
            span_id: 78
          ) (Token id:Id.Lit_Chars val:'\tsvn_cmd mkdir -m x "$svnrepo"/branches &&\n' span_id:79) 
          (Token
            id: Id.Lit_Chars
            val: '\tsvn_cmd co "$svnrepo"/trunk "$SVN_TREE" &&\n'
            span_id: 80
          ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:81) 
          (Token id:Id.Lit_Chars val:'\t\tcd "$SVN_TREE" &&\n' span_id:82) (Token id:Id.Lit_Chars val:'\t\ttouch foo &&\n' span_id:83) 
          (Token id:Id.Lit_Chars val:'\t\tsvn add foo &&\n' span_id:84) (Token id:Id.Lit_Chars val:'\t\tsvn commit -m "initial commit" &&\n' span_id:85) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tsvn cp -m branch "$svnrepo"/trunk "$svnrepo"/branches/branch1 &&\n'
            span_id: 86
          ) (Token id:Id.Lit_Chars val:'\t\ttouch bar &&\n' span_id:87) 
          (Token id:Id.Lit_Chars val:'\t\tsvn add bar &&\n' span_id:88) (Token id:Id.Lit_Chars val:'\t\tsvn commit -m x &&\n' span_id:89) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tsvn cp -m branch "$svnrepo"/trunk "$svnrepo"/branches/branch2 &&\n'
            span_id: 90
          ) (Token id:Id.Lit_Chars val:'\t\tsvn switch "$svnrepo"/branches/branch1 &&\n' span_id:91) 
          (Token id:Id.Lit_Chars val:'\t\ttouch baz &&\n' span_id:92) (Token id:Id.Lit_Chars val:'\t\tsvn add baz &&\n' span_id:93) 
          (Token id:Id.Lit_Chars val:'\t\tsvn commit -m x &&\n' span_id:94) (Token id:Id.Lit_Chars val:'\t\tsvn switch "$svnrepo"/trunk &&\n' span_id:95) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tsvn merge "$svnrepo"/branches/branch1 &&\n'
            span_id: 96
          ) (Token id:Id.Lit_Chars val:'\t\tsvn commit -m "merge" &&\n' span_id:97) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tsvn switch "$svnrepo"/branches/branch1 &&\n'
            span_id: 98
          ) (Token id:Id.Lit_Chars val:'\t\tsvn commit -m x &&\n' span_id:99) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tsvn switch "$svnrepo"/branches/branch2 &&\n'
            span_id: 100
          ) (Token id:Id.Lit_Chars val:'\t\tsvn merge "$svnrepo"/branches/branch1 &&\n' span_id:101) 
          (Token id:Id.Lit_Chars val:'\t\tsvn commit -m "merge branch1" &&\n' span_id:102) (Token id:Id.Lit_Chars val:'\t\tsvn switch "$svnrepo"/trunk &&\n' span_id:103) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tsvn merge "$svnrepo"/branches/branch2 &&\n'
            span_id: 104
          ) (Token id:Id.Lit_Chars val:'\t\tsvn resolved baz &&\n' span_id:105) 
          (Token id:Id.Lit_Chars val:'\t\tsvn commit -m "merge branch2"\n' span_id:106) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:107) 
          (Token id:Id.Lit_Chars val:'\trm -rf "$SVN_TREE"\n' span_id:108)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone svn repo' span_id:115))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:119) 
          (Token id:Id.Lit_Chars val:'\tgit svn init -s "$svnrepo" &&\n' span_id:120) (Token id:Id.Lit_Chars val:'\tgit svn fetch\n' span_id:121)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'verify merge commit' span_id:128))} 
      {(SQ (Token id:Id.Lit_Chars val:'git rev-parse HEAD^2' span_id:132))}
    )
    (C {(test_done)})
  ]
)