(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'git svn funky branch names'>)}
          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 <'Abo-Uebernahme%20%28Bug%20%23994%29'>)}
          spids: [26]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:scary_ref)
          op: assign_op.Equal
          rhs: {(SQ <'Abo-Uebernahme%20(Bug%20#994)'>)}
          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'>
        )
      }
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:non_reflog)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<svn_cmd>} {<ls>} 
                        {(DQ ($ Id.VSub_DollarName '$svnrepo') <'/pr ject/branches'>)}
                      )
                      (C {<grep>} {<not-a>})
                      (C {<sed>} {(SQ <'s/\\///'>)})
                      (C {<sed>} {(SQ <'s/@/%40/'>)})
                    ]
                    negated: F
                  )
              )
            }
          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>})
  ]
)