(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 funky branch names' span_id:15))}
          spids: [13]
        )
      ]
    )
    (C {(.)} {(./lib-git-svn.sh)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:scary_uri)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:'Abo-Uebernahme%20%28Bug%20%23994%29' span_id:28))}
          spids: [26]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:scary_ref)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:'Abo-Uebernahme%20(Bug%20#994)' span_id:33))}
          spids: [31]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup svnrepo' span_id:40))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:44) 
          (Token
            id: Id.Lit_Chars
            val: '\tmkdir project project/trunk project/branches project/tags &&\n'
            span_id: 45
          ) (Token id:Id.Lit_Chars val:'\techo foo > project/trunk/foo &&\n' span_id:46) 
          (Token
            id: Id.Lit_Chars
            val: '\tsvn_cmd import -m "$test_description" project "$svnrepo/pr ject" &&\n'
            span_id: 47
          ) (Token id:Id.Lit_Chars val:'\trm -rf project &&\n' span_id:48) 
          (Token
            id: Id.Lit_Chars
            val: '\tsvn_cmd cp -m "fun" "$svnrepo/pr ject/trunk" \\\n'
            span_id: 49
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t                "$svnrepo/pr ject/branches/fun plugin" &&\n'
            span_id: 50
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tsvn_cmd cp -m "more fun!" "$svnrepo/pr ject/branches/fun plugin" \\\n'
            span_id: 51
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t                      "$svnrepo/pr ject/branches/more fun plugin!" &&\n'
            span_id: 52
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tsvn_cmd cp -m "scary" "$svnrepo/pr ject/branches/fun plugin" \\\n'
            span_id: 53
          ) (Token id:Id.Lit_Chars val:'\t              "$svnrepo/pr ject/branches/$scary_uri" &&\n' span_id:54) 
          (Token
            id: Id.Lit_Chars
            val: '\tsvn_cmd cp -m "leading dot" "$svnrepo/pr ject/trunk" \\\n'
            span_id: 55
          ) (Token id:Id.Lit_Chars val:'\t\t\t"$svnrepo/pr ject/branches/.leading_dot" &&\n' span_id:56) 
          (Token id:Id.Lit_Chars val:'\tif test_have_prereq !MINGW\n' span_id:57) (Token id:Id.Lit_Chars val:'\tthen\n' span_id:58) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tsvn_cmd cp -m "trailing dot" "$svnrepo/pr ject/trunk" \\\n'
            span_id: 59
          ) (Token id:Id.Lit_Chars val:'\t\t\t"$svnrepo/pr ject/branches/trailing_dot."\n' span_id:60) 
          (Token id:Id.Lit_Chars val:'\tfi &&\n' span_id:61) 
          (Token
            id: Id.Lit_Chars
            val: '\tsvn_cmd cp -m "trailing .lock" "$svnrepo/pr ject/trunk" \\\n'
            span_id: 62
          ) (Token id:Id.Lit_Chars val:'\t\t\t"$svnrepo/pr ject/branches/trailing_dotlock.lock" &&\n' span_id:63) 
          (Token
            id: Id.Lit_Chars
            val: '\tsvn_cmd cp -m "reflog" "$svnrepo/pr ject/trunk" \\\n'
            span_id: 64
          ) (Token id:Id.Lit_Chars val:'\t\t\t"$svnrepo/pr ject/branches/not-a@{0}reflog@" &&\n' span_id:65) 
          (Token id:Id.Lit_Chars val:'\tmaybe_start_httpd\n' span_id:66) (Token id:Id.Lit_Chars val:'\t' span_id:67)
        )
      }
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:non_reflog)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:81)
                command_list: 
                  (command.CommandList
                    children: [
                      (command.Pipeline
                        children: [
                          (C {(svn_cmd)} {(ls)} 
                            {(DQ ($ Id.VSub_DollarName '$svnrepo') ('/pr ject/branches'))}
                          )
                          (C {(grep)} {(not-a)})
                          (C {(sed)} {(SQ (Token id:Id.Lit_Chars val:'s/\\///' span_id:102))})
                          (C {(sed)} {(SQ (Token id:Id.Lit_Chars val:'s/@/%40/' span_id:110))})
                        ]
                        negated: F
                      )
                    ]
                  )
              )
            }
          spids: [80]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'test clone with funky branch names' span_id:118))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:122) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit svn clone -s "$svnrepo/pr ject" project &&\n'
            span_id: 123
          ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:124) 
          (Token id:Id.Lit_Chars val:'\t\tcd project &&\n' span_id:125) (Token id:Id.Lit_Chars val:'\t\tgit rev-parse "refs/remotes/origin/fun%20plugin" &&\n' span_id:126) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit rev-parse "refs/remotes/origin/more%20fun%20plugin!" &&\n'
            span_id: 127
          ) (Token id:Id.Lit_Chars val:'\t\tgit rev-parse "refs/remotes/origin/$scary_ref" &&\n' span_id:128) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit rev-parse "refs/remotes/origin/%2Eleading_dot" &&\n'
            span_id: 129
          ) (Token id:Id.Lit_Chars val:'\t\tif test_have_prereq !MINGW\n' span_id:130) 
          (Token id:Id.Lit_Chars val:'\t\tthen\n' span_id:131) (Token id:Id.Lit_Chars val:'\t\t\tgit rev-parse "refs/remotes/origin/trailing_dot%2E"\n' span_id:132) 
          (Token id:Id.Lit_Chars val:'\t\tfi &&\n' span_id:133) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit rev-parse "refs/remotes/origin/trailing_dotlock%2Elock" &&\n'
            span_id: 134
          ) (Token id:Id.Lit_Chars val:'\t\tgit rev-parse "refs/remotes/origin/$non_reflog"\n' span_id:135) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:136) (Token id:Id.Lit_Chars val:'\t' span_id:137)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'test dcommit to funky branch' span_id:144))} 
      {
        (DQ ('\n') ('\t(\n') ('\t\tcd project &&\n') 
          ("\t\tgit reset --hard 'refs/remotes/origin/more%20fun%20plugin!' &&\n") ('\t\techo hello >> foo &&\n') ("\t\tgit commit -m 'hello' -- foo &&\n") ('\t\tgit svn dcommit\n') 
          ('\t)\n') ('\t')
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'test dcommit to scary branch' span_id:163))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:167) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:168) (Token id:Id.Lit_Chars val:'\t\tcd project &&\n' span_id:169) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit reset --hard "refs/remotes/origin/$scary_ref" &&\n'
            span_id: 170
          ) (Token id:Id.Lit_Chars val:'\t\techo urls are scary >> foo &&\n' span_id:171) 
          (Token id:Id.Lit_Chars val:'\t\tgit commit -m "eep" -- foo &&\n' span_id:172) (Token id:Id.Lit_Chars val:'\t\tgit svn dcommit\n' span_id:173) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:174) (Token id:Id.Lit_Chars val:'\t' span_id:175)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'test dcommit to trailing_dotlock branch' span_id:182))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:186) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:187) (Token id:Id.Lit_Chars val:'\t\tcd project &&\n' span_id:188) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit reset --hard "refs/remotes/origin/trailing_dotlock%2Elock" &&\n'
            span_id: 189
          ) (Token id:Id.Lit_Chars val:'\t\techo who names branches like this anyway? >> foo &&\n' span_id:190) 
          (Token id:Id.Lit_Chars val:'\t\tgit commit -m "bar" -- foo &&\n' span_id:191) (Token id:Id.Lit_Chars val:'\t\tgit svn dcommit\n' span_id:192) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:193) (Token id:Id.Lit_Chars val:'\t' span_id:194)
        )
      }
    )
    (C {(stop_httpd)})
    (C {(test_done)})
  ]
)