(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 handling of root commits in merge ranges'
                  span_id: 5
                )
              )
            }
          spids: [3]
        )
      ]
    )
    (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:15)
                  command_list: 
                    (command.CommandList
                      children: [(C {(svn)} {(--version)} {(--quiet)})]
                    )
                )
              )
            }
          spids: [13]
        )
      ]
    )
    (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: [44]
                )
              ]
            )
            (C {(test_done)})
          ]
          spids: [30 41 55 -1]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'test handling of root commits in merge ranges' span_id:63))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:67) 
          (Token
            id: Id.Lit_Chars
            val: '\tmkdir -p init/trunk init/branches init/tags &&\n'
            span_id: 68
          ) (Token id:Id.Lit_Chars val:'\techo "r1" > init/trunk/file.txt &&\n' span_id:69) 
          (Token
            id: Id.Lit_Chars
            val: '\tsvn_cmd import -m "initial import" init "$svnrepo" &&\n'
            span_id: 70
          ) (Token id:Id.Lit_Chars val:'\tsvn_cmd co "$svnrepo" tmp &&\n' span_id:71) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:72) (Token id:Id.Lit_Chars val:'\t\tcd tmp &&\n' span_id:73) 
          (Token id:Id.Lit_Chars val:'\t\techo "r2" > trunk/file.txt &&\n' span_id:74) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd commit -m "Modify file.txt on trunk" &&\n' span_id:75) 
          (Token id:Id.Lit_Chars val:'\t\tsvn_cmd cp trunk@1 branches/a &&\n' span_id:76) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd commit -m "Create branch a from trunk r1" &&\n' span_id:77) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tsvn_cmd propset svn:mergeinfo /trunk:1-2 branches/a &&\n'
            span_id: 78
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tsvn_cmd commit -m "Fake merge of trunk r2 into branch a" &&\n'
            span_id: 79
          ) (Token id:Id.Lit_Chars val:'\t\tmkdir branches/b &&\n' span_id:80) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo "r5" > branches/b/file2.txt &&\n'
            span_id: 81
          ) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd add branches/b &&\n' span_id:82) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tsvn_cmd commit -m "Create branch b from thin air" &&\n'
            span_id: 83
          ) (Token id:Id.Lit_Chars val:'\t\techo "r6" > branches/b/file2.txt &&\n' span_id:84) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tsvn_cmd commit -m "Modify file2.txt on branch b" &&\n'
            span_id: 85
          ) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd cp branches/b@5 branches/c &&\n' span_id:86) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tsvn_cmd commit -m "Create branch c from branch b r5" &&\n'
            span_id: 87
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tsvn_cmd propset svn:mergeinfo /branches/b:5-6 branches/c &&\n'
            span_id: 88
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tsvn_cmd commit -m "Fake merge of branch b r6 into branch c"\n'
            span_id: 89
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:90) 
          (Token id:Id.Lit_Chars val:'\tgit svn init -s "$svnrepo" &&\n' span_id:91) (Token id:Id.Lit_Chars val:'\tgit svn fetch\n' span_id:92) (Token id:Id.Lit_Chars val:'\t' span_id:93)
        )
      }
    )
    (C {(test_done)})
  ]
)