(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 creates empty directories' span_id:12))}
          spids: [10]
        )
      ]
    )
    (C {(.)} {(./lib-git-svn.sh)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'initialize repo' span_id:23))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:27) 
          (Token
            id: Id.Lit_Chars
            val: '\tfor i in a b c d d/e d/e/f "weird file name"\n'
            span_id: 28
          ) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:29) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tsvn_cmd mkdir -m "mkdir $i" "$svnrepo"/"$i"\n'
            span_id: 30
          ) (Token id:Id.Lit_Chars val:'\tdone\n' span_id:31)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:clone span_id:38))} 
      {(SQ (Token id:Id.Lit_Chars val:'git svn clone "$svnrepo" cloned' span_id:42))}
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'empty directories exist' span_id:49))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:53) (Token id:Id.Lit_Chars val:'\t(\n' span_id:54) 
          (Token id:Id.Lit_Chars val:'\t\tcd cloned &&\n' span_id:55) (Token id:Id.Lit_Chars val:'\t\tfor i in a b c d d/e d/e/f "weird file name"\n' span_id:56) 
          (Token id:Id.Lit_Chars val:'\t\tdo\n' span_id:57) (Token id:Id.Lit_Chars val:'\t\t\tif ! test -d "$i"\n' span_id:58) 
          (Token id:Id.Lit_Chars val:'\t\t\tthen\n' span_id:59) (Token id:Id.Lit_Chars val:'\t\t\t\techo >&2 "$i does not exist"\n' span_id:60) 
          (Token id:Id.Lit_Chars val:'\t\t\t\texit 1\n' span_id:61) (Token id:Id.Lit_Chars val:'\t\t\tfi\n' span_id:62) 
          (Token id:Id.Lit_Chars val:'\t\tdone\n' span_id:63) (Token id:Id.Lit_Chars val:'\t)\n' span_id:64)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'option automkdirs set to false' span_id:71))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:75) (Token id:Id.Lit_Chars val:'\t(\n' span_id:76) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit svn init "$svnrepo" cloned-no-mkdirs &&\n'
            span_id: 77
          ) (Token id:Id.Lit_Chars val:'\t\tcd cloned-no-mkdirs &&\n' span_id:78) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit config svn-remote.svn.automkdirs false &&\n'
            span_id: 79
          ) (Token id:Id.Lit_Chars val:'\t\tgit svn fetch &&\n' span_id:80) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tfor i in a b c d d/e d/e/f "weird file name"\n'
            span_id: 81
          ) (Token id:Id.Lit_Chars val:'\t\tdo\n' span_id:82) 
          (Token id:Id.Lit_Chars val:'\t\t\tif test -d "$i"\n' span_id:83) (Token id:Id.Lit_Chars val:'\t\t\tthen\n' span_id:84) 
          (Token id:Id.Lit_Chars val:'\t\t\t\techo >&2 "$i exists"\n' span_id:85) (Token id:Id.Lit_Chars val:'\t\t\t\texit 1\n' span_id:86) 
          (Token id:Id.Lit_Chars val:'\t\t\tfi\n' span_id:87) (Token id:Id.Lit_Chars val:'\t\tdone\n' span_id:88) (Token id:Id.Lit_Chars val:'\t)\n' span_id:89)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'more emptiness' span_id:96))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:100) 
          (Token
            id: Id.Lit_Chars
            val: '\tsvn_cmd mkdir -m "bang bang"  "$svnrepo"/"! !"\n'
            span_id: 101
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git svn rebase creates empty directory' span_id:108))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:112) 
          (Token id:Id.Lit_Chars val:'\t( cd cloned && git svn rebase ) &&\n' span_id:113) (Token id:Id.Lit_Chars val:'\ttest -d cloned/"! !"\n' span_id:114)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git svn mkdirs recreates empty directories' span_id:121))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:125) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:126) (Token id:Id.Lit_Chars val:'\t\tcd cloned &&\n' span_id:127) 
          (Token id:Id.Lit_Chars val:'\t\trm -r * &&\n' span_id:128) (Token id:Id.Lit_Chars val:'\t\tgit svn mkdirs &&\n' span_id:129) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tfor i in a b c d d/e d/e/f "weird file name" "! !"\n'
            span_id: 130
          ) (Token id:Id.Lit_Chars val:'\t\tdo\n' span_id:131) 
          (Token id:Id.Lit_Chars val:'\t\t\tif ! test -d "$i"\n' span_id:132) (Token id:Id.Lit_Chars val:'\t\t\tthen\n' span_id:133) 
          (Token id:Id.Lit_Chars val:'\t\t\t\techo >&2 "$i does not exist"\n' span_id:134) (Token id:Id.Lit_Chars val:'\t\t\t\texit 1\n' span_id:135) 
          (Token id:Id.Lit_Chars val:'\t\t\tfi\n' span_id:136) (Token id:Id.Lit_Chars val:'\t\tdone\n' span_id:137) (Token id:Id.Lit_Chars val:'\t)\n' span_id:138)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git svn mkdirs -r works' span_id:145))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:149) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:150) (Token id:Id.Lit_Chars val:'\t\tcd cloned &&\n' span_id:151) 
          (Token id:Id.Lit_Chars val:'\t\trm -r * &&\n' span_id:152) (Token id:Id.Lit_Chars val:'\t\tgit svn mkdirs -r7 &&\n' span_id:153) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tfor i in a b c d d/e d/e/f "weird file name"\n'
            span_id: 154
          ) (Token id:Id.Lit_Chars val:'\t\tdo\n' span_id:155) 
          (Token id:Id.Lit_Chars val:'\t\t\tif ! test -d "$i"\n' span_id:156) (Token id:Id.Lit_Chars val:'\t\t\tthen\n' span_id:157) 
          (Token id:Id.Lit_Chars val:'\t\t\t\techo >&2 "$i does not exist"\n' span_id:158) (Token id:Id.Lit_Chars val:'\t\t\t\texit 1\n' span_id:159) 
          (Token id:Id.Lit_Chars val:'\t\t\tfi\n' span_id:160) (Token id:Id.Lit_Chars val:'\t\tdone\n' span_id:161) (Token id:Id.Lit_Chars val:'\n' span_id:162) 
          (Token id:Id.Lit_Chars val:'\t\tif test -d "! !"\n' span_id:163) (Token id:Id.Lit_Chars val:'\t\tthen\n' span_id:164) 
          (Token id:Id.Lit_Chars val:'\t\t\techo >&2 "$i should not exist"\n' span_id:165) (Token id:Id.Lit_Chars val:'\t\t\texit 1\n' span_id:166) 
          (Token id:Id.Lit_Chars val:'\t\tfi\n' span_id:167) (Token id:Id.Lit_Chars val:'\n' span_id:168) 
          (Token id:Id.Lit_Chars val:'\t\tgit svn mkdirs -r8 &&\n' span_id:169) (Token id:Id.Lit_Chars val:'\t\tif ! test -d "! !"\n' span_id:170) 
          (Token id:Id.Lit_Chars val:'\t\tthen\n' span_id:171) (Token id:Id.Lit_Chars val:'\t\t\techo >&2 "$i not exist"\n' span_id:172) 
          (Token id:Id.Lit_Chars val:'\t\t\texit 1\n' span_id:173) (Token id:Id.Lit_Chars val:'\t\tfi\n' span_id:174) (Token id:Id.Lit_Chars val:'\t)\n' span_id:175)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'initialize trunk' span_id:182))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:186) 
          (Token
            id: Id.Lit_Chars
            val: '\tfor i in trunk trunk/a trunk/"weird file name"\n'
            span_id: 187
          ) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:188) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tsvn_cmd mkdir -m "mkdir $i" "$svnrepo"/"$i"\n'
            span_id: 189
          ) (Token id:Id.Lit_Chars val:'\tdone\n' span_id:190)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone trunk' span_id:197))} 
      {(SQ (Token id:Id.Lit_Chars val:'git svn clone -s "$svnrepo" trunk' span_id:201))}
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'empty directories in trunk exist' span_id:208))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:212) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:213) (Token id:Id.Lit_Chars val:'\t\tcd trunk &&\n' span_id:214) 
          (Token id:Id.Lit_Chars val:'\t\tfor i in a "weird file name"\n' span_id:215) (Token id:Id.Lit_Chars val:'\t\tdo\n' span_id:216) 
          (Token id:Id.Lit_Chars val:'\t\t\tif ! test -d "$i"\n' span_id:217) (Token id:Id.Lit_Chars val:'\t\t\tthen\n' span_id:218) 
          (Token id:Id.Lit_Chars val:'\t\t\t\techo >&2 "$i does not exist"\n' span_id:219) (Token id:Id.Lit_Chars val:'\t\t\t\texit 1\n' span_id:220) 
          (Token id:Id.Lit_Chars val:'\t\t\tfi\n' span_id:221) (Token id:Id.Lit_Chars val:'\t\tdone\n' span_id:222) (Token id:Id.Lit_Chars val:'\t)\n' span_id:223)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'remove a top-level directory from svn' span_id:230))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:234) 
          (Token
            id: Id.Lit_Chars
            val: '\tsvn_cmd rm -m "remove d" "$svnrepo"/d\n'
            span_id: 235
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'removed top-level directory does not exist' span_id:242))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:246) 
          (Token id:Id.Lit_Chars val:'\tgit svn clone "$svnrepo" removed &&\n' span_id:247) (Token id:Id.Lit_Chars val:'\ttest ! -e removed/d\n' span_id:248) 
          (Token id:Id.Lit_Chars val:'\n' span_id:249)
        )
      }
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:unhandled)
          op: assign_op.Equal
          rhs: {(.git/svn/refs/remotes/git-svn/unhandled.log)}
          spids: [252]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git svn gc-ed files work' span_id:258))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:262) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:263) (Token id:Id.Lit_Chars val:'\t\tcd removed &&\n' span_id:264) 
          (Token id:Id.Lit_Chars val:'\t\tgit svn gc &&\n' span_id:265) (Token id:Id.Lit_Chars val:'\t\t: Compress::Zlib may not be available &&\n' span_id:266) 
          (Token id:Id.Lit_Chars val:'\t\tif test -f "$unhandled".gz\n' span_id:267) (Token id:Id.Lit_Chars val:'\t\tthen\n' span_id:268) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t\tsvn_cmd mkdir -m gz "$svnrepo"/gz &&\n'
            span_id: 269
          ) (Token id:Id.Lit_Chars val:'\t\t\tgit reset --hard $(git rev-list HEAD | tail -1) &&\n' span_id:270) 
          (Token id:Id.Lit_Chars val:'\t\t\tgit svn rebase &&\n' span_id:271) (Token id:Id.Lit_Chars val:'\t\t\ttest -f "$unhandled".gz &&\n' span_id:272) 
          (Token id:Id.Lit_Chars val:'\t\t\ttest -f "$unhandled" &&\n' span_id:273) (Token id:Id.Lit_Chars val:'\t\t\tfor i in a b c "weird file name" gz "! !"\n' span_id:274) 
          (Token id:Id.Lit_Chars val:'\t\t\tdo\n' span_id:275) (Token id:Id.Lit_Chars val:'\t\t\t\tif ! test -d "$i"\n' span_id:276) 
          (Token id:Id.Lit_Chars val:'\t\t\t\tthen\n' span_id:277) (Token id:Id.Lit_Chars val:'\t\t\t\t\techo >&2 "$i does not exist"\n' span_id:278) 
          (Token id:Id.Lit_Chars val:'\t\t\t\t\texit 1\n' span_id:279) (Token id:Id.Lit_Chars val:'\t\t\t\tfi\n' span_id:280) 
          (Token id:Id.Lit_Chars val:'\t\t\tdone\n' span_id:281) (Token id:Id.Lit_Chars val:'\t\tfi\n' span_id:282) (Token id:Id.Lit_Chars val:'\t)\n' span_id:283)
        )
      }
    )
    (C {(test_done)})
  ]
)