(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <'git svn funky branch names'>)}
          spids: [13]
        )
      ]
      spids: [13]
    )
    (C {(.)} {(./lib-git-svn.sh)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:scary_uri)
          op: Equal
          rhs: {(SQ <'Abo-Uebernahme%20%28Bug%20%23994%29'>)}
          spids: [26]
        )
      ]
      spids: [26]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:scary_ref)
          op: Equal
          rhs: {(SQ <'Abo-Uebernahme%20(Bug%20#994)'>)}
          spids: [31]
        )
      ]
      spids: [31]
    )
    (C {(test_expect_success)} {(SQ <'setup svnrepo'>)} 
      {
        (SQ <'\n'> <'\tmkdir project project/trunk project/branches project/tags &&\n'> 
          <'\techo foo > project/trunk/foo &&\n'> <'\tsvn_cmd import -m "$test_description" project "$svnrepo/pr ject" &&\n'> <'\trm -rf project &&\n'> 
          <'\tsvn_cmd cp -m "fun" "$svnrepo/pr ject/trunk" \\\n'> <'\t                "$svnrepo/pr ject/branches/fun plugin" &&\n'> 
          <'\tsvn_cmd cp -m "more fun!" "$svnrepo/pr ject/branches/fun plugin" \\\n'> <'\t                      "$svnrepo/pr ject/branches/more fun plugin!" &&\n'> 
          <'\tsvn_cmd cp -m "scary" "$svnrepo/pr ject/branches/fun plugin" \\\n'> <'\t              "$svnrepo/pr ject/branches/$scary_uri" &&\n'> 
          <'\tsvn_cmd cp -m "leading dot" "$svnrepo/pr ject/trunk" \\\n'> <'\t\t\t"$svnrepo/pr ject/branches/.leading_dot" &&\n'> <'\tif test_have_prereq !MINGW\n'> <'\tthen\n'> 
          <'\t\tsvn_cmd cp -m "trailing dot" "$svnrepo/pr ject/trunk" \\\n'> <'\t\t\t"$svnrepo/pr ject/branches/trailing_dot."\n'> <'\tfi &&\n'> 
          <'\tsvn_cmd cp -m "trailing .lock" "$svnrepo/pr ject/trunk" \\\n'> <'\t\t\t"$svnrepo/pr ject/branches/trailing_dotlock.lock" &&\n'> 
          <'\tsvn_cmd cp -m "reflog" "$svnrepo/pr ject/trunk" \\\n'> <'\t\t\t"$svnrepo/pr ject/branches/not-a@{0}reflog@" &&\n'> <'\tmaybe_start_httpd\n'> <'\t'>
        )
      }
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:non_reflog)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Pipeline
                        children: [
                          (C {(svn_cmd)} {(ls)} {(DQ ($ VSub_Name '$svnrepo') ('/pr ject/branches'))})
                          (C {(grep)} {(not-a)})
                          (C {(sed)} {(SQ <'s/\\///'>)})
                          (C {(sed)} {(SQ <'s/@/%40/'>)})
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [81 112]
              )
            }
          spids: [80]
        )
      ]
      spids: [80]
    )
    (C {(test_expect_success)} {(SQ <'test clone with funky branch names'>)} 
      {
        (SQ <'\n'> <'\tgit svn clone -s "$svnrepo/pr ject" project &&\n'> <'\t(\n'> 
          <'\t\tcd project &&\n'> <'\t\tgit rev-parse "refs/remotes/origin/fun%20plugin" &&\n'> 
          <'\t\tgit rev-parse "refs/remotes/origin/more%20fun%20plugin!" &&\n'> <'\t\tgit rev-parse "refs/remotes/origin/$scary_ref" &&\n'> 
          <'\t\tgit rev-parse "refs/remotes/origin/%2Eleading_dot" &&\n'> <'\t\tif test_have_prereq !MINGW\n'> <'\t\tthen\n'> 
          <'\t\t\tgit rev-parse "refs/remotes/origin/trailing_dot%2E"\n'> <'\t\tfi &&\n'> <'\t\tgit rev-parse "refs/remotes/origin/trailing_dotlock%2Elock" &&\n'> 
          <'\t\tgit rev-parse "refs/remotes/origin/$non_reflog"\n'> <'\t)\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'test dcommit to funky branch'>)} 
      {
        (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 <'test dcommit to scary branch'>)} 
      {
        (SQ <'\n'> <'\t(\n'> <'\t\tcd project &&\n'> 
          <'\t\tgit reset --hard "refs/remotes/origin/$scary_ref" &&\n'> <'\t\techo urls are scary >> foo &&\n'> <'\t\tgit commit -m "eep" -- foo &&\n'> 
          <'\t\tgit svn dcommit\n'> <'\t)\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'test dcommit to trailing_dotlock branch'>)} 
      {
        (SQ <'\n'> <'\t(\n'> <'\t\tcd project &&\n'> 
          <'\t\tgit reset --hard "refs/remotes/origin/trailing_dotlock%2Elock" &&\n'> <'\t\techo who names branches like this anyway? >> foo &&\n'> <'\t\tgit commit -m "bar" -- foo &&\n'> 
          <'\t\tgit svn dcommit\n'> <'\t)\n'> <'\t'>
        )
      }
    )
    (C {(stop_httpd)})
    (C {(test_done)})
  ]
)